1 line
1.7 MiB
1 line
1.7 MiB
{"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/highlight/lib/index.js","webpack://expect/./node_modules/ansi-regex/index.js","webpack://expect/./node_modules/ansi-styles/index.js","webpack://expect/./node_modules/arr-diff/index.js","webpack://expect/./node_modules/arr-flatten/index.js","webpack://expect/./node_modules/arr-union/index.js","webpack://expect/./node_modules/array-unique/index.js","webpack://expect/./node_modules/assign-symbols/index.js","webpack://expect/./node_modules/base/index.js","webpack://expect/./node_modules/base/node_modules/component-emitter/index.js","webpack://expect/./node_modules/base/node_modules/define-property/index.js","webpack://expect/./node_modules/braces/index.js","webpack://expect/./node_modules/braces/lib/braces.js","webpack://expect/./node_modules/braces/lib/compilers.js","webpack://expect/./node_modules/braces/lib/parsers.js","webpack://expect/./node_modules/braces/lib/utils.js","webpack://expect/./node_modules/cache-base/index.js","webpack://expect/./node_modules/cache-base/node_modules/component-emitter/index.js","webpack://expect/./node_modules/class-utils/index.js","webpack://expect/./node_modules/collection-visit/index.js","webpack://expect/./node_modules/color-convert/conversions.js","webpack://expect/./node_modules/color-convert/index.js","webpack://expect/./node_modules/color-convert/route.js","webpack://expect/./node_modules/color-name/index.js","webpack://expect/./node_modules/copy-descriptor/index.js","webpack://expect/./node_modules/define-property/index.js","webpack://expect/./node_modules/define-property/node_modules/is-accessor-descriptor/index.js","webpack://expect/./node_modules/define-property/node_modules/is-accessor-descriptor/node_modules/kind-of/index.js","webpack://expect/./node_modules/define-property/node_modules/is-data-descriptor/index.js","webpack://expect/./node_modules/define-property/node_modules/is-data-descriptor/node_modules/kind-of/index.js","webpack://expect/./node_modules/define-property/node_modules/is-descriptor/index.js","webpack://expect/./node_modules/define-property/node_modules/kind-of/index.js","webpack://expect/./node_modules/esutils/lib/ast.js","webpack://expect/./node_modules/esutils/lib/code.js","webpack://expect/./node_modules/esutils/lib/keyword.js","webpack://expect/./node_modules/esutils/lib/utils.js","webpack://expect/./node_modules/expand-brackets/index.js","webpack://expect/./node_modules/expand-brackets/lib/compilers.js","webpack://expect/./node_modules/expand-brackets/lib/parsers.js","webpack://expect/./node_modules/expand-brackets/lib/utils.js","webpack://expect/./node_modules/expand-brackets/node_modules/debug/src/browser.js","webpack://expect/./node_modules/expand-brackets/node_modules/debug/src/debug.js","webpack://expect/./node_modules/expand-brackets/node_modules/ms/index.js","webpack://expect/./node_modules/extend-shallow/index.js","webpack://expect/./node_modules/extglob/index.js","webpack://expect/./node_modules/extglob/lib/compilers.js","webpack://expect/./node_modules/extglob/lib/extglob.js","webpack://expect/./node_modules/extglob/lib/parsers.js","webpack://expect/./node_modules/extglob/lib/utils.js","webpack://expect/./node_modules/extglob/node_modules/define-property/index.js","webpack://expect/./node_modules/fill-range/index.js","webpack://expect/./node_modules/for-in/index.js","webpack://expect/./node_modules/fragment-cache/index.js","webpack://expect/./node_modules/get-value/index.js","webpack://expect/./node_modules/has-value/index.js","webpack://expect/./node_modules/has-values/index.js","webpack://expect/./node_modules/has-values/node_modules/kind-of/index.js","webpack://expect/./node_modules/is-accessor-descriptor/index.js","webpack://expect/./node_modules/is-accessor-descriptor/node_modules/kind-of/index.js","webpack://expect/./node_modules/is-buffer/index.js","webpack://expect/./node_modules/is-data-descriptor/index.js","webpack://expect/./node_modules/is-data-descriptor/node_modules/kind-of/index.js","webpack://expect/./node_modules/is-descriptor/index.js","webpack://expect/./node_modules/is-descriptor/node_modules/kind-of/index.js","webpack://expect/./node_modules/is-extendable/index.js","webpack://expect/./node_modules/is-number/index.js","webpack://expect/./node_modules/is-plain-object/index.js","webpack://expect/./node_modules/is-windows/index.js","webpack://expect/./node_modules/isarray/index.js","webpack://expect/./node_modules/isobject/index.js","webpack://expect/./node_modules/js-tokens/index.js","webpack://expect/./node_modules/kind-of/index.js","webpack://expect/./node_modules/map-cache/index.js","webpack://expect/./node_modules/map-visit/index.js","webpack://expect/./node_modules/micromatch/index.js","webpack://expect/./node_modules/micromatch/lib/cache.js","webpack://expect/./node_modules/micromatch/lib/compilers.js","webpack://expect/./node_modules/micromatch/lib/parsers.js","webpack://expect/./node_modules/micromatch/lib/utils.js","webpack://expect/./node_modules/micromatch/node_modules/define-property/index.js","webpack://expect/./node_modules/micromatch/node_modules/extend-shallow/index.js","webpack://expect/./node_modules/micromatch/node_modules/is-extendable/index.js","webpack://expect/./node_modules/micromatch/node_modules/kind-of/index.js","webpack://expect/./node_modules/mixin-deep/index.js","webpack://expect/./node_modules/mixin-deep/node_modules/is-extendable/index.js","webpack://expect/./node_modules/nanomatch/index.js","webpack://expect/./node_modules/nanomatch/lib/cache.js","webpack://expect/./node_modules/nanomatch/lib/compilers.js","webpack://expect/./node_modules/nanomatch/lib/parsers.js","webpack://expect/./node_modules/nanomatch/lib/utils.js","webpack://expect/./node_modules/nanomatch/node_modules/define-property/index.js","webpack://expect/./node_modules/nanomatch/node_modules/extend-shallow/index.js","webpack://expect/./node_modules/nanomatch/node_modules/is-extendable/index.js","webpack://expect/./node_modules/nanomatch/node_modules/kind-of/index.js","webpack://expect/./node_modules/object-copy/index.js","webpack://expect/./node_modules/object-visit/index.js","webpack://expect/./node_modules/object.pick/index.js","webpack://expect/./node_modules/pascalcase/index.js","webpack://expect/./node_modules/path-browserify/index.js","webpack://expect/./node_modules/posix-character-classes/index.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/regex-not/index.js","webpack://expect/./node_modules/regex-not/node_modules/extend-shallow/index.js","webpack://expect/./node_modules/regex-not/node_modules/is-extendable/index.js","webpack://expect/./node_modules/repeat-element/index.js","webpack://expect/./node_modules/repeat-string/index.js","webpack://expect/./node_modules/resolve-url/resolve-url.js","webpack://expect/./node_modules/ret/lib/index.js","webpack://expect/./node_modules/ret/lib/positions.js","webpack://expect/./node_modules/ret/lib/sets.js","webpack://expect/./node_modules/ret/lib/types.js","webpack://expect/./node_modules/ret/lib/util.js","webpack://expect/./node_modules/safe-regex/index.js","webpack://expect/./node_modules/set-value/index.js","webpack://expect/./node_modules/setimmediate/setImmediate.js","webpack://expect/./node_modules/slash/index.js","webpack://expect/./node_modules/snapdragon-node/index.js","webpack://expect/./node_modules/snapdragon-node/node_modules/define-property/index.js","webpack://expect/./node_modules/snapdragon-util/index.js","webpack://expect/./node_modules/snapdragon/index.js","webpack://expect/./node_modules/snapdragon/lib/compiler.js","webpack://expect/./node_modules/snapdragon/lib/parser.js","webpack://expect/./node_modules/snapdragon/lib/position.js","webpack://expect/./node_modules/snapdragon/lib/source-maps.js","webpack://expect/./node_modules/snapdragon/lib/utils.js","webpack://expect/./node_modules/snapdragon/node_modules/debug/src/browser.js","webpack://expect/./node_modules/snapdragon/node_modules/debug/src/debug.js","webpack://expect/./node_modules/snapdragon/node_modules/ms/index.js","webpack://expect/./node_modules/snapdragon/node_modules/source-map/lib/array-set.js","webpack://expect/./node_modules/snapdragon/node_modules/source-map/lib/base64-vlq.js","webpack://expect/./node_modules/snapdragon/node_modules/source-map/lib/base64.js","webpack://expect/./node_modules/snapdragon/node_modules/source-map/lib/binary-search.js","webpack://expect/./node_modules/snapdragon/node_modules/source-map/lib/mapping-list.js","webpack://expect/./node_modules/snapdragon/node_modules/source-map/lib/quick-sort.js","webpack://expect/./node_modules/snapdragon/node_modules/source-map/lib/source-map-consumer.js","webpack://expect/./node_modules/snapdragon/node_modules/source-map/lib/source-map-generator.js","webpack://expect/./node_modules/snapdragon/node_modules/source-map/lib/source-node.js","webpack://expect/./node_modules/snapdragon/node_modules/source-map/lib/util.js","webpack://expect/./node_modules/snapdragon/node_modules/source-map/source-map.js","webpack://expect/./node_modules/source-map-resolve/source-map-resolve.js","webpack://expect/./node_modules/source-map-url/source-map-url.js","webpack://expect/./node_modules/split-string/index.js","webpack://expect/./node_modules/split-string/node_modules/extend-shallow/index.js","webpack://expect/./node_modules/split-string/node_modules/is-extendable/index.js","webpack://expect/./node_modules/stack-utils/index.js","webpack://expect/./node_modules/static-extend/index.js","webpack://expect/./node_modules/timers-browserify/main.js","webpack://expect/./node_modules/to-object-path/index.js","webpack://expect/./node_modules/to-regex-range/index.js","webpack://expect/./node_modules/to-regex/index.js","webpack://expect/./node_modules/to-regex/node_modules/define-property/index.js","webpack://expect/./node_modules/to-regex/node_modules/extend-shallow/index.js","webpack://expect/./node_modules/to-regex/node_modules/is-extendable/index.js","webpack://expect/./node_modules/union-value/index.js","webpack://expect/./node_modules/unset-value/index.js","webpack://expect/./node_modules/unset-value/node_modules/has-value/index.js","webpack://expect/./node_modules/unset-value/node_modules/has-value/node_modules/isobject/index.js","webpack://expect/./node_modules/unset-value/node_modules/has-values/index.js","webpack://expect/./node_modules/use/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/printDiffs.js","webpack://expect/./packages/jest-get-type/build/index.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","data","_interopRequireWildcard","require","obj","__esModule","newObj","key","prototype","hasOwnProperty","call","desc","getOwnPropertyDescriptor","get","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","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","highlight","_jsTokens","_esutils","_interopRequireDefault","_chalk","keyword","cyan","capitalized","yellow","jsx_tag","punctuator","magenta","green","regex","comment","invalid","white","bgRed","JSX_TAG","BRACKET","getTokenType","match","offset","text","token","matchToToken","type","isReservedWordES6","test","substr","toLowerCase","highlightTokens","args","colorize","str","options","supportsColor","constructor","enabled","level","code","module","onlyFirst","pattern","RegExp","undefined","colorConvert","wrapAnsi16","fn","apply","arguments","wrapAnsi256","wrapAnsi16m","rgb","assembleStyles","codes","Map","styles","modifier","dim","italic","underline","inverse","hidden","strikethrough","color","black","blue","gray","redBright","greenBright","yellowBright","blueBright","magentaBright","cyanBright","whiteBright","bgColor","bgBlack","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","bgBlackBright","bgRedBright","bgGreenBright","bgYellowBright","bgBlueBright","bgMagentaBright","bgCyanBright","bgWhiteBright","keys","groupName","group","styleName","style","open","close","enumerable","ansi2ansi","n","rgb2rgb","r","g","b","ansi","ansi256","ansi16m","suite","ansi16","diff","arr","len","idx","diffArray","one","two","tlen","olen","ele","hasEle","val","push","flat","res","cur","union","init","TypeError","arg","j","indexOf","unique","splice","immutable","uniqueImmutable","arrLen","newArr","receiver","objects","Symbol","getOwnPropertySymbols","isEnumerable","propertyIsEnumerable","target","provider","names","util","define","CacheBase","Emitter","isObject","merge","pascal","cu","namespace","Cache","fns","Base","config","is","initBase","inherits","cache","_callbacks","visit","run","isRegistered","register","registered","emit","use","mixin","mixins","configurable","parent","base","prop","extend","Ctor","Parent","Child","inherit","bubble","on","addEventListener","event","once","off","removeListener","removeAllListeners","removeEventListener","callbacks","cb","listeners","hasListeners","isDescriptor","writable","toRegex","compilers","parsers","Braces","utils","MAX_LENGTH","braces","createKey","disabled","create","nodupes","expand","optimize","maxLength","isEmptySets","isQuotedString","proto","result","output","noempty","filter","Boolean","memoize","makeRe","strictErrors","parse","compile","ast","clearCache","Snapdragon","isInitialized","createOptions","snapdragon","compiler","parser","parsed","input","stack","addParent","pop","node","nodes","queue","isEscaped","count","escaped","negated","inner","last","arrayify","mapVisit","segs","multiplier","quantifiers","isQuantifier","isType","expanded","isOptimized","unescape","hasQueue","multiply","flatten","shift","prev","isLiteralBrace","noInner","hasEmpty","Node","pos","position","m","ch","consume","charAt","concatNodes","isInside","esc","isExtglobChar","brace","strict","lastNode","first","orig","a","simpleText","splitString","fillRange","id","bval","sep","keepQuotes","keepEscaping","escapeBrackets","rangeLimit","tok","stringifyArray","step","RangeError","brackets","parens","isString","escapeRegex","toPath","del","has","ctx","clear","method","staticExtend","isObj","nativeKeys","hasAll","values","noop","identity","hasConstructor","getOwnPropertyNames","getDescriptor","copyDescriptor","copy","omit","props","concat","events","bind","collection","cssKeywords","reverseKeywords","convert","channels","labels","hsl","hsv","hwb","cmyk","xyz","lab","lch","hex","hcg","apple","model","delta","h","s","l","rdif","gdif","bdif","v","diffc","c","w","y","k","comparativeDistance","x","pow","reversed","currentClosestDistance","Infinity","currentClosestKeyword","distance","z","t1","t2","t3","smin","lmin","sv","hi","floor","f","p","q","t","vmin","sl","wh","bl","ratio","y2","x2","z2","hr","atan2","PI","sqrt","cos","sin","round","mult","rem","integer","toString","toUpperCase","substring","colorString","char","parseInt","chroma","grayscale","hue","pure","mg","conversions","route","models","wrapRaw","wrappedFn","conversion","wrapRounded","forEach","fromModel","routes","routeModels","toModel","raw","buildGraph","graph","deriveBFS","current","adjacents","adjacent","unshift","link","from","to","wrapConversion","path","typeOf","accessor","isAccessorDescriptor","isBuffer","kindOf","Number","Function","Date","isDataDescriptor","isAccessor","isData","isExpression","isIterationStatement","isStatement","isSourceElement","trailingStatement","alternate","consequent","body","isProblematicIfStatement","ES6Regex","ES5Regex","NON_ASCII_WHITESPACES","IDENTIFIER_START","IDENTIFIER_PART","NonAsciiIdentifierStart","NonAsciiIdentifierPart","isDecimalDigit","isHexDigit","isOctalDigit","isWhiteSpace","isLineTerminator","fromCodePoint","cp","fromCharCode","cu1","cu2","isIdentifierStartES5","isIdentifierPartES5","isIdentifierStartES6","isIdentifierPartES6","isStrictModeReservedWordES6","isKeywordES5","isKeywordES6","isReservedWordES5","isRestrictedWord","isIdentifierNameES5","iz","charCodeAt","decodeUtf16","lead","trail","isIdentifierNameES6","lowCh","check","isIdentifierES5","isIdentifierES6","debug","__filename","isMatch","matcher","failglob","nonull","nullglob","re","posix","isNegated","TEXT_REGEX","not","createRegex","state","sets","bracket","capture","inside","insideBracket","next","rest","regexNot","cached","include","contains","strictClose","log","formatArgs","save","load","useColors","storage","chrome","local","localstorage","colors","window","document","documentElement","WebkitAppearance","firebug","exception","table","navigator","userAgent","$1","formatters","JSON","stringify","err","humanize","lastC","namespaces","removeItem","e","env","DEBUG","enable","localStorage","createDebug","coerce","disable","skips","prevTime","selectColor","hash","abs","self","curr","ms","format","formatter","logFn","d","isNaN","long","fmtLong","fmtShort","exec","parseFloat","plural","ceil","o","hasOwn","Extglob","extglob","list","matches","strictOpen","ext","SyntaxError","__data__","star","prefix","bash","hasSlash","slash","patterns","sibling","loose","paren","metachar","isNumber","stop","toNumber","transform","isValidNumber","strictRanges","isValid","inspect","isPadded","toRange","zero","greater","lesser","asc","zeros","toSequence","dash","pad","isValidLetter","forIn","thisArg","MapCache","FragmentCache","caches","cacheName","hasValues","hasValue","size","isGeneratorFn","isArguments","isDate","isError","isRegexp","ctorName","isGeneratorObj","stackTraceLimit","toDateString","getDate","setDate","flags","ignoreCase","multiline","global","throw","return","callee","isSlowBuffer","_isBuffer","readFloatLE","isExtendable","num","trim","isObjectObject","isPlainObject","ctor","prot","factory","isWindows","platform","OSTYPE","closed","mapSet","mapGet","mapHas","mapDelete","micromatch","keep","unixify","ignore","isEmptyString","equals","equalsPattern","some","every","any","all","containsPattern","matchBase","basename","matchKeys","pick","compose","hasSpecialChars","nocase","matchPath","matchBasename","ast_array","nobrace","braceExpand","instantiate","matchers","file","nanomatch","escape","qmark","plus","dot","noext","escapeExtglobs","TEXT","createNotRegex","textRegex","notRegex","notStr","toPosixPath","stripPrefix","isSlash","_equals","filepath","unixPath","_contains","equal","lower","isobject","Reflect","assignSymbols","toObject","isEnum","mixinDeep","isValidKey","matcherFn","wrap","nonegate","dotfiles","addQmark","leadingGlobstar","before","after","prior","isStart","NOT_REGEX","createTextRegex","slashes","paths","addPrefix","quote","advanceTo","bos","append","noglobstar","globstar","starRe","endChar","advance","isRegex","combineDupes","stripDrive","fp","isSimpleChar","pascalcase","_","normalizeArray","parts","allowAboveRoot","up","resolve","resolvedPath","resolvedAbsolute","cwd","normalize","isAbsolute","trailingSlash","relative","fromParts","toParts","samePartsLength","outputParts","delimiter","dirname","hasRoot","matchedSlash","extname","startDot","startPart","preDotState","xs","alnum","alpha","ascii","blank","cntrl","digit","print","punct","space","upper","word","xdigit","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","setTimeout","clearTimeout","runTimeout","fun","runClearTimeout","draining","currentQueue","queueIndex","cleanUpNextTick","drainQueue","timeout","nextTick","Item","array","title","browser","argv","version","versions","addListener","prependListener","prependOnceListener","binding","chdir","dir","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_MEMO_TYPE","REACT_LAZY_TYPE","isValidElementType","$$typeof","lowPriorityWarning","printWarning","_len","_key","argIndex","condition","_len2","_key2","lowPriorityWarning$1","object","$$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","safe","strictNegate","root","resolveUrl","numUrls","createElement","href","head","getElementsByTagName","insertBefore","firstChild","resolved","removeChild","types","positions","regexpStr","ROOT","lastGroup","groupStack","repeatErr","error","strToChars","wordBoundary","nonWordBoundary","words","notWords","ints","notInts","whitespace","notWhitespace","REFERENCE","CHAR","begin","classTokens","tokenizeClass","SET","anyChar","GROUP","remember","followedBy","notFollowedBy","rs","REPETITION","POSITION","INTS","RANGE","WORDS","WHITESPACE","NOTANYCHAR","CTRL","SLSH","chars_regex","lbs","a16","b16","c8","dctrl","eslsh","tokens","regexp","lastIndex","msg","replimit","limit","isRegExp","reps","walk","starHeight","ok","setImmediate","nextHandle","tasksByHandle","currentlyRunningATask","doc","registerImmediate","callback","task","clearImmediate","handle","runIfPresent","installNextTickImplementation","canUsePostMessage","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","installPostMessageImplementation","messagePrefix","random","onGlobalMessage","attachEvent","installMessageChannelImplementation","channel","MessageChannel","port1","port2","installReadyStateChangeImplementation","html","script","onreadystatechange","appendChild","installSetTimeoutImplementation","attachTo","getPrototypeOf","isExtendedLengthPath","hasNonAscii","ownNames","lazyKeys","isNode","isEmpty","assert","remove","find","findNode","hasType","siblings","isScope","scope","toNoop","isFunction","addOpen","unshiftNode","addClose","pushNode","wrapNodes","popNode","shiftNode","removeNode","firstOfType","isOpen","isClose","hasOpen","hasClose","hasOpenAndClose","addType","removeType","child","isInsideType","Compiler","Parser","regexCache","compiled","reason","silent","errors","parsingErrors","sourcemap","sourcemaps","applySourceMaps","toJSON","Position","currentType","setCount","updatePosition","lastIndexOf","capturePair","openRegex","closeRegex","specialChars","suffix","eos","visited","hasDelims","fs","SourceMap","SourceMapGenerator","content","files","addMapping","generated","original","addContent","addFile","setSourceContent","inputSourcemaps","originalMap","sourceMapResolve","resolveSync","readFileSync","SourceMapConsumer","relativeTo","sourcesRelativeTo","applySourceMap","_comment","hasNativeMap","ArraySet","_array","_set","fromArray","ArraySet_fromArray","aArray","aAllowDuplicates","add","ArraySet_size","ArraySet_add","aStr","sStr","toSetString","isDuplicate","ArraySet_has","ArraySet_indexOf","at","ArraySet_at","aIdx","toArray","ArraySet_toArray","base64","VLQ_BASE_SHIFT","VLQ_BASE","VLQ_BASE_MASK","VLQ_CONTINUATION_BIT","toVLQSigned","aValue","fromVLQSigned","isNegative","shifted","encode","base64VLQ_encode","encoded","vlq","decode","base64VLQ_decode","aIndex","aOutParam","strLen","continuation","intToCharMap","charCode","bigA","bigZ","littleA","littleZ","nine","littleOffset","numberOffset","GREATEST_LOWER_BOUND","LEAST_UPPER_BOUND","recursiveSearch","aLow","aHigh","aNeedle","aHaystack","aCompare","aBias","mid","cmp","search","generatedPositionAfter","mappingA","mappingB","lineA","generatedLine","lineB","columnA","generatedColumn","columnB","compareByGeneratedPositionsInflated","MappingList","_sorted","_last","unsortedForEach","MappingList_forEach","aCallback","aThisArg","MappingList_add","aMapping","MappingList_toArray","sort","swap","ary","temp","randomIntInRange","low","high","doQuickSort","comparator","pivotIndex","pivot","quickSort","binarySearch","base64VLQ","aSourceMap","sourceMap","sections","IndexedSourceMapConsumer","BasicSourceMapConsumer","fromSourceMap","_version","__generatedMappings","_parseMappings","_mappings","sourceRoot","__originalMappings","_charIsMappingSeparator","SourceMapConsumer_charIsMappingSeparator","SourceMapConsumer_parseMappings","aSourceRoot","GENERATED_ORDER","ORIGINAL_ORDER","eachMapping","SourceMapConsumer_eachMapping","aContext","aOrder","context","order","mappings","_generatedMappings","_originalMappings","mapping","_sources","originalLine","originalColumn","_names","allGeneratedPositionsFor","SourceMapConsumer_allGeneratedPositionsFor","aArgs","getArg","needle","_findMapping","compareByOriginalPositions","lastColumn","sources","sourcesContent","consumer","SourceMapConsumer_fromSourceMap","smc","_sourceRoot","_generateSourcesContent","_file","generatedMappings","destGeneratedMappings","destOriginalMappings","srcMapping","destMapping","Mapping","previousGeneratedColumn","previousOriginalLine","previousOriginalColumn","previousSource","previousName","cachedSegments","originalMappings","segment","compareByGeneratedPositionsDeflated","SourceMapConsumer_findMapping","aMappings","aLineName","aColumnName","aComparator","computeColumnSpans","SourceMapConsumer_computeColumnSpans","nextMapping","lastGeneratedColumn","originalPositionFor","SourceMapConsumer_originalPositionFor","hasContentsOfAllSources","BasicSourceMapConsumer_hasContentsOfAllSources","sc","sourceContentFor","SourceMapConsumer_sourceContentFor","aSource","nullOnMissing","url","urlParse","fileUriAbsPath","scheme","generatedPositionFor","SourceMapConsumer_generatedPositionFor","lastOffset","_sections","offsetLine","offsetColumn","generatedOffset","IndexedSourceMapConsumer_originalPositionFor","sectionIndex","section","bias","IndexedSourceMapConsumer_hasContentsOfAllSources","IndexedSourceMapConsumer_sourceContentFor","IndexedSourceMapConsumer_generatedPositionFor","generatedPosition","ret","IndexedSourceMapConsumer_parseMappings","sectionMappings","adjustedMapping","_skipValidation","_sourcesContents","SourceMapGenerator_fromSourceMap","aSourceMapConsumer","generator","newMapping","sourceFile","SourceMapGenerator_addMapping","_validateMapping","SourceMapGenerator_setSourceContent","aSourceFile","aSourceContent","SourceMapGenerator_applySourceMap","aSourceMapPath","newSources","newNames","SourceMapGenerator_validateMapping","aGenerated","aOriginal","aName","_serializeMappings","SourceMapGenerator_serializeMappings","previousGeneratedLine","nameIdx","sourceIdx","SourceMapGenerator_generateSourcesContent","aSources","SourceMapGenerator_toJSON","SourceMapGenerator_toString","REGEX_NEWLINE","NEWLINE_CODE","isSourceNode","SourceNode","aLine","aColumn","aChunks","children","sourceContents","fromStringWithSourceMap","SourceNode_fromStringWithSourceMap","aGeneratedCode","aRelativePath","remainingLines","remainingLinesIndex","shiftNextLine","lineContents","getNextLine","newLine","lastGeneratedLine","lastMapping","addMappingWithCode","nextLine","SourceNode_add","aChunk","chunk","prepend","SourceNode_prepend","SourceNode_walk","aFn","SourceNode_join","aSep","newChildren","replaceRight","SourceNode_replaceRight","aPattern","aReplacement","lastChild","SourceNode_setSourceContent","walkSourceContents","SourceNode_walkSourceContents","fromSetString","SourceNode_toString","toStringWithSourceMap","SourceNode_toStringWithSourceMap","sourceMappingActive","lastOriginalSource","lastOriginalLine","lastOriginalColumn","lastOriginalName","sourceContent","aDefaultValue","urlRegexp","dataUrlRegexp","aUrl","auth","host","port","urlGenerate","aParsedUrl","aPath","part","aRoot","aPathUrl","aRootUrl","joined","supportsNullProto","isProtoString","onlyCompareOriginal","onlyCompareGenerated","strcmp","aStr1","aStr2","sourceMappingURL","callbackAsync","parseMapToJSON","sourceMapData","readSync","read","readUrl","resolveSourceMap","codeUrl","mapData","resolveSourceMapHelper","resolveSourceMapSync","dataUriRegex","jsonMimeTypeRegex","getFrom","dataUri","mimeType","lastParameter","atob","decodeURIComponent","mapUrl","resolveSources","pending","sourcesResolved","done","resolveSourcesHelper","fullUrl","resolveSourcesSync","endingSlash","_resolveSources","innerRegex","_innerRegex","existsIn","removeFrom","quotes","closeIdx","expected","getClosingQuote","keepDoubleQuotes","keepSingleQuotes","StackUtils","_cwd","_internals","internals","_wrapCallSite","wrapCallSite","nodeInternals","natives","clean","outdent","lastNonAtLine","st","isInternal","internal","isAtLine","captureString","limitBefore","captureStackTrace","prepBefore","prepareStackTrace","site","getLineNumber","getColumnNumber","_setFile","getFileName","isConstructor","isEval","evalOrigin","getEvalOrigin","isNative","native","typename","getTypeName","er","fname","getFunctionName","function","meth","getMethodName","filename","methodRe","parseLine","evalFile","evalLine","evalCol","lnum","col","closeParen","closes","methodMatch","evalColumn","bound","extendFn","Timeout","setInterval","clearInterval","clearFn","_id","_clearFn","unref","ref","enroll","item","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","onTimeout","_onTimeout","toRegexRange","relax","relaxZeros","shorthand","padding","positives","negatives","maxLen","newMin","newMax","splitToPatterns","siftPatterns","neg","onlyNegative","filterPatterns","onlyPositive","intersected","subpatterns","splitToRanges","nines","stops","countNines","countZeros","compare","rangeToPattern","digits","zipped","zip","numbers","startDigit","stopDigit","toCharacterClass","ranges","range","toQuantifier","padZeros","comparison","intersection","negate","originalOptions","createdOptions","unionValue","unset","noZero","app","hook","plugin","superCtor","super_","TempCtor","fill","readUInt8","getOwnPropertyDescriptors","descriptors","formatRegExp","isNull","deprecate","noDeprecation","warned","deprecated","throwDeprecation","traceDeprecation","trace","debugs","debugEnviron","debuglog","isUndefined","NODE_DEBUG","pid","seen","stylize","stylizeNoColor","depth","isBoolean","showHidden","_extend","customInspect","stylizeWithColor","formatValue","styleType","arrayToHash","recurseTimes","primitive","formatPrimitive","visibleKeys","formatError","toUTCString","formatArray","formatProperty","reduceToSingleString","simple","numLinesEst","reduce","ar","isNullOrUndefined","isSymbol","objectToString","isPrimitive","months","timestamp","time","getHours","getMinutes","getSeconds","getMonth","origin","kCustomPromisifiedSymbol","promisify","promiseResolve","promiseReject","promise","Promise","reject","setPrototypeOf","defineProperties","custom","callbackifyOnRejected","newReason","callbackify","callbackified","maybeCb","then","rej","webpackPolyfill","pkg","NOT_YET_SET","countCommonItemsF","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","_foundSubsequence","_x","_x2","_x3","bCommon","aCommon","_isCommon","_x4","_x5","tStart","tEnd","validateLength","isSafeInteger","validateCallback","nCommonFR","_ansiStyles","returnInput","allColorsAsFunc","acc","AsymmetricMatcher","sample","Any","other","Anything","ArrayContaining","another","ObjectContaining","property","StringContaining","includes","StringMatching","expectedObject","anything","arrayContaining","arrayNotContaining","objectContaining","objectNotContaining","stringContaining","stringNotContaining","stringMatching","stringNotMatching","resetAssertionsLocalState","assertionCalls","expectedAssertionsNumber","isExpectingAssertions","extractExpectedAssertionsErrors","expectedAssertionsNumberError","isExpectingAssertionsError","numOfAssertionsExpected","isDirectExpectCall","actual","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","throwingMatcher","throws","iterableEquality","subsetEquality","matcherContext","dontThrow","processResult","asyncError","_validateResult","pass","matcherResult","suppressedErrors","handlError","INTERNAL_MATCHER_FLAG","potentialResult","asyncResult","aResult","catch","syncResult","assertions","hasAssertions","ensureNoExpected","spyMatchers","toThrowMatchers","addSnapshotSerializer","getState","setState","expectExport","customTesters","strictCheck","eq","hasKey","hasDefinedKey","functionToString","isAsymmetric","isA","asymmetricMatch","asymmetricA","asymmetricB","aStack","bStack","asymmetricResult","customTesterResult","className","isDomNode","isEqualNode","aKeys","allKeys","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","expectedDiff","receivedDiff","toBeDefined","toBeFalsy","toBeGreaterThan","toBeGreaterThanOrEqual","toBeInstanceOf","printExpected","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","expectedPathType","expectedPathLength","lastTraversedObject","hasEndProp","receivedPath","traversedPath","hasCompletePath","receivedValue","toMatch","toMatchObject","toStrictEqual","printSubstring","printReceivedStringContainExpectedSubstring","printReceivedStringContainExpectedResult","printReceivedArrayContainExpectedItem","stringified","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","WeakMap","sub","trimmed","IteratorSymbol","iterator","hasIterator","iterableEqualityWithStack","allFound","bValue","isEqual","aEntry","bEntry","matchedKey","matchedValue","bIterator","nextB","isObjectWithKeys","subsetEqualityWithContext","bKeys","partition","items","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","found","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_","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","_diffSequences","_constants","_printDiffs","DIFF_CONTEXT_DEFAULT","fgDelete","fgInsert","fgCommon","fgIndent","bgCommon","bgInverse","highlightTrailingSpaces","highlightLeadingTrailingSpaces","getHighlightSpaces","bothEdges","formatDelete","aLinesUn","aLinesIn","put","highlightSpaces","aLineUn","aLineIn","formatInsert","bLinesUn","bLinesIn","bLineUn","bLineIn","formatCommon","bLineInLength","hasSameIndentation","fg","bg","diffExpand","getContextLines","contextLines","diffNoExpand","nContextLines","iPatchMark","isAtEnd","nContextLines2","aStartCommon","bStartCommon","aEndCommon","bEndCommon","nLines","maxContextLines","createPatchMark","printAnnotation","_cleanupSemantic","diffStrings","ChangeBuffer","pushDiff","getHighlightedString","substrings","pushSubstring","pushLine","isLineEmpty","CommonBuffer","deleteBuffer","insertBuffer","isDiffEmpty","moveLinesTo","subdiff","flushChangeLines","pushDiffCommonLine","pushDiffChangeLines","getAlignedDiffs","commonBuffer","align","getLines","_prettyFormat","_jestGetType","_diffLines","_objectSpread","ownKeys","sym","_prettyFormat$plugins","plugins","DOMCollection","DOMElement","Immutable","ReactElement","ReactTestComponent","PLUGINS","FORMAT_OPTIONS","FORMAT_OPTIONS_0","indent","FALLBACK_FORMAT_OPTIONS","callToJSON","maxDepth","FALLBACK_FORMAT_OPTIONS_0","aType","omitDifference","getExpectedType","comparePrimitive","compareObjects","sortMap","sortSet","entries","Set","diffMessage","hasThrown","getStringDiff","joinAlignedDiffsExpand","joinAlignedDiffsNoExpand","iLength","jLength","hasExcessAtStartOrEnd","nExcessesBetweenChanges","iStart","hasPatch","jLast","jPatchMark","pushCommonLine","printCommonLine","pushDeleteLine","printDeleteLine","pushInsertLine","printInsertLine","iCommon","iEnd","nOmit","printMultilineStringDiffs","hasCommonDiff","computeStringDiffs","getReceivedString","getExpectedString","INVERTED_COLOR","EXPECTED_COLOR","DIM_COLOR","_diffStrings","_getAlignedDiffs","_joinAlignedDiffs","PATCH_COLOR","reduced","NEWLINE_SYMBOL","SPACE_SYMBOL","replaceSpacesAtEnd","spaces","isFirstOrLast","isMultiline","aAnnotation","bAnnotation","MAX_DIFF_STRING_LENGTH","_computeStringDiffs","annotatedDiff","getType","_jestDiff","DiffOptions","getLabelPrinter","pluralize","printDiffOrStringify","ensureExpectedIsNonNegativeInteger","ensureNumbers","ensureExpectedIsNumber","ensureActualIsNumber","highlightTrailingWhitespace","BOLD_WEIGHT","NUMBERS","replaceTrailingSpaces","matcherString","isLineDiffable","expectedLabel","receivedLabel","receivedLine","shouldPrintDiff","strings","hint","generic","specific","_options$comment","_options$expectedColo","_options$isDirectExpe","_options$isNot","_options$promise","_options$receivedColo","receivedColor","_options$secondArgume","_options$secondArgume2","dimString","_types","Frame","separateMessageFromStack","formatResultsErrors","formatStackTrace","getTopFrame","getStackTraceLines","formatExecError","_fs","_path","_micromatch","_slash","_codeFrame","_stackUtils","jestReadFile","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","testPath","reuseMessage","separated","messageToUse","removeInternalStackEntries","pathCounter","formatPaths","relativeTestPath","filePath","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","_step","parsedFrame","topFrame","stacktrace","testResults","failedResults","failureMessages","_separateMessageFromS","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","symbolToString","getConstructorName","isWindow","SYMBOL_REGEXP","NEWLINE_REGEXP","PrettyFormatPluginError","isToStringedArrayType","toStringed","printNumber","printBigInt","printFunction","printFunctionName","printSymbol","printError","printBasicValue","escapeString","printComplexValue","hasCalledToJSON","hitMaxDepth","isNewPlugin","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","propsReducer","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","_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\nfunction _highlight() {\n const data = _interopRequireWildcard(require(\"@babel/highlight\"));\n\n _highlight = function () {\n return data;\n };\n\n return data;\n}\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; 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];\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 if (highlighted) rawLines = (0, _highlight().default)(rawLines, opts);\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 let frame = lines.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.shouldHighlight = shouldHighlight;\nexports.getChalk = getChalk;\nexports.default = highlight;\n\nfunction _jsTokens() {\n const data = _interopRequireWildcard(require(\"js-tokens\"));\n\n _jsTokens = function () {\n return data;\n };\n\n return data;\n}\n\nfunction _esutils() {\n const data = _interopRequireDefault(require(\"esutils\"));\n\n _esutils = function () {\n return data;\n };\n\n return data;\n}\n\nfunction _chalk() {\n const data = _interopRequireDefault(require(\"chalk\"));\n\n _chalk = function () {\n return data;\n };\n\n return data;\n}\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; 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 (_esutils().default.keyword.isReservedWordES6(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 = options => {\n\toptions = Object.assign({\n\t\tonlyFirst: false\n\t}, options);\n\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, options.onlyFirst ? undefined : 'g');\n};\n","'use strict';\nconst colorConvert = require('color-convert');\n\nconst wrapAnsi16 = (fn, offset) => function () {\n\tconst code = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => function () {\n\tconst code = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => function () {\n\tconst rgb = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\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\t\t\tgray: [90, 39],\n\n\t\t\t// Bright color\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// Fix humans\n\tstyles.color.grey = styles.color.gray;\n\n\tfor (const groupName of Object.keys(styles)) {\n\t\tconst group = styles[groupName];\n\n\t\tfor (const styleName of Object.keys(group)) {\n\t\t\tconst style = group[styleName];\n\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\n\t\tObject.defineProperty(styles, 'codes', {\n\t\t\tvalue: codes,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tconst ansi2ansi = n => n;\n\tconst rgb2rgb = (r, g, b) => [r, g, b];\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = {\n\t\tansi: wrapAnsi16(ansi2ansi, 0)\n\t};\n\tstyles.color.ansi256 = {\n\t\tansi256: wrapAnsi256(ansi2ansi, 0)\n\t};\n\tstyles.color.ansi16m = {\n\t\trgb: wrapAnsi16m(rgb2rgb, 0)\n\t};\n\n\tstyles.bgColor.ansi = {\n\t\tansi: wrapAnsi16(ansi2ansi, 10)\n\t};\n\tstyles.bgColor.ansi256 = {\n\t\tansi256: wrapAnsi256(ansi2ansi, 10)\n\t};\n\tstyles.bgColor.ansi16m = {\n\t\trgb: wrapAnsi16m(rgb2rgb, 10)\n\t};\n\n\tfor (let key of Object.keys(colorConvert)) {\n\t\tif (typeof colorConvert[key] !== 'object') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst suite = colorConvert[key];\n\n\t\tif (key === 'ansi16') {\n\t\t\tkey = 'ansi';\n\t\t}\n\n\t\tif ('ansi16' in suite) {\n\t\t\tstyles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0);\n\t\t\tstyles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10);\n\t\t}\n\n\t\tif ('ansi256' in suite) {\n\t\t\tstyles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0);\n\t\t\tstyles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10);\n\t\t}\n\n\t\tif ('rgb' in suite) {\n\t\t\tstyles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0);\n\t\t\tstyles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10);\n\t\t}\n\t}\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n","/*!\n * arr-diff <https://github.com/jonschlinkert/arr-diff>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function diff(arr/*, arrays*/) {\n var len = arguments.length;\n var idx = 0;\n while (++idx < len) {\n arr = diffArray(arr, arguments[idx]);\n }\n return arr;\n};\n\nfunction diffArray(one, two) {\n if (!Array.isArray(two)) {\n return one.slice();\n }\n\n var tlen = two.length\n var olen = one.length;\n var idx = -1;\n var arr = [];\n\n while (++idx < olen) {\n var ele = one[idx];\n\n var hasEle = false;\n for (var i = 0; i < tlen; i++) {\n var val = two[i];\n\n if (ele === val) {\n hasEle = true;\n break;\n }\n }\n\n if (hasEle === false) {\n arr.push(ele);\n }\n }\n return arr;\n}\n","/*!\n * arr-flatten <https://github.com/jonschlinkert/arr-flatten>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function (arr) {\n return flat(arr, []);\n};\n\nfunction flat(arr, res) {\n var i = 0, cur;\n var len = arr.length;\n for (; i < len; i++) {\n cur = arr[i];\n Array.isArray(cur) ? flat(cur, res) : res.push(cur);\n }\n return res;\n}\n","'use strict';\n\nmodule.exports = function union(init) {\n if (!Array.isArray(init)) {\n throw new TypeError('arr-union expects the first argument to be an array.');\n }\n\n var len = arguments.length;\n var i = 0;\n\n while (++i < len) {\n var arg = arguments[i];\n if (!arg) continue;\n\n if (!Array.isArray(arg)) {\n arg = [arg];\n }\n\n for (var j = 0; j < arg.length; j++) {\n var ele = arg[j];\n\n if (init.indexOf(ele) >= 0) {\n continue;\n }\n init.push(ele);\n }\n }\n return init;\n};\n","/*!\n * array-unique <https://github.com/jonschlinkert/array-unique>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function unique(arr) {\n if (!Array.isArray(arr)) {\n throw new TypeError('array-unique expects an array.');\n }\n\n var len = arr.length;\n var i = -1;\n\n while (i++ < len) {\n var j = i + 1;\n\n for (; j < arr.length; ++j) {\n if (arr[i] === arr[j]) {\n arr.splice(j--, 1);\n }\n }\n }\n return arr;\n};\n\nmodule.exports.immutable = function uniqueImmutable(arr) {\n if (!Array.isArray(arr)) {\n throw new TypeError('array-unique expects an array.');\n }\n\n var arrLen = arr.length;\n var newArr = new Array(arrLen);\n\n for (var i = 0; i < arrLen; i++) {\n newArr[i] = arr[i];\n }\n\n return module.exports(newArr);\n};\n","/*!\n * assign-symbols <https://github.com/jonschlinkert/assign-symbols>\n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function(receiver, objects) {\n if (receiver === null || typeof receiver === 'undefined') {\n throw new TypeError('expected first argument to be an object.');\n }\n\n if (typeof objects === 'undefined' || typeof Symbol === 'undefined') {\n return receiver;\n }\n\n if (typeof Object.getOwnPropertySymbols !== 'function') {\n return receiver;\n }\n\n var isEnumerable = Object.prototype.propertyIsEnumerable;\n var target = Object(receiver);\n var len = arguments.length, i = 0;\n\n while (++i < len) {\n var provider = Object(arguments[i]);\n var names = Object.getOwnPropertySymbols(provider);\n\n for (var j = 0; j < names.length; j++) {\n var key = names[j];\n\n if (isEnumerable.call(provider, key)) {\n target[key] = provider[key];\n }\n }\n }\n return target;\n};\n","'use strict';\n\nvar util = require('util');\nvar define = require('define-property');\nvar CacheBase = require('cache-base');\nvar Emitter = require('component-emitter');\nvar isObject = require('isobject');\nvar merge = require('mixin-deep');\nvar pascal = require('pascalcase');\nvar cu = require('class-utils');\n\n/**\n * Optionally define a custom `cache` namespace to use.\n */\n\nfunction namespace(name) {\n var Cache = name ? CacheBase.namespace(name) : CacheBase;\n var fns = [];\n\n /**\n * Create an instance of `Base` with the given `config` and `options`.\n *\n * ```js\n * // initialize with `config` and `options`\n * var app = new Base({isApp: true}, {abc: true});\n * app.set('foo', 'bar');\n *\n * // values defined with the given `config` object will be on the root of the instance\n * console.log(app.baz); //=> undefined\n * console.log(app.foo); //=> 'bar'\n * // or use `.get`\n * console.log(app.get('isApp')); //=> true\n * console.log(app.get('foo')); //=> 'bar'\n *\n * // values defined with the given `options` object will be on `app.options\n * console.log(app.options.abc); //=> true\n * ```\n *\n * @param {Object} `config` If supplied, this object is passed to [cache-base][] to merge onto the the instance upon instantiation.\n * @param {Object} `options` If supplied, this object is used to initialize the `base.options` object.\n * @api public\n */\n\n function Base(config, options) {\n if (!(this instanceof Base)) {\n return new Base(config, options);\n }\n Cache.call(this, config);\n this.is('base');\n this.initBase(config, options);\n }\n\n /**\n * Inherit cache-base\n */\n\n util.inherits(Base, Cache);\n\n /**\n * Add static emitter methods\n */\n\n Emitter(Base);\n\n /**\n * Initialize `Base` defaults with the given `config` object\n */\n\n Base.prototype.initBase = function(config, options) {\n this.options = merge({}, this.options, options);\n this.cache = this.cache || {};\n this.define('registered', {});\n if (name) this[name] = {};\n\n // make `app._callbacks` non-enumerable\n this.define('_callbacks', this._callbacks);\n if (isObject(config)) {\n this.visit('set', config);\n }\n Base.run(this, 'use', fns);\n };\n\n /**\n * Set the given `name` on `app._name` and `app.is*` properties. Used for doing\n * lookups in plugins.\n *\n * ```js\n * app.is('foo');\n * console.log(app._name);\n * //=> 'foo'\n * console.log(app.isFoo);\n * //=> true\n * app.is('bar');\n * console.log(app.isFoo);\n * //=> true\n * console.log(app.isBar);\n * //=> true\n * console.log(app._name);\n * //=> 'bar'\n * ```\n * @name .is\n * @param {String} `name`\n * @return {Boolean}\n * @api public\n */\n\n Base.prototype.is = function(name) {\n if (typeof name !== 'string') {\n throw new TypeError('expected name to be a string');\n }\n this.define('is' + pascal(name), true);\n this.define('_name', name);\n this.define('_appname', name);\n return this;\n };\n\n /**\n * Returns true if a plugin has already been registered on an instance.\n *\n * Plugin implementors are encouraged to use this first thing in a plugin\n * to prevent the plugin from being called more than once on the same\n * instance.\n *\n * ```js\n * var base = new Base();\n * base.use(function(app) {\n * if (app.isRegistered('myPlugin')) return;\n * // do stuff to `app`\n * });\n *\n * // to also record the plugin as being registered\n * base.use(function(app) {\n * if (app.isRegistered('myPlugin', true)) return;\n * // do stuff to `app`\n * });\n * ```\n * @name .isRegistered\n * @emits `plugin` Emits the name of the plugin being registered. Useful for unit tests, to ensure plugins are only registered once.\n * @param {String} `name` The plugin name.\n * @param {Boolean} `register` If the plugin if not already registered, to record it as being registered pass `true` as the second argument.\n * @return {Boolean} Returns true if a plugin is already registered.\n * @api public\n */\n\n Base.prototype.isRegistered = function(name, register) {\n if (this.registered.hasOwnProperty(name)) {\n return true;\n }\n if (register !== false) {\n this.registered[name] = true;\n this.emit('plugin', name);\n }\n return false;\n };\n\n /**\n * Define a plugin function to be called immediately upon init. Plugins are chainable\n * and expose the following arguments to the plugin function:\n *\n * - `app`: the current instance of `Base`\n * - `base`: the [first ancestor instance](#base) of `Base`\n *\n * ```js\n * var app = new Base()\n * .use(foo)\n * .use(bar)\n * .use(baz)\n * ```\n * @name .use\n * @param {Function} `fn` plugin function to call\n * @return {Object} Returns the item instance for chaining.\n * @api public\n */\n\n Base.prototype.use = function(fn) {\n fn.call(this, this);\n return this;\n };\n\n /**\n * The `.define` method is used for adding non-enumerable property on the instance.\n * Dot-notation is **not supported** with `define`.\n *\n * ```js\n * // arbitrary `render` function using lodash `template`\n * app.define('render', function(str, locals) {\n * return _.template(str)(locals);\n * });\n * ```\n * @name .define\n * @param {String} `key` The name of the property to define.\n * @param {any} `value`\n * @return {Object} Returns the instance for chaining.\n * @api public\n */\n\n Base.prototype.define = function(key, val) {\n if (isObject(key)) {\n return this.visit('define', key);\n }\n define(this, key, val);\n return this;\n };\n\n /**\n * Mix property `key` onto the Base prototype. If base is inherited using\n * `Base.extend` this method will be overridden by a new `mixin` method that will\n * only add properties to the prototype of the inheriting application.\n *\n * ```js\n * app.mixin('foo', function() {\n * // do stuff\n * });\n * ```\n * @name .mixin\n * @param {String} `key`\n * @param {Object|Array} `val`\n * @return {Object} Returns the `base` instance for chaining.\n * @api public\n */\n\n Base.prototype.mixin = function(key, val) {\n Base.prototype[key] = val;\n return this;\n };\n\n /**\n * Non-enumberable mixin array, used by the static [Base.mixin]() method.\n */\n\n Base.prototype.mixins = Base.prototype.mixins || [];\n\n /**\n * Getter/setter used when creating nested instances of `Base`, for storing a reference\n * to the first ancestor instance. This works by setting an instance of `Base` on the `parent`\n * property of a \"child\" instance. The `base` property defaults to the current instance if\n * no `parent` property is defined.\n *\n * ```js\n * // create an instance of `Base`, this is our first (\"base\") instance\n * var first = new Base();\n * first.foo = 'bar'; // arbitrary property, to make it easier to see what's happening later\n *\n * // create another instance\n * var second = new Base();\n * // create a reference to the first instance (`first`)\n * second.parent = first;\n *\n * // create another instance\n * var third = new Base();\n * // create a reference to the previous instance (`second`)\n * // repeat this pattern every time a \"child\" instance is created\n * third.parent = second;\n *\n * // we can always access the first instance using the `base` property\n * console.log(first.base.foo);\n * //=> 'bar'\n * console.log(second.base.foo);\n * //=> 'bar'\n * console.log(third.base.foo);\n * //=> 'bar'\n * // and now you know how to get to third base ;)\n * ```\n * @name .base\n * @api public\n */\n\n Object.defineProperty(Base.prototype, 'base', {\n configurable: true,\n get: function() {\n return this.parent ? this.parent.base : this;\n }\n });\n\n /**\n * Static method for adding global plugin functions that will\n * be added to an instance when created.\n *\n * ```js\n * Base.use(function(app) {\n * app.foo = 'bar';\n * });\n * var app = new Base();\n * console.log(app.foo);\n * //=> 'bar'\n * ```\n * @name #use\n * @param {Function} `fn` Plugin function to use on each instance.\n * @return {Object} Returns the `Base` constructor for chaining\n * @api public\n */\n\n define(Base, 'use', function(fn) {\n fns.push(fn);\n return Base;\n });\n\n /**\n * Run an array of functions by passing each function\n * to a method on the given object specified by the given property.\n *\n * @param {Object} `obj` Object containing method to use.\n * @param {String} `prop` Name of the method on the object to use.\n * @param {Array} `arr` Array of functions to pass to the method.\n */\n\n define(Base, 'run', function(obj, prop, arr) {\n var len = arr.length, i = 0;\n while (len--) {\n obj[prop](arr[i++]);\n }\n return Base;\n });\n\n /**\n * Static method for inheriting the prototype and static methods of the `Base` class.\n * This method greatly simplifies the process of creating inheritance-based applications.\n * See [static-extend][] for more details.\n *\n * ```js\n * var extend = cu.extend(Parent);\n * Parent.extend(Child);\n *\n * // optional methods\n * Parent.extend(Child, {\n * foo: function() {},\n * bar: function() {}\n * });\n * ```\n * @name #extend\n * @param {Function} `Ctor` constructor to extend\n * @param {Object} `methods` Optional prototype properties to mix in.\n * @return {Object} Returns the `Base` constructor for chaining\n * @api public\n */\n\n define(Base, 'extend', cu.extend(Base, function(Ctor, Parent) {\n Ctor.prototype.mixins = Ctor.prototype.mixins || [];\n\n define(Ctor, 'mixin', function(fn) {\n var mixin = fn(Ctor.prototype, Ctor);\n if (typeof mixin === 'function') {\n Ctor.prototype.mixins.push(mixin);\n }\n return Ctor;\n });\n\n define(Ctor, 'mixins', function(Child) {\n Base.run(Child, 'mixin', Ctor.prototype.mixins);\n return Ctor;\n });\n\n Ctor.prototype.mixin = function(key, value) {\n Ctor.prototype[key] = value;\n return this;\n };\n return Base;\n }));\n\n /**\n * Used for adding methods to the `Base` prototype, and/or to the prototype of child instances.\n * When a mixin function returns a function, the returned function is pushed onto the `.mixins`\n * array, making it available to be used on inheriting classes whenever `Base.mixins()` is\n * called (e.g. `Base.mixins(Child)`).\n *\n * ```js\n * Base.mixin(function(proto) {\n * proto.foo = function(msg) {\n * return 'foo ' + msg;\n * };\n * });\n * ```\n * @name #mixin\n * @param {Function} `fn` Function to call\n * @return {Object} Returns the `Base` constructor for chaining\n * @api public\n */\n\n define(Base, 'mixin', function(fn) {\n var mixin = fn(Base.prototype, Base);\n if (typeof mixin === 'function') {\n Base.prototype.mixins.push(mixin);\n }\n return Base;\n });\n\n /**\n * Static method for running global mixin functions against a child constructor.\n * Mixins must be registered before calling this method.\n *\n * ```js\n * Base.extend(Child);\n * Base.mixins(Child);\n * ```\n * @name #mixins\n * @param {Function} `Child` Constructor function of a child class\n * @return {Object} Returns the `Base` constructor for chaining\n * @api public\n */\n\n define(Base, 'mixins', function(Child) {\n Base.run(Child, 'mixin', Base.prototype.mixins);\n return Base;\n });\n\n /**\n * Similar to `util.inherit`, but copies all static properties, prototype properties, and\n * getters/setters from `Provider` to `Receiver`. See [class-utils][]{#inherit} for more details.\n *\n * ```js\n * Base.inherit(Foo, Bar);\n * ```\n * @name #inherit\n * @param {Function} `Receiver` Receiving (child) constructor\n * @param {Function} `Provider` Providing (parent) constructor\n * @return {Object} Returns the `Base` constructor for chaining\n * @api public\n */\n\n define(Base, 'inherit', cu.inherit);\n define(Base, 'bubble', cu.bubble);\n return Base;\n}\n\n/**\n * Expose `Base` with default settings\n */\n\nmodule.exports = namespace();\n\n/**\n * Allow users to define a namespace\n */\n\nmodule.exports.namespace = namespace;\n","\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n for (var key in Emitter.prototype) {\r\n obj[key] = Emitter.prototype[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n .push(fn);\r\n return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n function on() {\r\n this.off(event, on);\r\n fn.apply(this, arguments);\r\n }\r\n\r\n on.fn = fn;\r\n this.on(event, on);\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n\r\n // all\r\n if (0 == arguments.length) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n\r\n // specific event\r\n var callbacks = this._callbacks['$' + event];\r\n if (!callbacks) return this;\r\n\r\n // remove all handlers\r\n if (1 == arguments.length) {\r\n delete this._callbacks['$' + event];\r\n return this;\r\n }\r\n\r\n // remove specific handler\r\n var cb;\r\n for (var i = 0; i < callbacks.length; i++) {\r\n cb = callbacks[i];\r\n if (cb === fn || cb.fn === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n\r\n // Remove event specific arrays for event types that no\r\n // one is subscribed for to avoid memory leak.\r\n if (callbacks.length === 0) {\r\n delete this._callbacks['$' + event];\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n this._callbacks = this._callbacks || {};\r\n\r\n var args = new Array(arguments.length - 1)\r\n , callbacks = this._callbacks['$' + event];\r\n\r\n for (var i = 1; i < arguments.length; i++) {\r\n args[i - 1] = arguments[i];\r\n }\r\n\r\n if (callbacks) {\r\n callbacks = callbacks.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n callbacks[i].apply(this, args);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n this._callbacks = this._callbacks || {};\r\n return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n return !! this.listeners(event).length;\r\n};\r\n","/*!\n * define-property <https://github.com/jonschlinkert/define-property>\n *\n * Copyright (c) 2015, 2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isDescriptor = require('is-descriptor');\n\nmodule.exports = function defineProperty(obj, prop, val) {\n if (typeof obj !== 'object' && typeof obj !== 'function') {\n throw new TypeError('expected an object or function.');\n }\n\n if (typeof prop !== 'string') {\n throw new TypeError('expected `prop` to be a string.');\n }\n\n if (isDescriptor(val) && ('set' in val || 'get' in val)) {\n return Object.defineProperty(obj, prop, val);\n }\n\n return Object.defineProperty(obj, prop, {\n configurable: true,\n enumerable: false,\n writable: true,\n value: val\n });\n};\n","'use strict';\n\n/**\n * Module dependencies\n */\n\nvar toRegex = require('to-regex');\nvar unique = require('array-unique');\nvar extend = require('extend-shallow');\n\n/**\n * Local dependencies\n */\n\nvar compilers = require('./lib/compilers');\nvar parsers = require('./lib/parsers');\nvar Braces = require('./lib/braces');\nvar utils = require('./lib/utils');\nvar MAX_LENGTH = 1024 * 64;\nvar cache = {};\n\n/**\n * Convert the given `braces` pattern into a regex-compatible string. By default, only one string is generated for every input string. Set `options.expand` to true to return an array of patterns (similar to Bash or minimatch. Before using `options.expand`, it's recommended that you read the [performance notes](#performance)).\n *\n * ```js\n * var braces = require('braces');\n * console.log(braces('{a,b,c}'));\n * //=> ['(a|b|c)']\n *\n * console.log(braces('{a,b,c}', {expand: true}));\n * //=> ['a', 'b', 'c']\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {String}\n * @api public\n */\n\nfunction braces(pattern, options) {\n var key = utils.createKey(String(pattern), options);\n var arr = [];\n\n var disabled = options && options.cache === false;\n if (!disabled && cache.hasOwnProperty(key)) {\n return cache[key];\n }\n\n if (Array.isArray(pattern)) {\n for (var i = 0; i < pattern.length; i++) {\n arr.push.apply(arr, braces.create(pattern[i], options));\n }\n } else {\n arr = braces.create(pattern, options);\n }\n\n if (options && options.nodupes === true) {\n arr = unique(arr);\n }\n\n if (!disabled) {\n cache[key] = arr;\n }\n return arr;\n}\n\n/**\n * Expands a brace pattern into an array. This method is called by the main [braces](#braces) function when `options.expand` is true. Before using this method it's recommended that you read the [performance notes](#performance)) and advantages of using [.optimize](#optimize) instead.\n *\n * ```js\n * var 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 = function(pattern, options) {\n return braces.create(pattern, extend({}, options, {expand: true}));\n};\n\n/**\n * Expands a brace pattern into a regex-compatible, optimized string. This method is called by the main [braces](#braces) function by default.\n *\n * ```js\n * var braces = require('braces');\n * console.log(braces.expand('a/{b,c}/d'));\n * //=> ['a/(b|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.optimize = function(pattern, options) {\n return braces.create(pattern, options);\n};\n\n/**\n * Processes a brace pattern and returns either an expanded array (if `options.expand` is true), a highly optimized regex-compatible string. This method is called by the main [braces](#braces) function.\n *\n * ```js\n * var 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 = function(pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('expected a string');\n }\n\n var maxLength = (options && options.maxLength) || MAX_LENGTH;\n if (pattern.length >= maxLength) {\n throw new Error('expected pattern to be less than ' + maxLength + ' characters');\n }\n\n function create() {\n if (pattern === '' || pattern.length < 3) {\n return [pattern];\n }\n\n if (utils.isEmptySets(pattern)) {\n return [];\n }\n\n if (utils.isQuotedString(pattern)) {\n return [pattern.slice(1, -1)];\n }\n\n var proto = new Braces(options);\n var result = !options || options.expand !== true\n ? proto.optimize(pattern, options)\n : proto.expand(pattern, options);\n\n // get the generated pattern(s)\n var arr = result.output;\n\n // filter out empty strings if specified\n if (options && options.noempty === true) {\n arr = arr.filter(Boolean);\n }\n\n // filter out duplicates if specified\n if (options && options.nodupes === true) {\n arr = unique(arr);\n }\n\n Object.defineProperty(arr, 'result', {\n enumerable: false,\n value: result\n });\n\n return arr;\n }\n\n return memoize('create', pattern, options, create);\n};\n\n/**\n * Create a regular expression from the given string `pattern`.\n *\n * ```js\n * var braces = require('braces');\n *\n * console.log(braces.makeRe('id-{200..300}'));\n * //=> /^(?:id-(20[0-9]|2[1-9][0-9]|300))$/\n * ```\n * @param {String} `pattern` The pattern to convert to regex.\n * @param {Object} `options`\n * @return {RegExp}\n * @api public\n */\n\nbraces.makeRe = function(pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('expected a string');\n }\n\n var maxLength = (options && options.maxLength) || MAX_LENGTH;\n if (pattern.length >= maxLength) {\n throw new Error('expected pattern to be less than ' + maxLength + ' characters');\n }\n\n function makeRe() {\n var arr = braces(pattern, options);\n var opts = extend({strictErrors: false}, options);\n return toRegex(arr, opts);\n }\n\n return memoize('makeRe', pattern, options, makeRe);\n};\n\n/**\n * Parse the given `str` with the given `options`.\n *\n * ```js\n * var braces = require('braces');\n * var ast = braces.parse('a/{b,c}/d');\n * console.log(ast);\n * // { type: 'root',\n * // errors: [],\n * // input: 'a/{b,c}/d',\n * // nodes:\n * // [ { type: 'bos', val: '' },\n * // { type: 'text', val: 'a/' },\n * // { type: 'brace',\n * // nodes:\n * // [ { type: 'brace.open', val: '{' },\n * // { type: 'text', val: 'b,c' },\n * // { type: 'brace.close', val: '}' } ] },\n * // { type: 'text', val: '/d' },\n * // { type: 'eos', val: '' } ] }\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 = function(pattern, options) {\n var proto = new Braces(options);\n return proto.parse(pattern, options);\n};\n\n/**\n * Compile the given `ast` or string with the given `options`.\n *\n * ```js\n * var braces = require('braces');\n * var ast = braces.parse('a/{b,c}/d');\n * console.log(braces.compile(ast));\n * // { options: { source: 'string' },\n * // state: {},\n * // compilers:\n * // { eos: [Function],\n * // noop: [Function],\n * // bos: [Function],\n * // brace: [Function],\n * // 'brace.open': [Function],\n * // text: [Function],\n * // 'brace.close': [Function] },\n * // output: [ 'a/(b|c)/d' ],\n * // ast:\n * // { ... },\n * // parsingErrors: [] }\n * ```\n * @param {Object|String} `ast` AST from [.parse](#parse). If a string is passed it will be parsed first.\n * @param {Object} `options`\n * @return {Object} Returns an object that has an `output` property with the compiled string.\n * @api public\n */\n\nbraces.compile = function(ast, options) {\n var proto = new Braces(options);\n return proto.compile(ast, options);\n};\n\n/**\n * Clear the regex cache.\n *\n * ```js\n * braces.clearCache();\n * ```\n * @api public\n */\n\nbraces.clearCache = function() {\n cache = braces.cache = {};\n};\n\n/**\n * Memoize a generated regex or function. A unique key is generated\n * from the method name, pattern, and user-defined options. Set\n * options.memoize to false to disable.\n */\n\nfunction memoize(type, pattern, options, fn) {\n var key = utils.createKey(type + ':' + pattern, options);\n var disabled = options && options.cache === false;\n if (disabled) {\n braces.clearCache();\n return fn(pattern, options);\n }\n\n if (cache.hasOwnProperty(key)) {\n return cache[key];\n }\n\n var res = fn(pattern, options);\n cache[key] = res;\n return res;\n}\n\n/**\n * Expose `Braces` constructor and methods\n * @type {Function}\n */\n\nbraces.Braces = Braces;\nbraces.compilers = compilers;\nbraces.parsers = parsers;\nbraces.cache = cache;\n\n/**\n * Expose `braces`\n * @type {Function}\n */\n\nmodule.exports = braces;\n","'use strict';\n\nvar extend = require('extend-shallow');\nvar Snapdragon = require('snapdragon');\nvar compilers = require('./compilers');\nvar parsers = require('./parsers');\nvar utils = require('./utils');\n\n/**\n * Customize Snapdragon parser and renderer\n */\n\nfunction Braces(options) {\n this.options = extend({}, options);\n}\n\n/**\n * Initialize braces\n */\n\nBraces.prototype.init = function(options) {\n if (this.isInitialized) return;\n this.isInitialized = true;\n var opts = utils.createOptions({}, this.options, options);\n this.snapdragon = this.options.snapdragon || new Snapdragon(opts);\n this.compiler = this.snapdragon.compiler;\n this.parser = this.snapdragon.parser;\n\n compilers(this.snapdragon, opts);\n parsers(this.snapdragon, opts);\n\n /**\n * Call Snapdragon `.parse` method. When AST is returned, we check to\n * see if any unclosed braces are left on the stack and, if so, we iterate\n * over the stack and correct the AST so that compilers are called in the correct\n * order and unbalance braces are properly escaped.\n */\n\n utils.define(this.snapdragon, 'parse', function(pattern, options) {\n var parsed = Snapdragon.prototype.parse.apply(this, arguments);\n this.parser.ast.input = pattern;\n\n var stack = this.parser.stack;\n while (stack.length) {\n addParent({type: 'brace.close', val: ''}, stack.pop());\n }\n\n function addParent(node, parent) {\n utils.define(node, 'parent', parent);\n parent.nodes.push(node);\n }\n\n // add non-enumerable parser reference\n utils.define(parsed, 'parser', this.parser);\n return parsed;\n });\n};\n\n/**\n * Decorate `.parse` method\n */\n\nBraces.prototype.parse = function(ast, options) {\n if (ast && typeof ast === 'object' && ast.nodes) return ast;\n this.init(options);\n return this.snapdragon.parse(ast, options);\n};\n\n/**\n * Decorate `.compile` method\n */\n\nBraces.prototype.compile = function(ast, options) {\n if (typeof ast === 'string') {\n ast = this.parse(ast, options);\n } else {\n this.init(options);\n }\n return this.snapdragon.compile(ast, options);\n};\n\n/**\n * Expand\n */\n\nBraces.prototype.expand = function(pattern) {\n var ast = this.parse(pattern, {expand: true});\n return this.compile(ast, {expand: true});\n};\n\n/**\n * Optimize\n */\n\nBraces.prototype.optimize = function(pattern) {\n var ast = this.parse(pattern, {optimize: true});\n return this.compile(ast, {optimize: true});\n};\n\n/**\n * Expose `Braces`\n */\n\nmodule.exports = Braces;\n","'use strict';\n\nvar utils = require('./utils');\n\nmodule.exports = function(braces, options) {\n braces.compiler\n\n /**\n * bos\n */\n\n .set('bos', function() {\n if (this.output) return;\n this.ast.queue = isEscaped(this.ast) ? [this.ast.val] : [];\n this.ast.count = 1;\n })\n\n /**\n * Square brackets\n */\n\n .set('bracket', function(node) {\n var close = node.close;\n var open = !node.escaped ? '[' : '\\\\[';\n var negated = node.negated;\n var inner = node.inner;\n\n inner = inner.replace(/\\\\(?=[\\\\\\w]|$)/g, '\\\\\\\\');\n if (inner === ']-') {\n inner = '\\\\]\\\\-';\n }\n\n if (negated && inner.indexOf('.') === -1) {\n inner += '.';\n }\n if (negated && inner.indexOf('/') === -1) {\n inner += '/';\n }\n\n var val = open + negated + inner + close;\n var queue = node.parent.queue;\n var last = utils.arrayify(queue.pop());\n\n queue.push(utils.join(last, val));\n queue.push.apply(queue, []);\n })\n\n /**\n * Brace\n */\n\n .set('brace', function(node) {\n node.queue = isEscaped(node) ? [node.val] : [];\n node.count = 1;\n return this.mapVisit(node.nodes);\n })\n\n /**\n * Open\n */\n\n .set('brace.open', function(node) {\n node.parent.open = node.val;\n })\n\n /**\n * Inner\n */\n\n .set('text', function(node) {\n var queue = node.parent.queue;\n var escaped = node.escaped;\n var segs = [node.val];\n\n if (node.optimize === false) {\n options = utils.extend({}, options, {optimize: false});\n }\n\n if (node.multiplier > 1) {\n node.parent.count *= node.multiplier;\n }\n\n if (options.quantifiers === true && utils.isQuantifier(node.val)) {\n escaped = true;\n\n } else if (node.val.length > 1) {\n if (isType(node.parent, 'brace') && !isEscaped(node)) {\n var expanded = utils.expand(node.val, options);\n segs = expanded.segs;\n\n if (expanded.isOptimized) {\n node.parent.isOptimized = true;\n }\n\n // if nothing was expanded, we probably have a literal brace\n if (!segs.length) {\n var val = (expanded.val || node.val);\n if (options.unescape !== false) {\n // unescape unexpanded brace sequence/set separators\n val = val.replace(/\\\\([,.])/g, '$1');\n // strip quotes\n val = val.replace(/[\"'`]/g, '');\n }\n\n segs = [val];\n escaped = true;\n }\n }\n\n } else if (node.val === ',') {\n if (options.expand) {\n node.parent.queue.push(['']);\n segs = [''];\n } else {\n segs = ['|'];\n }\n } else {\n escaped = true;\n }\n\n if (escaped && isType(node.parent, 'brace')) {\n if (node.parent.nodes.length <= 4 && node.parent.count === 1) {\n node.parent.escaped = true;\n } else if (node.parent.length <= 3) {\n node.parent.escaped = true;\n }\n }\n\n if (!hasQueue(node.parent)) {\n node.parent.queue = segs;\n return;\n }\n\n var last = utils.arrayify(queue.pop());\n if (node.parent.count > 1 && options.expand) {\n last = multiply(last, node.parent.count);\n node.parent.count = 1;\n }\n\n queue.push(utils.join(utils.flatten(last), segs.shift()));\n queue.push.apply(queue, segs);\n })\n\n /**\n * Close\n */\n\n .set('brace.close', function(node) {\n var queue = node.parent.queue;\n var prev = node.parent.parent;\n var last = prev.queue.pop();\n var open = node.parent.open;\n var close = node.val;\n\n if (open && close && isOptimized(node, options)) {\n open = '(';\n close = ')';\n }\n\n // if a close brace exists, and the previous segment is one character\n // don't wrap the result in braces or parens\n var ele = utils.last(queue);\n if (node.parent.count > 1 && options.expand) {\n ele = multiply(queue.pop(), node.parent.count);\n node.parent.count = 1;\n queue.push(ele);\n }\n\n if (close && typeof ele === 'string' && ele.length === 1) {\n open = '';\n close = '';\n }\n\n if ((isLiteralBrace(node, options) || noInner(node)) && !node.parent.hasEmpty) {\n queue.push(utils.join(open, queue.pop() || ''));\n queue = utils.flatten(utils.join(queue, close));\n }\n\n if (typeof last === 'undefined') {\n prev.queue = [queue];\n } else {\n prev.queue.push(utils.flatten(utils.join(last, queue)));\n }\n })\n\n /**\n * eos\n */\n\n .set('eos', function(node) {\n if (this.input) return;\n\n if (options.optimize !== false) {\n this.output = utils.last(utils.flatten(this.ast.queue));\n } else if (Array.isArray(utils.last(this.ast.queue))) {\n this.output = utils.flatten(this.ast.queue.pop());\n } else {\n this.output = utils.flatten(this.ast.queue);\n }\n\n if (node.parent.count > 1 && options.expand) {\n this.output = multiply(this.output, node.parent.count);\n }\n\n this.output = utils.arrayify(this.output);\n this.ast.queue = [];\n });\n\n};\n\n/**\n * Multiply the segments in the current brace level\n */\n\nfunction multiply(queue, n, options) {\n return utils.flatten(utils.repeat(utils.arrayify(queue), n));\n}\n\n/**\n * Return true if `node` is escaped\n */\n\nfunction isEscaped(node) {\n return node.escaped === true;\n}\n\n/**\n * Returns true if regex parens should be used for sets. If the parent `type`\n * is not `brace`, then we're on a root node, which means we should never\n * expand segments and open/close braces should be `{}` (since this indicates\n * a brace is missing from the set)\n */\n\nfunction isOptimized(node, options) {\n if (node.parent.isOptimized) return true;\n return isType(node.parent, 'brace')\n && !isEscaped(node.parent)\n && options.expand !== true;\n}\n\n/**\n * Returns true if the value in `node` should be wrapped in a literal brace.\n * @return {Boolean}\n */\n\nfunction isLiteralBrace(node, options) {\n return isEscaped(node.parent) || options.optimize !== false;\n}\n\n/**\n * Returns true if the given `node` does not have an inner value.\n * @return {Boolean}\n */\n\nfunction noInner(node, type) {\n if (node.parent.queue.length === 1) {\n return true;\n }\n var nodes = node.parent.nodes;\n return nodes.length === 3\n && isType(nodes[0], 'brace.open')\n && !isType(nodes[1], 'text')\n && isType(nodes[2], 'brace.close');\n}\n\n/**\n * Returns true if the given `node` is the given `type`\n * @return {Boolean}\n */\n\nfunction isType(node, type) {\n return typeof node !== 'undefined' && node.type === type;\n}\n\n/**\n * Returns true if the given `node` has a non-empty queue.\n * @return {Boolean}\n */\n\nfunction hasQueue(node) {\n return Array.isArray(node.queue) && node.queue.length;\n}\n","'use strict';\n\nvar Node = require('snapdragon-node');\nvar utils = require('./utils');\n\n/**\n * Braces parsers\n */\n\nmodule.exports = function(braces, options) {\n braces.parser\n .set('bos', function() {\n if (!this.parsed) {\n this.ast = this.nodes[0] = new Node(this.ast);\n }\n })\n\n /**\n * Character parsers\n */\n\n .set('escape', function() {\n var pos = this.position();\n var m = this.match(/^(?:\\\\(.)|\\$\\{)/);\n if (!m) return;\n\n var prev = this.prev();\n var last = utils.last(prev.nodes);\n\n var node = pos(new Node({\n type: 'text',\n multiplier: 1,\n val: m[0]\n }));\n\n if (node.val === '\\\\\\\\') {\n return node;\n }\n\n if (node.val === '${') {\n var str = this.input;\n var idx = -1;\n var ch;\n\n while ((ch = str[++idx])) {\n this.consume(1);\n node.val += ch;\n if (ch === '\\\\') {\n node.val += str[++idx];\n continue;\n }\n if (ch === '}') {\n break;\n }\n }\n }\n\n if (this.options.unescape !== false) {\n node.val = node.val.replace(/\\\\([{}])/g, '$1');\n }\n\n if (last.val === '\"' && this.input.charAt(0) === '\"') {\n last.val = node.val;\n this.consume(1);\n return;\n }\n\n return concatNodes.call(this, pos, node, prev, options);\n })\n\n /**\n * Brackets: \"[...]\" (basic, this is overridden by\n * other parsers in more advanced implementations)\n */\n\n .set('bracket', function() {\n var isInside = this.isInside('brace');\n var pos = this.position();\n var m = this.match(/^(?:\\[([!^]?)([^\\]]{2,}|\\]-)(\\]|[^*+?]+)|\\[)/);\n if (!m) return;\n\n var prev = this.prev();\n var val = m[0];\n var negated = m[1] ? '^' : '';\n var inner = m[2] || '';\n var close = m[3] || '';\n\n if (isInside && prev.type === 'brace') {\n prev.text = prev.text || '';\n prev.text += val;\n }\n\n var esc = this.input.slice(0, 2);\n if (inner === '' && esc === '\\\\]') {\n inner += esc;\n this.consume(2);\n\n var str = this.input;\n var idx = -1;\n var ch;\n\n while ((ch = str[++idx])) {\n this.consume(1);\n if (ch === ']') {\n close = ch;\n break;\n }\n inner += ch;\n }\n }\n\n return pos(new Node({\n type: 'bracket',\n val: val,\n escaped: close !== ']',\n negated: negated,\n inner: inner,\n close: close\n }));\n })\n\n /**\n * Empty braces (we capture these early to\n * speed up processing in the compiler)\n */\n\n .set('multiplier', function() {\n var isInside = this.isInside('brace');\n var pos = this.position();\n var m = this.match(/^\\{((?:,|\\{,+\\})+)\\}/);\n if (!m) return;\n\n this.multiplier = true;\n var prev = this.prev();\n var val = m[0];\n\n if (isInside && prev.type === 'brace') {\n prev.text = prev.text || '';\n prev.text += val;\n }\n\n var node = pos(new Node({\n type: 'text',\n multiplier: 1,\n match: m,\n val: val\n }));\n\n return concatNodes.call(this, pos, node, prev, options);\n })\n\n /**\n * Open\n */\n\n .set('brace.open', function() {\n var pos = this.position();\n var m = this.match(/^\\{(?!(?:[^\\\\}]?|,+)\\})/);\n if (!m) return;\n\n var prev = this.prev();\n var last = utils.last(prev.nodes);\n\n // if the last parsed character was an extglob character\n // we need to _not optimize_ the brace pattern because\n // it might be mistaken for an extglob by a downstream parser\n if (last && last.val && isExtglobChar(last.val.slice(-1))) {\n last.optimize = false;\n }\n\n var open = pos(new Node({\n type: 'brace.open',\n val: m[0]\n }));\n\n var node = pos(new Node({\n type: 'brace',\n nodes: []\n }));\n\n node.push(open);\n prev.push(node);\n this.push('brace', node);\n })\n\n /**\n * Close\n */\n\n .set('brace.close', function() {\n var pos = this.position();\n var m = this.match(/^\\}/);\n if (!m || !m[0]) return;\n\n var brace = this.pop('brace');\n var node = pos(new Node({\n type: 'brace.close',\n val: m[0]\n }));\n\n if (!this.isType(brace, 'brace')) {\n if (this.options.strict) {\n throw new Error('missing opening \"{\"');\n }\n node.type = 'text';\n node.multiplier = 0;\n node.escaped = true;\n return node;\n }\n\n var prev = this.prev();\n var last = utils.last(prev.nodes);\n if (last.text) {\n var lastNode = utils.last(last.nodes);\n if (lastNode.val === ')' && /[!@*?+]\\(/.test(last.text)) {\n var open = last.nodes[0];\n var text = last.nodes[1];\n if (open.type === 'brace.open' && text && text.type === 'text') {\n text.optimize = false;\n }\n }\n }\n\n if (brace.nodes.length > 2) {\n var first = brace.nodes[1];\n if (first.type === 'text' && first.val === ',') {\n brace.nodes.splice(1, 1);\n brace.nodes.push(first);\n }\n }\n\n brace.push(node);\n })\n\n /**\n * Capture boundary characters\n */\n\n .set('boundary', function() {\n var pos = this.position();\n var m = this.match(/^[$^](?!\\{)/);\n if (!m) return;\n return pos(new Node({\n type: 'text',\n val: m[0]\n }));\n })\n\n /**\n * One or zero, non-comma characters wrapped in braces\n */\n\n .set('nobrace', function() {\n var isInside = this.isInside('brace');\n var pos = this.position();\n var m = this.match(/^\\{[^,]?\\}/);\n if (!m) return;\n\n var prev = this.prev();\n var val = m[0];\n\n if (isInside && prev.type === 'brace') {\n prev.text = prev.text || '';\n prev.text += val;\n }\n\n return pos(new Node({\n type: 'text',\n multiplier: 0,\n val: val\n }));\n })\n\n /**\n * Text\n */\n\n .set('text', function() {\n var isInside = this.isInside('brace');\n var pos = this.position();\n var m = this.match(/^((?!\\\\)[^${}[\\]])+/);\n if (!m) return;\n\n var prev = this.prev();\n var val = m[0];\n\n if (isInside && prev.type === 'brace') {\n prev.text = prev.text || '';\n prev.text += val;\n }\n\n var node = pos(new Node({\n type: 'text',\n multiplier: 1,\n val: val\n }));\n\n return concatNodes.call(this, pos, node, prev, options);\n });\n};\n\n/**\n * Returns true if the character is an extglob character.\n */\n\nfunction isExtglobChar(ch) {\n return ch === '!' || ch === '@' || ch === '*' || ch === '?' || ch === '+';\n}\n\n/**\n * Combine text nodes, and calculate empty sets (`{,,}`)\n * @param {Function} `pos` Function to calculate node position\n * @param {Object} `node` AST node\n * @return {Object}\n */\n\nfunction concatNodes(pos, node, parent, options) {\n node.orig = node.val;\n var prev = this.prev();\n var last = utils.last(prev.nodes);\n var isEscaped = false;\n\n if (node.val.length > 1) {\n var a = node.val.charAt(0);\n var b = node.val.slice(-1);\n\n isEscaped = (a === '\"' && b === '\"')\n || (a === \"'\" && b === \"'\")\n || (a === '`' && b === '`');\n }\n\n if (isEscaped && options.unescape !== false) {\n node.val = node.val.slice(1, node.val.length - 1);\n node.escaped = true;\n }\n\n if (node.match) {\n var match = node.match[1];\n if (!match || match.indexOf('}') === -1) {\n match = node.match[0];\n }\n\n // replace each set with a single \",\"\n var val = match.replace(/\\{/g, ',').replace(/\\}/g, '');\n node.multiplier *= val.length;\n node.val = '';\n }\n\n var simpleText = last.type === 'text'\n && last.multiplier === 1\n && node.multiplier === 1\n && node.val;\n\n if (simpleText) {\n last.val += node.val;\n return;\n }\n\n prev.push(node);\n}\n","'use strict';\n\nvar splitString = require('split-string');\nvar utils = module.exports;\n\n/**\n * Module dependencies\n */\n\nutils.extend = require('extend-shallow');\nutils.flatten = require('arr-flatten');\nutils.isObject = require('isobject');\nutils.fillRange = require('fill-range');\nutils.repeat = require('repeat-element');\nutils.unique = require('array-unique');\n\nutils.define = function(obj, key, val) {\n Object.defineProperty(obj, key, {\n writable: true,\n configurable: true,\n enumerable: false,\n value: val\n });\n};\n\n/**\n * Returns true if the given string contains only empty brace sets.\n */\n\nutils.isEmptySets = function(str) {\n return /^(?:\\{,\\})+$/.test(str);\n};\n\n/**\n * Returns true if the given string contains only empty brace sets.\n */\n\nutils.isQuotedString = function(str) {\n var open = str.charAt(0);\n if (open === '\\'' || open === '\"' || open === '`') {\n return str.slice(-1) === open;\n }\n return false;\n};\n\n/**\n * Create the key to use for memoization. The unique key is generated\n * by iterating over the options and concatenating key-value pairs\n * to the pattern string.\n */\n\nutils.createKey = function(pattern, options) {\n var id = pattern;\n if (typeof options === 'undefined') {\n return id;\n }\n var keys = Object.keys(options);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n id += ';' + key + '=' + String(options[key]);\n }\n return id;\n};\n\n/**\n * Normalize options\n */\n\nutils.createOptions = function(options) {\n var opts = utils.extend.apply(null, arguments);\n if (typeof opts.expand === 'boolean') {\n opts.optimize = !opts.expand;\n }\n if (typeof opts.optimize === 'boolean') {\n opts.expand = !opts.optimize;\n }\n if (opts.optimize === true) {\n opts.makeRe = true;\n }\n return opts;\n};\n\n/**\n * Join patterns in `a` to patterns in `b`\n */\n\nutils.join = function(a, b, options) {\n options = options || {};\n a = utils.arrayify(a);\n b = utils.arrayify(b);\n\n if (!a.length) return b;\n if (!b.length) return a;\n\n var len = a.length;\n var idx = -1;\n var arr = [];\n\n while (++idx < len) {\n var val = a[idx];\n if (Array.isArray(val)) {\n for (var i = 0; i < val.length; i++) {\n val[i] = utils.join(val[i], b, options);\n }\n arr.push(val);\n continue;\n }\n\n for (var j = 0; j < b.length; j++) {\n var bval = b[j];\n\n if (Array.isArray(bval)) {\n arr.push(utils.join(val, bval, options));\n } else {\n arr.push(val + bval);\n }\n }\n }\n return arr;\n};\n\n/**\n * Split the given string on `,` if not escaped.\n */\n\nutils.split = function(str, options) {\n var opts = utils.extend({sep: ','}, options);\n if (typeof opts.keepQuotes !== 'boolean') {\n opts.keepQuotes = true;\n }\n if (opts.unescape === false) {\n opts.keepEscaping = true;\n }\n return splitString(str, opts, utils.escapeBrackets(opts));\n};\n\n/**\n * Expand ranges or sets in the given `pattern`.\n *\n * @param {String} `str`\n * @param {Object} `options`\n * @return {Object}\n */\n\nutils.expand = function(str, options) {\n var opts = utils.extend({rangeLimit: 10000}, options);\n var segs = utils.split(str, opts);\n var tok = { segs: segs };\n\n if (utils.isQuotedString(str)) {\n return tok;\n }\n\n if (opts.rangeLimit === true) {\n opts.rangeLimit = 10000;\n }\n\n if (segs.length > 1) {\n if (opts.optimize === false) {\n tok.val = segs[0];\n return tok;\n }\n\n tok.segs = utils.stringifyArray(tok.segs);\n } else if (segs.length === 1) {\n var arr = str.split('..');\n\n if (arr.length === 1) {\n tok.val = tok.segs[tok.segs.length - 1] || tok.val || str;\n tok.segs = [];\n return tok;\n }\n\n if (arr.length === 2 && arr[0] === arr[1]) {\n tok.escaped = true;\n tok.val = arr[0];\n tok.segs = [];\n return tok;\n }\n\n if (arr.length > 1) {\n if (opts.optimize !== false) {\n opts.optimize = true;\n delete opts.expand;\n }\n\n if (opts.optimize !== true) {\n var min = Math.min(arr[0], arr[1]);\n var max = Math.max(arr[0], arr[1]);\n var step = arr[2] || 1;\n\n if (opts.rangeLimit !== false && ((max - min) / step >= opts.rangeLimit)) {\n throw new RangeError('expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.');\n }\n }\n\n arr.push(opts);\n tok.segs = utils.fillRange.apply(null, arr);\n\n if (!tok.segs.length) {\n tok.escaped = true;\n tok.val = str;\n return tok;\n }\n\n if (opts.optimize === true) {\n tok.segs = utils.stringifyArray(tok.segs);\n }\n\n if (tok.segs === '') {\n tok.val = str;\n } else {\n tok.val = tok.segs[0];\n }\n return tok;\n }\n } else {\n tok.val = str;\n }\n return tok;\n};\n\n/**\n * Ensure commas inside brackets and parens are not split.\n * @param {Object} `tok` Token from the `split-string` module\n * @return {undefined}\n */\n\nutils.escapeBrackets = function(options) {\n return function(tok) {\n if (tok.escaped && tok.val === 'b') {\n tok.val = '\\\\b';\n return;\n }\n\n if (tok.val !== '(' && tok.val !== '[') return;\n var opts = utils.extend({}, options);\n var brackets = [];\n var parens = [];\n var stack = [];\n var val = tok.val;\n var str = tok.str;\n var i = tok.idx - 1;\n\n while (++i < str.length) {\n var ch = str[i];\n\n if (ch === '\\\\') {\n val += (opts.keepEscaping === false ? '' : ch) + str[++i];\n continue;\n }\n\n if (ch === '(') {\n parens.push(ch);\n stack.push(ch);\n }\n\n if (ch === '[') {\n brackets.push(ch);\n stack.push(ch);\n }\n\n if (ch === ')') {\n parens.pop();\n stack.pop();\n if (!stack.length) {\n val += ch;\n break;\n }\n }\n\n if (ch === ']') {\n brackets.pop();\n stack.pop();\n if (!stack.length) {\n val += ch;\n break;\n }\n }\n val += ch;\n }\n\n tok.split = false;\n tok.val = val.slice(1);\n tok.idx = i;\n };\n};\n\n/**\n * Returns true if the given string looks like a regex quantifier\n * @return {Boolean}\n */\n\nutils.isQuantifier = function(str) {\n return /^(?:[0-9]?,[0-9]|[0-9],)$/.test(str);\n};\n\n/**\n * Cast `val` to an array.\n * @param {*} `val`\n */\n\nutils.stringifyArray = function(arr) {\n return [utils.arrayify(arr).join('|')];\n};\n\n/**\n * Cast `val` to an array.\n * @param {*} `val`\n */\n\nutils.arrayify = function(arr) {\n if (typeof arr === 'undefined') {\n return [];\n }\n if (typeof arr === 'string') {\n return [arr];\n }\n return arr;\n};\n\n/**\n * Returns true if the given `str` is a non-empty string\n * @return {Boolean}\n */\n\nutils.isString = function(str) {\n return str != null && typeof str === 'string';\n};\n\n/**\n * Get the last element from `array`\n * @param {Array} `array`\n * @return {*}\n */\n\nutils.last = function(arr, n) {\n return arr[arr.length - (n || 1)];\n};\n\nutils.escapeRegex = function(str) {\n return str.replace(/\\\\?([!^*?()[\\]{}+?/])/g, '\\\\$1');\n};\n","'use strict';\n\nvar isObject = require('isobject');\nvar Emitter = require('component-emitter');\nvar visit = require('collection-visit');\nvar toPath = require('to-object-path');\nvar union = require('union-value');\nvar del = require('unset-value');\nvar get = require('get-value');\nvar has = require('has-value');\nvar set = require('set-value');\n\n/**\n * Create a `Cache` constructor that when instantiated will\n * store values on the given `prop`.\n *\n * ```js\n * var Cache = require('cache-base').namespace('data');\n * var cache = new Cache();\n *\n * cache.set('foo', 'bar');\n * //=> {data: {foo: 'bar'}}\n * ```\n * @param {String} `prop` The property name to use for storing values.\n * @return {Function} Returns a custom `Cache` constructor\n * @api public\n */\n\nfunction namespace(prop) {\n\n /**\n * Create a new `Cache`. Internally the `Cache` constructor is created using\n * the `namespace` function, with `cache` defined as the storage object.\n *\n * ```js\n * var app = new Cache();\n * ```\n * @param {Object} `cache` Optionally pass an object to initialize with.\n * @constructor\n * @api public\n */\n\n function Cache(cache) {\n if (prop) {\n this[prop] = {};\n }\n if (cache) {\n this.set(cache);\n }\n }\n\n /**\n * Inherit Emitter\n */\n\n Emitter(Cache.prototype);\n\n /**\n * Assign `value` to `key`. Also emits `set` with\n * the key and value.\n *\n * ```js\n * app.on('set', function(key, val) {\n * // do something when `set` is emitted\n * });\n *\n * app.set(key, value);\n *\n * // also takes an object or array\n * app.set({name: 'Halle'});\n * app.set([{foo: 'bar'}, {baz: 'quux'}]);\n * console.log(app);\n * //=> {name: 'Halle', foo: 'bar', baz: 'quux'}\n * ```\n *\n * @name .set\n * @emits `set` with `key` and `value` as arguments.\n * @param {String} `key`\n * @param {any} `value`\n * @return {Object} Returns the instance for chaining.\n * @api public\n */\n\n Cache.prototype.set = function(key, val) {\n if (Array.isArray(key) && arguments.length === 2) {\n key = toPath(key);\n }\n if (isObject(key) || Array.isArray(key)) {\n this.visit('set', key);\n } else {\n set(prop ? this[prop] : this, key, val);\n this.emit('set', key, val);\n }\n return this;\n };\n\n /**\n * Union `array` to `key`. Also emits `set` with\n * the key and value.\n *\n * ```js\n * app.union('a.b', ['foo']);\n * app.union('a.b', ['bar']);\n * console.log(app.get('a'));\n * //=> {b: ['foo', 'bar']}\n * ```\n * @name .union\n * @param {String} `key`\n * @param {any} `value`\n * @return {Object} Returns the instance for chaining.\n * @api public\n */\n\n Cache.prototype.union = function(key, val) {\n if (Array.isArray(key) && arguments.length === 2) {\n key = toPath(key);\n }\n var ctx = prop ? this[prop] : this;\n union(ctx, key, arrayify(val));\n this.emit('union', val);\n return this;\n };\n\n /**\n * Return the value of `key`. Dot notation may be used\n * to get [nested property values][get-value].\n *\n * ```js\n * app.set('a.b.c', 'd');\n * app.get('a.b');\n * //=> {c: 'd'}\n *\n * app.get(['a', 'b']);\n * //=> {c: 'd'}\n * ```\n *\n * @name .get\n * @emits `get` with `key` and `value` as arguments.\n * @param {String} `key` The name of the property to get. Dot-notation may be used.\n * @return {any} Returns the value of `key`\n * @api public\n */\n\n Cache.prototype.get = function(key) {\n key = toPath(arguments);\n\n var ctx = prop ? this[prop] : this;\n var val = get(ctx, key);\n\n this.emit('get', key, val);\n return val;\n };\n\n /**\n * Return true if app has a stored value for `key`,\n * false only if value is `undefined`.\n *\n * ```js\n * app.set('foo', 'bar');\n * app.has('foo');\n * //=> true\n * ```\n *\n * @name .has\n * @emits `has` with `key` and true or false as arguments.\n * @param {String} `key`\n * @return {Boolean}\n * @api public\n */\n\n Cache.prototype.has = function(key) {\n key = toPath(arguments);\n\n var ctx = prop ? this[prop] : this;\n var val = get(ctx, key);\n\n var has = typeof val !== 'undefined';\n this.emit('has', key, has);\n return has;\n };\n\n /**\n * Delete one or more properties from the instance.\n *\n * ```js\n * app.del(); // delete all\n * // or\n * app.del('foo');\n * // or\n * app.del(['foo', 'bar']);\n * ```\n * @name .del\n * @emits `del` with the `key` as the only argument.\n * @param {String|Array} `key` Property name or array of property names.\n * @return {Object} Returns the instance for chaining.\n * @api public\n */\n\n Cache.prototype.del = function(key) {\n if (Array.isArray(key)) {\n this.visit('del', key);\n } else {\n del(prop ? this[prop] : this, key);\n this.emit('del', key);\n }\n return this;\n };\n\n /**\n * Reset the entire cache to an empty object.\n *\n * ```js\n * app.clear();\n * ```\n * @api public\n */\n\n Cache.prototype.clear = function() {\n if (prop) {\n this[prop] = {};\n }\n };\n\n /**\n * Visit `method` over the properties in the given object, or map\n * visit over the object-elements in an array.\n *\n * @name .visit\n * @param {String} `method` The name of the `base` method to call.\n * @param {Object|Array} `val` The object or array to iterate over.\n * @return {Object} Returns the instance for chaining.\n * @api public\n */\n\n Cache.prototype.visit = function(method, val) {\n visit(this, method, val);\n return this;\n };\n\n return Cache;\n}\n\n/**\n * Cast val to an array\n */\n\nfunction arrayify(val) {\n return val ? (Array.isArray(val) ? val : [val]) : [];\n}\n\n/**\n * Expose `Cache`\n */\n\nmodule.exports = namespace();\n\n/**\n * Expose `Cache.namespace`\n */\n\nmodule.exports.namespace = namespace;\n","\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n for (var key in Emitter.prototype) {\r\n obj[key] = Emitter.prototype[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n .push(fn);\r\n return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n function on() {\r\n this.off(event, on);\r\n fn.apply(this, arguments);\r\n }\r\n\r\n on.fn = fn;\r\n this.on(event, on);\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n\r\n // all\r\n if (0 == arguments.length) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n\r\n // specific event\r\n var callbacks = this._callbacks['$' + event];\r\n if (!callbacks) return this;\r\n\r\n // remove all handlers\r\n if (1 == arguments.length) {\r\n delete this._callbacks['$' + event];\r\n return this;\r\n }\r\n\r\n // remove specific handler\r\n var cb;\r\n for (var i = 0; i < callbacks.length; i++) {\r\n cb = callbacks[i];\r\n if (cb === fn || cb.fn === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n\r\n // Remove event specific arrays for event types that no\r\n // one is subscribed for to avoid memory leak.\r\n if (callbacks.length === 0) {\r\n delete this._callbacks['$' + event];\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n this._callbacks = this._callbacks || {};\r\n\r\n var args = new Array(arguments.length - 1)\r\n , callbacks = this._callbacks['$' + event];\r\n\r\n for (var i = 1; i < arguments.length; i++) {\r\n args[i - 1] = arguments[i];\r\n }\r\n\r\n if (callbacks) {\r\n callbacks = callbacks.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n callbacks[i].apply(this, args);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n this._callbacks = this._callbacks || {};\r\n return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n return !! this.listeners(event).length;\r\n};\r\n","'use strict';\n\nvar util = require('util');\nvar union = require('arr-union');\nvar define = require('define-property');\nvar staticExtend = require('static-extend');\nvar isObj = require('isobject');\n\n/**\n * Expose class utils\n */\n\nvar cu = module.exports;\n\n/**\n * Expose class utils: `cu`\n */\n\ncu.isObject = function isObject(val) {\n return isObj(val) || typeof val === 'function';\n};\n\n/**\n * Returns true if an array has any of the given elements, or an\n * object has any of the give keys.\n *\n * ```js\n * cu.has(['a', 'b', 'c'], 'c');\n * //=> true\n *\n * cu.has(['a', 'b', 'c'], ['c', 'z']);\n * //=> true\n *\n * cu.has({a: 'b', c: 'd'}, ['c', 'z']);\n * //=> true\n * ```\n * @param {Object} `obj`\n * @param {String|Array} `val`\n * @return {Boolean}\n * @api public\n */\n\ncu.has = function has(obj, val) {\n val = cu.arrayify(val);\n var len = val.length;\n\n if (cu.isObject(obj)) {\n for (var key in obj) {\n if (val.indexOf(key) > -1) {\n return true;\n }\n }\n\n var keys = cu.nativeKeys(obj);\n return cu.has(keys, val);\n }\n\n if (Array.isArray(obj)) {\n var arr = obj;\n while (len--) {\n if (arr.indexOf(val[len]) > -1) {\n return true;\n }\n }\n return false;\n }\n\n throw new TypeError('expected an array or object.');\n};\n\n/**\n * Returns true if an array or object has all of the given values.\n *\n * ```js\n * cu.hasAll(['a', 'b', 'c'], 'c');\n * //=> true\n *\n * cu.hasAll(['a', 'b', 'c'], ['c', 'z']);\n * //=> false\n *\n * cu.hasAll({a: 'b', c: 'd'}, ['c', 'z']);\n * //=> false\n * ```\n * @param {Object|Array} `val`\n * @param {String|Array} `values`\n * @return {Boolean}\n * @api public\n */\n\ncu.hasAll = function hasAll(val, values) {\n values = cu.arrayify(values);\n var len = values.length;\n while (len--) {\n if (!cu.has(val, values[len])) {\n return false;\n }\n }\n return true;\n};\n\n/**\n * Cast the given value to an array.\n *\n * ```js\n * cu.arrayify('foo');\n * //=> ['foo']\n *\n * cu.arrayify(['foo']);\n * //=> ['foo']\n * ```\n *\n * @param {String|Array} `val`\n * @return {Array}\n * @api public\n */\n\ncu.arrayify = function arrayify(val) {\n return val ? (Array.isArray(val) ? val : [val]) : [];\n};\n\n/**\n * Noop\n */\n\ncu.noop = function noop() {\n return;\n};\n\n/**\n * Returns the first argument passed to the function.\n */\n\ncu.identity = function identity(val) {\n return val;\n};\n\n/**\n * Returns true if a value has a `contructor`\n *\n * ```js\n * cu.hasConstructor({});\n * //=> true\n *\n * cu.hasConstructor(Object.create(null));\n * //=> false\n * ```\n * @param {Object} `value`\n * @return {Boolean}\n * @api public\n */\n\ncu.hasConstructor = function hasConstructor(val) {\n return cu.isObject(val) && typeof val.constructor !== 'undefined';\n};\n\n/**\n * Get the native `ownPropertyNames` from the constructor of the\n * given `object`. An empty array is returned if the object does\n * not have a constructor.\n *\n * ```js\n * cu.nativeKeys({a: 'b', b: 'c', c: 'd'})\n * //=> ['a', 'b', 'c']\n *\n * cu.nativeKeys(function(){})\n * //=> ['length', 'caller']\n * ```\n *\n * @param {Object} `obj` Object that has a `constructor`.\n * @return {Array} Array of keys.\n * @api public\n */\n\ncu.nativeKeys = function nativeKeys(val) {\n if (!cu.hasConstructor(val)) return [];\n var keys = Object.getOwnPropertyNames(val);\n if ('caller' in val) keys.push('caller');\n return keys;\n};\n\n/**\n * Returns property descriptor `key` if it's an \"own\" property\n * of the given object.\n *\n * ```js\n * function App() {}\n * Object.defineProperty(App.prototype, 'count', {\n * get: function() {\n * return Object.keys(this).length;\n * }\n * });\n * cu.getDescriptor(App.prototype, 'count');\n * // returns:\n * // {\n * // get: [Function],\n * // set: undefined,\n * // enumerable: false,\n * // configurable: false\n * // }\n * ```\n *\n * @param {Object} `obj`\n * @param {String} `key`\n * @return {Object} Returns descriptor `key`\n * @api public\n */\n\ncu.getDescriptor = function getDescriptor(obj, key) {\n if (!cu.isObject(obj)) {\n throw new TypeError('expected an object.');\n }\n if (typeof key !== 'string') {\n throw new TypeError('expected key to be a string.');\n }\n return Object.getOwnPropertyDescriptor(obj, key);\n};\n\n/**\n * Copy a descriptor from one object to another.\n *\n * ```js\n * function App() {}\n * Object.defineProperty(App.prototype, 'count', {\n * get: function() {\n * return Object.keys(this).length;\n * }\n * });\n * var obj = {};\n * cu.copyDescriptor(obj, App.prototype, 'count');\n * ```\n * @param {Object} `receiver`\n * @param {Object} `provider`\n * @param {String} `name`\n * @return {Object}\n * @api public\n */\n\ncu.copyDescriptor = function copyDescriptor(receiver, provider, name) {\n if (!cu.isObject(receiver)) {\n throw new TypeError('expected receiving object to be an object.');\n }\n if (!cu.isObject(provider)) {\n throw new TypeError('expected providing object to be an object.');\n }\n if (typeof name !== 'string') {\n throw new TypeError('expected name to be a string.');\n }\n\n var val = cu.getDescriptor(provider, name);\n if (val) Object.defineProperty(receiver, name, val);\n};\n\n/**\n * Copy static properties, prototype properties, and descriptors\n * from one object to another.\n *\n * @param {Object} `receiver`\n * @param {Object} `provider`\n * @param {String|Array} `omit` One or more properties to omit\n * @return {Object}\n * @api public\n */\n\ncu.copy = function copy(receiver, provider, omit) {\n if (!cu.isObject(receiver)) {\n throw new TypeError('expected receiving object to be an object.');\n }\n if (!cu.isObject(provider)) {\n throw new TypeError('expected providing object to be an object.');\n }\n var props = Object.getOwnPropertyNames(provider);\n var keys = Object.keys(provider);\n var len = props.length,\n key;\n omit = cu.arrayify(omit);\n\n while (len--) {\n key = props[len];\n\n if (cu.has(keys, key)) {\n define(receiver, key, provider[key]);\n } else if (!(key in receiver) && !cu.has(omit, key)) {\n cu.copyDescriptor(receiver, provider, key);\n }\n }\n};\n\n/**\n * Inherit the static properties, prototype properties, and descriptors\n * from of an object.\n *\n * @param {Object} `receiver`\n * @param {Object} `provider`\n * @param {String|Array} `omit` One or more properties to omit\n * @return {Object}\n * @api public\n */\n\ncu.inherit = function inherit(receiver, provider, omit) {\n if (!cu.isObject(receiver)) {\n throw new TypeError('expected receiving object to be an object.');\n }\n if (!cu.isObject(provider)) {\n throw new TypeError('expected providing object to be an object.');\n }\n\n var keys = [];\n for (var key in provider) {\n keys.push(key);\n receiver[key] = provider[key];\n }\n\n keys = keys.concat(cu.arrayify(omit));\n\n var a = provider.prototype || provider;\n var b = receiver.prototype || receiver;\n cu.copy(b, a, keys);\n};\n\n/**\n * Returns a function for extending the static properties,\n * prototype properties, and descriptors from the `Parent`\n * constructor onto `Child` constructors.\n *\n * ```js\n * var extend = cu.extend(Parent);\n * Parent.extend(Child);\n *\n * // optional methods\n * Parent.extend(Child, {\n * foo: function() {},\n * bar: function() {}\n * });\n * ```\n * @param {Function} `Parent` Parent ctor\n * @param {Function} `extend` Optional extend function to handle custom extensions. Useful when updating methods that require a specific prototype.\n * @param {Function} `Child` Child ctor\n * @param {Object} `proto` Optionally pass additional prototype properties to inherit.\n * @return {Object}\n * @api public\n */\n\ncu.extend = function() {\n // keep it lazy, instead of assigning to `cu.extend`\n return staticExtend.apply(null, arguments);\n};\n\n/**\n * Bubble up events emitted from static methods on the Parent ctor.\n *\n * @param {Object} `Parent`\n * @param {Array} `events` Event names to bubble up\n * @api public\n */\n\ncu.bubble = function(Parent, events) {\n events = events || [];\n Parent.bubble = function(Child, arr) {\n if (Array.isArray(arr)) {\n events = union([], events, arr);\n }\n var len = events.length;\n var idx = -1;\n while (++idx < len) {\n var name = events[idx];\n Parent.on(name, Child.emit.bind(Child, name));\n }\n cu.bubble(Child, events);\n };\n};\n","/*!\n * collection-visit <https://github.com/jonschlinkert/collection-visit>\n *\n * Copyright (c) 2015, 2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar visit = require('object-visit');\nvar mapVisit = require('map-visit');\n\nmodule.exports = function(collection, method, val) {\n var result;\n\n if (typeof val === 'string' && (method in collection)) {\n var args = [].slice.call(arguments, 2);\n result = collection[method].apply(collection, args);\n } else if (Array.isArray(val)) {\n result = mapVisit.apply(null, arguments);\n } else {\n result = visit.apply(null, arguments);\n }\n\n if (typeof result !== 'undefined') {\n return result;\n }\n\n return collection;\n};\n","/* MIT license */\nvar 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\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n\tif (cssKeywords.hasOwnProperty(key)) {\n\t\treverseKeywords[cssKeywords[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\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\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\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\tl = (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\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 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\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\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar 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\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in cssKeywords) {\n\t\tif (cssKeywords.hasOwnProperty(keyword)) {\n\t\t\tvar value = cssKeywords[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\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\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar 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\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar 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\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var 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\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\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = 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\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar 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\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (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\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\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\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 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\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar 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 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(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\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(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\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar 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\tvar r = args[0];\n\tvar g = args[1];\n\tvar 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\tvar 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\tvar 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\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar 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\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar 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\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar 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\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar 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 + 4;\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\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\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\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar 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\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\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\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\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar 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\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar 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\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar 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 = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\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\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","var conversions = require('./conversions');\nvar route = require('./route');\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\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\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar 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 (var 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(function (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\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar 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","var 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\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var 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\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar 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\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar 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\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar 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'\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 * copy-descriptor <https://github.com/jonschlinkert/copy-descriptor>\n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\n/**\n * Copy a descriptor from one object to another.\n *\n * ```js\n * function App() {\n * this.cache = {};\n * }\n * App.prototype.set = function(key, val) {\n * this.cache[key] = val;\n * return this;\n * };\n * Object.defineProperty(App.prototype, 'count', {\n * get: function() {\n * return Object.keys(this.cache).length;\n * }\n * });\n *\n * copy(App.prototype, 'count', 'len');\n *\n * // create an instance\n * var app = new App();\n *\n * app.set('a', true);\n * app.set('b', true);\n * app.set('c', true);\n *\n * console.log(app.count);\n * //=> 3\n * console.log(app.len);\n * //=> 3\n * ```\n * @name copy\n * @param {Object} `receiver` The target object\n * @param {Object} `provider` The provider object\n * @param {String} `from` The key to copy on provider.\n * @param {String} `to` Optionally specify a new key name to use.\n * @return {Object}\n * @api public\n */\n\nmodule.exports = function copyDescriptor(receiver, provider, from, to) {\n if (!isObject(provider) && typeof provider !== 'function') {\n to = from;\n from = provider;\n provider = receiver;\n }\n if (!isObject(receiver) && typeof receiver !== 'function') {\n throw new TypeError('expected the first argument to be an object');\n }\n if (!isObject(provider) && typeof provider !== 'function') {\n throw new TypeError('expected provider to be an object');\n }\n\n if (typeof to !== 'string') {\n to = from;\n }\n if (typeof from !== 'string') {\n throw new TypeError('expected key to be a string');\n }\n\n if (!(from in provider)) {\n throw new Error('property \"' + from + '\" does not exist');\n }\n\n var val = Object.getOwnPropertyDescriptor(provider, from);\n if (val) Object.defineProperty(receiver, to, val);\n};\n\nfunction isObject(val) {\n return {}.toString.call(val) === '[object Object]';\n}\n\n","/*!\n * define-property <https://github.com/jonschlinkert/define-property>\n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nvar isDescriptor = require('is-descriptor');\n\nmodule.exports = function defineProperty(obj, prop, val) {\n if (typeof obj !== 'object' && typeof obj !== 'function') {\n throw new TypeError('expected an object or function.');\n }\n\n if (typeof prop !== 'string') {\n throw new TypeError('expected `prop` to be a string.');\n }\n\n if (isDescriptor(val) && ('set' in val || 'get' in val)) {\n return Object.defineProperty(obj, prop, val);\n }\n\n return Object.defineProperty(obj, prop, {\n configurable: true,\n enumerable: false,\n writable: true,\n value: val\n });\n};\n","/*!\n * is-accessor-descriptor <https://github.com/jonschlinkert/is-accessor-descriptor>\n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nvar typeOf = require('kind-of');\n\n// accessor descriptor properties\nvar accessor = {\n get: 'function',\n set: 'function',\n configurable: 'boolean',\n enumerable: 'boolean'\n};\n\nfunction isAccessorDescriptor(obj, prop) {\n if (typeof prop === 'string') {\n var val = Object.getOwnPropertyDescriptor(obj, prop);\n return typeof val !== 'undefined';\n }\n\n if (typeOf(obj) !== 'object') {\n return false;\n }\n\n if (has(obj, 'value') || has(obj, 'writable')) {\n return false;\n }\n\n if (!has(obj, 'get') || typeof obj.get !== 'function') {\n return false;\n }\n\n // tldr: it's valid to have \"set\" be undefined\n // \"set\" might be undefined if `Object.getOwnPropertyDescriptor`\n // was used to get the value, and only `get` was defined by the user\n if (has(obj, 'set') && typeof obj[key] !== 'function' && typeof obj[key] !== 'undefined') {\n return false;\n }\n\n for (var key in obj) {\n if (!accessor.hasOwnProperty(key)) {\n continue;\n }\n\n if (typeOf(obj[key]) === accessor[key]) {\n continue;\n }\n\n if (typeof obj[key] !== 'undefined') {\n return false;\n }\n }\n return true;\n}\n\nfunction has(obj, key) {\n return {}.hasOwnProperty.call(obj, key);\n}\n\n/**\n * Expose `isAccessorDescriptor`\n */\n\nmodule.exports = isAccessorDescriptor;\n","var isBuffer = require('is-buffer');\nvar toString = Object.prototype.toString;\n\n/**\n * Get the native `typeof` a value.\n *\n * @param {*} `val`\n * @return {*} Native javascript type\n */\n\nmodule.exports = function kindOf(val) {\n // primitivies\n if (typeof val === 'undefined') {\n return 'undefined';\n }\n if (val === null) {\n return 'null';\n }\n if (val === true || val === false || val instanceof Boolean) {\n return 'boolean';\n }\n if (typeof val === 'string' || val instanceof String) {\n return 'string';\n }\n if (typeof val === 'number' || val instanceof Number) {\n return 'number';\n }\n\n // functions\n if (typeof val === 'function' || val instanceof Function) {\n return 'function';\n }\n\n // array\n if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) {\n return 'array';\n }\n\n // check for instances of RegExp and Date before calling `toString`\n if (val instanceof RegExp) {\n return 'regexp';\n }\n if (val instanceof Date) {\n return 'date';\n }\n\n // other objects\n var type = toString.call(val);\n\n if (type === '[object RegExp]') {\n return 'regexp';\n }\n if (type === '[object Date]') {\n return 'date';\n }\n if (type === '[object Arguments]') {\n return 'arguments';\n }\n if (type === '[object Error]') {\n return 'error';\n }\n\n // buffer\n if (isBuffer(val)) {\n return 'buffer';\n }\n\n // es6: Map, WeakMap, Set, WeakSet\n if (type === '[object Set]') {\n return 'set';\n }\n if (type === '[object WeakSet]') {\n return 'weakset';\n }\n if (type === '[object Map]') {\n return 'map';\n }\n if (type === '[object WeakMap]') {\n return 'weakmap';\n }\n if (type === '[object Symbol]') {\n return 'symbol';\n }\n\n // typed arrays\n if (type === '[object Int8Array]') {\n return 'int8array';\n }\n if (type === '[object Uint8Array]') {\n return 'uint8array';\n }\n if (type === '[object Uint8ClampedArray]') {\n return 'uint8clampedarray';\n }\n if (type === '[object Int16Array]') {\n return 'int16array';\n }\n if (type === '[object Uint16Array]') {\n return 'uint16array';\n }\n if (type === '[object Int32Array]') {\n return 'int32array';\n }\n if (type === '[object Uint32Array]') {\n return 'uint32array';\n }\n if (type === '[object Float32Array]') {\n return 'float32array';\n }\n if (type === '[object Float64Array]') {\n return 'float64array';\n }\n\n // must be a plain object\n return 'object';\n};\n","/*!\n * is-data-descriptor <https://github.com/jonschlinkert/is-data-descriptor>\n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nvar typeOf = require('kind-of');\n\n// data descriptor properties\nvar data = {\n configurable: 'boolean',\n enumerable: 'boolean',\n writable: 'boolean'\n};\n\nfunction isDataDescriptor(obj, prop) {\n if (typeOf(obj) !== 'object') {\n return false;\n }\n\n if (typeof prop === 'string') {\n var val = Object.getOwnPropertyDescriptor(obj, prop);\n return typeof val !== 'undefined';\n }\n\n if (!('value' in obj) && !('writable' in obj)) {\n return false;\n }\n\n for (var key in obj) {\n if (key === 'value') continue;\n\n if (!data.hasOwnProperty(key)) {\n continue;\n }\n\n if (typeOf(obj[key]) === data[key]) {\n continue;\n }\n\n if (typeof obj[key] !== 'undefined') {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Expose `isDataDescriptor`\n */\n\nmodule.exports = isDataDescriptor;\n","var isBuffer = require('is-buffer');\nvar toString = Object.prototype.toString;\n\n/**\n * Get the native `typeof` a value.\n *\n * @param {*} `val`\n * @return {*} Native javascript type\n */\n\nmodule.exports = function kindOf(val) {\n // primitivies\n if (typeof val === 'undefined') {\n return 'undefined';\n }\n if (val === null) {\n return 'null';\n }\n if (val === true || val === false || val instanceof Boolean) {\n return 'boolean';\n }\n if (typeof val === 'string' || val instanceof String) {\n return 'string';\n }\n if (typeof val === 'number' || val instanceof Number) {\n return 'number';\n }\n\n // functions\n if (typeof val === 'function' || val instanceof Function) {\n return 'function';\n }\n\n // array\n if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) {\n return 'array';\n }\n\n // check for instances of RegExp and Date before calling `toString`\n if (val instanceof RegExp) {\n return 'regexp';\n }\n if (val instanceof Date) {\n return 'date';\n }\n\n // other objects\n var type = toString.call(val);\n\n if (type === '[object RegExp]') {\n return 'regexp';\n }\n if (type === '[object Date]') {\n return 'date';\n }\n if (type === '[object Arguments]') {\n return 'arguments';\n }\n if (type === '[object Error]') {\n return 'error';\n }\n\n // buffer\n if (isBuffer(val)) {\n return 'buffer';\n }\n\n // es6: Map, WeakMap, Set, WeakSet\n if (type === '[object Set]') {\n return 'set';\n }\n if (type === '[object WeakSet]') {\n return 'weakset';\n }\n if (type === '[object Map]') {\n return 'map';\n }\n if (type === '[object WeakMap]') {\n return 'weakmap';\n }\n if (type === '[object Symbol]') {\n return 'symbol';\n }\n\n // typed arrays\n if (type === '[object Int8Array]') {\n return 'int8array';\n }\n if (type === '[object Uint8Array]') {\n return 'uint8array';\n }\n if (type === '[object Uint8ClampedArray]') {\n return 'uint8clampedarray';\n }\n if (type === '[object Int16Array]') {\n return 'int16array';\n }\n if (type === '[object Uint16Array]') {\n return 'uint16array';\n }\n if (type === '[object Int32Array]') {\n return 'int32array';\n }\n if (type === '[object Uint32Array]') {\n return 'uint32array';\n }\n if (type === '[object Float32Array]') {\n return 'float32array';\n }\n if (type === '[object Float64Array]') {\n return 'float64array';\n }\n\n // must be a plain object\n return 'object';\n};\n","/*!\n * is-descriptor <https://github.com/jonschlinkert/is-descriptor>\n *\n * Copyright (c) 2015-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar typeOf = require('kind-of');\nvar isAccessor = require('is-accessor-descriptor');\nvar isData = require('is-data-descriptor');\n\nmodule.exports = function isDescriptor(obj, key) {\n if (typeOf(obj) !== 'object') {\n return false;\n }\n if ('get' in obj) {\n return isAccessor(obj, key);\n }\n return isData(obj, key);\n};\n","var toString = Object.prototype.toString;\n\n/**\n * Get the native `typeof` a value.\n *\n * @param {*} `val`\n * @return {*} Native javascript type\n */\n\nmodule.exports = function kindOf(val) {\n var type = typeof val;\n\n // primitivies\n if (type === 'undefined') {\n return 'undefined';\n }\n if (val === null) {\n return 'null';\n }\n if (val === true || val === false || val instanceof Boolean) {\n return 'boolean';\n }\n if (type === 'string' || val instanceof String) {\n return 'string';\n }\n if (type === 'number' || val instanceof Number) {\n return 'number';\n }\n\n // functions\n if (type === 'function' || val instanceof Function) {\n if (typeof val.constructor.name !== 'undefined' && val.constructor.name.slice(0, 9) === 'Generator') {\n return 'generatorfunction';\n }\n return 'function';\n }\n\n // array\n if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) {\n return 'array';\n }\n\n // check for instances of RegExp and Date before calling `toString`\n if (val instanceof RegExp) {\n return 'regexp';\n }\n if (val instanceof Date) {\n return 'date';\n }\n\n // other objects\n type = toString.call(val);\n\n if (type === '[object RegExp]') {\n return 'regexp';\n }\n if (type === '[object Date]') {\n return 'date';\n }\n if (type === '[object Arguments]') {\n return 'arguments';\n }\n if (type === '[object Error]') {\n return 'error';\n }\n if (type === '[object Promise]') {\n return 'promise';\n }\n\n // buffer\n if (isBuffer(val)) {\n return 'buffer';\n }\n\n // es6: Map, WeakMap, Set, WeakSet\n if (type === '[object Set]') {\n return 'set';\n }\n if (type === '[object WeakSet]') {\n return 'weakset';\n }\n if (type === '[object Map]') {\n return 'map';\n }\n if (type === '[object WeakMap]') {\n return 'weakmap';\n }\n if (type === '[object Symbol]') {\n return 'symbol';\n }\n \n if (type === '[object Map Iterator]') {\n return 'mapiterator';\n }\n if (type === '[object Set Iterator]') {\n return 'setiterator';\n }\n if (type === '[object String Iterator]') {\n return 'stringiterator';\n }\n if (type === '[object Array Iterator]') {\n return 'arrayiterator';\n }\n \n // typed arrays\n if (type === '[object Int8Array]') {\n return 'int8array';\n }\n if (type === '[object Uint8Array]') {\n return 'uint8array';\n }\n if (type === '[object Uint8ClampedArray]') {\n return 'uint8clampedarray';\n }\n if (type === '[object Int16Array]') {\n return 'int16array';\n }\n if (type === '[object Uint16Array]') {\n return 'uint16array';\n }\n if (type === '[object Int32Array]') {\n return 'int32array';\n }\n if (type === '[object Uint32Array]') {\n return 'uint32array';\n }\n if (type === '[object Float32Array]') {\n return 'float32array';\n }\n if (type === '[object Float64Array]') {\n return 'float64array';\n }\n\n // must be a plain object\n return 'object';\n};\n\n/**\n * If you need to support Safari 5-7 (8-10 yr-old browser),\n * take a look at https://github.com/feross/is-buffer\n */\n\nfunction isBuffer(val) {\n return val.constructor\n && typeof val.constructor.isBuffer === 'function'\n && val.constructor.isBuffer(val);\n}\n","/*\n Copyright (C) 2013 Yusuke Suzuki <utatane.tea@gmail.com>\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\n AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n(function () {\n 'use strict';\n\n function isExpression(node) {\n if (node == null) { return false; }\n switch (node.type) {\n case 'ArrayExpression':\n case 'AssignmentExpression':\n case 'BinaryExpression':\n case 'CallExpression':\n case 'ConditionalExpression':\n case 'FunctionExpression':\n case 'Identifier':\n case 'Literal':\n case 'LogicalExpression':\n case 'MemberExpression':\n case 'NewExpression':\n case 'ObjectExpression':\n case 'SequenceExpression':\n case 'ThisExpression':\n case 'UnaryExpression':\n case 'UpdateExpression':\n return true;\n }\n return false;\n }\n\n function isIterationStatement(node) {\n if (node == null) { return false; }\n switch (node.type) {\n case 'DoWhileStatement':\n case 'ForInStatement':\n case 'ForStatement':\n case 'WhileStatement':\n return true;\n }\n return false;\n }\n\n function isStatement(node) {\n if (node == null) { return false; }\n switch (node.type) {\n case 'BlockStatement':\n case 'BreakStatement':\n case 'ContinueStatement':\n case 'DebuggerStatement':\n case 'DoWhileStatement':\n case 'EmptyStatement':\n case 'ExpressionStatement':\n case 'ForInStatement':\n case 'ForStatement':\n case 'IfStatement':\n case 'LabeledStatement':\n case 'ReturnStatement':\n case 'SwitchStatement':\n case 'ThrowStatement':\n case 'TryStatement':\n case 'VariableDeclaration':\n case 'WhileStatement':\n case 'WithStatement':\n return true;\n }\n return false;\n }\n\n function isSourceElement(node) {\n return isStatement(node) || node != null && node.type === 'FunctionDeclaration';\n }\n\n function trailingStatement(node) {\n switch (node.type) {\n case 'IfStatement':\n if (node.alternate != null) {\n return node.alternate;\n }\n return node.consequent;\n\n case 'LabeledStatement':\n case 'ForStatement':\n case 'ForInStatement':\n case 'WhileStatement':\n case 'WithStatement':\n return node.body;\n }\n return null;\n }\n\n function isProblematicIfStatement(node) {\n var current;\n\n if (node.type !== 'IfStatement') {\n return false;\n }\n if (node.alternate == null) {\n return false;\n }\n current = node.consequent;\n do {\n if (current.type === 'IfStatement') {\n if (current.alternate == null) {\n return true;\n }\n }\n current = trailingStatement(current);\n } while (current);\n\n return false;\n }\n\n module.exports = {\n isExpression: isExpression,\n isStatement: isStatement,\n isIterationStatement: isIterationStatement,\n isSourceElement: isSourceElement,\n isProblematicIfStatement: isProblematicIfStatement,\n\n trailingStatement: trailingStatement\n };\n}());\n/* vim: set sw=4 ts=4 et tw=80 : */\n","/*\n Copyright (C) 2013-2014 Yusuke Suzuki <utatane.tea@gmail.com>\n Copyright (C) 2014 Ivan Nikulin <ifaaan@gmail.com>\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n(function () {\n 'use strict';\n\n var ES6Regex, ES5Regex, NON_ASCII_WHITESPACES, IDENTIFIER_START, IDENTIFIER_PART, ch;\n\n // See `tools/generate-identifier-regex.js`.\n ES5Regex = {\n // ECMAScript 5.1/Unicode v7.0.0 NonAsciiIdentifierStart:\n NonAsciiIdentifierStart: /[\\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\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\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\\u08A0-\\u08B2\\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\\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\\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\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\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-\\u13F4\\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-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\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\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\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\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\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-\\uAB5F\\uAB64\\uAB65\\uABC0-\\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]/,\n // ECMAScript 5.1/Unicode v7.0.0 NonAsciiIdentifierPart:\n NonAsciiIdentifierPart: /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\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\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\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\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/\n };\n\n ES6Regex = {\n // ECMAScript 6/Unicode v7.0.0 NonAsciiIdentifierStart:\n NonAsciiIdentifierStart: /[\\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\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\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\\u08A0-\\u08B2\\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\\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\\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\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\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-\\u13F4\\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-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\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-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\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-\\uAB5F\\uAB64\\uAB65\\uABC0-\\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]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF30-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF5D-\\uDF61]|\\uD805[\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDEC0-\\uDEF8]|\\uD808[\\uDC00-\\uDF98]|\\uD809[\\uDC00-\\uDC6E]|[\\uD80C\\uD840-\\uD868\\uD86A-\\uD86C][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F]|\\uD82C[\\uDC00\\uDC01]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDC00-\\uDCC4]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D]|\\uD87E[\\uDC00-\\uDE1D]/,\n // ECMAScript 6/Unicode v7.0.0 NonAsciiIdentifierPart:\n NonAsciiIdentifierPart: /[\\xAA\\xB5\\xB7\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\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\\u135D-\\u135F\\u1369-\\u1371\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\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\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\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-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF30-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC6F\\uDC7F-\\uDCBA\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDD0-\\uDDDA\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF01-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3C-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB7\\uDEC0-\\uDEC9]|\\uD806[\\uDCA0-\\uDCE9\\uDCFF\\uDEC0-\\uDEF8]|\\uD808[\\uDC00-\\uDF98]|\\uD809[\\uDC00-\\uDC6E]|[\\uD80C\\uD840-\\uD868\\uD86A-\\uD86C][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50-\\uDF7E\\uDF8F-\\uDF9F]|\\uD82C[\\uDC00\\uDC01]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D]|\\uD87E[\\uDC00-\\uDE1D]|\\uDB40[\\uDD00-\\uDDEF]/\n };\n\n function isDecimalDigit(ch) {\n return 0x30 <= ch && ch <= 0x39; // 0..9\n }\n\n function isHexDigit(ch) {\n return 0x30 <= ch && ch <= 0x39 || // 0..9\n 0x61 <= ch && ch <= 0x66 || // a..f\n 0x41 <= ch && ch <= 0x46; // A..F\n }\n\n function isOctalDigit(ch) {\n return ch >= 0x30 && ch <= 0x37; // 0..7\n }\n\n // 7.2 White Space\n\n NON_ASCII_WHITESPACES = [\n 0x1680, 0x180E,\n 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A,\n 0x202F, 0x205F,\n 0x3000,\n 0xFEFF\n ];\n\n function isWhiteSpace(ch) {\n return ch === 0x20 || ch === 0x09 || ch === 0x0B || ch === 0x0C || ch === 0xA0 ||\n ch >= 0x1680 && NON_ASCII_WHITESPACES.indexOf(ch) >= 0;\n }\n\n // 7.3 Line Terminators\n\n function isLineTerminator(ch) {\n return ch === 0x0A || ch === 0x0D || ch === 0x2028 || ch === 0x2029;\n }\n\n // 7.6 Identifier Names and Identifiers\n\n function fromCodePoint(cp) {\n if (cp <= 0xFFFF) { return String.fromCharCode(cp); }\n var cu1 = String.fromCharCode(Math.floor((cp - 0x10000) / 0x400) + 0xD800);\n var cu2 = String.fromCharCode(((cp - 0x10000) % 0x400) + 0xDC00);\n return cu1 + cu2;\n }\n\n IDENTIFIER_START = new Array(0x80);\n for(ch = 0; ch < 0x80; ++ch) {\n IDENTIFIER_START[ch] =\n ch >= 0x61 && ch <= 0x7A || // a..z\n ch >= 0x41 && ch <= 0x5A || // A..Z\n ch === 0x24 || ch === 0x5F; // $ (dollar) and _ (underscore)\n }\n\n IDENTIFIER_PART = new Array(0x80);\n for(ch = 0; ch < 0x80; ++ch) {\n IDENTIFIER_PART[ch] =\n ch >= 0x61 && ch <= 0x7A || // a..z\n ch >= 0x41 && ch <= 0x5A || // A..Z\n ch >= 0x30 && ch <= 0x39 || // 0..9\n ch === 0x24 || ch === 0x5F; // $ (dollar) and _ (underscore)\n }\n\n function isIdentifierStartES5(ch) {\n return ch < 0x80 ? IDENTIFIER_START[ch] : ES5Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch));\n }\n\n function isIdentifierPartES5(ch) {\n return ch < 0x80 ? IDENTIFIER_PART[ch] : ES5Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch));\n }\n\n function isIdentifierStartES6(ch) {\n return ch < 0x80 ? IDENTIFIER_START[ch] : ES6Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch));\n }\n\n function isIdentifierPartES6(ch) {\n return ch < 0x80 ? IDENTIFIER_PART[ch] : ES6Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch));\n }\n\n module.exports = {\n isDecimalDigit: isDecimalDigit,\n isHexDigit: isHexDigit,\n isOctalDigit: isOctalDigit,\n isWhiteSpace: isWhiteSpace,\n isLineTerminator: isLineTerminator,\n isIdentifierStartES5: isIdentifierStartES5,\n isIdentifierPartES5: isIdentifierPartES5,\n isIdentifierStartES6: isIdentifierStartES6,\n isIdentifierPartES6: isIdentifierPartES6\n };\n}());\n/* vim: set sw=4 ts=4 et tw=80 : */\n","/*\n Copyright (C) 2013 Yusuke Suzuki <utatane.tea@gmail.com>\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n(function () {\n 'use strict';\n\n var code = require('./code');\n\n function isStrictModeReservedWordES6(id) {\n switch (id) {\n case 'implements':\n case 'interface':\n case 'package':\n case 'private':\n case 'protected':\n case 'public':\n case 'static':\n case 'let':\n return true;\n default:\n return false;\n }\n }\n\n function isKeywordES5(id, strict) {\n // yield should not be treated as keyword under non-strict mode.\n if (!strict && id === 'yield') {\n return false;\n }\n return isKeywordES6(id, strict);\n }\n\n function isKeywordES6(id, strict) {\n if (strict && isStrictModeReservedWordES6(id)) {\n return true;\n }\n\n switch (id.length) {\n case 2:\n return (id === 'if') || (id === 'in') || (id === 'do');\n case 3:\n return (id === 'var') || (id === 'for') || (id === 'new') || (id === 'try');\n case 4:\n return (id === 'this') || (id === 'else') || (id === 'case') ||\n (id === 'void') || (id === 'with') || (id === 'enum');\n case 5:\n return (id === 'while') || (id === 'break') || (id === 'catch') ||\n (id === 'throw') || (id === 'const') || (id === 'yield') ||\n (id === 'class') || (id === 'super');\n case 6:\n return (id === 'return') || (id === 'typeof') || (id === 'delete') ||\n (id === 'switch') || (id === 'export') || (id === 'import');\n case 7:\n return (id === 'default') || (id === 'finally') || (id === 'extends');\n case 8:\n return (id === 'function') || (id === 'continue') || (id === 'debugger');\n case 10:\n return (id === 'instanceof');\n default:\n return false;\n }\n }\n\n function isReservedWordES5(id, strict) {\n return id === 'null' || id === 'true' || id === 'false' || isKeywordES5(id, strict);\n }\n\n function isReservedWordES6(id, strict) {\n return id === 'null' || id === 'true' || id === 'false' || isKeywordES6(id, strict);\n }\n\n function isRestrictedWord(id) {\n return id === 'eval' || id === 'arguments';\n }\n\n function isIdentifierNameES5(id) {\n var i, iz, ch;\n\n if (id.length === 0) { return false; }\n\n ch = id.charCodeAt(0);\n if (!code.isIdentifierStartES5(ch)) {\n return false;\n }\n\n for (i = 1, iz = id.length; i < iz; ++i) {\n ch = id.charCodeAt(i);\n if (!code.isIdentifierPartES5(ch)) {\n return false;\n }\n }\n return true;\n }\n\n function decodeUtf16(lead, trail) {\n return (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000;\n }\n\n function isIdentifierNameES6(id) {\n var i, iz, ch, lowCh, check;\n\n if (id.length === 0) { return false; }\n\n check = code.isIdentifierStartES6;\n for (i = 0, iz = id.length; i < iz; ++i) {\n ch = id.charCodeAt(i);\n if (0xD800 <= ch && ch <= 0xDBFF) {\n ++i;\n if (i >= iz) { return false; }\n lowCh = id.charCodeAt(i);\n if (!(0xDC00 <= lowCh && lowCh <= 0xDFFF)) {\n return false;\n }\n ch = decodeUtf16(ch, lowCh);\n }\n if (!check(ch)) {\n return false;\n }\n check = code.isIdentifierPartES6;\n }\n return true;\n }\n\n function isIdentifierES5(id, strict) {\n return isIdentifierNameES5(id) && !isReservedWordES5(id, strict);\n }\n\n function isIdentifierES6(id, strict) {\n return isIdentifierNameES6(id) && !isReservedWordES6(id, strict);\n }\n\n module.exports = {\n isKeywordES5: isKeywordES5,\n isKeywordES6: isKeywordES6,\n isReservedWordES5: isReservedWordES5,\n isReservedWordES6: isReservedWordES6,\n isRestrictedWord: isRestrictedWord,\n isIdentifierNameES5: isIdentifierNameES5,\n isIdentifierNameES6: isIdentifierNameES6,\n isIdentifierES5: isIdentifierES5,\n isIdentifierES6: isIdentifierES6\n };\n}());\n/* vim: set sw=4 ts=4 et tw=80 : */\n","/*\n Copyright (C) 2013 Yusuke Suzuki <utatane.tea@gmail.com>\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n\n(function () {\n 'use strict';\n\n exports.ast = require('./ast');\n exports.code = require('./code');\n exports.keyword = require('./keyword');\n}());\n/* vim: set sw=4 ts=4 et tw=80 : */\n","'use strict';\n\n/**\n * Local dependencies\n */\n\nvar compilers = require('./lib/compilers');\nvar parsers = require('./lib/parsers');\n\n/**\n * Module dependencies\n */\n\nvar debug = require('debug')('expand-brackets');\nvar extend = require('extend-shallow');\nvar Snapdragon = require('snapdragon');\nvar toRegex = require('to-regex');\n\n/**\n * Parses the given POSIX character class `pattern` and returns a\n * string that can be used for creating regular expressions for matching.\n *\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object}\n * @api public\n */\n\nfunction brackets(pattern, options) {\n debug('initializing from <%s>', __filename);\n var res = brackets.create(pattern, options);\n return res.output;\n}\n\n/**\n * Takes an array of strings and a POSIX character class pattern, and returns a new\n * array with only the strings that matched the pattern.\n *\n * ```js\n * var brackets = require('expand-brackets');\n * console.log(brackets.match(['1', 'a', 'ab'], '[[:alpha:]]'));\n * //=> ['a']\n *\n * console.log(brackets.match(['1', 'a', 'ab'], '[[:alpha:]]+'));\n * //=> ['a', 'ab']\n * ```\n * @param {Array} `arr` Array of strings to match\n * @param {String} `pattern` POSIX character class pattern(s)\n * @param {Object} `options`\n * @return {Array}\n * @api public\n */\n\nbrackets.match = function(arr, pattern, options) {\n arr = [].concat(arr);\n var opts = extend({}, options);\n var isMatch = brackets.matcher(pattern, opts);\n var len = arr.length;\n var idx = -1;\n var res = [];\n\n while (++idx < len) {\n var ele = arr[idx];\n if (isMatch(ele)) {\n res.push(ele);\n }\n }\n\n if (res.length === 0) {\n if (opts.failglob === true) {\n throw new Error('no matches found for \"' + pattern + '\"');\n }\n\n if (opts.nonull === true || opts.nullglob === true) {\n return [pattern.split('\\\\').join('')];\n }\n }\n return res;\n};\n\n/**\n * Returns true if the specified `string` matches the given\n * brackets `pattern`.\n *\n * ```js\n * var brackets = require('expand-brackets');\n *\n * console.log(brackets.isMatch('a.a', '[[:alpha:]].[[:alpha:]]'));\n * //=> true\n * console.log(brackets.isMatch('1.2', '[[:alpha:]].[[:alpha:]]'));\n * //=> false\n * ```\n * @param {String} `string` String to match\n * @param {String} `pattern` Poxis pattern\n * @param {String} `options`\n * @return {Boolean}\n * @api public\n */\n\nbrackets.isMatch = function(str, pattern, options) {\n return brackets.matcher(pattern, options)(str);\n};\n\n/**\n * Takes a POSIX character class pattern and returns a matcher function. The returned\n * function takes the string to match as its only argument.\n *\n * ```js\n * var brackets = require('expand-brackets');\n * var isMatch = brackets.matcher('[[:lower:]].[[:upper:]]');\n *\n * console.log(isMatch('a.a'));\n * //=> false\n * console.log(isMatch('a.A'));\n * //=> true\n * ```\n * @param {String} `pattern` Poxis pattern\n * @param {String} `options`\n * @return {Boolean}\n * @api public\n */\n\nbrackets.matcher = function(pattern, options) {\n var re = brackets.makeRe(pattern, options);\n return function(str) {\n return re.test(str);\n };\n};\n\n/**\n * Create a regular expression from the given `pattern`.\n *\n * ```js\n * var brackets = require('expand-brackets');\n * var re = brackets.makeRe('[[:alpha:]]');\n * console.log(re);\n * //=> /^(?:[a-zA-Z])$/\n * ```\n * @param {String} `pattern` The pattern to convert to regex.\n * @param {Object} `options`\n * @return {RegExp}\n * @api public\n */\n\nbrackets.makeRe = function(pattern, options) {\n var res = brackets.create(pattern, options);\n var opts = extend({strictErrors: false}, options);\n return toRegex(res.output, opts);\n};\n\n/**\n * Parses the given POSIX character class `pattern` and returns an object\n * with the compiled `output` and optional source `map`.\n *\n * ```js\n * var brackets = require('expand-brackets');\n * console.log(brackets('[[:alpha:]]'));\n * // { options: { source: 'string' },\n * // input: '[[:alpha:]]',\n * // state: {},\n * // compilers:\n * // { eos: [Function],\n * // noop: [Function],\n * // bos: [Function],\n * // not: [Function],\n * // escape: [Function],\n * // text: [Function],\n * // posix: [Function],\n * // bracket: [Function],\n * // 'bracket.open': [Function],\n * // 'bracket.inner': [Function],\n * // 'bracket.literal': [Function],\n * // 'bracket.close': [Function] },\n * // output: '[a-zA-Z]',\n * // ast:\n * // { type: 'root',\n * // errors: [],\n * // nodes: [ [Object], [Object], [Object] ] },\n * // parsingErrors: [] }\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object}\n * @api public\n */\n\nbrackets.create = function(pattern, options) {\n var snapdragon = (options && options.snapdragon) || new Snapdragon(options);\n compilers(snapdragon);\n parsers(snapdragon);\n\n var ast = snapdragon.parse(pattern, options);\n ast.input = pattern;\n var res = snapdragon.compile(ast, options);\n res.input = pattern;\n return res;\n};\n\n/**\n * Expose `brackets` constructor, parsers and compilers\n */\n\nbrackets.compilers = compilers;\nbrackets.parsers = parsers;\n\n/**\n * Expose `brackets`\n * @type {Function}\n */\n\nmodule.exports = brackets;\n","'use strict';\n\nvar posix = require('posix-character-classes');\n\nmodule.exports = function(brackets) {\n brackets.compiler\n\n /**\n * Escaped characters\n */\n\n .set('escape', function(node) {\n return this.emit('\\\\' + node.val.replace(/^\\\\/, ''), node);\n })\n\n /**\n * Text\n */\n\n .set('text', function(node) {\n return this.emit(node.val.replace(/([{}])/g, '\\\\$1'), node);\n })\n\n /**\n * POSIX character classes\n */\n\n .set('posix', function(node) {\n if (node.val === '[::]') {\n return this.emit('\\\\[::\\\\]', node);\n }\n\n var val = posix[node.inner];\n if (typeof val === 'undefined') {\n val = '[' + node.inner + ']';\n }\n return this.emit(val, node);\n })\n\n /**\n * Non-posix brackets\n */\n\n .set('bracket', function(node) {\n return this.mapVisit(node.nodes);\n })\n .set('bracket.open', function(node) {\n return this.emit(node.val, node);\n })\n .set('bracket.inner', function(node) {\n var inner = node.val;\n\n if (inner === '[' || inner === ']') {\n return this.emit('\\\\' + node.val, node);\n }\n if (inner === '^]') {\n return this.emit('^\\\\]', node);\n }\n if (inner === '^') {\n return this.emit('^', node);\n }\n\n if (/-/.test(inner) && !/(\\d-\\d|\\w-\\w)/.test(inner)) {\n inner = inner.split('-').join('\\\\-');\n }\n\n var isNegated = inner.charAt(0) === '^';\n // add slashes to negated brackets, per spec\n if (isNegated && inner.indexOf('/') === -1) {\n inner += '/';\n }\n if (isNegated && inner.indexOf('.') === -1) {\n inner += '.';\n }\n\n // don't unescape `0` (octal literal)\n inner = inner.replace(/\\\\([1-9])/g, '$1');\n return this.emit(inner, node);\n })\n .set('bracket.close', function(node) {\n var val = node.val.replace(/^\\\\/, '');\n if (node.parent.escaped === true) {\n return this.emit('\\\\' + val, node);\n }\n return this.emit(val, node);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar define = require('define-property');\n\n/**\n * Text regex\n */\n\nvar TEXT_REGEX = '(\\\\[(?=.*\\\\])|\\\\])+';\nvar not = utils.createRegex(TEXT_REGEX);\n\n/**\n * Brackets parsers\n */\n\nfunction parsers(brackets) {\n brackets.state = brackets.state || {};\n brackets.parser.sets.bracket = brackets.parser.sets.bracket || [];\n brackets.parser\n\n .capture('escape', function() {\n if (this.isInside('bracket')) return;\n var pos = this.position();\n var m = this.match(/^\\\\(.)/);\n if (!m) return;\n\n return pos({\n type: 'escape',\n val: m[0]\n });\n })\n\n /**\n * Text parser\n */\n\n .capture('text', function() {\n if (this.isInside('bracket')) return;\n var pos = this.position();\n var m = this.match(not);\n if (!m || !m[0]) return;\n\n return pos({\n type: 'text',\n val: m[0]\n });\n })\n\n /**\n * POSIX character classes: \"[[:alpha:][:digits:]]\"\n */\n\n .capture('posix', function() {\n var pos = this.position();\n var m = this.match(/^\\[:(.*?):\\](?=.*\\])/);\n if (!m) return;\n\n var inside = this.isInside('bracket');\n if (inside) {\n brackets.posix++;\n }\n\n return pos({\n type: 'posix',\n insideBracket: inside,\n inner: m[1],\n val: m[0]\n });\n })\n\n /**\n * Bracket (noop)\n */\n\n .capture('bracket', function() {})\n\n /**\n * Open: '['\n */\n\n .capture('bracket.open', function() {\n var parsed = this.parsed;\n var pos = this.position();\n var m = this.match(/^\\[(?=.*\\])/);\n if (!m) return;\n\n var prev = this.prev();\n var last = utils.last(prev.nodes);\n\n if (parsed.slice(-1) === '\\\\' && !this.isInside('bracket')) {\n last.val = last.val.slice(0, last.val.length - 1);\n return pos({\n type: 'escape',\n val: m[0]\n });\n }\n\n var open = pos({\n type: 'bracket.open',\n val: m[0]\n });\n\n if (last.type === 'bracket.open' || this.isInside('bracket')) {\n open.val = '\\\\' + open.val;\n open.type = 'bracket.inner';\n open.escaped = true;\n return open;\n }\n\n var node = pos({\n type: 'bracket',\n nodes: [open]\n });\n\n define(node, 'parent', prev);\n define(open, 'parent', node);\n this.push('bracket', node);\n prev.nodes.push(node);\n })\n\n /**\n * Bracket text\n */\n\n .capture('bracket.inner', function() {\n if (!this.isInside('bracket')) return;\n var pos = this.position();\n var m = this.match(not);\n if (!m || !m[0]) return;\n\n var next = this.input.charAt(0);\n var val = m[0];\n\n var node = pos({\n type: 'bracket.inner',\n val: val\n });\n\n if (val === '\\\\\\\\') {\n return node;\n }\n\n var first = val.charAt(0);\n var last = val.slice(-1);\n\n if (first === '!') {\n val = '^' + val.slice(1);\n }\n\n if (last === '\\\\' || (val === '^' && next === ']')) {\n val += this.input[0];\n this.consume(1);\n }\n\n node.val = val;\n return node;\n })\n\n /**\n * Close: ']'\n */\n\n .capture('bracket.close', function() {\n var parsed = this.parsed;\n var pos = this.position();\n var m = this.match(/^\\]/);\n if (!m) return;\n\n var prev = this.prev();\n var last = utils.last(prev.nodes);\n\n if (parsed.slice(-1) === '\\\\' && !this.isInside('bracket')) {\n last.val = last.val.slice(0, last.val.length - 1);\n\n return pos({\n type: 'escape',\n val: m[0]\n });\n }\n\n var node = pos({\n type: 'bracket.close',\n rest: this.input,\n val: m[0]\n });\n\n if (last.type === 'bracket.open') {\n node.type = 'bracket.inner';\n node.escaped = true;\n return node;\n }\n\n var bracket = this.pop('bracket');\n if (!this.isType(bracket, 'bracket')) {\n if (this.options.strict) {\n throw new Error('missing opening \"[\"');\n }\n node.type = 'bracket.inner';\n node.escaped = true;\n return node;\n }\n\n bracket.nodes.push(node);\n define(node, 'parent', bracket);\n });\n}\n\n/**\n * Brackets parsers\n */\n\nmodule.exports = parsers;\n\n/**\n * Expose text regex\n */\n\nmodule.exports.TEXT_REGEX = TEXT_REGEX;\n","'use strict';\n\nvar toRegex = require('to-regex');\nvar regexNot = require('regex-not');\nvar cached;\n\n/**\n * Get the last element from `array`\n * @param {Array} `array`\n * @return {*}\n */\n\nexports.last = function(arr) {\n return arr[arr.length - 1];\n};\n\n/**\n * Create and cache regex to use for text nodes\n */\n\nexports.createRegex = function(pattern, include) {\n if (cached) return cached;\n var opts = {contains: true, strictClose: false};\n var not = regexNot.create(pattern, opts);\n var re;\n\n if (typeof include === 'string') {\n re = toRegex('^(?:' + include + '|' + not + ')', opts);\n } else {\n re = toRegex(not, opts);\n }\n\n return (cached = re);\n};\n","/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n 'lightseagreen',\n 'forestgreen',\n 'goldenrod',\n 'dodgerblue',\n 'darkorchid',\n 'crimson'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n return debug;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (var i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n","'use strict';\n\nvar isObject = require('is-extendable');\n\nmodule.exports = function extend(o/*, objects*/) {\n if (!isObject(o)) { o = {}; }\n\n var len = arguments.length;\n for (var i = 1; i < len; i++) {\n var obj = arguments[i];\n\n if (isObject(obj)) {\n assign(o, obj);\n }\n }\n return o;\n};\n\nfunction assign(a, b) {\n for (var key in b) {\n if (hasOwn(b, key)) {\n a[key] = b[key];\n }\n }\n}\n\n/**\n * Returns true if the given `key` is an own property of `obj`.\n */\n\nfunction hasOwn(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n","'use strict';\n\n/**\n * Module dependencies\n */\n\nvar extend = require('extend-shallow');\nvar unique = require('array-unique');\nvar toRegex = require('to-regex');\n\n/**\n * Local dependencies\n */\n\nvar compilers = require('./lib/compilers');\nvar parsers = require('./lib/parsers');\nvar Extglob = require('./lib/extglob');\nvar utils = require('./lib/utils');\nvar MAX_LENGTH = 1024 * 64;\n\n/**\n * Convert the given `extglob` pattern into a regex-compatible string. Returns\n * an object with the compiled result and the parsed AST.\n *\n * ```js\n * var extglob = require('extglob');\n * console.log(extglob('*.!(*a)'));\n * //=> '(?!\\\\.)[^/]*?\\\\.(?!(?!\\\\.)[^/]*?a\\\\b).*?'\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {String}\n * @api public\n */\n\nfunction extglob(pattern, options) {\n return extglob.create(pattern, options).output;\n}\n\n/**\n * Takes an array of strings and an extglob pattern and returns a new\n * array that contains only the strings that match the pattern.\n *\n * ```js\n * var extglob = require('extglob');\n * console.log(extglob.match(['a.a', 'a.b', 'a.c'], '*.!(*a)'));\n * //=> ['a.b', 'a.c']\n * ```\n * @param {Array} `list` Array of strings to match\n * @param {String} `pattern` Extglob pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of matches\n * @api public\n */\n\nextglob.match = function(list, pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('expected pattern to be a string');\n }\n\n list = utils.arrayify(list);\n var isMatch = extglob.matcher(pattern, options);\n var len = list.length;\n var idx = -1;\n var matches = [];\n\n while (++idx < len) {\n var ele = list[idx];\n\n if (isMatch(ele)) {\n matches.push(ele);\n }\n }\n\n // if no options were passed, uniquify results and return\n if (typeof options === 'undefined') {\n return unique(matches);\n }\n\n if (matches.length === 0) {\n if (options.failglob === true) {\n throw new Error('no matches found for \"' + pattern + '\"');\n }\n if (options.nonull === true || options.nullglob === true) {\n return [pattern.split('\\\\').join('')];\n }\n }\n\n return options.nodupes !== false ? unique(matches) : matches;\n};\n\n/**\n * Returns true if the specified `string` matches the given\n * extglob `pattern`.\n *\n * ```js\n * var extglob = require('extglob');\n *\n * console.log(extglob.isMatch('a.a', '*.!(*a)'));\n * //=> false\n * console.log(extglob.isMatch('a.b', '*.!(*a)'));\n * //=> true\n * ```\n * @param {String} `string` String to match\n * @param {String} `pattern` Extglob pattern\n * @param {String} `options`\n * @return {Boolean}\n * @api public\n */\n\nextglob.isMatch = function(str, pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('expected pattern to be a string');\n }\n\n if (typeof str !== 'string') {\n throw new TypeError('expected a string');\n }\n\n if (pattern === str) {\n return true;\n }\n\n if (pattern === '' || pattern === ' ' || pattern === '.') {\n return pattern === str;\n }\n\n var isMatch = utils.memoize('isMatch', pattern, options, extglob.matcher);\n return isMatch(str);\n};\n\n/**\n * Returns true if the given `string` contains the given pattern. Similar to `.isMatch` but\n * the pattern can match any part of the string.\n *\n * ```js\n * var extglob = require('extglob');\n * console.log(extglob.contains('aa/bb/cc', '*b'));\n * //=> true\n * console.log(extglob.contains('aa/bb/cc', '*d'));\n * //=> false\n * ```\n * @param {String} `str` The string to match.\n * @param {String} `pattern` Glob pattern to use for matching.\n * @param {Object} `options`\n * @return {Boolean} Returns true if the patter matches any part of `str`.\n * @api public\n */\n\nextglob.contains = function(str, pattern, options) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string');\n }\n\n if (pattern === '' || pattern === ' ' || pattern === '.') {\n return pattern === str;\n }\n\n var opts = extend({}, options, {contains: true});\n opts.strictClose = false;\n opts.strictOpen = false;\n return extglob.isMatch(str, pattern, opts);\n};\n\n/**\n * Takes an extglob pattern and returns a matcher function. The returned\n * function takes the string to match as its only argument.\n *\n * ```js\n * var extglob = require('extglob');\n * var isMatch = extglob.matcher('*.!(*a)');\n *\n * console.log(isMatch('a.a'));\n * //=> false\n * console.log(isMatch('a.b'));\n * //=> true\n * ```\n * @param {String} `pattern` Extglob pattern\n * @param {String} `options`\n * @return {Boolean}\n * @api public\n */\n\nextglob.matcher = function(pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('expected pattern to be a string');\n }\n\n function matcher() {\n var re = extglob.makeRe(pattern, options);\n return function(str) {\n return re.test(str);\n };\n }\n\n return utils.memoize('matcher', pattern, options, matcher);\n};\n\n/**\n * Convert the given `extglob` pattern into a regex-compatible string. Returns\n * an object with the compiled result and the parsed AST.\n *\n * ```js\n * var extglob = require('extglob');\n * console.log(extglob.create('*.!(*a)').output);\n * //=> '(?!\\\\.)[^/]*?\\\\.(?!(?!\\\\.)[^/]*?a\\\\b).*?'\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {String}\n * @api public\n */\n\nextglob.create = function(pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('expected pattern to be a string');\n }\n\n function create() {\n var ext = new Extglob(options);\n var ast = ext.parse(pattern, options);\n return ext.compile(ast, options);\n }\n\n return utils.memoize('create', pattern, options, create);\n};\n\n/**\n * Returns an array of matches captured by `pattern` in `string`, or `null`\n * if the pattern did not match.\n *\n * ```js\n * var extglob = require('extglob');\n * extglob.capture(pattern, string[, options]);\n *\n * console.log(extglob.capture('test/*.js', 'test/foo.js'));\n * //=> ['foo']\n * console.log(extglob.capture('test/*.js', 'foo/bar.css'));\n * //=> null\n * ```\n * @param {String} `pattern` Glob pattern to use for matching.\n * @param {String} `string` 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 string matches the glob pattern, otherwise `null`.\n * @api public\n */\n\nextglob.capture = function(pattern, str, options) {\n var re = extglob.makeRe(pattern, extend({capture: true}, options));\n\n function match() {\n return function(string) {\n var match = re.exec(string);\n if (!match) {\n return null;\n }\n\n return match.slice(1);\n };\n }\n\n var capture = utils.memoize('capture', pattern, options, match);\n return capture(str);\n};\n\n/**\n * Create a regular expression from the given `pattern` and `options`.\n *\n * ```js\n * var extglob = require('extglob');\n * var re = extglob.makeRe('*.!(*a)');\n * console.log(re);\n * //=> /^[^\\/]*?\\.(?![^\\/]*?a)[^\\/]*?$/\n * ```\n * @param {String} `pattern` The pattern to convert to regex.\n * @param {Object} `options`\n * @return {RegExp}\n * @api public\n */\n\nextglob.makeRe = function(pattern, options) {\n if (pattern instanceof RegExp) {\n return pattern;\n }\n\n if (typeof pattern !== 'string') {\n throw new TypeError('expected pattern to be a string');\n }\n\n if (pattern.length > MAX_LENGTH) {\n throw new Error('expected pattern to be less than ' + MAX_LENGTH + ' characters');\n }\n\n function makeRe() {\n var opts = extend({strictErrors: false}, options);\n if (opts.strictErrors === true) opts.strict = true;\n var res = extglob.create(pattern, opts);\n return toRegex(res.output, opts);\n }\n\n var regex = utils.memoize('makeRe', pattern, options, makeRe);\n if (regex.source.length > MAX_LENGTH) {\n throw new SyntaxError('potentially malicious regex detected');\n }\n\n return regex;\n};\n\n/**\n * Cache\n */\n\nextglob.cache = utils.cache;\nextglob.clearCache = function() {\n extglob.cache.__data__ = {};\n};\n\n/**\n * Expose `Extglob` constructor, parsers and compilers\n */\n\nextglob.Extglob = Extglob;\nextglob.compilers = compilers;\nextglob.parsers = parsers;\n\n/**\n * Expose `extglob`\n * @type {Function}\n */\n\nmodule.exports = extglob;\n","'use strict';\n\nvar brackets = require('expand-brackets');\n\n/**\n * Extglob compilers\n */\n\nmodule.exports = function(extglob) {\n function star() {\n if (typeof extglob.options.star === 'function') {\n return extglob.options.star.apply(this, arguments);\n }\n if (typeof extglob.options.star === 'string') {\n return extglob.options.star;\n }\n return '.*?';\n }\n\n /**\n * Use `expand-brackets` compilers\n */\n\n extglob.use(brackets.compilers);\n extglob.compiler\n\n /**\n * Escaped: \"\\\\*\"\n */\n\n .set('escape', function(node) {\n return this.emit(node.val, node);\n })\n\n /**\n * Dot: \".\"\n */\n\n .set('dot', function(node) {\n return this.emit('\\\\' + node.val, node);\n })\n\n /**\n * Question mark: \"?\"\n */\n\n .set('qmark', function(node) {\n var val = '[^\\\\\\\\/.]';\n var prev = this.prev();\n\n if (node.parsed.slice(-1) === '(') {\n var ch = node.rest.charAt(0);\n if (ch !== '!' && ch !== '=' && ch !== ':') {\n return this.emit(val, node);\n }\n return this.emit(node.val, node);\n }\n\n if (prev.type === 'text' && prev.val) {\n return this.emit(val, node);\n }\n\n if (node.val.length > 1) {\n val += '{' + node.val.length + '}';\n }\n return this.emit(val, node);\n })\n\n /**\n * Plus: \"+\"\n */\n\n .set('plus', function(node) {\n var prev = node.parsed.slice(-1);\n if (prev === ']' || prev === ')') {\n return this.emit(node.val, node);\n }\n var ch = this.output.slice(-1);\n if (!this.output || (/[?*+]/.test(ch) && node.parent.type !== 'bracket')) {\n return this.emit('\\\\+', node);\n }\n if (/\\w/.test(ch) && !node.inside) {\n return this.emit('+\\\\+?', node);\n }\n return this.emit('+', node);\n })\n\n /**\n * Star: \"*\"\n */\n\n .set('star', function(node) {\n var prev = this.prev();\n var prefix = prev.type !== 'text' && prev.type !== 'escape'\n ? '(?!\\\\.)'\n : '';\n\n return this.emit(prefix + star.call(this, node), node);\n })\n\n /**\n * Parens\n */\n\n .set('paren', function(node) {\n return this.mapVisit(node.nodes);\n })\n .set('paren.open', function(node) {\n var capture = this.options.capture ? '(' : '';\n\n switch (node.parent.prefix) {\n case '!':\n case '^':\n return this.emit(capture + '(?:(?!(?:', node);\n case '*':\n case '+':\n case '?':\n case '@':\n return this.emit(capture + '(?:', node);\n default: {\n var val = node.val;\n if (this.options.bash === true) {\n val = '\\\\' + val;\n } else if (!this.options.capture && val === '(' && node.parent.rest[0] !== '?') {\n val += '?:';\n }\n\n return this.emit(val, node);\n }\n }\n })\n .set('paren.close', function(node) {\n var capture = this.options.capture ? ')' : '';\n\n switch (node.prefix) {\n case '!':\n case '^':\n var prefix = /^(\\)|$)/.test(node.rest) ? '$' : '';\n var str = star.call(this, node);\n\n // if the extglob has a slash explicitly defined, we know the user wants\n // to match slashes, so we need to ensure the \"star\" regex allows for it\n if (node.parent.hasSlash && !this.options.star && this.options.slash !== false) {\n str = '.*?';\n }\n\n return this.emit(prefix + ('))' + str + ')') + capture, node);\n case '*':\n case '+':\n case '?':\n return this.emit(')' + node.prefix + capture, node);\n case '@':\n return this.emit(')' + capture, node);\n default: {\n var val = (this.options.bash === true ? '\\\\' : '') + ')';\n return this.emit(val, node);\n }\n }\n })\n\n /**\n * Text\n */\n\n .set('text', function(node) {\n var val = node.val.replace(/[\\[\\]]/g, '\\\\$&');\n return this.emit(val, node);\n });\n};\n","'use strict';\n\n/**\n * Module dependencies\n */\n\nvar Snapdragon = require('snapdragon');\nvar define = require('define-property');\nvar extend = require('extend-shallow');\n\n/**\n * Local dependencies\n */\n\nvar compilers = require('./compilers');\nvar parsers = require('./parsers');\n\n/**\n * Customize Snapdragon parser and renderer\n */\n\nfunction Extglob(options) {\n this.options = extend({source: 'extglob'}, options);\n this.snapdragon = this.options.snapdragon || new Snapdragon(this.options);\n this.snapdragon.patterns = this.snapdragon.patterns || {};\n this.compiler = this.snapdragon.compiler;\n this.parser = this.snapdragon.parser;\n\n compilers(this.snapdragon);\n parsers(this.snapdragon);\n\n /**\n * Override Snapdragon `.parse` method\n */\n\n define(this.snapdragon, 'parse', function(str, options) {\n var parsed = Snapdragon.prototype.parse.apply(this, arguments);\n parsed.input = str;\n\n // escape unmatched brace/bracket/parens\n var last = this.parser.stack.pop();\n if (last && this.options.strict !== true) {\n var node = last.nodes[0];\n node.val = '\\\\' + node.val;\n var sibling = node.parent.nodes[1];\n if (sibling.type === 'star') {\n sibling.loose = true;\n }\n }\n\n // add non-enumerable parser reference\n define(parsed, 'parser', this.parser);\n return parsed;\n });\n\n /**\n * Decorate `.parse` method\n */\n\n define(this, 'parse', function(ast, options) {\n return this.snapdragon.parse.apply(this.snapdragon, arguments);\n });\n\n /**\n * Decorate `.compile` method\n */\n\n define(this, 'compile', function(ast, options) {\n return this.snapdragon.compile.apply(this.snapdragon, arguments);\n });\n\n}\n\n/**\n * Expose `Extglob`\n */\n\nmodule.exports = Extglob;\n","'use strict';\n\nvar brackets = require('expand-brackets');\nvar define = require('define-property');\nvar utils = require('./utils');\n\n/**\n * Characters to use in text regex (we want to \"not\" match\n * characters that are matched by other parsers)\n */\n\nvar TEXT_REGEX = '([!@*?+]?\\\\(|\\\\)|[*?.+\\\\\\\\]|\\\\[:?(?=.*\\\\])|:?\\\\])+';\nvar not = utils.createRegex(TEXT_REGEX);\n\n/**\n * Extglob parsers\n */\n\nfunction parsers(extglob) {\n extglob.state = extglob.state || {};\n\n /**\n * Use `expand-brackets` parsers\n */\n\n extglob.use(brackets.parsers);\n extglob.parser.sets.paren = extglob.parser.sets.paren || [];\n extglob.parser\n\n /**\n * Extglob open: \"*(\"\n */\n\n .capture('paren.open', function() {\n var parsed = this.parsed;\n var pos = this.position();\n var m = this.match(/^([!@*?+])?\\(/);\n if (!m) return;\n\n var prev = this.prev();\n var prefix = m[1];\n var val = m[0];\n\n var open = pos({\n type: 'paren.open',\n parsed: parsed,\n val: val\n });\n\n var node = pos({\n type: 'paren',\n prefix: prefix,\n nodes: [open]\n });\n\n // if nested negation extglobs, just cancel them out to simplify\n if (prefix === '!' && prev.type === 'paren' && prev.prefix === '!') {\n prev.prefix = '@';\n node.prefix = '@';\n }\n\n define(node, 'rest', this.input);\n define(node, 'parsed', parsed);\n define(node, 'parent', prev);\n define(open, 'parent', node);\n\n this.push('paren', node);\n prev.nodes.push(node);\n })\n\n /**\n * Extglob close: \")\"\n */\n\n .capture('paren.close', function() {\n var parsed = this.parsed;\n var pos = this.position();\n var m = this.match(/^\\)/);\n if (!m) return;\n\n var parent = this.pop('paren');\n var node = pos({\n type: 'paren.close',\n rest: this.input,\n parsed: parsed,\n val: m[0]\n });\n\n if (!this.isType(parent, 'paren')) {\n if (this.options.strict) {\n throw new Error('missing opening paren: \"(\"');\n }\n node.escaped = true;\n return node;\n }\n\n node.prefix = parent.prefix;\n parent.nodes.push(node);\n define(node, 'parent', parent);\n })\n\n /**\n * Escape: \"\\\\.\"\n */\n\n .capture('escape', function() {\n var pos = this.position();\n var m = this.match(/^\\\\(.)/);\n if (!m) return;\n\n return pos({\n type: 'escape',\n val: m[0],\n ch: m[1]\n });\n })\n\n /**\n * Question marks: \"?\"\n */\n\n .capture('qmark', function() {\n var parsed = this.parsed;\n var pos = this.position();\n var m = this.match(/^\\?+(?!\\()/);\n if (!m) return;\n extglob.state.metachar = true;\n return pos({\n type: 'qmark',\n rest: this.input,\n parsed: parsed,\n val: m[0]\n });\n })\n\n /**\n * Character parsers\n */\n\n .capture('star', /^\\*(?!\\()/)\n .capture('plus', /^\\+(?!\\()/)\n .capture('dot', /^\\./)\n .capture('text', not);\n};\n\n/**\n * Expose text regex string\n */\n\nmodule.exports.TEXT_REGEX = TEXT_REGEX;\n\n/**\n * Extglob parsers\n */\n\nmodule.exports = parsers;\n","'use strict';\n\nvar regex = require('regex-not');\nvar Cache = require('fragment-cache');\n\n/**\n * Utils\n */\n\nvar utils = module.exports;\nvar cache = utils.cache = new Cache();\n\n/**\n * Cast `val` to an array\n * @return {Array}\n */\n\nutils.arrayify = function(val) {\n if (!Array.isArray(val)) {\n return [val];\n }\n return val;\n};\n\n/**\n * Memoize a generated regex or function\n */\n\nutils.memoize = function(type, pattern, options, fn) {\n var key = utils.createKey(type + pattern, options);\n\n if (cache.has(type, key)) {\n return cache.get(type, key);\n }\n\n var val = fn(pattern, options);\n if (options && options.cache === false) {\n return val;\n }\n\n cache.set(type, key, val);\n return val;\n};\n\n/**\n * Create the key to use for memoization. The key is generated\n * by iterating over the options and concatenating key-value pairs\n * to the pattern string.\n */\n\nutils.createKey = function(pattern, options) {\n var key = pattern;\n if (typeof options === 'undefined') {\n return key;\n }\n for (var prop in options) {\n key += ';' + prop + '=' + String(options[prop]);\n }\n return key;\n};\n\n/**\n * Create the regex to use for matching text\n */\n\nutils.createRegex = function(str) {\n var opts = {contains: true, strictClose: false};\n return regex(str, opts);\n};\n","/*!\n * define-property <https://github.com/jonschlinkert/define-property>\n *\n * Copyright (c) 2015, 2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isDescriptor = require('is-descriptor');\n\nmodule.exports = function defineProperty(obj, prop, val) {\n if (typeof obj !== 'object' && typeof obj !== 'function') {\n throw new TypeError('expected an object or function.');\n }\n\n if (typeof prop !== 'string') {\n throw new TypeError('expected `prop` to be a string.');\n }\n\n if (isDescriptor(val) && ('set' in val || 'get' in val)) {\n return Object.defineProperty(obj, prop, val);\n }\n\n return Object.defineProperty(obj, prop, {\n configurable: true,\n enumerable: false,\n writable: true,\n value: val\n });\n};\n","/*!\n * fill-range <https://github.com/jonschlinkert/fill-range>\n *\n * Copyright (c) 2014-2015, 2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar util = require('util');\nvar isNumber = require('is-number');\nvar extend = require('extend-shallow');\nvar repeat = require('repeat-string');\nvar toRegex = require('to-regex-range');\n\n/**\n * Return a range of numbers or letters.\n *\n * @param {String} `start` Start of the range\n * @param {String} `stop` End of the range\n * @param {String} `step` Increment or decrement to use.\n * @param {Function} `fn` Custom function to modify each element in the range.\n * @return {Array}\n */\n\nfunction fillRange(start, stop, step, options) {\n if (typeof start === 'undefined') {\n return [];\n }\n\n if (typeof stop === 'undefined' || start === stop) {\n // special case, for handling negative zero\n var isString = typeof start === 'string';\n if (isNumber(start) && !toNumber(start)) {\n return [isString ? '0' : 0];\n }\n return [start];\n }\n\n if (typeof step !== 'number' && typeof step !== 'string') {\n options = step;\n step = undefined;\n }\n\n if (typeof options === 'function') {\n options = { transform: options };\n }\n\n var opts = extend({step: step}, options);\n if (opts.step && !isValidNumber(opts.step)) {\n if (opts.strictRanges === true) {\n throw new TypeError('expected options.step to be a number');\n }\n return [];\n }\n\n opts.isNumber = isValidNumber(start) && isValidNumber(stop);\n if (!opts.isNumber && !isValid(start, stop)) {\n if (opts.strictRanges === true) {\n throw new RangeError('invalid range arguments: ' + util.inspect([start, stop]));\n }\n return [];\n }\n\n opts.isPadded = isPadded(start) || isPadded(stop);\n opts.toString = opts.stringify\n || typeof opts.step === 'string'\n || typeof start === 'string'\n || typeof stop === 'string'\n || !opts.isNumber;\n\n if (opts.isPadded) {\n opts.maxLength = Math.max(String(start).length, String(stop).length);\n }\n\n // support legacy minimatch/fill-range options\n if (typeof opts.optimize === 'boolean') opts.toRegex = opts.optimize;\n if (typeof opts.makeRe === 'boolean') opts.toRegex = opts.makeRe;\n return expand(start, stop, opts);\n}\n\nfunction expand(start, stop, options) {\n var a = options.isNumber ? toNumber(start) : start.charCodeAt(0);\n var b = options.isNumber ? toNumber(stop) : stop.charCodeAt(0);\n\n var step = Math.abs(toNumber(options.step)) || 1;\n if (options.toRegex && step === 1) {\n return toRange(a, b, start, stop, options);\n }\n\n var zero = {greater: [], lesser: []};\n var asc = a < b;\n var arr = new Array(Math.round((asc ? b - a : a - b) / step));\n var idx = 0;\n\n while (asc ? a <= b : a >= b) {\n var val = options.isNumber ? a : String.fromCharCode(a);\n if (options.toRegex && (val >= 0 || !options.isNumber)) {\n zero.greater.push(val);\n } else {\n zero.lesser.push(Math.abs(val));\n }\n\n if (options.isPadded) {\n val = zeros(val, options);\n }\n\n if (options.toString) {\n val = String(val);\n }\n\n if (typeof options.transform === 'function') {\n arr[idx++] = options.transform(val, a, b, step, idx, arr, options);\n } else {\n arr[idx++] = val;\n }\n\n if (asc) {\n a += step;\n } else {\n a -= step;\n }\n }\n\n if (options.toRegex === true) {\n return toSequence(arr, zero, options);\n }\n return arr;\n}\n\nfunction toRange(a, b, start, stop, options) {\n if (options.isPadded) {\n return toRegex(start, stop, options);\n }\n\n if (options.isNumber) {\n return toRegex(Math.min(a, b), Math.max(a, b), options);\n }\n\n var start = String.fromCharCode(Math.min(a, b));\n var stop = String.fromCharCode(Math.max(a, b));\n return '[' + start + '-' + stop + ']';\n}\n\nfunction toSequence(arr, zeros, options) {\n var greater = '', lesser = '';\n if (zeros.greater.length) {\n greater = zeros.greater.join('|');\n }\n if (zeros.lesser.length) {\n lesser = '-(' + zeros.lesser.join('|') + ')';\n }\n var res = greater && lesser\n ? greater + '|' + lesser\n : greater || lesser;\n\n if (options.capture) {\n return '(' + res + ')';\n }\n return res;\n}\n\nfunction zeros(val, options) {\n if (options.isPadded) {\n var str = String(val);\n var len = str.length;\n var dash = '';\n if (str.charAt(0) === '-') {\n dash = '-';\n str = str.slice(1);\n }\n var diff = options.maxLength - len;\n var pad = repeat('0', diff);\n val = (dash + pad + str);\n }\n if (options.stringify) {\n return String(val);\n }\n return val;\n}\n\nfunction toNumber(val) {\n return Number(val) || 0;\n}\n\nfunction isPadded(str) {\n return /^-?0\\d/.test(str);\n}\n\nfunction isValid(min, max) {\n return (isValidNumber(min) || isValidLetter(min))\n && (isValidNumber(max) || isValidLetter(max));\n}\n\nfunction isValidLetter(ch) {\n return typeof ch === 'string' && ch.length === 1 && /^\\w+$/.test(ch);\n}\n\nfunction isValidNumber(n) {\n return isNumber(n) && !/\\./.test(n);\n}\n\n/**\n * Expose `fillRange`\n * @type {Function}\n */\n\nmodule.exports = fillRange;\n","/*!\n * for-in <https://github.com/jonschlinkert/for-in>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function forIn(obj, fn, thisArg) {\n for (var key in obj) {\n if (fn.call(thisArg, obj[key], key, obj) === false) {\n break;\n }\n }\n};\n","/*!\n * fragment-cache <https://github.com/jonschlinkert/fragment-cache>\n *\n * Copyright (c) 2016-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar MapCache = require('map-cache');\n\n/**\n * Create a new `FragmentCache` with an optional object to use for `caches`.\n *\n * ```js\n * var fragment = new FragmentCache();\n * ```\n * @name FragmentCache\n * @param {String} `cacheName`\n * @return {Object} Returns the [map-cache][] instance.\n * @api public\n */\n\nfunction FragmentCache(caches) {\n this.caches = caches || {};\n}\n\n/**\n * Prototype\n */\n\nFragmentCache.prototype = {\n\n /**\n * Get cache `name` from the `fragment.caches` object. Creates a new\n * `MapCache` if it doesn't already exist.\n *\n * ```js\n * var cache = fragment.cache('files');\n * console.log(fragment.caches.hasOwnProperty('files'));\n * //=> true\n * ```\n * @name .cache\n * @param {String} `cacheName`\n * @return {Object} Returns the [map-cache][] instance.\n * @api public\n */\n\n cache: function(cacheName) {\n return this.caches[cacheName] || (this.caches[cacheName] = new MapCache());\n },\n\n /**\n * Set a value for property `key` on cache `name`\n *\n * ```js\n * fragment.set('files', 'somefile.js', new File({path: 'somefile.js'}));\n * ```\n * @name .set\n * @param {String} `name`\n * @param {String} `key` Property name to set\n * @param {any} `val` The value of `key`\n * @return {Object} The cache instance for chaining\n * @api public\n */\n\n set: function(cacheName, key, val) {\n var cache = this.cache(cacheName);\n cache.set(key, val);\n return cache;\n },\n\n /**\n * Returns true if a non-undefined value is set for `key` on fragment cache `name`.\n *\n * ```js\n * var cache = fragment.cache('files');\n * cache.set('somefile.js');\n *\n * console.log(cache.has('somefile.js'));\n * //=> true\n *\n * console.log(cache.has('some-other-file.js'));\n * //=> false\n * ```\n * @name .has\n * @param {String} `name` Cache name\n * @param {String} `key` Optionally specify a property to check for on cache `name`\n * @return {Boolean}\n * @api public\n */\n\n has: function(cacheName, key) {\n return typeof this.get(cacheName, key) !== 'undefined';\n },\n\n /**\n * Get `name`, or if specified, the value of `key`. Invokes the [cache]() method,\n * so that cache `name` will be created it doesn't already exist. If `key` is not passed,\n * the entire cache (`name`) is returned.\n *\n * ```js\n * var Vinyl = require('vinyl');\n * var cache = fragment.cache('files');\n * cache.set('somefile.js', new Vinyl({path: 'somefile.js'}));\n * console.log(cache.get('somefile.js'));\n * //=> <File \"somefile.js\">\n * ```\n * @name .get\n * @param {String} `name`\n * @return {Object} Returns cache `name`, or the value of `key` if specified\n * @api public\n */\n\n get: function(name, key) {\n var cache = this.cache(name);\n if (typeof key === 'string') {\n return cache.get(key);\n }\n return cache;\n }\n};\n\n/**\n * Expose `FragmentCache`\n */\n\nexports = module.exports = FragmentCache;\n","/*!\n * get-value <https://github.com/jonschlinkert/get-value>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nmodule.exports = function(obj, prop, a, b, c) {\n if (!isObject(obj) || !prop) {\n return obj;\n }\n\n prop = toString(prop);\n\n // allowing for multiple properties to be passed as\n // a string or array, but much faster (3-4x) than doing\n // `[].slice.call(arguments)`\n if (a) prop += '.' + toString(a);\n if (b) prop += '.' + toString(b);\n if (c) prop += '.' + toString(c);\n\n if (prop in obj) {\n return obj[prop];\n }\n\n var segs = prop.split('.');\n var len = segs.length;\n var i = -1;\n\n while (obj && (++i < len)) {\n var key = segs[i];\n while (key[key.length - 1] === '\\\\') {\n key = key.slice(0, -1) + '.' + segs[++i];\n }\n obj = obj[key];\n }\n return obj;\n};\n\nfunction isObject(val) {\n return val !== null && (typeof val === 'object' || typeof val === 'function');\n}\n\nfunction toString(val) {\n if (!val) return '';\n if (Array.isArray(val)) {\n return val.join('.');\n }\n return val;\n}\n","/*!\n * has-value <https://github.com/jonschlinkert/has-value>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nvar isObject = require('isobject');\nvar hasValues = require('has-values');\nvar get = require('get-value');\n\nmodule.exports = function(val, prop) {\n return hasValues(isObject(val) && prop ? get(val, prop) : val);\n};\n","/*!\n * has-values <https://github.com/jonschlinkert/has-values>\n *\n * Copyright (c) 2014-2015, 2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar typeOf = require('kind-of');\nvar isNumber = require('is-number');\n\nmodule.exports = function hasValue(val) {\n // is-number checks for NaN and other edge cases\n if (isNumber(val)) {\n return true;\n }\n\n switch (typeOf(val)) {\n case 'null':\n case 'boolean':\n case 'function':\n return true;\n case 'string':\n case 'arguments':\n return val.length !== 0;\n case 'error':\n return val.message !== '';\n case 'array':\n var len = val.length;\n if (len === 0) {\n return false;\n }\n for (var i = 0; i < len; i++) {\n if (hasValue(val[i])) {\n return true;\n }\n }\n return false;\n case 'file':\n case 'map':\n case 'set':\n return val.size !== 0;\n case 'object':\n var keys = Object.keys(val);\n if (keys.length === 0) {\n return false;\n }\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (hasValue(val[key])) {\n return true;\n }\n }\n return false;\n default: {\n return false;\n }\n }\n};\n","var isBuffer = require('is-buffer');\nvar toString = Object.prototype.toString;\n\n/**\n * Get the native `typeof` a value.\n *\n * @param {*} `val`\n * @return {*} Native javascript type\n */\n\nmodule.exports = function kindOf(val) {\n // primitivies\n if (typeof val === 'undefined') {\n return 'undefined';\n }\n if (val === null) {\n return 'null';\n }\n if (val === true || val === false || val instanceof Boolean) {\n return 'boolean';\n }\n if (typeof val === 'string' || val instanceof String) {\n return 'string';\n }\n if (typeof val === 'number' || val instanceof Number) {\n return 'number';\n }\n\n // functions\n if (typeof val === 'function' || val instanceof Function) {\n return 'function';\n }\n\n // array\n if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) {\n return 'array';\n }\n\n // check for instances of RegExp and Date before calling `toString`\n if (val instanceof RegExp) {\n return 'regexp';\n }\n if (val instanceof Date) {\n return 'date';\n }\n\n // other objects\n var type = toString.call(val);\n\n if (type === '[object RegExp]') {\n return 'regexp';\n }\n if (type === '[object Date]') {\n return 'date';\n }\n if (type === '[object Arguments]') {\n return 'arguments';\n }\n if (type === '[object Error]') {\n return 'error';\n }\n if (type === '[object Promise]') {\n return 'promise';\n }\n\n // buffer\n if (isBuffer(val)) {\n return 'buffer';\n }\n\n // es6: Map, WeakMap, Set, WeakSet\n if (type === '[object Set]') {\n return 'set';\n }\n if (type === '[object WeakSet]') {\n return 'weakset';\n }\n if (type === '[object Map]') {\n return 'map';\n }\n if (type === '[object WeakMap]') {\n return 'weakmap';\n }\n if (type === '[object Symbol]') {\n return 'symbol';\n }\n\n // typed arrays\n if (type === '[object Int8Array]') {\n return 'int8array';\n }\n if (type === '[object Uint8Array]') {\n return 'uint8array';\n }\n if (type === '[object Uint8ClampedArray]') {\n return 'uint8clampedarray';\n }\n if (type === '[object Int16Array]') {\n return 'int16array';\n }\n if (type === '[object Uint16Array]') {\n return 'uint16array';\n }\n if (type === '[object Int32Array]') {\n return 'int32array';\n }\n if (type === '[object Uint32Array]') {\n return 'uint32array';\n }\n if (type === '[object Float32Array]') {\n return 'float32array';\n }\n if (type === '[object Float64Array]') {\n return 'float64array';\n }\n\n // must be a plain object\n return 'object';\n};\n","/*!\n * is-accessor-descriptor <https://github.com/jonschlinkert/is-accessor-descriptor>\n *\n * Copyright (c) 2015-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar typeOf = require('kind-of');\n\n// accessor descriptor properties\nvar accessor = {\n get: 'function',\n set: 'function',\n configurable: 'boolean',\n enumerable: 'boolean'\n};\n\nfunction isAccessorDescriptor(obj, prop) {\n if (typeof prop === 'string') {\n var val = Object.getOwnPropertyDescriptor(obj, prop);\n return typeof val !== 'undefined';\n }\n\n if (typeOf(obj) !== 'object') {\n return false;\n }\n\n if (has(obj, 'value') || has(obj, 'writable')) {\n return false;\n }\n\n if (!has(obj, 'get') || typeof obj.get !== 'function') {\n return false;\n }\n\n // tldr: it's valid to have \"set\" be undefined\n // \"set\" might be undefined if `Object.getOwnPropertyDescriptor`\n // was used to get the value, and only `get` was defined by the user\n if (has(obj, 'set') && typeof obj[key] !== 'function' && typeof obj[key] !== 'undefined') {\n return false;\n }\n\n for (var key in obj) {\n if (!accessor.hasOwnProperty(key)) {\n continue;\n }\n\n if (typeOf(obj[key]) === accessor[key]) {\n continue;\n }\n\n if (typeof obj[key] !== 'undefined') {\n return false;\n }\n }\n return true;\n}\n\nfunction has(obj, key) {\n return {}.hasOwnProperty.call(obj, key);\n}\n\n/**\n * Expose `isAccessorDescriptor`\n */\n\nmodule.exports = isAccessorDescriptor;\n","var toString = Object.prototype.toString;\n\nmodule.exports = function kindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n\n var type = typeof val;\n if (type === 'boolean') return 'boolean';\n if (type === 'string') return 'string';\n if (type === 'number') return 'number';\n if (type === 'symbol') return 'symbol';\n if (type === 'function') {\n return isGeneratorFn(val) ? 'generatorfunction' : 'function';\n }\n\n if (isArray(val)) return 'array';\n if (isBuffer(val)) return 'buffer';\n if (isArguments(val)) return 'arguments';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n if (isRegexp(val)) return 'regexp';\n\n switch (ctorName(val)) {\n case 'Symbol': return 'symbol';\n case 'Promise': return 'promise';\n\n // Set, Map, WeakSet, WeakMap\n case 'WeakMap': return 'weakmap';\n case 'WeakSet': return 'weakset';\n case 'Map': return 'map';\n case 'Set': return 'set';\n\n // 8-bit typed arrays\n case 'Int8Array': return 'int8array';\n case 'Uint8Array': return 'uint8array';\n case 'Uint8ClampedArray': return 'uint8clampedarray';\n\n // 16-bit typed arrays\n case 'Int16Array': return 'int16array';\n case 'Uint16Array': return 'uint16array';\n\n // 32-bit typed arrays\n case 'Int32Array': return 'int32array';\n case 'Uint32Array': return 'uint32array';\n case 'Float32Array': return 'float32array';\n case 'Float64Array': return 'float64array';\n }\n\n if (isGeneratorObj(val)) {\n return 'generator';\n }\n\n // Non-plain objects\n type = toString.call(val);\n switch (type) {\n case '[object Object]': return 'object';\n // iterators\n case '[object Map Iterator]': return 'mapiterator';\n case '[object Set Iterator]': return 'setiterator';\n case '[object String Iterator]': return 'stringiterator';\n case '[object Array Iterator]': return 'arrayiterator';\n }\n\n // other\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n};\n\nfunction ctorName(val) {\n return val.constructor ? val.constructor.name : null;\n}\n\nfunction isArray(val) {\n if (Array.isArray) return Array.isArray(val);\n return val instanceof Array;\n}\n\nfunction isError(val) {\n return val instanceof Error || (typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number');\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function'\n && typeof val.getDate === 'function'\n && typeof val.setDate === 'function';\n}\n\nfunction isRegexp(val) {\n if (val instanceof RegExp) return true;\n return typeof val.flags === 'string'\n && typeof val.ignoreCase === 'boolean'\n && typeof val.multiline === 'boolean'\n && typeof val.global === 'boolean';\n}\n\nfunction isGeneratorFn(name, val) {\n return ctorName(name) === 'GeneratorFunction';\n}\n\nfunction isGeneratorObj(val) {\n return typeof val.throw === 'function'\n && typeof val.return === 'function'\n && typeof val.next === 'function';\n}\n\nfunction isArguments(val) {\n try {\n if (typeof val.length === 'number' && typeof val.callee === 'function') {\n return true;\n }\n } catch (err) {\n if (err.message.indexOf('callee') !== -1) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * If you need to support Safari 5-7 (8-10 yr-old browser),\n * take a look at https://github.com/feross/is-buffer\n */\n\nfunction isBuffer(val) {\n if (val.constructor && typeof val.constructor.isBuffer === 'function') {\n return val.constructor.isBuffer(val);\n }\n return false;\n}\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n","/*!\n * is-data-descriptor <https://github.com/jonschlinkert/is-data-descriptor>\n *\n * Copyright (c) 2015-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar typeOf = require('kind-of');\n\nmodule.exports = function isDataDescriptor(obj, prop) {\n // data descriptor properties\n var data = {\n configurable: 'boolean',\n enumerable: 'boolean',\n writable: 'boolean'\n };\n\n if (typeOf(obj) !== 'object') {\n return false;\n }\n\n if (typeof prop === 'string') {\n var val = Object.getOwnPropertyDescriptor(obj, prop);\n return typeof val !== 'undefined';\n }\n\n if (!('value' in obj) && !('writable' in obj)) {\n return false;\n }\n\n for (var key in obj) {\n if (key === 'value') continue;\n\n if (!data.hasOwnProperty(key)) {\n continue;\n }\n\n if (typeOf(obj[key]) === data[key]) {\n continue;\n }\n\n if (typeof obj[key] !== 'undefined') {\n return false;\n }\n }\n return true;\n};\n","var toString = Object.prototype.toString;\n\nmodule.exports = function kindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n\n var type = typeof val;\n if (type === 'boolean') return 'boolean';\n if (type === 'string') return 'string';\n if (type === 'number') return 'number';\n if (type === 'symbol') return 'symbol';\n if (type === 'function') {\n return isGeneratorFn(val) ? 'generatorfunction' : 'function';\n }\n\n if (isArray(val)) return 'array';\n if (isBuffer(val)) return 'buffer';\n if (isArguments(val)) return 'arguments';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n if (isRegexp(val)) return 'regexp';\n\n switch (ctorName(val)) {\n case 'Symbol': return 'symbol';\n case 'Promise': return 'promise';\n\n // Set, Map, WeakSet, WeakMap\n case 'WeakMap': return 'weakmap';\n case 'WeakSet': return 'weakset';\n case 'Map': return 'map';\n case 'Set': return 'set';\n\n // 8-bit typed arrays\n case 'Int8Array': return 'int8array';\n case 'Uint8Array': return 'uint8array';\n case 'Uint8ClampedArray': return 'uint8clampedarray';\n\n // 16-bit typed arrays\n case 'Int16Array': return 'int16array';\n case 'Uint16Array': return 'uint16array';\n\n // 32-bit typed arrays\n case 'Int32Array': return 'int32array';\n case 'Uint32Array': return 'uint32array';\n case 'Float32Array': return 'float32array';\n case 'Float64Array': return 'float64array';\n }\n\n if (isGeneratorObj(val)) {\n return 'generator';\n }\n\n // Non-plain objects\n type = toString.call(val);\n switch (type) {\n case '[object Object]': return 'object';\n // iterators\n case '[object Map Iterator]': return 'mapiterator';\n case '[object Set Iterator]': return 'setiterator';\n case '[object String Iterator]': return 'stringiterator';\n case '[object Array Iterator]': return 'arrayiterator';\n }\n\n // other\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n};\n\nfunction ctorName(val) {\n return val.constructor ? val.constructor.name : null;\n}\n\nfunction isArray(val) {\n if (Array.isArray) return Array.isArray(val);\n return val instanceof Array;\n}\n\nfunction isError(val) {\n return val instanceof Error || (typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number');\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function'\n && typeof val.getDate === 'function'\n && typeof val.setDate === 'function';\n}\n\nfunction isRegexp(val) {\n if (val instanceof RegExp) return true;\n return typeof val.flags === 'string'\n && typeof val.ignoreCase === 'boolean'\n && typeof val.multiline === 'boolean'\n && typeof val.global === 'boolean';\n}\n\nfunction isGeneratorFn(name, val) {\n return ctorName(name) === 'GeneratorFunction';\n}\n\nfunction isGeneratorObj(val) {\n return typeof val.throw === 'function'\n && typeof val.return === 'function'\n && typeof val.next === 'function';\n}\n\nfunction isArguments(val) {\n try {\n if (typeof val.length === 'number' && typeof val.callee === 'function') {\n return true;\n }\n } catch (err) {\n if (err.message.indexOf('callee') !== -1) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * If you need to support Safari 5-7 (8-10 yr-old browser),\n * take a look at https://github.com/feross/is-buffer\n */\n\nfunction isBuffer(val) {\n if (val.constructor && typeof val.constructor.isBuffer === 'function') {\n return val.constructor.isBuffer(val);\n }\n return false;\n}\n","/*!\n * is-descriptor <https://github.com/jonschlinkert/is-descriptor>\n *\n * Copyright (c) 2015-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar typeOf = require('kind-of');\nvar isAccessor = require('is-accessor-descriptor');\nvar isData = require('is-data-descriptor');\n\nmodule.exports = function isDescriptor(obj, key) {\n if (typeOf(obj) !== 'object') {\n return false;\n }\n if ('get' in obj) {\n return isAccessor(obj, key);\n }\n return isData(obj, key);\n};\n","var toString = Object.prototype.toString;\n\nmodule.exports = function kindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n\n var type = typeof val;\n if (type === 'boolean') return 'boolean';\n if (type === 'string') return 'string';\n if (type === 'number') return 'number';\n if (type === 'symbol') return 'symbol';\n if (type === 'function') {\n return isGeneratorFn(val) ? 'generatorfunction' : 'function';\n }\n\n if (isArray(val)) return 'array';\n if (isBuffer(val)) return 'buffer';\n if (isArguments(val)) return 'arguments';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n if (isRegexp(val)) return 'regexp';\n\n switch (ctorName(val)) {\n case 'Symbol': return 'symbol';\n case 'Promise': return 'promise';\n\n // Set, Map, WeakSet, WeakMap\n case 'WeakMap': return 'weakmap';\n case 'WeakSet': return 'weakset';\n case 'Map': return 'map';\n case 'Set': return 'set';\n\n // 8-bit typed arrays\n case 'Int8Array': return 'int8array';\n case 'Uint8Array': return 'uint8array';\n case 'Uint8ClampedArray': return 'uint8clampedarray';\n\n // 16-bit typed arrays\n case 'Int16Array': return 'int16array';\n case 'Uint16Array': return 'uint16array';\n\n // 32-bit typed arrays\n case 'Int32Array': return 'int32array';\n case 'Uint32Array': return 'uint32array';\n case 'Float32Array': return 'float32array';\n case 'Float64Array': return 'float64array';\n }\n\n if (isGeneratorObj(val)) {\n return 'generator';\n }\n\n // Non-plain objects\n type = toString.call(val);\n switch (type) {\n case '[object Object]': return 'object';\n // iterators\n case '[object Map Iterator]': return 'mapiterator';\n case '[object Set Iterator]': return 'setiterator';\n case '[object String Iterator]': return 'stringiterator';\n case '[object Array Iterator]': return 'arrayiterator';\n }\n\n // other\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n};\n\nfunction ctorName(val) {\n return val.constructor ? val.constructor.name : null;\n}\n\nfunction isArray(val) {\n if (Array.isArray) return Array.isArray(val);\n return val instanceof Array;\n}\n\nfunction isError(val) {\n return val instanceof Error || (typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number');\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function'\n && typeof val.getDate === 'function'\n && typeof val.setDate === 'function';\n}\n\nfunction isRegexp(val) {\n if (val instanceof RegExp) return true;\n return typeof val.flags === 'string'\n && typeof val.ignoreCase === 'boolean'\n && typeof val.multiline === 'boolean'\n && typeof val.global === 'boolean';\n}\n\nfunction isGeneratorFn(name, val) {\n return ctorName(name) === 'GeneratorFunction';\n}\n\nfunction isGeneratorObj(val) {\n return typeof val.throw === 'function'\n && typeof val.return === 'function'\n && typeof val.next === 'function';\n}\n\nfunction isArguments(val) {\n try {\n if (typeof val.length === 'number' && typeof val.callee === 'function') {\n return true;\n }\n } catch (err) {\n if (err.message.indexOf('callee') !== -1) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * If you need to support Safari 5-7 (8-10 yr-old browser),\n * take a look at https://github.com/feross/is-buffer\n */\n\nfunction isBuffer(val) {\n if (val.constructor && typeof val.constructor.isBuffer === 'function') {\n return val.constructor.isBuffer(val);\n }\n return false;\n}\n","/*!\n * is-extendable <https://github.com/jonschlinkert/is-extendable>\n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function isExtendable(val) {\n return typeof val !== 'undefined' && val !== null\n && (typeof val === 'object' || typeof val === 'function');\n};\n","/*!\n * is-number <https://github.com/jonschlinkert/is-number>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nvar typeOf = require('kind-of');\n\nmodule.exports = function isNumber(num) {\n var type = typeOf(num);\n\n if (type === 'string') {\n if (!num.trim()) return false;\n } else if (type !== 'number') {\n return false;\n }\n\n return (num - num + 1) >= 0;\n};\n","/*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isObject = require('isobject');\n\nfunction isObjectObject(o) {\n return isObject(o) === true\n && Object.prototype.toString.call(o) === '[object Object]';\n}\n\nmodule.exports = function isPlainObject(o) {\n var ctor,prot;\n\n if (isObjectObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (typeof ctor !== 'function') return false;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObjectObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n};\n","/*!\n * is-windows <https://github.com/jonschlinkert/is-windows>\n *\n * Copyright © 2015-2018, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n(function(factory) {\n if (exports && typeof exports === 'object' && typeof module !== 'undefined') {\n module.exports = factory();\n } else if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof window !== 'undefined') {\n window.isWindows = factory();\n } else if (typeof global !== 'undefined') {\n global.isWindows = factory();\n } else if (typeof self !== 'undefined') {\n self.isWindows = factory();\n } else {\n this.isWindows = factory();\n }\n})(function() {\n 'use strict';\n return function isWindows() {\n return process && (process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE));\n };\n});\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/*!\n * isobject <https://github.com/jonschlinkert/isobject>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function isObject(val) {\n return val != null && typeof val === 'object' && Array.isArray(val) === false;\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","var isBuffer = require('is-buffer');\nvar toString = Object.prototype.toString;\n\n/**\n * Get the native `typeof` a value.\n *\n * @param {*} `val`\n * @return {*} Native javascript type\n */\n\nmodule.exports = function kindOf(val) {\n // primitivies\n if (typeof val === 'undefined') {\n return 'undefined';\n }\n if (val === null) {\n return 'null';\n }\n if (val === true || val === false || val instanceof Boolean) {\n return 'boolean';\n }\n if (typeof val === 'string' || val instanceof String) {\n return 'string';\n }\n if (typeof val === 'number' || val instanceof Number) {\n return 'number';\n }\n\n // functions\n if (typeof val === 'function' || val instanceof Function) {\n return 'function';\n }\n\n // array\n if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) {\n return 'array';\n }\n\n // check for instances of RegExp and Date before calling `toString`\n if (val instanceof RegExp) {\n return 'regexp';\n }\n if (val instanceof Date) {\n return 'date';\n }\n\n // other objects\n var type = toString.call(val);\n\n if (type === '[object RegExp]') {\n return 'regexp';\n }\n if (type === '[object Date]') {\n return 'date';\n }\n if (type === '[object Arguments]') {\n return 'arguments';\n }\n if (type === '[object Error]') {\n return 'error';\n }\n\n // buffer\n if (isBuffer(val)) {\n return 'buffer';\n }\n\n // es6: Map, WeakMap, Set, WeakSet\n if (type === '[object Set]') {\n return 'set';\n }\n if (type === '[object WeakSet]') {\n return 'weakset';\n }\n if (type === '[object Map]') {\n return 'map';\n }\n if (type === '[object WeakMap]') {\n return 'weakmap';\n }\n if (type === '[object Symbol]') {\n return 'symbol';\n }\n\n // typed arrays\n if (type === '[object Int8Array]') {\n return 'int8array';\n }\n if (type === '[object Uint8Array]') {\n return 'uint8array';\n }\n if (type === '[object Uint8ClampedArray]') {\n return 'uint8clampedarray';\n }\n if (type === '[object Int16Array]') {\n return 'int16array';\n }\n if (type === '[object Uint16Array]') {\n return 'uint16array';\n }\n if (type === '[object Int32Array]') {\n return 'int32array';\n }\n if (type === '[object Uint32Array]') {\n return 'uint32array';\n }\n if (type === '[object Float32Array]') {\n return 'float32array';\n }\n if (type === '[object Float64Array]') {\n return 'float64array';\n }\n\n // must be a plain object\n return 'object';\n};\n","/*!\n * map-cache <https://github.com/jonschlinkert/map-cache>\n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\n\n/**\n * Expose `MapCache`\n */\n\nmodule.exports = MapCache;\n\n/**\n * Creates a cache object to store key/value pairs.\n *\n * ```js\n * var cache = new MapCache();\n * ```\n *\n * @api public\n */\n\nfunction MapCache(data) {\n this.__data__ = data || {};\n}\n\n/**\n * Adds `value` to `key` on the cache.\n *\n * ```js\n * cache.set('foo', 'bar');\n * ```\n *\n * @param {String} `key` The key of the value to cache.\n * @param {*} `value` The value to cache.\n * @returns {Object} Returns the `Cache` object for chaining.\n * @api public\n */\n\nMapCache.prototype.set = function mapSet(key, value) {\n if (key !== '__proto__') {\n this.__data__[key] = value;\n }\n return this;\n};\n\n/**\n * Gets the cached value for `key`.\n *\n * ```js\n * cache.get('foo');\n * //=> 'bar'\n * ```\n *\n * @param {String} `key` The key of the value to get.\n * @returns {*} Returns the cached value.\n * @api public\n */\n\nMapCache.prototype.get = function mapGet(key) {\n return key === '__proto__' ? undefined : this.__data__[key];\n};\n\n/**\n * Checks if a cached value for `key` exists.\n *\n * ```js\n * cache.has('foo');\n * //=> true\n * ```\n *\n * @param {String} `key` The key of the entry to check.\n * @returns {Boolean} Returns `true` if an entry for `key` exists, else `false`.\n * @api public\n */\n\nMapCache.prototype.has = function mapHas(key) {\n return key !== '__proto__' && hasOwn.call(this.__data__, key);\n};\n\n/**\n * Removes `key` and its value from the cache.\n *\n * ```js\n * cache.del('foo');\n * ```\n * @title .del\n * @param {String} `key` The key of the value to remove.\n * @returns {Boolean} Returns `true` if the entry was removed successfully, else `false`.\n * @api public\n */\n\nMapCache.prototype.del = function mapDelete(key) {\n return this.has(key) && delete this.__data__[key];\n};\n","'use strict';\n\nvar util = require('util');\nvar visit = require('object-visit');\n\n/**\n * Map `visit` over an array of objects.\n *\n * @param {Object} `collection` The context in which to invoke `method`\n * @param {String} `method` Name of the method to call on `collection`\n * @param {Object} `arr` Array of objects.\n */\n\nmodule.exports = function mapVisit(collection, method, val) {\n if (isObject(val)) {\n return visit.apply(null, arguments);\n }\n\n if (!Array.isArray(val)) {\n throw new TypeError('expected an array: ' + util.inspect(val));\n }\n\n var args = [].slice.call(arguments, 3);\n\n for (var i = 0; i < val.length; i++) {\n var ele = val[i];\n if (isObject(ele)) {\n visit.apply(null, [collection, method, ele].concat(args));\n } else {\n collection[method].apply(collection, [ele].concat(args));\n }\n }\n};\n\nfunction isObject(val) {\n return val && (typeof val === 'function' || (!Array.isArray(val) && typeof val === 'object'));\n}\n","'use strict';\n\n/**\n * Module dependencies\n */\n\nvar util = require('util');\nvar braces = require('braces');\nvar toRegex = require('to-regex');\nvar extend = require('extend-shallow');\n\n/**\n * Local dependencies\n */\n\nvar compilers = require('./lib/compilers');\nvar parsers = require('./lib/parsers');\nvar cache = require('./lib/cache');\nvar utils = require('./lib/utils');\nvar MAX_LENGTH = 1024 * 64;\n\n/**\n * The main function takes a list of strings and one or more\n * glob patterns to use for matching.\n *\n * ```js\n * var mm = require('micromatch');\n * mm(list, patterns[, options]);\n *\n * console.log(mm(['a.js', 'a.txt'], ['*.js']));\n * //=> [ 'a.js' ]\n * ```\n * @param {Array} `list` A list of strings to match\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 {Array} Returns an array of matches\n * @summary false\n * @api public\n */\n\nfunction micromatch(list, patterns, options) {\n patterns = utils.arrayify(patterns);\n list = utils.arrayify(list);\n\n var len = patterns.length;\n if (list.length === 0 || len === 0) {\n return [];\n }\n\n if (len === 1) {\n return micromatch.match(list, patterns[0], options);\n }\n\n var omit = [];\n var keep = [];\n var idx = -1;\n\n while (++idx < len) {\n var pattern = patterns[idx];\n\n if (typeof pattern === 'string' && pattern.charCodeAt(0) === 33 /* ! */) {\n omit.push.apply(omit, micromatch.match(list, pattern.slice(1), options));\n } else {\n keep.push.apply(keep, micromatch.match(list, pattern, options));\n }\n }\n\n var matches = utils.diff(keep, omit);\n if (!options || options.nodupes !== false) {\n return utils.unique(matches);\n }\n\n return matches;\n}\n\n/**\n * Similar to the main function, but `pattern` must be a string.\n *\n * ```js\n * var mm = require('micromatch');\n * mm.match(list, pattern[, options]);\n *\n * console.log(mm.match(['a.a', 'a.aa', 'a.b', 'a.c'], '*.a'));\n * //=> ['a.a', 'a.aa']\n * ```\n * @param {Array} `list` Array of strings to match\n * @param {String} `pattern` 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 matches\n * @api public\n */\n\nmicromatch.match = function(list, pattern, options) {\n if (Array.isArray(pattern)) {\n throw new TypeError('expected pattern to be a string');\n }\n\n var unixify = utils.unixify(options);\n var isMatch = memoize('match', pattern, options, micromatch.matcher);\n var matches = [];\n\n list = utils.arrayify(list);\n var len = list.length;\n var idx = -1;\n\n while (++idx < len) {\n var ele = list[idx];\n if (ele === pattern || isMatch(ele)) {\n matches.push(utils.value(ele, unixify, options));\n }\n }\n\n // if no options were passed, uniquify results and return\n if (typeof options === 'undefined') {\n return utils.unique(matches);\n }\n\n if (matches.length === 0) {\n if (options.failglob === true) {\n throw new Error('no matches found for \"' + pattern + '\"');\n }\n if (options.nonull === true || options.nullglob === true) {\n return [options.unescape ? utils.unescape(pattern) : pattern];\n }\n }\n\n // if `opts.ignore` was defined, diff ignored list\n if (options.ignore) {\n matches = micromatch.not(matches, options.ignore, options);\n }\n\n return options.nodupes !== false ? utils.unique(matches) : matches;\n};\n\n/**\n * Returns true if the specified `string` matches the given glob `pattern`.\n *\n * ```js\n * var mm = require('micromatch');\n * mm.isMatch(string, pattern[, options]);\n *\n * console.log(mm.isMatch('a.a', '*.a'));\n * //=> true\n * console.log(mm.isMatch('a.b', '*.a'));\n * //=> false\n * ```\n * @param {String} `string` String to match\n * @param {String} `pattern` 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 string matches the glob pattern.\n * @api public\n */\n\nmicromatch.isMatch = function(str, pattern, options) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string: \"' + util.inspect(str) + '\"');\n }\n\n if (isEmptyString(str) || isEmptyString(pattern)) {\n return false;\n }\n\n var equals = utils.equalsPattern(options);\n if (equals(str)) {\n return true;\n }\n\n var isMatch = memoize('isMatch', pattern, options, micromatch.matcher);\n return isMatch(str);\n};\n\n/**\n * Returns true if some of the strings in the given `list` match any of the\n * given glob `patterns`.\n *\n * ```js\n * var 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 = function(list, patterns, options) {\n if (typeof list === 'string') {\n list = [list];\n }\n for (var i = 0; i < list.length; i++) {\n if (micromatch(list[i], patterns, options).length === 1) {\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 * var 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 = function(list, patterns, options) {\n if (typeof list === 'string') {\n list = [list];\n }\n for (var i = 0; i < list.length; i++) {\n if (micromatch(list[i], patterns, options).length !== 1) {\n return false;\n }\n }\n return true;\n};\n\n/**\n * Returns true if **any** of the given glob `patterns`\n * match the specified `string`.\n *\n * ```js\n * var mm = require('micromatch');\n * mm.any(string, patterns[, options]);\n *\n * console.log(mm.any('a.a', ['b.*', '*.a']));\n * //=> true\n * console.log(mm.any('a.a', 'b.*'));\n * //=> 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) for changing how matches are performed\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nmicromatch.any = function(str, patterns, options) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string: \"' + util.inspect(str) + '\"');\n }\n\n if (isEmptyString(str) || isEmptyString(patterns)) {\n return false;\n }\n\n if (typeof patterns === 'string') {\n patterns = [patterns];\n }\n\n for (var i = 0; i < patterns.length; i++) {\n if (micromatch.isMatch(str, patterns[i], options)) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * Returns true if **all** of the given `patterns` match\n * the specified string.\n *\n * ```js\n * var 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 = function(str, patterns, options) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string: \"' + util.inspect(str) + '\"');\n }\n if (typeof patterns === 'string') {\n patterns = [patterns];\n }\n for (var i = 0; i < patterns.length; i++) {\n if (!micromatch.isMatch(str, patterns[i], options)) {\n return false;\n }\n }\n return true;\n};\n\n/**\n * Returns a list of strings that _**do not match any**_ of the given `patterns`.\n *\n * ```js\n * var 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 = function(list, patterns, options) {\n var opts = extend({}, options);\n var ignore = opts.ignore;\n delete opts.ignore;\n\n var unixify = utils.unixify(opts);\n list = utils.arrayify(list).map(unixify);\n\n var matches = utils.diff(list, micromatch(list, patterns, opts));\n if (ignore) {\n matches = utils.diff(matches, micromatch(list, ignore));\n }\n\n return opts.nodupes !== false ? utils.unique(matches) : matches;\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 = function(str, patterns, options) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string: \"' + util.inspect(str) + '\"');\n }\n\n if (typeof patterns === 'string') {\n if (isEmptyString(str) || isEmptyString(patterns)) {\n return false;\n }\n\n var equals = utils.equalsPattern(patterns, options);\n if (equals(str)) {\n return true;\n }\n var contains = utils.containsPattern(patterns, options);\n if (contains(str)) {\n return true;\n }\n }\n\n var opts = extend({}, options, {contains: true});\n return micromatch.any(str, patterns, opts);\n};\n\n/**\n * Returns true if the given pattern and options should enable\n * the `matchBase` option.\n * @return {Boolean}\n * @api private\n */\n\nmicromatch.matchBase = function(pattern, options) {\n if (pattern && pattern.indexOf('/') !== -1 || !options) return false;\n return options.basename === true || options.matchBase === 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 * var mm = require('micromatch');\n * mm.matchKeys(object, patterns[, options]);\n *\n * var 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 = function(obj, patterns, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('expected the first argument to be an object');\n }\n var keys = micromatch(Object.keys(obj), patterns, options);\n return utils.pick(obj, keys);\n};\n\n/**\n * Returns a memoized 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 * var mm = require('micromatch');\n * mm.matcher(pattern[, options]);\n *\n * var isMatch = mm.matcher('*.!(*a)');\n * console.log(isMatch('a.a'));\n * //=> false\n * console.log(isMatch('a.b'));\n * //=> true\n * ```\n * @param {String} `pattern` Glob pattern\n * @param {Object} `options` See available [options](#options) for changing how matches are performed.\n * @return {Function} Returns a matcher function.\n * @api public\n */\n\nmicromatch.matcher = function matcher(pattern, options) {\n if (Array.isArray(pattern)) {\n return compose(pattern, options, matcher);\n }\n\n // if pattern is a regex\n if (pattern instanceof RegExp) {\n return test(pattern);\n }\n\n // if pattern is invalid\n if (!utils.isString(pattern)) {\n throw new TypeError('expected pattern to be an array, string or regex');\n }\n\n // if pattern is a non-glob string\n if (!utils.hasSpecialChars(pattern)) {\n if (options && options.nocase === true) {\n pattern = pattern.toLowerCase();\n }\n return utils.matchPath(pattern, options);\n }\n\n // if pattern is a glob string\n var re = micromatch.makeRe(pattern, options);\n\n // if `options.matchBase` or `options.basename` is defined\n if (micromatch.matchBase(pattern, options)) {\n return utils.matchBasename(re, options);\n }\n\n function test(regex) {\n var equals = utils.equalsPattern(options);\n var unixify = utils.unixify(options);\n\n return function(str) {\n if (equals(str)) {\n return true;\n }\n\n if (regex.test(unixify(str))) {\n return true;\n }\n return false;\n };\n }\n\n var fn = test(re);\n Object.defineProperty(fn, 'result', {\n configurable: true,\n enumerable: false,\n value: re.result\n });\n return fn;\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 * var 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} `pattern` Glob pattern to use for matching.\n * @param {String} `string` 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 string matches the glob pattern, otherwise `null`.\n * @api public\n */\n\nmicromatch.capture = function(pattern, str, options) {\n var re = micromatch.makeRe(pattern, extend({capture: true}, options));\n var unixify = utils.unixify(options);\n\n function match() {\n return function(string) {\n var match = re.exec(unixify(string));\n if (!match) {\n return null;\n }\n\n return match.slice(1);\n };\n }\n\n var capture = memoize('capture', pattern, options, match);\n return capture(str);\n};\n\n/**\n * Create a regular expression from the given glob `pattern`.\n *\n * ```js\n * var 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` See available [options](#options) for changing how matches are performed.\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\nmicromatch.makeRe = function(pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('expected pattern to be a string');\n }\n\n if (pattern.length > MAX_LENGTH) {\n throw new Error('expected pattern to be less than ' + MAX_LENGTH + ' characters');\n }\n\n function makeRe() {\n var result = micromatch.create(pattern, options);\n var ast_array = [];\n var output = result.map(function(obj) {\n obj.ast.state = obj.state;\n ast_array.push(obj.ast);\n return obj.output;\n });\n\n var regex = toRegex(output.join('|'), options);\n Object.defineProperty(regex, 'result', {\n configurable: true,\n enumerable: false,\n value: ast_array\n });\n return regex;\n }\n\n return memoize('makeRe', pattern, options, makeRe);\n};\n\n/**\n * Expand the given brace `pattern`.\n *\n * ```js\n * var mm = require('micromatch');\n * console.log(mm.braces('foo/{a,b}/bar'));\n * //=> ['foo/(a|b)/bar']\n *\n * console.log(mm.braces('foo/{a,b}/bar', {expand: true}));\n * //=> ['foo/(a|b)/bar']\n * ```\n * @param {String} `pattern` String with brace pattern to expand.\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 = function(pattern, options) {\n if (typeof pattern !== 'string' && !Array.isArray(pattern)) {\n throw new TypeError('expected pattern to be an array or string');\n }\n\n function expand() {\n if (options && options.nobrace === true || !/\\{.*\\}/.test(pattern)) {\n return utils.arrayify(pattern);\n }\n return braces(pattern, options);\n }\n\n return memoize('braces', pattern, options, expand);\n};\n\n/**\n * Proxy to the [micromatch.braces](#method), for parity with\n * minimatch.\n */\n\nmicromatch.braceExpand = function(pattern, options) {\n var opts = extend({}, options, {expand: true});\n return micromatch.braces(pattern, opts);\n};\n\n/**\n * Parses the given glob `pattern` and returns an array of abstract syntax\n * trees (ASTs), with the compiled `output` and optional source `map` on\n * each AST.\n *\n * ```js\n * var mm = require('micromatch');\n * mm.create(pattern[, options]);\n *\n * console.log(mm.create('abc/*.js'));\n * // [{ options: { source: 'string', sourcemap: true },\n * // state: {},\n * // compilers:\n * // { ... },\n * // output: '(\\\\.[\\\\\\\\\\\\/])?abc\\\\/(?!\\\\.)(?=.)[^\\\\/]*?\\\\.js',\n * // ast:\n * // { type: 'root',\n * // errors: [],\n * // nodes:\n * // [ ... ],\n * // dot: false,\n * // input: 'abc/*.js' },\n * // parsingErrors: [],\n * // map:\n * // { version: 3,\n * // sources: [ 'string' ],\n * // names: [],\n * // mappings: 'AAAA,GAAG,EAAC,kBAAC,EAAC,EAAE',\n * // sourcesContent: [ 'abc/*.js' ] },\n * // position: { line: 1, column: 28 },\n * // content: {},\n * // files: {},\n * // idx: 6 }]\n * ```\n * @param {String} `pattern` Glob pattern to parse and compile.\n * @param {Object} `options` Any [options](#options) to change how parsing and compiling is performed.\n * @return {Object} Returns an object with the parsed AST, compiled string and optional source map.\n * @api public\n */\n\nmicromatch.create = function(pattern, options) {\n return memoize('create', pattern, options, function() {\n function create(str, opts) {\n return micromatch.compile(micromatch.parse(str, opts), opts);\n }\n\n pattern = micromatch.braces(pattern, options);\n var len = pattern.length;\n var idx = -1;\n var res = [];\n\n while (++idx < len) {\n res.push(create(pattern[idx], options));\n }\n return res;\n });\n};\n\n/**\n * Parse the given `str` with the given `options`.\n *\n * ```js\n * var mm = require('micromatch');\n * mm.parse(pattern[, options]);\n *\n * var ast = mm.parse('a/{b,c}/d');\n * console.log(ast);\n * // { type: 'root',\n * // errors: [],\n * // input: 'a/{b,c}/d',\n * // nodes:\n * // [ { type: 'bos', val: '' },\n * // { type: 'text', val: 'a/' },\n * // { type: 'brace',\n * // nodes:\n * // [ { type: 'brace.open', val: '{' },\n * // { type: 'text', val: 'b,c' },\n * // { type: 'brace.close', val: '}' } ] },\n * // { type: 'text', val: '/d' },\n * // { type: 'eos', val: '' } ] }\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {Object} Returns an AST\n * @api public\n */\n\nmicromatch.parse = function(pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('expected a string');\n }\n\n function parse() {\n var snapdragon = utils.instantiate(null, options);\n parsers(snapdragon, options);\n\n var ast = snapdragon.parse(pattern, options);\n utils.define(ast, 'snapdragon', snapdragon);\n ast.input = pattern;\n return ast;\n }\n\n return memoize('parse', pattern, options, parse);\n};\n\n/**\n * Compile the given `ast` or string with the given `options`.\n *\n * ```js\n * var mm = require('micromatch');\n * mm.compile(ast[, options]);\n *\n * var ast = mm.parse('a/{b,c}/d');\n * console.log(mm.compile(ast));\n * // { options: { source: 'string' },\n * // state: {},\n * // compilers:\n * // { eos: [Function],\n * // noop: [Function],\n * // bos: [Function],\n * // brace: [Function],\n * // 'brace.open': [Function],\n * // text: [Function],\n * // 'brace.close': [Function] },\n * // output: [ 'a/(b|c)/d' ],\n * // ast:\n * // { ... },\n * // parsingErrors: [] }\n * ```\n * @param {Object|String} `ast`\n * @param {Object} `options`\n * @return {Object} Returns an object that has an `output` property with the compiled string.\n * @api public\n */\n\nmicromatch.compile = function(ast, options) {\n if (typeof ast === 'string') {\n ast = micromatch.parse(ast, options);\n }\n\n return memoize('compile', ast.input, options, function() {\n var snapdragon = utils.instantiate(ast, options);\n compilers(snapdragon, options);\n return snapdragon.compile(ast, options);\n });\n};\n\n/**\n * Clear the regex cache.\n *\n * ```js\n * mm.clearCache();\n * ```\n * @api public\n */\n\nmicromatch.clearCache = function() {\n micromatch.cache.caches = {};\n};\n\n/**\n * Returns true if the given value is effectively an empty string\n */\n\nfunction isEmptyString(val) {\n return String(val) === '' || String(val) === './';\n}\n\n/**\n * Compose a matcher function with the given patterns.\n * This allows matcher functions to be compiled once and\n * called multiple times.\n */\n\nfunction compose(patterns, options, matcher) {\n var matchers;\n\n return memoize('compose', String(patterns), options, function() {\n return function(file) {\n // delay composition until it's invoked the first time,\n // after that it won't be called again\n if (!matchers) {\n matchers = [];\n for (var i = 0; i < patterns.length; i++) {\n matchers.push(matcher(patterns[i], options));\n }\n }\n\n var len = matchers.length;\n while (len--) {\n if (matchers[len](file) === true) {\n return true;\n }\n }\n return false;\n };\n });\n}\n\n/**\n * Memoize a generated regex or function. A unique key is generated\n * from the `type` (usually method name), the `pattern`, and\n * user-defined options.\n */\n\nfunction memoize(type, pattern, options, fn) {\n var key = utils.createKey(type + '=' + pattern, options);\n\n if (options && options.cache === false) {\n return fn(pattern, options);\n }\n\n if (cache.has(type, key)) {\n return cache.get(type, key);\n }\n\n var val = fn(pattern, options);\n cache.set(type, key, val);\n return val;\n}\n\n/**\n * Expose compiler, parser and cache on `micromatch`\n */\n\nmicromatch.compilers = compilers;\nmicromatch.parsers = parsers;\nmicromatch.caches = cache.caches;\n\n/**\n * Expose `micromatch`\n * @type {Function}\n */\n\nmodule.exports = micromatch;\n","module.exports = new (require('fragment-cache'))();\n","'use strict';\n\nvar nanomatch = require('nanomatch');\nvar extglob = require('extglob');\n\nmodule.exports = function(snapdragon) {\n var compilers = snapdragon.compiler.compilers;\n var opts = snapdragon.options;\n\n // register nanomatch compilers\n snapdragon.use(nanomatch.compilers);\n\n // get references to some specific nanomatch compilers before they\n // are overridden by the extglob and/or custom compilers\n var escape = compilers.escape;\n var qmark = compilers.qmark;\n var slash = compilers.slash;\n var star = compilers.star;\n var text = compilers.text;\n var plus = compilers.plus;\n var dot = compilers.dot;\n\n // register extglob compilers or escape exglobs if disabled\n if (opts.extglob === false || opts.noext === true) {\n snapdragon.compiler.use(escapeExtglobs);\n } else {\n snapdragon.use(extglob.compilers);\n }\n\n snapdragon.use(function() {\n this.options.star = this.options.star || function(/*node*/) {\n return '[^\\\\\\\\/]*?';\n };\n });\n\n // custom micromatch compilers\n snapdragon.compiler\n\n // reset referenced compiler\n .set('dot', dot)\n .set('escape', escape)\n .set('plus', plus)\n .set('slash', slash)\n .set('qmark', qmark)\n .set('star', star)\n .set('text', text);\n};\n\nfunction escapeExtglobs(compiler) {\n compiler.set('paren', function(node) {\n var val = '';\n visit(node, function(tok) {\n if (tok.val) val += (/^\\W/.test(tok.val) ? '\\\\' : '') + tok.val;\n });\n return this.emit(val, node);\n });\n\n /**\n * Visit `node` with the given `fn`\n */\n\n function visit(node, fn) {\n return node.nodes ? mapVisit(node.nodes, fn) : fn(node);\n }\n\n /**\n * Map visit over array of `nodes`.\n */\n\n function mapVisit(nodes, fn) {\n var len = nodes.length;\n var idx = -1;\n while (++idx < len) {\n visit(nodes[idx], fn);\n }\n }\n}\n","'use strict';\n\nvar extglob = require('extglob');\nvar nanomatch = require('nanomatch');\nvar regexNot = require('regex-not');\nvar toRegex = require('to-regex');\nvar not;\n\n/**\n * Characters to use in negation regex (we want to \"not\" match\n * characters that are matched by other parsers)\n */\n\nvar TEXT = '([!@*?+]?\\\\(|\\\\)|\\\\[:?(?=.*?:?\\\\])|:?\\\\]|[*+?!^$.\\\\\\\\/])+';\nvar createNotRegex = function(opts) {\n return not || (not = textRegex(TEXT));\n};\n\n/**\n * Parsers\n */\n\nmodule.exports = function(snapdragon) {\n var parsers = snapdragon.parser.parsers;\n\n // register nanomatch parsers\n snapdragon.use(nanomatch.parsers);\n\n // get references to some specific nanomatch parsers before they\n // are overridden by the extglob and/or parsers\n var escape = parsers.escape;\n var slash = parsers.slash;\n var qmark = parsers.qmark;\n var plus = parsers.plus;\n var star = parsers.star;\n var dot = parsers.dot;\n\n // register extglob parsers\n snapdragon.use(extglob.parsers);\n\n // custom micromatch parsers\n snapdragon.parser\n .use(function() {\n // override \"notRegex\" created in nanomatch parser\n this.notRegex = /^\\!+(?!\\()/;\n })\n // reset the referenced parsers\n .capture('escape', escape)\n .capture('slash', slash)\n .capture('qmark', qmark)\n .capture('star', star)\n .capture('plus', plus)\n .capture('dot', dot)\n\n /**\n * Override `text` parser\n */\n\n .capture('text', function() {\n if (this.isInside('bracket')) return;\n var pos = this.position();\n var m = this.match(createNotRegex(this.options));\n if (!m || !m[0]) return;\n\n // escape regex boundary characters and simple brackets\n var val = m[0].replace(/([[\\]^$])/g, '\\\\$1');\n\n return pos({\n type: 'text',\n val: val\n });\n });\n};\n\n/**\n * Create text regex\n */\n\nfunction textRegex(pattern) {\n var notStr = regexNot.create(pattern, {contains: true, strictClose: false});\n var prefix = '(?:[\\\\^]|\\\\\\\\|';\n return toRegex(prefix + notStr + ')', {strictClose: false});\n}\n","'use strict';\n\nvar utils = module.exports;\nvar path = require('path');\n\n/**\n * Module dependencies\n */\n\nvar Snapdragon = require('snapdragon');\nutils.define = require('define-property');\nutils.diff = require('arr-diff');\nutils.extend = require('extend-shallow');\nutils.pick = require('object.pick');\nutils.typeOf = require('kind-of');\nutils.unique = require('array-unique');\n\n/**\n * Returns true if the platform is windows, or `path.sep` is `\\\\`.\n * This is defined as a function to allow `path.sep` to be set in unit tests,\n * or by the user, if there is a reason to do so.\n * @return {Boolean}\n */\n\nutils.isWindows = function() {\n return path.sep === '\\\\' || process.platform === 'win32';\n};\n\n/**\n * Get the `Snapdragon` instance to use\n */\n\nutils.instantiate = function(ast, options) {\n var snapdragon;\n // if an instance was created by `.parse`, use that instance\n if (utils.typeOf(ast) === 'object' && ast.snapdragon) {\n snapdragon = ast.snapdragon;\n // if the user supplies an instance on options, use that instance\n } else if (utils.typeOf(options) === 'object' && options.snapdragon) {\n snapdragon = options.snapdragon;\n // create a new instance\n } else {\n snapdragon = new Snapdragon(options);\n }\n\n utils.define(snapdragon, 'parse', function(str, options) {\n var parsed = Snapdragon.prototype.parse.apply(this, arguments);\n parsed.input = str;\n\n // escape unmatched brace/bracket/parens\n var last = this.parser.stack.pop();\n if (last && this.options.strictErrors !== true) {\n var open = last.nodes[0];\n var inner = last.nodes[1];\n if (last.type === 'bracket') {\n if (inner.val.charAt(0) === '[') {\n inner.val = '\\\\' + inner.val;\n }\n\n } else {\n open.val = '\\\\' + open.val;\n var sibling = open.parent.nodes[1];\n if (sibling.type === 'star') {\n sibling.loose = true;\n }\n }\n }\n\n // add non-enumerable parser reference\n utils.define(parsed, 'parser', this.parser);\n return parsed;\n });\n\n return snapdragon;\n};\n\n/**\n * Create the key to use for memoization. The key is generated\n * by iterating over the options and concatenating key-value pairs\n * to the pattern string.\n */\n\nutils.createKey = function(pattern, options) {\n if (utils.typeOf(options) !== 'object') {\n return pattern;\n }\n var val = pattern;\n var keys = Object.keys(options);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n val += ';' + key + '=' + String(options[key]);\n }\n return val;\n};\n\n/**\n * Cast `val` to an array\n * @return {Array}\n */\n\nutils.arrayify = function(val) {\n if (typeof val === 'string') return [val];\n return val ? (Array.isArray(val) ? val : [val]) : [];\n};\n\n/**\n * Return true if `val` is a non-empty string\n */\n\nutils.isString = function(val) {\n return typeof val === 'string';\n};\n\n/**\n * Return true if `val` is a non-empty string\n */\n\nutils.isObject = function(val) {\n return utils.typeOf(val) === 'object';\n};\n\n/**\n * Returns true if the given `str` has special characters\n */\n\nutils.hasSpecialChars = function(str) {\n return /(?:(?:(^|\\/)[!.])|[*?+()|\\[\\]{}]|[+@]\\()/.test(str);\n};\n\n/**\n * Escape regex characters in the given string\n */\n\nutils.escapeRegex = function(str) {\n return str.replace(/[-[\\]{}()^$|*+?.\\\\\\/\\s]/g, '\\\\$&');\n};\n\n/**\n * Normalize slashes in the given filepath.\n *\n * @param {String} `filepath`\n * @return {String}\n */\n\nutils.toPosixPath = function(str) {\n return str.replace(/\\\\+/g, '/');\n};\n\n/**\n * Strip backslashes before special characters in a string.\n *\n * @param {String} `str`\n * @return {String}\n */\n\nutils.unescape = function(str) {\n return utils.toPosixPath(str.replace(/\\\\(?=[*+?!.])/g, ''));\n};\n\n/**\n * Strip the prefix from a filepath\n * @param {String} `fp`\n * @return {String}\n */\n\nutils.stripPrefix = function(str) {\n if (str.charAt(0) !== '.') {\n return str;\n }\n var ch = str.charAt(1);\n if (utils.isSlash(ch)) {\n return str.slice(2);\n }\n return str;\n};\n\n/**\n * Returns true if the given str is an escaped or\n * unescaped path character\n */\n\nutils.isSlash = function(str) {\n return str === '/' || str === '\\\\/' || str === '\\\\' || str === '\\\\\\\\';\n};\n\n/**\n * Returns a function that returns true if the given\n * pattern matches or contains a `filepath`\n *\n * @param {String} `pattern`\n * @return {Function}\n */\n\nutils.matchPath = function(pattern, options) {\n return (options && options.contains)\n ? utils.containsPattern(pattern, options)\n : utils.equalsPattern(pattern, options);\n};\n\n/**\n * Returns true if the given (original) filepath or unixified path are equal\n * to the given pattern.\n */\n\nutils._equals = function(filepath, unixPath, pattern) {\n return pattern === filepath || pattern === unixPath;\n};\n\n/**\n * Returns true if the given (original) filepath or unixified path contain\n * the given pattern.\n */\n\nutils._contains = function(filepath, unixPath, pattern) {\n return filepath.indexOf(pattern) !== -1 || unixPath.indexOf(pattern) !== -1;\n};\n\n/**\n * Returns a function that returns true if the given\n * pattern is the same as a given `filepath`\n *\n * @param {String} `pattern`\n * @return {Function}\n */\n\nutils.equalsPattern = function(pattern, options) {\n var unixify = utils.unixify(options);\n options = options || {};\n\n return function fn(filepath) {\n var equal = utils._equals(filepath, unixify(filepath), pattern);\n if (equal === true || options.nocase !== true) {\n return equal;\n }\n var lower = filepath.toLowerCase();\n return utils._equals(lower, unixify(lower), pattern);\n };\n};\n\n/**\n * Returns a function that returns true if the given\n * pattern contains a `filepath`\n *\n * @param {String} `pattern`\n * @return {Function}\n */\n\nutils.containsPattern = function(pattern, options) {\n var unixify = utils.unixify(options);\n options = options || {};\n\n return function(filepath) {\n var contains = utils._contains(filepath, unixify(filepath), pattern);\n if (contains === true || options.nocase !== true) {\n return contains;\n }\n var lower = filepath.toLowerCase();\n return utils._contains(lower, unixify(lower), pattern);\n };\n};\n\n/**\n * Returns a function that returns true if the given\n * regex matches the `filename` of a file path.\n *\n * @param {RegExp} `re` Matching regex\n * @return {Function}\n */\n\nutils.matchBasename = function(re) {\n return function(filepath) {\n return re.test(path.basename(filepath));\n };\n};\n\n/**\n * Determines the filepath to return based on the provided options.\n * @return {any}\n */\n\nutils.value = function(str, unixify, options) {\n if (options && options.unixify === false) {\n return str;\n }\n return unixify(str);\n};\n\n/**\n * Returns a function that normalizes slashes in a string to forward\n * slashes, strips `./` from beginning of paths, and optionally unescapes\n * special characters.\n * @return {Function}\n */\n\nutils.unixify = function(options) {\n options = options || {};\n return function(filepath) {\n if (utils.isWindows() || options.unixify === true) {\n filepath = utils.toPosixPath(filepath);\n }\n if (options.stripPrefix !== false) {\n filepath = utils.stripPrefix(filepath);\n }\n if (options.unescape === true) {\n filepath = utils.unescape(filepath);\n }\n return filepath;\n };\n};\n","/*!\n * define-property <https://github.com/jonschlinkert/define-property>\n *\n * Copyright (c) 2015-2018, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isobject = require('isobject');\nvar isDescriptor = require('is-descriptor');\nvar define = (typeof Reflect !== 'undefined' && Reflect.defineProperty)\n ? Reflect.defineProperty\n : Object.defineProperty;\n\nmodule.exports = function defineProperty(obj, key, val) {\n if (!isobject(obj) && typeof obj !== 'function' && !Array.isArray(obj)) {\n throw new TypeError('expected an object, function, or array');\n }\n\n if (typeof key !== 'string') {\n throw new TypeError('expected \"key\" to be a string');\n }\n\n if (isDescriptor(val)) {\n define(obj, key, val);\n return obj;\n }\n\n define(obj, key, {\n configurable: true,\n enumerable: false,\n writable: true,\n value: val\n });\n\n return obj;\n};\n","'use strict';\n\nvar isExtendable = require('is-extendable');\nvar assignSymbols = require('assign-symbols');\n\nmodule.exports = Object.assign || function(obj/*, objects*/) {\n if (obj === null || typeof obj === 'undefined') {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n if (!isObject(obj)) {\n obj = {};\n }\n for (var i = 1; i < arguments.length; i++) {\n var val = arguments[i];\n if (isString(val)) {\n val = toObject(val);\n }\n if (isObject(val)) {\n assign(obj, val);\n assignSymbols(obj, val);\n }\n }\n return obj;\n};\n\nfunction assign(a, b) {\n for (var key in b) {\n if (hasOwn(b, key)) {\n a[key] = b[key];\n }\n }\n}\n\nfunction isString(val) {\n return (val && typeof val === 'string');\n}\n\nfunction toObject(str) {\n var obj = {};\n for (var i in str) {\n obj[i] = str[i];\n }\n return obj;\n}\n\nfunction isObject(val) {\n return (val && typeof val === 'object') || isExtendable(val);\n}\n\n/**\n * Returns true if the given `key` is an own property of `obj`.\n */\n\nfunction hasOwn(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction isEnum(obj, key) {\n return Object.prototype.propertyIsEnumerable.call(obj, key);\n}\n","/*!\n * is-extendable <https://github.com/jonschlinkert/is-extendable>\n *\n * Copyright (c) 2015-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isPlainObject = require('is-plain-object');\n\nmodule.exports = function isExtendable(val) {\n return isPlainObject(val) || typeof val === 'function' || Array.isArray(val);\n};\n","var toString = Object.prototype.toString;\n\nmodule.exports = function kindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n\n var type = typeof val;\n if (type === 'boolean') return 'boolean';\n if (type === 'string') return 'string';\n if (type === 'number') return 'number';\n if (type === 'symbol') return 'symbol';\n if (type === 'function') {\n return isGeneratorFn(val) ? 'generatorfunction' : 'function';\n }\n\n if (isArray(val)) return 'array';\n if (isBuffer(val)) return 'buffer';\n if (isArguments(val)) return 'arguments';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n if (isRegexp(val)) return 'regexp';\n\n switch (ctorName(val)) {\n case 'Symbol': return 'symbol';\n case 'Promise': return 'promise';\n\n // Set, Map, WeakSet, WeakMap\n case 'WeakMap': return 'weakmap';\n case 'WeakSet': return 'weakset';\n case 'Map': return 'map';\n case 'Set': return 'set';\n\n // 8-bit typed arrays\n case 'Int8Array': return 'int8array';\n case 'Uint8Array': return 'uint8array';\n case 'Uint8ClampedArray': return 'uint8clampedarray';\n\n // 16-bit typed arrays\n case 'Int16Array': return 'int16array';\n case 'Uint16Array': return 'uint16array';\n\n // 32-bit typed arrays\n case 'Int32Array': return 'int32array';\n case 'Uint32Array': return 'uint32array';\n case 'Float32Array': return 'float32array';\n case 'Float64Array': return 'float64array';\n }\n\n if (isGeneratorObj(val)) {\n return 'generator';\n }\n\n // Non-plain objects\n type = toString.call(val);\n switch (type) {\n case '[object Object]': return 'object';\n // iterators\n case '[object Map Iterator]': return 'mapiterator';\n case '[object Set Iterator]': return 'setiterator';\n case '[object String Iterator]': return 'stringiterator';\n case '[object Array Iterator]': return 'arrayiterator';\n }\n\n // other\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n};\n\nfunction ctorName(val) {\n return val.constructor ? val.constructor.name : null;\n}\n\nfunction isArray(val) {\n if (Array.isArray) return Array.isArray(val);\n return val instanceof Array;\n}\n\nfunction isError(val) {\n return val instanceof Error || (typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number');\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function'\n && typeof val.getDate === 'function'\n && typeof val.setDate === 'function';\n}\n\nfunction isRegexp(val) {\n if (val instanceof RegExp) return true;\n return typeof val.flags === 'string'\n && typeof val.ignoreCase === 'boolean'\n && typeof val.multiline === 'boolean'\n && typeof val.global === 'boolean';\n}\n\nfunction isGeneratorFn(name, val) {\n return ctorName(name) === 'GeneratorFunction';\n}\n\nfunction isGeneratorObj(val) {\n return typeof val.throw === 'function'\n && typeof val.return === 'function'\n && typeof val.next === 'function';\n}\n\nfunction isArguments(val) {\n try {\n if (typeof val.length === 'number' && typeof val.callee === 'function') {\n return true;\n }\n } catch (err) {\n if (err.message.indexOf('callee') !== -1) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * If you need to support Safari 5-7 (8-10 yr-old browser),\n * take a look at https://github.com/feross/is-buffer\n */\n\nfunction isBuffer(val) {\n if (val.constructor && typeof val.constructor.isBuffer === 'function') {\n return val.constructor.isBuffer(val);\n }\n return false;\n}\n","'use strict';\n\nvar isExtendable = require('is-extendable');\nvar forIn = require('for-in');\n\nfunction mixinDeep(target, objects) {\n var len = arguments.length, i = 0;\n while (++i < len) {\n var obj = arguments[i];\n if (isObject(obj)) {\n forIn(obj, copy, target);\n }\n }\n return target;\n}\n\n/**\n * Copy properties from the source object to the\n * target object.\n *\n * @param {*} `val`\n * @param {String} `key`\n */\n\nfunction copy(val, key) {\n if (!isValidKey(key)) {\n return;\n }\n\n var obj = this[key];\n if (isObject(val) && isObject(obj)) {\n mixinDeep(obj, val);\n } else {\n this[key] = val;\n }\n}\n\n/**\n * Returns true if `val` is an object or function.\n *\n * @param {any} val\n * @return {Boolean}\n */\n\nfunction isObject(val) {\n return isExtendable(val) && !Array.isArray(val);\n}\n\n/**\n * Returns true if `key` is a valid key to use when extending objects.\n *\n * @param {String} `key`\n * @return {Boolean}\n */\n\nfunction isValidKey(key) {\n return key !== '__proto__' && key !== 'constructor' && key !== 'prototype';\n};\n\n/**\n * Expose `mixinDeep`\n */\n\nmodule.exports = mixinDeep;\n","/*!\n * is-extendable <https://github.com/jonschlinkert/is-extendable>\n *\n * Copyright (c) 2015-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isPlainObject = require('is-plain-object');\n\nmodule.exports = function isExtendable(val) {\n return isPlainObject(val) || typeof val === 'function' || Array.isArray(val);\n};\n","'use strict';\n\n/**\n * Module dependencies\n */\n\nvar util = require('util');\nvar toRegex = require('to-regex');\nvar extend = require('extend-shallow');\n\n/**\n * Local dependencies\n */\n\nvar compilers = require('./lib/compilers');\nvar parsers = require('./lib/parsers');\nvar cache = require('./lib/cache');\nvar utils = require('./lib/utils');\nvar MAX_LENGTH = 1024 * 64;\n\n/**\n * The main function takes a list of strings and one or more\n * glob patterns to use for matching.\n *\n * ```js\n * var nm = require('nanomatch');\n * nm(list, patterns[, options]);\n *\n * console.log(nm(['a.js', 'a.txt'], ['*.js']));\n * //=> [ 'a.js' ]\n * ```\n * @param {Array} `list` A list of strings to match\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 {Array} Returns an array of matches\n * @summary false\n * @api public\n */\n\nfunction nanomatch(list, patterns, options) {\n patterns = utils.arrayify(patterns);\n list = utils.arrayify(list);\n\n var len = patterns.length;\n if (list.length === 0 || len === 0) {\n return [];\n }\n\n if (len === 1) {\n return nanomatch.match(list, patterns[0], options);\n }\n\n var negated = false;\n var omit = [];\n var keep = [];\n var idx = -1;\n\n while (++idx < len) {\n var pattern = patterns[idx];\n\n if (typeof pattern === 'string' && pattern.charCodeAt(0) === 33 /* ! */) {\n omit.push.apply(omit, nanomatch.match(list, pattern.slice(1), options));\n negated = true;\n } else {\n keep.push.apply(keep, nanomatch.match(list, pattern, options));\n }\n }\n\n // minimatch.match parity\n if (negated && keep.length === 0) {\n if (options && options.unixify === false) {\n keep = list.slice();\n } else {\n var unixify = utils.unixify(options);\n for (var i = 0; i < list.length; i++) {\n keep.push(unixify(list[i]));\n }\n }\n }\n\n var matches = utils.diff(keep, omit);\n if (!options || options.nodupes !== false) {\n return utils.unique(matches);\n }\n\n return matches;\n}\n\n/**\n * Similar to the main function, but `pattern` must be a string.\n *\n * ```js\n * var nm = require('nanomatch');\n * nm.match(list, pattern[, options]);\n *\n * console.log(nm.match(['a.a', 'a.aa', 'a.b', 'a.c'], '*.a'));\n * //=> ['a.a', 'a.aa']\n * ```\n * @param {Array} `list` Array of strings to match\n * @param {String} `pattern` 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 matches\n * @api public\n */\n\nnanomatch.match = function(list, pattern, options) {\n if (Array.isArray(pattern)) {\n throw new TypeError('expected pattern to be a string');\n }\n\n var unixify = utils.unixify(options);\n var isMatch = memoize('match', pattern, options, nanomatch.matcher);\n var matches = [];\n\n list = utils.arrayify(list);\n var len = list.length;\n var idx = -1;\n\n while (++idx < len) {\n var ele = list[idx];\n if (ele === pattern || isMatch(ele)) {\n matches.push(utils.value(ele, unixify, options));\n }\n }\n\n // if no options were passed, uniquify results and return\n if (typeof options === 'undefined') {\n return utils.unique(matches);\n }\n\n if (matches.length === 0) {\n if (options.failglob === true) {\n throw new Error('no matches found for \"' + pattern + '\"');\n }\n if (options.nonull === true || options.nullglob === true) {\n return [options.unescape ? utils.unescape(pattern) : pattern];\n }\n }\n\n // if `opts.ignore` was defined, diff ignored list\n if (options.ignore) {\n matches = nanomatch.not(matches, options.ignore, options);\n }\n\n return options.nodupes !== false ? utils.unique(matches) : matches;\n};\n\n/**\n * Returns true if the specified `string` matches the given glob `pattern`.\n *\n * ```js\n * var nm = require('nanomatch');\n * nm.isMatch(string, pattern[, options]);\n *\n * console.log(nm.isMatch('a.a', '*.a'));\n * //=> true\n * console.log(nm.isMatch('a.b', '*.a'));\n * //=> false\n * ```\n * @param {String} `string` String to match\n * @param {String} `pattern` 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 string matches the glob pattern.\n * @api public\n */\n\nnanomatch.isMatch = function(str, pattern, options) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string: \"' + util.inspect(str) + '\"');\n }\n\n if (utils.isEmptyString(str) || utils.isEmptyString(pattern)) {\n return false;\n }\n\n var equals = utils.equalsPattern(options);\n if (equals(str)) {\n return true;\n }\n\n var isMatch = memoize('isMatch', pattern, options, nanomatch.matcher);\n return isMatch(str);\n};\n\n/**\n * Returns true if some of the elements in the given `list` match any of the\n * given glob `patterns`.\n *\n * ```js\n * var nm = require('nanomatch');\n * nm.some(list, patterns[, options]);\n *\n * console.log(nm.some(['foo.js', 'bar.js'], ['*.js', '!foo.js']));\n * // true\n * console.log(nm.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\nnanomatch.some = function(list, patterns, options) {\n if (typeof list === 'string') {\n list = [list];\n }\n\n for (var i = 0; i < list.length; i++) {\n if (nanomatch(list[i], patterns, options).length === 1) {\n return true;\n }\n }\n\n return false;\n};\n\n/**\n * Returns true if every element in the given `list` matches\n * at least one of the given glob `patterns`.\n *\n * ```js\n * var nm = require('nanomatch');\n * nm.every(list, patterns[, options]);\n *\n * console.log(nm.every('foo.js', ['foo.js']));\n * // true\n * console.log(nm.every(['foo.js', 'bar.js'], ['*.js']));\n * // true\n * console.log(nm.every(['foo.js', 'bar.js'], ['*.js', '!foo.js']));\n * // false\n * console.log(nm.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\nnanomatch.every = function(list, patterns, options) {\n if (typeof list === 'string') {\n list = [list];\n }\n\n for (var i = 0; i < list.length; i++) {\n if (nanomatch(list[i], patterns, options).length !== 1) {\n return false;\n }\n }\n\n return true;\n};\n\n/**\n * Returns true if **any** of the given glob `patterns`\n * match the specified `string`.\n *\n * ```js\n * var nm = require('nanomatch');\n * nm.any(string, patterns[, options]);\n *\n * console.log(nm.any('a.a', ['b.*', '*.a']));\n * //=> true\n * console.log(nm.any('a.a', 'b.*'));\n * //=> 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) for changing how matches are performed\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nnanomatch.any = function(str, patterns, options) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string: \"' + util.inspect(str) + '\"');\n }\n\n if (utils.isEmptyString(str) || utils.isEmptyString(patterns)) {\n return false;\n }\n\n if (typeof patterns === 'string') {\n patterns = [patterns];\n }\n\n for (var i = 0; i < patterns.length; i++) {\n if (nanomatch.isMatch(str, patterns[i], options)) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * Returns true if **all** of the given `patterns`\n * match the specified string.\n *\n * ```js\n * var nm = require('nanomatch');\n * nm.all(string, patterns[, options]);\n *\n * console.log(nm.all('foo.js', ['foo.js']));\n * // true\n *\n * console.log(nm.all('foo.js', ['*.js', '!foo.js']));\n * // false\n *\n * console.log(nm.all('foo.js', ['*.js', 'foo.js']));\n * // true\n *\n * console.log(nm.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\nnanomatch.all = function(str, patterns, options) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string: \"' + util.inspect(str) + '\"');\n }\n\n if (typeof patterns === 'string') {\n patterns = [patterns];\n }\n\n for (var i = 0; i < patterns.length; i++) {\n if (!nanomatch.isMatch(str, patterns[i], options)) {\n return false;\n }\n }\n return true;\n};\n\n/**\n * Returns a list of strings that _**do not match any**_ of the given `patterns`.\n *\n * ```js\n * var nm = require('nanomatch');\n * nm.not(list, patterns[, options]);\n *\n * console.log(nm.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\nnanomatch.not = function(list, patterns, options) {\n var opts = extend({}, options);\n var ignore = opts.ignore;\n delete opts.ignore;\n\n list = utils.arrayify(list);\n\n var matches = utils.diff(list, nanomatch(list, patterns, opts));\n if (ignore) {\n matches = utils.diff(matches, nanomatch(list, ignore));\n }\n\n return opts.nodupes !== false ? utils.unique(matches) : matches;\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 nm = require('nanomatch');\n * nm.contains(string, pattern[, options]);\n *\n * console.log(nm.contains('aa/bb/cc', '*b'));\n * //=> true\n * console.log(nm.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\nnanomatch.contains = function(str, patterns, options) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string: \"' + util.inspect(str) + '\"');\n }\n\n if (typeof patterns === 'string') {\n if (utils.isEmptyString(str) || utils.isEmptyString(patterns)) {\n return false;\n }\n\n var equals = utils.equalsPattern(patterns, options);\n if (equals(str)) {\n return true;\n }\n var contains = utils.containsPattern(patterns, options);\n if (contains(str)) {\n return true;\n }\n }\n\n var opts = extend({}, options, {contains: true});\n return nanomatch.any(str, patterns, opts);\n};\n\n/**\n * Returns true if the given pattern and options should enable\n * the `matchBase` option.\n * @return {Boolean}\n * @api private\n */\n\nnanomatch.matchBase = function(pattern, options) {\n if (pattern && pattern.indexOf('/') !== -1 || !options) return false;\n return options.basename === true || options.matchBase === 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 * var nm = require('nanomatch');\n * nm.matchKeys(object, patterns[, options]);\n *\n * var obj = { aa: 'a', ab: 'b', ac: 'c' };\n * console.log(nm.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\nnanomatch.matchKeys = function(obj, patterns, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('expected the first argument to be an object');\n }\n var keys = nanomatch(Object.keys(obj), patterns, options);\n return utils.pick(obj, keys);\n};\n\n/**\n * Returns a memoized 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 * var nm = require('nanomatch');\n * nm.matcher(pattern[, options]);\n *\n * var isMatch = nm.matcher('*.!(*a)');\n * console.log(isMatch('a.a'));\n * //=> false\n * console.log(isMatch('a.b'));\n * //=> true\n * ```\n * @param {String} `pattern` Glob pattern\n * @param {Object} `options` See available [options](#options) for changing how matches are performed.\n * @return {Function} Returns a matcher function.\n * @api public\n */\n\nnanomatch.matcher = function matcher(pattern, options) {\n if (utils.isEmptyString(pattern)) {\n return function() {\n return false;\n };\n }\n\n if (Array.isArray(pattern)) {\n return compose(pattern, options, matcher);\n }\n\n // if pattern is a regex\n if (pattern instanceof RegExp) {\n return test(pattern);\n }\n\n // if pattern is invalid\n if (!utils.isString(pattern)) {\n throw new TypeError('expected pattern to be an array, string or regex');\n }\n\n // if pattern is a non-glob string\n if (!utils.hasSpecialChars(pattern)) {\n if (options && options.nocase === true) {\n pattern = pattern.toLowerCase();\n }\n return utils.matchPath(pattern, options);\n }\n\n // if pattern is a glob string\n var re = nanomatch.makeRe(pattern, options);\n\n // if `options.matchBase` or `options.basename` is defined\n if (nanomatch.matchBase(pattern, options)) {\n return utils.matchBasename(re, options);\n }\n\n function test(regex) {\n var equals = utils.equalsPattern(options);\n var unixify = utils.unixify(options);\n\n return function(str) {\n if (equals(str)) {\n return true;\n }\n\n if (regex.test(unixify(str))) {\n return true;\n }\n return false;\n };\n }\n\n // create matcher function\n var matcherFn = test(re);\n // set result object from compiler on matcher function,\n // as a non-enumerable property. useful for debugging\n utils.define(matcherFn, 'result', re.result);\n return matcherFn;\n};\n\n/**\n * Returns an array of matches captured by `pattern` in `string, or\n * `null` if the pattern did not match.\n *\n * ```js\n * var nm = require('nanomatch');\n * nm.capture(pattern, string[, options]);\n *\n * console.log(nm.capture('test/*.js', 'test/foo.js'));\n * //=> ['foo']\n * console.log(nm.capture('test/*.js', 'foo/bar.css'));\n * //=> null\n * ```\n * @param {String} `pattern` Glob pattern to use for matching.\n * @param {String} `string` 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 string matches the glob pattern, otherwise `null`.\n * @api public\n */\n\nnanomatch.capture = function(pattern, str, options) {\n var re = nanomatch.makeRe(pattern, extend({capture: true}, options));\n var unixify = utils.unixify(options);\n\n function match() {\n return function(string) {\n var match = re.exec(unixify(string));\n if (!match) {\n return null;\n }\n\n return match.slice(1);\n };\n }\n\n var capture = memoize('capture', pattern, options, match);\n return capture(str);\n};\n\n/**\n * Create a regular expression from the given glob `pattern`.\n *\n * ```js\n * var nm = require('nanomatch');\n * nm.makeRe(pattern[, options]);\n *\n * console.log(nm.makeRe('*.js'));\n * //=> /^(?:(\\.[\\\\\\/])?(?!\\.)(?=.)[^\\/]*?\\.js)$/\n * ```\n * @param {String} `pattern` A glob pattern to convert to regex.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed.\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\nnanomatch.makeRe = function(pattern, options) {\n if (pattern instanceof RegExp) {\n return pattern;\n }\n\n if (typeof pattern !== 'string') {\n throw new TypeError('expected pattern to be a string');\n }\n\n if (pattern.length > MAX_LENGTH) {\n throw new Error('expected pattern to be less than ' + MAX_LENGTH + ' characters');\n }\n\n function makeRe() {\n var opts = utils.extend({wrap: false}, options);\n var result = nanomatch.create(pattern, opts);\n var regex = toRegex(result.output, opts);\n utils.define(regex, 'result', result);\n return regex;\n }\n\n return memoize('makeRe', pattern, options, makeRe);\n};\n\n/**\n * Parses the given glob `pattern` and returns an object with the compiled `output`\n * and optional source `map`.\n *\n * ```js\n * var nm = require('nanomatch');\n * nm.create(pattern[, options]);\n *\n * console.log(nm.create('abc/*.js'));\n * // { options: { source: 'string', sourcemap: true },\n * // state: {},\n * // compilers:\n * // { ... },\n * // output: '(\\\\.[\\\\\\\\\\\\/])?abc\\\\/(?!\\\\.)(?=.)[^\\\\/]*?\\\\.js',\n * // ast:\n * // { type: 'root',\n * // errors: [],\n * // nodes:\n * // [ ... ],\n * // dot: false,\n * // input: 'abc/*.js' },\n * // parsingErrors: [],\n * // map:\n * // { version: 3,\n * // sources: [ 'string' ],\n * // names: [],\n * // mappings: 'AAAA,GAAG,EAAC,kBAAC,EAAC,EAAE',\n * // sourcesContent: [ 'abc/*.js' ] },\n * // position: { line: 1, column: 28 },\n * // content: {},\n * // files: {},\n * // idx: 6 }\n * ```\n * @param {String} `pattern` Glob pattern to parse and compile.\n * @param {Object} `options` Any [options](#options) to change how parsing and compiling is performed.\n * @return {Object} Returns an object with the parsed AST, compiled string and optional source map.\n * @api public\n */\n\nnanomatch.create = function(pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('expected a string');\n }\n function create() {\n return nanomatch.compile(nanomatch.parse(pattern, options), options);\n }\n return memoize('create', pattern, options, create);\n};\n\n/**\n * Parse the given `str` with the given `options`.\n *\n * ```js\n * var nm = require('nanomatch');\n * nm.parse(pattern[, options]);\n *\n * var ast = nm.parse('a/{b,c}/d');\n * console.log(ast);\n * // { type: 'root',\n * // errors: [],\n * // input: 'a/{b,c}/d',\n * // nodes:\n * // [ { type: 'bos', val: '' },\n * // { type: 'text', val: 'a/' },\n * // { type: 'brace',\n * // nodes:\n * // [ { type: 'brace.open', val: '{' },\n * // { type: 'text', val: 'b,c' },\n * // { type: 'brace.close', val: '}' } ] },\n * // { type: 'text', val: '/d' },\n * // { type: 'eos', val: '' } ] }\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {Object} Returns an AST\n * @api public\n */\n\nnanomatch.parse = function(pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('expected a string');\n }\n\n function parse() {\n var snapdragon = utils.instantiate(null, options);\n parsers(snapdragon, options);\n\n var ast = snapdragon.parse(pattern, options);\n utils.define(ast, 'snapdragon', snapdragon);\n ast.input = pattern;\n return ast;\n }\n\n return memoize('parse', pattern, options, parse);\n};\n\n/**\n * Compile the given `ast` or string with the given `options`.\n *\n * ```js\n * var nm = require('nanomatch');\n * nm.compile(ast[, options]);\n *\n * var ast = nm.parse('a/{b,c}/d');\n * console.log(nm.compile(ast));\n * // { options: { source: 'string' },\n * // state: {},\n * // compilers:\n * // { eos: [Function],\n * // noop: [Function],\n * // bos: [Function],\n * // brace: [Function],\n * // 'brace.open': [Function],\n * // text: [Function],\n * // 'brace.close': [Function] },\n * // output: [ 'a/(b|c)/d' ],\n * // ast:\n * // { ... },\n * // parsingErrors: [] }\n * ```\n * @param {Object|String} `ast`\n * @param {Object} `options`\n * @return {Object} Returns an object that has an `output` property with the compiled string.\n * @api public\n */\n\nnanomatch.compile = function(ast, options) {\n if (typeof ast === 'string') {\n ast = nanomatch.parse(ast, options);\n }\n\n function compile() {\n var snapdragon = utils.instantiate(ast, options);\n compilers(snapdragon, options);\n return snapdragon.compile(ast, options);\n }\n\n return memoize('compile', ast.input, options, compile);\n};\n\n/**\n * Clear the regex cache.\n *\n * ```js\n * nm.clearCache();\n * ```\n * @api public\n */\n\nnanomatch.clearCache = function() {\n nanomatch.cache.__data__ = {};\n};\n\n/**\n * Compose a matcher function with the given patterns.\n * This allows matcher functions to be compiled once and\n * called multiple times.\n */\n\nfunction compose(patterns, options, matcher) {\n var matchers;\n\n return memoize('compose', String(patterns), options, function() {\n return function(file) {\n // delay composition until it's invoked the first time,\n // after that it won't be called again\n if (!matchers) {\n matchers = [];\n for (var i = 0; i < patterns.length; i++) {\n matchers.push(matcher(patterns[i], options));\n }\n }\n\n var len = matchers.length;\n while (len--) {\n if (matchers[len](file) === true) {\n return true;\n }\n }\n return false;\n };\n });\n}\n\n/**\n * Memoize a generated regex or function. A unique key is generated\n * from the `type` (usually method name), the `pattern`, and\n * user-defined options.\n */\n\nfunction memoize(type, pattern, options, fn) {\n var key = utils.createKey(type + '=' + pattern, options);\n\n if (options && options.cache === false) {\n return fn(pattern, options);\n }\n\n if (cache.has(type, key)) {\n return cache.get(type, key);\n }\n\n var val = fn(pattern, options);\n cache.set(type, key, val);\n return val;\n}\n\n/**\n * Expose compiler, parser and cache on `nanomatch`\n */\n\nnanomatch.compilers = compilers;\nnanomatch.parsers = parsers;\nnanomatch.cache = cache;\n\n/**\n * Expose `nanomatch`\n * @type {Function}\n */\n\nmodule.exports = nanomatch;\n","module.exports = new (require('fragment-cache'))();\n","'use strict';\n\n/**\n* Nanomatch compilers\n*/\n\nmodule.exports = function(nanomatch, options) {\n function slash() {\n if (options && typeof options.slash === 'string') {\n return options.slash;\n }\n if (options && typeof options.slash === 'function') {\n return options.slash.call(nanomatch);\n }\n return '\\\\\\\\/';\n }\n\n function star() {\n if (options && typeof options.star === 'string') {\n return options.star;\n }\n if (options && typeof options.star === 'function') {\n return options.star.call(nanomatch);\n }\n return '[^' + slash() + ']*?';\n }\n\n var ast = nanomatch.ast = nanomatch.parser.ast;\n ast.state = nanomatch.parser.state;\n nanomatch.compiler.state = ast.state;\n nanomatch.compiler\n\n /**\n * Negation / escaping\n */\n\n .set('not', function(node) {\n var prev = this.prev();\n if (this.options.nonegate === true || prev.type !== 'bos') {\n return this.emit('\\\\' + node.val, node);\n }\n return this.emit(node.val, node);\n })\n .set('escape', function(node) {\n if (this.options.unescape && /^[-\\w_.]/.test(node.val)) {\n return this.emit(node.val, node);\n }\n return this.emit('\\\\' + node.val, node);\n })\n .set('quoted', function(node) {\n return this.emit(node.val, node);\n })\n\n /**\n * Regex\n */\n\n .set('dollar', function(node) {\n if (node.parent.type === 'bracket') {\n return this.emit(node.val, node);\n }\n return this.emit('\\\\' + node.val, node);\n })\n\n /**\n * Dot: \".\"\n */\n\n .set('dot', function(node) {\n if (node.dotfiles === true) this.dotfiles = true;\n return this.emit('\\\\' + node.val, node);\n })\n\n /**\n * Slashes: \"/\" and \"\\\"\n */\n\n .set('backslash', function(node) {\n return this.emit(node.val, node);\n })\n .set('slash', function(node, nodes, i) {\n var val = '[' + slash() + ']';\n var parent = node.parent;\n var prev = this.prev();\n\n // set \"node.hasSlash\" to true on all ancestor parens nodes\n while (parent.type === 'paren' && !parent.hasSlash) {\n parent.hasSlash = true;\n parent = parent.parent;\n }\n\n if (prev.addQmark) {\n val += '?';\n }\n\n // word boundary\n if (node.rest.slice(0, 2) === '\\\\b') {\n return this.emit(val, node);\n }\n\n // globstars\n if (node.parsed === '**' || node.parsed === './**') {\n this.output = '(?:' + this.output;\n return this.emit(val + ')?', node);\n }\n\n // negation\n if (node.parsed === '!**' && this.options.nonegate !== true) {\n return this.emit(val + '?\\\\b', node);\n }\n return this.emit(val, node);\n })\n\n /**\n * Square brackets\n */\n\n .set('bracket', function(node) {\n var close = node.close;\n var open = !node.escaped ? '[' : '\\\\[';\n var negated = node.negated;\n var inner = node.inner;\n var val = node.val;\n\n if (node.escaped === true) {\n inner = inner.replace(/\\\\?(\\W)/g, '\\\\$1');\n negated = '';\n }\n\n if (inner === ']-') {\n inner = '\\\\]\\\\-';\n }\n\n if (negated && inner.indexOf('.') === -1) {\n inner += '.';\n }\n if (negated && inner.indexOf('/') === -1) {\n inner += '/';\n }\n\n val = open + negated + inner + close;\n return this.emit(val, node);\n })\n\n /**\n * Square: \"[.]\" (only matches a single character in brackets)\n */\n\n .set('square', function(node) {\n var val = (/^\\W/.test(node.val) ? '\\\\' : '') + node.val;\n return this.emit(val, node);\n })\n\n /**\n * Question mark: \"?\"\n */\n\n .set('qmark', function(node) {\n var prev = this.prev();\n // don't use \"slash\" variable so that we always avoid\n // matching backslashes and slashes with a qmark\n var val = '[^.\\\\\\\\/]';\n if (this.options.dot || (prev.type !== 'bos' && prev.type !== 'slash')) {\n val = '[^\\\\\\\\/]';\n }\n\n if (node.parsed.slice(-1) === '(') {\n var ch = node.rest.charAt(0);\n if (ch === '!' || ch === '=' || ch === ':') {\n return this.emit(node.val, node);\n }\n }\n\n if (node.val.length > 1) {\n val += '{' + node.val.length + '}';\n }\n return this.emit(val, node);\n })\n\n /**\n * Plus\n */\n\n .set('plus', function(node) {\n var prev = node.parsed.slice(-1);\n if (prev === ']' || prev === ')') {\n return this.emit(node.val, node);\n }\n if (!this.output || (/[?*+]/.test(ch) && node.parent.type !== 'bracket')) {\n return this.emit('\\\\+', node);\n }\n var ch = this.output.slice(-1);\n if (/\\w/.test(ch) && !node.inside) {\n return this.emit('+\\\\+?', node);\n }\n return this.emit('+', node);\n })\n\n /**\n * globstar: '**'\n */\n\n .set('globstar', function(node, nodes, i) {\n if (!this.output) {\n this.state.leadingGlobstar = true;\n }\n\n var prev = this.prev();\n var before = this.prev(2);\n var next = this.next();\n var after = this.next(2);\n var type = prev.type;\n var val = node.val;\n\n if (prev.type === 'slash' && next.type === 'slash') {\n if (before.type === 'text') {\n this.output += '?';\n\n if (after.type !== 'text') {\n this.output += '\\\\b';\n }\n }\n }\n\n var parsed = node.parsed;\n if (parsed.charAt(0) === '!') {\n parsed = parsed.slice(1);\n }\n\n var isInside = node.isInside.paren || node.isInside.brace;\n if (parsed && type !== 'slash' && type !== 'bos' && !isInside) {\n val = star();\n } else {\n val = this.options.dot !== true\n ? '(?:(?!(?:[' + slash() + ']|^)\\\\.).)*?'\n : '(?:(?!(?:[' + slash() + ']|^)(?:\\\\.{1,2})($|[' + slash() + ']))(?!\\\\.{2}).)*?';\n }\n\n if ((type === 'slash' || type === 'bos') && this.options.dot !== true) {\n val = '(?!\\\\.)' + val;\n }\n\n if (prev.type === 'slash' && next.type === 'slash' && before.type !== 'text') {\n if (after.type === 'text' || after.type === 'star') {\n node.addQmark = true;\n }\n }\n\n if (this.options.capture) {\n val = '(' + val + ')';\n }\n\n return this.emit(val, node);\n })\n\n /**\n * Star: \"*\"\n */\n\n .set('star', function(node, nodes, i) {\n var prior = nodes[i - 2] || {};\n var prev = this.prev();\n var next = this.next();\n var type = prev.type;\n\n function isStart(n) {\n return n.type === 'bos' || n.type === 'slash';\n }\n\n if (this.output === '' && this.options.contains !== true) {\n this.output = '(?![' + slash() + '])';\n }\n\n if (type === 'bracket' && this.options.bash === false) {\n var str = next && next.type === 'bracket' ? star() : '*?';\n if (!prev.nodes || prev.nodes[1].type !== 'posix') {\n return this.emit(str, node);\n }\n }\n\n var prefix = !this.dotfiles && type !== 'text' && type !== 'escape'\n ? (this.options.dot ? '(?!(?:^|[' + slash() + '])\\\\.{1,2}(?:$|[' + slash() + ']))' : '(?!\\\\.)')\n : '';\n\n if (isStart(prev) || (isStart(prior) && type === 'not')) {\n if (prefix !== '(?!\\\\.)') {\n prefix += '(?!(\\\\.{2}|\\\\.[' + slash() + ']))(?=.)';\n } else {\n prefix += '(?=.)';\n }\n } else if (prefix === '(?!\\\\.)') {\n prefix = '';\n }\n\n if (prev.type === 'not' && prior.type === 'bos' && this.options.dot === true) {\n this.output = '(?!\\\\.)' + this.output;\n }\n\n var output = prefix + star();\n if (this.options.capture) {\n output = '(' + output + ')';\n }\n\n return this.emit(output, node);\n })\n\n /**\n * Text\n */\n\n .set('text', function(node) {\n return this.emit(node.val, node);\n })\n\n /**\n * End-of-string\n */\n\n .set('eos', function(node) {\n var prev = this.prev();\n var val = node.val;\n\n this.output = '(?:\\\\.[' + slash() + '](?=.))?' + this.output;\n if (this.state.metachar && prev.type !== 'qmark' && prev.type !== 'slash') {\n val += (this.options.contains ? '[' + slash() + ']?' : '(?:[' + slash() + ']|$)');\n }\n\n return this.emit(val, node);\n });\n\n /**\n * Allow custom compilers to be passed on options\n */\n\n if (options && typeof options.compilers === 'function') {\n options.compilers(nanomatch.compiler);\n }\n};\n\n","'use strict';\n\nvar regexNot = require('regex-not');\nvar toRegex = require('to-regex');\n\n/**\n * Characters to use in negation regex (we want to \"not\" match\n * characters that are matched by other parsers)\n */\n\nvar cached;\nvar NOT_REGEX = '[\\\\[!*+?$^\"\\'.\\\\\\\\/]+';\nvar not = createTextRegex(NOT_REGEX);\n\n/**\n * Nanomatch parsers\n */\n\nmodule.exports = function(nanomatch, options) {\n var parser = nanomatch.parser;\n var opts = parser.options;\n\n parser.state = {\n slashes: 0,\n paths: []\n };\n\n parser.ast.state = parser.state;\n parser\n\n /**\n * Beginning-of-string\n */\n\n .capture('prefix', function() {\n if (this.parsed) return;\n var m = this.match(/^\\.[\\\\/]/);\n if (!m) return;\n this.state.strictOpen = !!this.options.strictOpen;\n this.state.addPrefix = true;\n })\n\n /**\n * Escape: \"\\\\.\"\n */\n\n .capture('escape', function() {\n if (this.isInside('bracket')) return;\n var pos = this.position();\n var m = this.match(/^(?:\\\\(.)|([$^]))/);\n if (!m) return;\n\n return pos({\n type: 'escape',\n val: m[2] || m[1]\n });\n })\n\n /**\n * Quoted strings\n */\n\n .capture('quoted', function() {\n var pos = this.position();\n var m = this.match(/^[\"']/);\n if (!m) return;\n\n var quote = m[0];\n if (this.input.indexOf(quote) === -1) {\n return pos({\n type: 'escape',\n val: quote\n });\n }\n\n var tok = advanceTo(this.input, quote);\n this.consume(tok.len);\n\n return pos({\n type: 'quoted',\n val: tok.esc\n });\n })\n\n /**\n * Negations: \"!\"\n */\n\n .capture('not', function() {\n var parsed = this.parsed;\n var pos = this.position();\n var m = this.match(this.notRegex || /^!+/);\n if (!m) return;\n var val = m[0];\n\n var isNegated = (val.length % 2) === 1;\n if (parsed === '' && !isNegated) {\n val = '';\n }\n\n // if nothing has been parsed, we know `!` is at the start,\n // so we need to wrap the result in a negation regex\n if (parsed === '' && isNegated && this.options.nonegate !== true) {\n this.bos.val = '(?!^(?:';\n this.append = ')$).*';\n val = '';\n }\n return pos({\n type: 'not',\n val: val\n });\n })\n\n /**\n * Dot: \".\"\n */\n\n .capture('dot', function() {\n var parsed = this.parsed;\n var pos = this.position();\n var m = this.match(/^\\.+/);\n if (!m) return;\n\n var val = m[0];\n this.state.dot = val === '.' && (parsed === '' || parsed.slice(-1) === '/');\n\n return pos({\n type: 'dot',\n dotfiles: this.state.dot,\n val: val\n });\n })\n\n /**\n * Plus: \"+\"\n */\n\n .capture('plus', /^\\+(?!\\()/)\n\n /**\n * Question mark: \"?\"\n */\n\n .capture('qmark', function() {\n var parsed = this.parsed;\n var pos = this.position();\n var m = this.match(/^\\?+(?!\\()/);\n if (!m) return;\n\n this.state.metachar = true;\n this.state.qmark = true;\n\n return pos({\n type: 'qmark',\n parsed: parsed,\n val: m[0]\n });\n })\n\n /**\n * Globstar: \"**\"\n */\n\n .capture('globstar', function() {\n var parsed = this.parsed;\n var pos = this.position();\n var m = this.match(/^\\*{2}(?![*(])(?=[,)/]|$)/);\n if (!m) return;\n\n var type = opts.noglobstar !== true ? 'globstar' : 'star';\n var node = pos({type: type, parsed: parsed});\n this.state.metachar = true;\n\n while (this.input.slice(0, 4) === '/**/') {\n this.input = this.input.slice(3);\n }\n\n node.isInside = {\n brace: this.isInside('brace'),\n paren: this.isInside('paren')\n };\n\n if (type === 'globstar') {\n this.state.globstar = true;\n node.val = '**';\n\n } else {\n this.state.star = true;\n node.val = '*';\n }\n\n return node;\n })\n\n /**\n * Star: \"*\"\n */\n\n .capture('star', function() {\n var pos = this.position();\n var starRe = /^(?:\\*(?![*(])|[*]{3,}(?!\\()|[*]{2}(?![(/]|$)|\\*(?=\\*\\())/;\n var m = this.match(starRe);\n if (!m) return;\n\n this.state.metachar = true;\n this.state.star = true;\n return pos({\n type: 'star',\n val: m[0]\n });\n })\n\n /**\n * Slash: \"/\"\n */\n\n .capture('slash', function() {\n var pos = this.position();\n var m = this.match(/^\\//);\n if (!m) return;\n\n this.state.slashes++;\n return pos({\n type: 'slash',\n val: m[0]\n });\n })\n\n /**\n * Backslash: \"\\\\\"\n */\n\n .capture('backslash', function() {\n var pos = this.position();\n var m = this.match(/^\\\\(?![*+?(){}[\\]'\"])/);\n if (!m) return;\n\n var val = m[0];\n\n if (this.isInside('bracket')) {\n val = '\\\\';\n } else if (val.length > 1) {\n val = '\\\\\\\\';\n }\n\n return pos({\n type: 'backslash',\n val: val\n });\n })\n\n /**\n * Square: \"[.]\"\n */\n\n .capture('square', function() {\n if (this.isInside('bracket')) return;\n var pos = this.position();\n var m = this.match(/^\\[([^!^\\\\])\\]/);\n if (!m) return;\n\n return pos({\n type: 'square',\n val: m[1]\n });\n })\n\n /**\n * Brackets: \"[...]\" (basic, this can be overridden by other parsers)\n */\n\n .capture('bracket', function() {\n var pos = this.position();\n var m = this.match(/^(?:\\[([!^]?)([^\\]]+|\\]-)(\\]|[^*+?]+)|\\[)/);\n if (!m) return;\n\n var val = m[0];\n var negated = m[1] ? '^' : '';\n var inner = (m[2] || '').replace(/\\\\\\\\+/, '\\\\\\\\');\n var close = m[3] || '';\n\n if (m[2] && inner.length < m[2].length) {\n val = val.replace(/\\\\\\\\+/, '\\\\\\\\');\n }\n\n var esc = this.input.slice(0, 2);\n if (inner === '' && esc === '\\\\]') {\n inner += esc;\n this.consume(2);\n\n var str = this.input;\n var idx = -1;\n var ch;\n\n while ((ch = str[++idx])) {\n this.consume(1);\n if (ch === ']') {\n close = ch;\n break;\n }\n inner += ch;\n }\n }\n\n return pos({\n type: 'bracket',\n val: val,\n escaped: close !== ']',\n negated: negated,\n inner: inner,\n close: close\n });\n })\n\n /**\n * Text\n */\n\n .capture('text', function() {\n if (this.isInside('bracket')) return;\n var pos = this.position();\n var m = this.match(not);\n if (!m || !m[0]) return;\n\n return pos({\n type: 'text',\n val: m[0]\n });\n });\n\n /**\n * Allow custom parsers to be passed on options\n */\n\n if (options && typeof options.parsers === 'function') {\n options.parsers(nanomatch.parser);\n }\n};\n\n/**\n * Advance to the next non-escaped character\n */\n\nfunction advanceTo(input, endChar) {\n var ch = input.charAt(0);\n var tok = { len: 1, val: '', esc: '' };\n var idx = 0;\n\n function advance() {\n if (ch !== '\\\\') {\n tok.esc += '\\\\' + ch;\n tok.val += ch;\n }\n\n ch = input.charAt(++idx);\n tok.len++;\n\n if (ch === '\\\\') {\n advance();\n advance();\n }\n }\n\n while (ch && ch !== endChar) {\n advance();\n }\n return tok;\n}\n\n/**\n * Create text regex\n */\n\nfunction createTextRegex(pattern) {\n if (cached) return cached;\n var opts = {contains: true, strictClose: false};\n var not = regexNot.create(pattern, opts);\n var re = toRegex('^(?:[*]\\\\((?=.)|' + not + ')', opts);\n return (cached = re);\n}\n\n/**\n * Expose negation string\n */\n\nmodule.exports.not = NOT_REGEX;\n","'use strict';\n\nvar utils = module.exports;\nvar path = require('path');\n\n/**\n * Module dependencies\n */\n\nvar isWindows = require('is-windows')();\nvar Snapdragon = require('snapdragon');\nutils.define = require('define-property');\nutils.diff = require('arr-diff');\nutils.extend = require('extend-shallow');\nutils.pick = require('object.pick');\nutils.typeOf = require('kind-of');\nutils.unique = require('array-unique');\n\n/**\n * Returns true if the given value is effectively an empty string\n */\n\nutils.isEmptyString = function(val) {\n return String(val) === '' || String(val) === './';\n};\n\n/**\n * Returns true if the platform is windows, or `path.sep` is `\\\\`.\n * This is defined as a function to allow `path.sep` to be set in unit tests,\n * or by the user, if there is a reason to do so.\n * @return {Boolean}\n */\n\nutils.isWindows = function() {\n return path.sep === '\\\\' || isWindows === true;\n};\n\n/**\n * Return the last element from an array\n */\n\nutils.last = function(arr, n) {\n return arr[arr.length - (n || 1)];\n};\n\n/**\n * Get the `Snapdragon` instance to use\n */\n\nutils.instantiate = function(ast, options) {\n var snapdragon;\n // if an instance was created by `.parse`, use that instance\n if (utils.typeOf(ast) === 'object' && ast.snapdragon) {\n snapdragon = ast.snapdragon;\n // if the user supplies an instance on options, use that instance\n } else if (utils.typeOf(options) === 'object' && options.snapdragon) {\n snapdragon = options.snapdragon;\n // create a new instance\n } else {\n snapdragon = new Snapdragon(options);\n }\n\n utils.define(snapdragon, 'parse', function(str, options) {\n var parsed = Snapdragon.prototype.parse.call(this, str, options);\n parsed.input = str;\n\n // escape unmatched brace/bracket/parens\n var last = this.parser.stack.pop();\n if (last && this.options.strictErrors !== true) {\n var open = last.nodes[0];\n var inner = last.nodes[1];\n if (last.type === 'bracket') {\n if (inner.val.charAt(0) === '[') {\n inner.val = '\\\\' + inner.val;\n }\n\n } else {\n open.val = '\\\\' + open.val;\n var sibling = open.parent.nodes[1];\n if (sibling.type === 'star') {\n sibling.loose = true;\n }\n }\n }\n\n // add non-enumerable parser reference\n utils.define(parsed, 'parser', this.parser);\n return parsed;\n });\n\n return snapdragon;\n};\n\n/**\n * Create the key to use for memoization. The key is generated\n * by iterating over the options and concatenating key-value pairs\n * to the pattern string.\n */\n\nutils.createKey = function(pattern, options) {\n if (typeof options === 'undefined') {\n return pattern;\n }\n var key = pattern;\n for (var prop in options) {\n if (options.hasOwnProperty(prop)) {\n key += ';' + prop + '=' + String(options[prop]);\n }\n }\n return key;\n};\n\n/**\n * Cast `val` to an array\n * @return {Array}\n */\n\nutils.arrayify = function(val) {\n if (typeof val === 'string') return [val];\n return val ? (Array.isArray(val) ? val : [val]) : [];\n};\n\n/**\n * Return true if `val` is a non-empty string\n */\n\nutils.isString = function(val) {\n return typeof val === 'string';\n};\n\n/**\n * Return true if `val` is a non-empty string\n */\n\nutils.isRegex = function(val) {\n return utils.typeOf(val) === 'regexp';\n};\n\n/**\n * Return true if `val` is a non-empty string\n */\n\nutils.isObject = function(val) {\n return utils.typeOf(val) === 'object';\n};\n\n/**\n * Escape regex characters in the given string\n */\n\nutils.escapeRegex = function(str) {\n return str.replace(/[-[\\]{}()^$|*+?.\\\\/\\s]/g, '\\\\$&');\n};\n\n/**\n * Combines duplicate characters in the provided `input` string.\n * @param {String} `input`\n * @returns {String}\n */\n\nutils.combineDupes = function(input, patterns) {\n patterns = utils.arrayify(patterns).join('|').split('|');\n patterns = patterns.map(function(s) {\n return s.replace(/\\\\?([+*\\\\/])/g, '\\\\$1');\n });\n var substr = patterns.join('|');\n var regex = new RegExp('(' + substr + ')(?=\\\\1)', 'g');\n return input.replace(regex, '');\n};\n\n/**\n * Returns true if the given `str` has special characters\n */\n\nutils.hasSpecialChars = function(str) {\n return /(?:(?:(^|\\/)[!.])|[*?+()|[\\]{}]|[+@]\\()/.test(str);\n};\n\n/**\n * Normalize slashes in the given filepath.\n *\n * @param {String} `filepath`\n * @return {String}\n */\n\nutils.toPosixPath = function(str) {\n return str.replace(/\\\\+/g, '/');\n};\n\n/**\n * Strip backslashes before special characters in a string.\n *\n * @param {String} `str`\n * @return {String}\n */\n\nutils.unescape = function(str) {\n return utils.toPosixPath(str.replace(/\\\\(?=[*+?!.])/g, ''));\n};\n\n/**\n * Strip the drive letter from a windows filepath\n * @param {String} `fp`\n * @return {String}\n */\n\nutils.stripDrive = function(fp) {\n return utils.isWindows() ? fp.replace(/^[a-z]:[\\\\/]+?/i, '/') : fp;\n};\n\n/**\n * Strip the prefix from a filepath\n * @param {String} `fp`\n * @return {String}\n */\n\nutils.stripPrefix = function(str) {\n if (str.charAt(0) === '.' && (str.charAt(1) === '/' || str.charAt(1) === '\\\\')) {\n return str.slice(2);\n }\n return str;\n};\n\n/**\n * Returns true if `str` is a common character that doesn't need\n * to be processed to be used for matching.\n * @param {String} `str`\n * @return {Boolean}\n */\n\nutils.isSimpleChar = function(str) {\n return str.trim() === '' || str === '.';\n};\n\n/**\n * Returns true if the given str is an escaped or\n * unescaped path character\n */\n\nutils.isSlash = function(str) {\n return str === '/' || str === '\\\\/' || str === '\\\\' || str === '\\\\\\\\';\n};\n\n/**\n * Returns a function that returns true if the given\n * pattern matches or contains a `filepath`\n *\n * @param {String} `pattern`\n * @return {Function}\n */\n\nutils.matchPath = function(pattern, options) {\n return (options && options.contains)\n ? utils.containsPattern(pattern, options)\n : utils.equalsPattern(pattern, options);\n};\n\n/**\n * Returns true if the given (original) filepath or unixified path are equal\n * to the given pattern.\n */\n\nutils._equals = function(filepath, unixPath, pattern) {\n return pattern === filepath || pattern === unixPath;\n};\n\n/**\n * Returns true if the given (original) filepath or unixified path contain\n * the given pattern.\n */\n\nutils._contains = function(filepath, unixPath, pattern) {\n return filepath.indexOf(pattern) !== -1 || unixPath.indexOf(pattern) !== -1;\n};\n\n/**\n * Returns a function that returns true if the given\n * pattern is the same as a given `filepath`\n *\n * @param {String} `pattern`\n * @return {Function}\n */\n\nutils.equalsPattern = function(pattern, options) {\n var unixify = utils.unixify(options);\n options = options || {};\n\n return function fn(filepath) {\n var equal = utils._equals(filepath, unixify(filepath), pattern);\n if (equal === true || options.nocase !== true) {\n return equal;\n }\n var lower = filepath.toLowerCase();\n return utils._equals(lower, unixify(lower), pattern);\n };\n};\n\n/**\n * Returns a function that returns true if the given\n * pattern contains a `filepath`\n *\n * @param {String} `pattern`\n * @return {Function}\n */\n\nutils.containsPattern = function(pattern, options) {\n var unixify = utils.unixify(options);\n options = options || {};\n\n return function(filepath) {\n var contains = utils._contains(filepath, unixify(filepath), pattern);\n if (contains === true || options.nocase !== true) {\n return contains;\n }\n var lower = filepath.toLowerCase();\n return utils._contains(lower, unixify(lower), pattern);\n };\n};\n\n/**\n * Returns a function that returns true if the given\n * regex matches the `filename` of a file path.\n *\n * @param {RegExp} `re` Matching regex\n * @return {Function}\n */\n\nutils.matchBasename = function(re) {\n return function(filepath) {\n return re.test(filepath) || re.test(path.basename(filepath));\n };\n};\n\n/**\n * Returns the given value unchanced.\n * @return {any}\n */\n\nutils.identity = function(val) {\n return val;\n};\n\n/**\n * Determines the filepath to return based on the provided options.\n * @return {any}\n */\n\nutils.value = function(str, unixify, options) {\n if (options && options.unixify === false) {\n return str;\n }\n if (options && typeof options.unixify === 'function') {\n return options.unixify(str);\n }\n return unixify(str);\n};\n\n/**\n * Returns a function that normalizes slashes in a string to forward\n * slashes, strips `./` from beginning of paths, and optionally unescapes\n * special characters.\n * @return {Function}\n */\n\nutils.unixify = function(options) {\n var opts = options || {};\n return function(filepath) {\n if (opts.stripPrefix !== false) {\n filepath = utils.stripPrefix(filepath);\n }\n if (opts.unescape === true) {\n filepath = utils.unescape(filepath);\n }\n if (opts.unixify === true || utils.isWindows()) {\n filepath = utils.toPosixPath(filepath);\n }\n return filepath;\n };\n};\n","/*!\n * define-property <https://github.com/jonschlinkert/define-property>\n *\n * Copyright (c) 2015-2018, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isobject = require('isobject');\nvar isDescriptor = require('is-descriptor');\nvar define = (typeof Reflect !== 'undefined' && Reflect.defineProperty)\n ? Reflect.defineProperty\n : Object.defineProperty;\n\nmodule.exports = function defineProperty(obj, key, val) {\n if (!isobject(obj) && typeof obj !== 'function' && !Array.isArray(obj)) {\n throw new TypeError('expected an object, function, or array');\n }\n\n if (typeof key !== 'string') {\n throw new TypeError('expected \"key\" to be a string');\n }\n\n if (isDescriptor(val)) {\n define(obj, key, val);\n return obj;\n }\n\n define(obj, key, {\n configurable: true,\n enumerable: false,\n writable: true,\n value: val\n });\n\n return obj;\n};\n","'use strict';\n\nvar isExtendable = require('is-extendable');\nvar assignSymbols = require('assign-symbols');\n\nmodule.exports = Object.assign || function(obj/*, objects*/) {\n if (obj === null || typeof obj === 'undefined') {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n if (!isObject(obj)) {\n obj = {};\n }\n for (var i = 1; i < arguments.length; i++) {\n var val = arguments[i];\n if (isString(val)) {\n val = toObject(val);\n }\n if (isObject(val)) {\n assign(obj, val);\n assignSymbols(obj, val);\n }\n }\n return obj;\n};\n\nfunction assign(a, b) {\n for (var key in b) {\n if (hasOwn(b, key)) {\n a[key] = b[key];\n }\n }\n}\n\nfunction isString(val) {\n return (val && typeof val === 'string');\n}\n\nfunction toObject(str) {\n var obj = {};\n for (var i in str) {\n obj[i] = str[i];\n }\n return obj;\n}\n\nfunction isObject(val) {\n return (val && typeof val === 'object') || isExtendable(val);\n}\n\n/**\n * Returns true if the given `key` is an own property of `obj`.\n */\n\nfunction hasOwn(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction isEnum(obj, key) {\n return Object.prototype.propertyIsEnumerable.call(obj, key);\n}\n","/*!\n * is-extendable <https://github.com/jonschlinkert/is-extendable>\n *\n * Copyright (c) 2015-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isPlainObject = require('is-plain-object');\n\nmodule.exports = function isExtendable(val) {\n return isPlainObject(val) || typeof val === 'function' || Array.isArray(val);\n};\n","var toString = Object.prototype.toString;\n\nmodule.exports = function kindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n\n var type = typeof val;\n if (type === 'boolean') return 'boolean';\n if (type === 'string') return 'string';\n if (type === 'number') return 'number';\n if (type === 'symbol') return 'symbol';\n if (type === 'function') {\n return isGeneratorFn(val) ? 'generatorfunction' : 'function';\n }\n\n if (isArray(val)) return 'array';\n if (isBuffer(val)) return 'buffer';\n if (isArguments(val)) return 'arguments';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n if (isRegexp(val)) return 'regexp';\n\n switch (ctorName(val)) {\n case 'Symbol': return 'symbol';\n case 'Promise': return 'promise';\n\n // Set, Map, WeakSet, WeakMap\n case 'WeakMap': return 'weakmap';\n case 'WeakSet': return 'weakset';\n case 'Map': return 'map';\n case 'Set': return 'set';\n\n // 8-bit typed arrays\n case 'Int8Array': return 'int8array';\n case 'Uint8Array': return 'uint8array';\n case 'Uint8ClampedArray': return 'uint8clampedarray';\n\n // 16-bit typed arrays\n case 'Int16Array': return 'int16array';\n case 'Uint16Array': return 'uint16array';\n\n // 32-bit typed arrays\n case 'Int32Array': return 'int32array';\n case 'Uint32Array': return 'uint32array';\n case 'Float32Array': return 'float32array';\n case 'Float64Array': return 'float64array';\n }\n\n if (isGeneratorObj(val)) {\n return 'generator';\n }\n\n // Non-plain objects\n type = toString.call(val);\n switch (type) {\n case '[object Object]': return 'object';\n // iterators\n case '[object Map Iterator]': return 'mapiterator';\n case '[object Set Iterator]': return 'setiterator';\n case '[object String Iterator]': return 'stringiterator';\n case '[object Array Iterator]': return 'arrayiterator';\n }\n\n // other\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n};\n\nfunction ctorName(val) {\n return val.constructor ? val.constructor.name : null;\n}\n\nfunction isArray(val) {\n if (Array.isArray) return Array.isArray(val);\n return val instanceof Array;\n}\n\nfunction isError(val) {\n return val instanceof Error || (typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number');\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function'\n && typeof val.getDate === 'function'\n && typeof val.setDate === 'function';\n}\n\nfunction isRegexp(val) {\n if (val instanceof RegExp) return true;\n return typeof val.flags === 'string'\n && typeof val.ignoreCase === 'boolean'\n && typeof val.multiline === 'boolean'\n && typeof val.global === 'boolean';\n}\n\nfunction isGeneratorFn(name, val) {\n return ctorName(name) === 'GeneratorFunction';\n}\n\nfunction isGeneratorObj(val) {\n return typeof val.throw === 'function'\n && typeof val.return === 'function'\n && typeof val.next === 'function';\n}\n\nfunction isArguments(val) {\n try {\n if (typeof val.length === 'number' && typeof val.callee === 'function') {\n return true;\n }\n } catch (err) {\n if (err.message.indexOf('callee') !== -1) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * If you need to support Safari 5-7 (8-10 yr-old browser),\n * take a look at https://github.com/feross/is-buffer\n */\n\nfunction isBuffer(val) {\n if (val.constructor && typeof val.constructor.isBuffer === 'function') {\n return val.constructor.isBuffer(val);\n }\n return false;\n}\n","'use strict';\n\nvar typeOf = require('kind-of');\nvar copyDescriptor = require('copy-descriptor');\nvar define = require('define-property');\n\n/**\n * Copy static properties, prototype properties, and descriptors from one object to another.\n *\n * ```js\n * function App() {}\n * var proto = App.prototype;\n * App.prototype.set = function() {};\n * App.prototype.get = function() {};\n *\n * var obj = {};\n * copy(obj, proto);\n * ```\n * @param {Object} `receiver`\n * @param {Object} `provider`\n * @param {String|Array} `omit` One or more properties to omit\n * @return {Object}\n * @api public\n */\n\nfunction copy(receiver, provider, omit) {\n if (!isObject(receiver)) {\n throw new TypeError('expected receiving object to be an object.');\n }\n if (!isObject(provider)) {\n throw new TypeError('expected providing object to be an object.');\n }\n\n var props = nativeKeys(provider);\n var keys = Object.keys(provider);\n var len = props.length;\n omit = arrayify(omit);\n\n while (len--) {\n var key = props[len];\n\n if (has(keys, key)) {\n define(receiver, key, provider[key]);\n } else if (!(key in receiver) && !has(omit, key)) {\n copyDescriptor(receiver, provider, key);\n }\n }\n};\n\n/**\n * Return true if the given value is an object or function\n */\n\nfunction isObject(val) {\n return typeOf(val) === 'object' || typeof val === 'function';\n}\n\n/**\n * Returns true if an array has any of the given elements, or an\n * object has any of the give keys.\n *\n * ```js\n * has(['a', 'b', 'c'], 'c');\n * //=> true\n *\n * has(['a', 'b', 'c'], ['c', 'z']);\n * //=> true\n *\n * has({a: 'b', c: 'd'}, ['c', 'z']);\n * //=> true\n * ```\n * @param {Object} `obj`\n * @param {String|Array} `val`\n * @return {Boolean}\n */\n\nfunction has(obj, val) {\n val = arrayify(val);\n var len = val.length;\n\n if (isObject(obj)) {\n for (var key in obj) {\n if (val.indexOf(key) > -1) {\n return true;\n }\n }\n\n var keys = nativeKeys(obj);\n return has(keys, val);\n }\n\n if (Array.isArray(obj)) {\n var arr = obj;\n while (len--) {\n if (arr.indexOf(val[len]) > -1) {\n return true;\n }\n }\n return false;\n }\n\n throw new TypeError('expected an array or object.');\n}\n\n/**\n * Cast the given value to an array.\n *\n * ```js\n * arrayify('foo');\n * //=> ['foo']\n *\n * arrayify(['foo']);\n * //=> ['foo']\n * ```\n *\n * @param {String|Array} `val`\n * @return {Array}\n */\n\nfunction arrayify(val) {\n return val ? (Array.isArray(val) ? val : [val]) : [];\n}\n\n/**\n * Returns true if a value has a `contructor`\n *\n * ```js\n * hasConstructor({});\n * //=> true\n *\n * hasConstructor(Object.create(null));\n * //=> false\n * ```\n * @param {Object} `value`\n * @return {Boolean}\n */\n\nfunction hasConstructor(val) {\n return isObject(val) && typeof val.constructor !== 'undefined';\n}\n\n/**\n * Get the native `ownPropertyNames` from the constructor of the\n * given `object`. An empty array is returned if the object does\n * not have a constructor.\n *\n * ```js\n * nativeKeys({a: 'b', b: 'c', c: 'd'})\n * //=> ['a', 'b', 'c']\n *\n * nativeKeys(function(){})\n * //=> ['length', 'caller']\n * ```\n *\n * @param {Object} `obj` Object that has a `constructor`.\n * @return {Array} Array of keys.\n */\n\nfunction nativeKeys(val) {\n if (!hasConstructor(val)) return [];\n return Object.getOwnPropertyNames(val);\n}\n\n/**\n * Expose `copy`\n */\n\nmodule.exports = copy;\n\n/**\n * Expose `copy.has` for tests\n */\n\nmodule.exports.has = has;\n","/*!\n * object-visit <https://github.com/jonschlinkert/object-visit>\n *\n * Copyright (c) 2015, 2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isObject = require('isobject');\n\nmodule.exports = function visit(thisArg, method, target, val) {\n if (!isObject(thisArg) && typeof thisArg !== 'function') {\n throw new Error('object-visit expects `thisArg` to be an object.');\n }\n\n if (typeof method !== 'string') {\n throw new Error('object-visit expects `method` name to be a string');\n }\n\n if (typeof thisArg[method] !== 'function') {\n return thisArg;\n }\n\n var args = [].slice.call(arguments, 3);\n target = target || {};\n\n for (var key in target) {\n var arr = [key, target[key]].concat(args);\n thisArg[method].apply(thisArg, arr);\n }\n return thisArg;\n};\n","/*!\n * object.pick <https://github.com/jonschlinkert/object.pick>\n *\n * Copyright (c) 2014-2015 Jon Schlinkert, contributors.\n * Licensed under the MIT License\n */\n\n'use strict';\n\nvar isObject = require('isobject');\n\nmodule.exports = function pick(obj, keys) {\n if (!isObject(obj) && typeof obj !== 'function') {\n return {};\n }\n\n var res = {};\n if (typeof keys === 'string') {\n if (keys in obj) {\n res[keys] = obj[keys];\n }\n return res;\n }\n\n var len = keys.length;\n var idx = -1;\n\n while (++idx < len) {\n var key = keys[idx];\n if (key in obj) {\n res[key] = obj[key];\n }\n }\n return res;\n};\n","/*!\n * pascalcase <https://github.com/jonschlinkert/pascalcase>\n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nfunction pascalcase(str) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string.');\n }\n str = str.replace(/([A-Z])/g, ' $1');\n if (str.length === 1) { return str.toUpperCase(); }\n str = str.replace(/^[\\W_]+|[\\W_]+$/g, '').toLowerCase();\n str = str.charAt(0).toUpperCase() + str.slice(1);\n return str.replace(/[\\W_]+(\\w|$)/g, function (_, ch) {\n return ch.toUpperCase();\n });\n}\n\nmodule.exports = pascalcase;\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\n/**\n * POSIX character classes\n */\n\nmodule.exports = {\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","// 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.8.6\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\nObject.defineProperty(exports, '__esModule', { value: true });\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;\n\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;\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_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' ||\n // 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 || 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);\n}\n\n/**\n * Forked from fbjs/warning:\n * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js\n *\n * Only change is we use console.warn instead of console.error,\n * and do nothing when 'console' is not supported.\n * This really simplifies the code.\n * ---\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar lowPriorityWarning = function () {};\n\n{\n var printWarning = function (format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.warn(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n lowPriorityWarning = function (condition, format) {\n if (format === undefined) {\n throw new Error('`lowPriorityWarning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nvar lowPriorityWarning$1 = lowPriorityWarning;\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\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 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_PROVIDER_TYPE:\n return $$typeofType;\n default:\n return $$typeof;\n }\n }\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n}\n\n// AsyncMode is deprecated along with isAsyncMode\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;\n\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\n\n// AsyncMode should be deprecated\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true;\n lowPriorityWarning$1(false, '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 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.typeOf = typeOf;\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.isValidElementType = isValidElementType;\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;\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';\n\nvar extend = require('extend-shallow');\nvar safe = require('safe-regex');\n\n/**\n * The main export is a function that takes a `pattern` string and an `options` object.\n *\n * ```js\n & var not = require('regex-not');\n & console.log(not('foo'));\n & //=> /^(?:(?!^(?:foo)$).)*$/\n * ```\n *\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {RegExp} Converts the given `pattern` to a regex using the specified `options`.\n * @api public\n */\n\nfunction toRegex(pattern, options) {\n return new RegExp(toRegex.create(pattern, options));\n}\n\n/**\n * Create a regex-compatible string from the given `pattern` and `options`.\n *\n * ```js\n & var not = require('regex-not');\n & console.log(not.create('foo'));\n & //=> '^(?:(?!^(?:foo)$).)*$'\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {String}\n * @api public\n */\n\ntoRegex.create = function(pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('expected a string');\n }\n\n var opts = extend({}, options);\n if (opts.contains === true) {\n opts.strictNegate = false;\n }\n\n var open = opts.strictOpen !== false ? '^' : '';\n var close = opts.strictClose !== false ? '$' : '';\n var endChar = opts.endChar ? opts.endChar : '+';\n var str = pattern;\n\n if (opts.strictNegate === false) {\n str = '(?:(?!(?:' + pattern + ')).)' + endChar;\n } else {\n str = '(?:(?!^(?:' + pattern + ')$).)' + endChar;\n }\n\n var res = open + str + close;\n if (opts.safe === true && safe(res) === false) {\n throw new Error('potentially unsafe regular expression: ' + res);\n }\n\n return res;\n};\n\n/**\n * Expose `toRegex`\n */\n\nmodule.exports = toRegex;\n","'use strict';\n\nvar isExtendable = require('is-extendable');\nvar assignSymbols = require('assign-symbols');\n\nmodule.exports = Object.assign || function(obj/*, objects*/) {\n if (obj === null || typeof obj === 'undefined') {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n if (!isObject(obj)) {\n obj = {};\n }\n for (var i = 1; i < arguments.length; i++) {\n var val = arguments[i];\n if (isString(val)) {\n val = toObject(val);\n }\n if (isObject(val)) {\n assign(obj, val);\n assignSymbols(obj, val);\n }\n }\n return obj;\n};\n\nfunction assign(a, b) {\n for (var key in b) {\n if (hasOwn(b, key)) {\n a[key] = b[key];\n }\n }\n}\n\nfunction isString(val) {\n return (val && typeof val === 'string');\n}\n\nfunction toObject(str) {\n var obj = {};\n for (var i in str) {\n obj[i] = str[i];\n }\n return obj;\n}\n\nfunction isObject(val) {\n return (val && typeof val === 'object') || isExtendable(val);\n}\n\n/**\n * Returns true if the given `key` is an own property of `obj`.\n */\n\nfunction hasOwn(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction isEnum(obj, key) {\n return Object.prototype.propertyIsEnumerable.call(obj, key);\n}\n","/*!\n * is-extendable <https://github.com/jonschlinkert/is-extendable>\n *\n * Copyright (c) 2015-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isPlainObject = require('is-plain-object');\n\nmodule.exports = function isExtendable(val) {\n return isPlainObject(val) || typeof val === 'function' || Array.isArray(val);\n};\n","/*!\n * repeat-element <https://github.com/jonschlinkert/repeat-element>\n *\n * Copyright (c) 2015-present, Jon Schlinkert.\n * Licensed under the MIT license.\n */\n\n'use strict';\n\nmodule.exports = function repeat(ele, num) {\n var arr = new Array(num);\n\n for (var i = 0; i < num; i++) {\n arr[i] = ele;\n }\n\n return arr;\n};\n","/*!\n * repeat-string <https://github.com/jonschlinkert/repeat-string>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\n/**\n * Results cache\n */\n\nvar res = '';\nvar cache;\n\n/**\n * Expose `repeat`\n */\n\nmodule.exports = repeat;\n\n/**\n * Repeat the given `string` the specified `number`\n * of times.\n *\n * **Example:**\n *\n * ```js\n * var repeat = require('repeat-string');\n * repeat('A', 5);\n * //=> AAAAA\n * ```\n *\n * @param {String} `string` The string to repeat\n * @param {Number} `number` The number of times to repeat the string\n * @return {String} Repeated string\n * @api public\n */\n\nfunction repeat(str, num) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string');\n }\n\n // cover common, quick use cases\n if (num === 1) return str;\n if (num === 2) return str + str;\n\n var max = str.length * num;\n if (cache !== str || typeof cache === 'undefined') {\n cache = str;\n res = '';\n } else if (res.length >= max) {\n return res.substr(0, max);\n }\n\n while (max > res.length && num > 1) {\n if (num & 1) {\n res += str;\n }\n\n num >>= 1;\n str += str;\n }\n\n res += str;\n res = res.substr(0, max);\n return res;\n}\n","// Copyright 2014 Simon Lydell\r\n// X11 (“MIT”) Licensed. (See LICENSE.)\r\n\r\nvoid (function(root, factory) {\r\n if (typeof define === \"function\" && define.amd) {\r\n define(factory)\r\n } else if (typeof exports === \"object\") {\r\n module.exports = factory()\r\n } else {\r\n root.resolveUrl = factory()\r\n }\r\n}(this, function() {\r\n\r\n function resolveUrl(/* ...urls */) {\r\n var numUrls = arguments.length\r\n\r\n if (numUrls === 0) {\r\n throw new Error(\"resolveUrl requires at least one argument; got none.\")\r\n }\r\n\r\n var base = document.createElement(\"base\")\r\n base.href = arguments[0]\r\n\r\n if (numUrls === 1) {\r\n return base.href\r\n }\r\n\r\n var head = document.getElementsByTagName(\"head\")[0]\r\n head.insertBefore(base, head.firstChild)\r\n\r\n var a = document.createElement(\"a\")\r\n var resolved\r\n\r\n for (var index = 1; index < numUrls; index++) {\r\n a.href = arguments[index]\r\n resolved = a.href\r\n base.href = resolved\r\n }\r\n\r\n head.removeChild(base)\r\n\r\n return resolved\r\n }\r\n\r\n return resolveUrl\r\n\r\n}));\r\n","var util = require('./util');\nvar types = require('./types');\nvar sets = require('./sets');\nvar positions = require('./positions');\n\n\nmodule.exports = function(regexpStr) {\n var i = 0, l, c,\n start = { type: types.ROOT, stack: []},\n\n // Keep track of last clause/group and stack.\n lastGroup = start,\n last = start.stack,\n groupStack = [];\n\n\n var repeatErr = function(i) {\n util.error(regexpStr, 'Nothing to repeat at column ' + (i - 1));\n };\n\n // Decode a few escaped characters.\n var str = util.strToChars(regexpStr);\n l = str.length;\n\n // Iterate through each character in string.\n while (i < l) {\n c = str[i++];\n\n switch (c) {\n // Handle escaped characters, inclues a few sets.\n case '\\\\':\n c = str[i++];\n\n switch (c) {\n case 'b':\n last.push(positions.wordBoundary());\n break;\n\n case 'B':\n last.push(positions.nonWordBoundary());\n break;\n\n case 'w':\n last.push(sets.words());\n break;\n\n case 'W':\n last.push(sets.notWords());\n break;\n\n case 'd':\n last.push(sets.ints());\n break;\n\n case 'D':\n last.push(sets.notInts());\n break;\n\n case 's':\n last.push(sets.whitespace());\n break;\n\n case 'S':\n last.push(sets.notWhitespace());\n break;\n\n default:\n // Check if c is integer.\n // In which case it's a reference.\n if (/\\d/.test(c)) {\n last.push({ type: types.REFERENCE, value: parseInt(c, 10) });\n\n // Escaped character.\n } else {\n last.push({ type: types.CHAR, value: c.charCodeAt(0) });\n }\n }\n\n break;\n\n\n // Positionals.\n case '^':\n last.push(positions.begin());\n break;\n\n case '$':\n last.push(positions.end());\n break;\n\n\n // Handle custom sets.\n case '[':\n // Check if this class is 'anti' i.e. [^abc].\n var not;\n if (str[i] === '^') {\n not = true;\n i++;\n } else {\n not = false;\n }\n\n // Get all the characters in class.\n var classTokens = util.tokenizeClass(str.slice(i), regexpStr);\n\n // Increase index by length of class.\n i += classTokens[1];\n last.push({\n type: types.SET,\n set: classTokens[0],\n not: not,\n });\n\n break;\n\n\n // Class of any character except \\n.\n case '.':\n last.push(sets.anyChar());\n break;\n\n\n // Push group onto stack.\n case '(':\n // Create group.\n var group = {\n type: types.GROUP,\n stack: [],\n remember: true,\n };\n\n c = str[i];\n\n // If if this is a special kind of group.\n if (c === '?') {\n c = str[i + 1];\n i += 2;\n\n // Match if followed by.\n if (c === '=') {\n group.followedBy = true;\n\n // Match if not followed by.\n } else if (c === '!') {\n group.notFollowedBy = true;\n\n } else if (c !== ':') {\n util.error(regexpStr,\n 'Invalid group, character \\'' + c +\n '\\' after \\'?\\' at column ' + (i - 1));\n }\n\n group.remember = false;\n }\n\n // Insert subgroup into current group stack.\n last.push(group);\n\n // Remember the current group for when the group closes.\n groupStack.push(lastGroup);\n\n // Make this new group the current group.\n lastGroup = group;\n last = group.stack;\n break;\n\n\n // Pop group out of stack.\n case ')':\n if (groupStack.length === 0) {\n util.error(regexpStr, 'Unmatched ) at column ' + (i - 1));\n }\n lastGroup = groupStack.pop();\n\n // Check if this group has a PIPE.\n // To get back the correct last stack.\n last = lastGroup.options ?\n lastGroup.options[lastGroup.options.length - 1] : lastGroup.stack;\n break;\n\n\n // Use pipe character to give more choices.\n case '|':\n // Create array where options are if this is the first PIPE\n // in this clause.\n if (!lastGroup.options) {\n lastGroup.options = [lastGroup.stack];\n delete lastGroup.stack;\n }\n\n // Create a new stack and add to options for rest of clause.\n var stack = [];\n lastGroup.options.push(stack);\n last = stack;\n break;\n\n\n // Repetition.\n // For every repetition, remove last element from last stack\n // then insert back a RANGE object.\n // This design is chosen because there could be more than\n // one repetition symbols in a regex i.e. `a?+{2,3}`.\n case '{':\n var rs = /^(\\d+)(,(\\d+)?)?\\}/.exec(str.slice(i)), min, max;\n if (rs !== null) {\n if (last.length === 0) {\n repeatErr(i);\n }\n min = parseInt(rs[1], 10);\n max = rs[2] ? rs[3] ? parseInt(rs[3], 10) : Infinity : min;\n i += rs[0].length;\n\n last.push({\n type: types.REPETITION,\n min: min,\n max: max,\n value: last.pop(),\n });\n } else {\n last.push({\n type: types.CHAR,\n value: 123,\n });\n }\n break;\n\n case '?':\n if (last.length === 0) {\n repeatErr(i);\n }\n last.push({\n type: types.REPETITION,\n min: 0,\n max: 1,\n value: last.pop(),\n });\n break;\n\n case '+':\n if (last.length === 0) {\n repeatErr(i);\n }\n last.push({\n type: types.REPETITION,\n min: 1,\n max: Infinity,\n value: last.pop(),\n });\n break;\n\n case '*':\n if (last.length === 0) {\n repeatErr(i);\n }\n last.push({\n type: types.REPETITION,\n min: 0,\n max: Infinity,\n value: last.pop(),\n });\n break;\n\n\n // Default is a character that is not `\\[](){}?+*^$`.\n default:\n last.push({\n type: types.CHAR,\n value: c.charCodeAt(0),\n });\n }\n\n }\n\n // Check if any groups have not been closed.\n if (groupStack.length !== 0) {\n util.error(regexpStr, 'Unterminated group');\n }\n\n return start;\n};\n\nmodule.exports.types = types;\n","var types = require('./types');\n\nexports.wordBoundary = function() {\n return { type: types.POSITION, value: 'b' };\n};\n\nexports.nonWordBoundary = function() {\n return { type: types.POSITION, value: 'B' };\n};\n\nexports.begin = function() {\n return { type: types.POSITION, value: '^' };\n};\n\nexports.end = function() {\n return { type: types.POSITION, value: '$' };\n};\n","var types = require('./types');\n\nvar INTS = function() {\n return [{ type: types.RANGE , from: 48, to: 57 }];\n};\n\nvar WORDS = function() {\n return [\n { type: types.CHAR, value: 95 },\n { type: types.RANGE, from: 97, to: 122 },\n { type: types.RANGE, from: 65, to: 90 }\n ].concat(INTS());\n};\n\nvar WHITESPACE = function() {\n return [\n { type: types.CHAR, value: 9 },\n { type: types.CHAR, value: 10 },\n { type: types.CHAR, value: 11 },\n { type: types.CHAR, value: 12 },\n { type: types.CHAR, value: 13 },\n { type: types.CHAR, value: 32 },\n { type: types.CHAR, value: 160 },\n { type: types.CHAR, value: 5760 },\n { type: types.CHAR, value: 6158 },\n { type: types.CHAR, value: 8192 },\n { type: types.CHAR, value: 8193 },\n { type: types.CHAR, value: 8194 },\n { type: types.CHAR, value: 8195 },\n { type: types.CHAR, value: 8196 },\n { type: types.CHAR, value: 8197 },\n { type: types.CHAR, value: 8198 },\n { type: types.CHAR, value: 8199 },\n { type: types.CHAR, value: 8200 },\n { type: types.CHAR, value: 8201 },\n { type: types.CHAR, value: 8202 },\n { type: types.CHAR, value: 8232 },\n { type: types.CHAR, value: 8233 },\n { type: types.CHAR, value: 8239 },\n { type: types.CHAR, value: 8287 },\n { type: types.CHAR, value: 12288 },\n { type: types.CHAR, value: 65279 }\n ];\n};\n\nvar NOTANYCHAR = function() {\n return [\n { type: types.CHAR, value: 10 },\n { type: types.CHAR, value: 13 },\n { type: types.CHAR, value: 8232 },\n { type: types.CHAR, value: 8233 },\n ];\n};\n\n// Predefined class objects.\nexports.words = function() {\n return { type: types.SET, set: WORDS(), not: false };\n};\n\nexports.notWords = function() {\n return { type: types.SET, set: WORDS(), not: true };\n};\n\nexports.ints = function() {\n return { type: types.SET, set: INTS(), not: false };\n};\n\nexports.notInts = function() {\n return { type: types.SET, set: INTS(), not: true };\n};\n\nexports.whitespace = function() {\n return { type: types.SET, set: WHITESPACE(), not: false };\n};\n\nexports.notWhitespace = function() {\n return { type: types.SET, set: WHITESPACE(), not: true };\n};\n\nexports.anyChar = function() {\n return { type: types.SET, set: NOTANYCHAR(), not: true };\n};\n","module.exports = {\n ROOT : 0,\n GROUP : 1,\n POSITION : 2,\n SET : 3,\n RANGE : 4,\n REPETITION : 5,\n REFERENCE : 6,\n CHAR : 7,\n};\n","var types = require('./types');\nvar sets = require('./sets');\n\n\n// All of these are private and only used by randexp.\n// It's assumed that they will always be called with the correct input.\n\nvar CTRL = '@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^ ?';\nvar SLSH = { '0': 0, 't': 9, 'n': 10, 'v': 11, 'f': 12, 'r': 13 };\n\n/**\n * Finds character representations in str and convert all to\n * their respective characters\n *\n * @param {String} str\n * @return {String}\n */\nexports.strToChars = function(str) {\n /* jshint maxlen: false */\n var chars_regex = /(\\[\\\\b\\])|(\\\\)?\\\\(?:u([A-F0-9]{4})|x([A-F0-9]{2})|(0?[0-7]{2})|c([@A-Z\\[\\\\\\]\\^?])|([0tnvfr]))/g;\n str = str.replace(chars_regex, function(s, b, lbs, a16, b16, c8, dctrl, eslsh) {\n if (lbs) {\n return s;\n }\n\n var code = b ? 8 :\n a16 ? parseInt(a16, 16) :\n b16 ? parseInt(b16, 16) :\n c8 ? parseInt(c8, 8) :\n dctrl ? CTRL.indexOf(dctrl) :\n SLSH[eslsh];\n\n var c = String.fromCharCode(code);\n\n // Escape special regex characters.\n if (/[\\[\\]{}\\^$.|?*+()]/.test(c)) {\n c = '\\\\' + c;\n }\n\n return c;\n });\n\n return str;\n};\n\n\n/**\n * turns class into tokens\n * reads str until it encounters a ] not preceeded by a \\\n *\n * @param {String} str\n * @param {String} regexpStr\n * @return {Array.<Array.<Object>, Number>}\n */\nexports.tokenizeClass = function(str, regexpStr) {\n /* jshint maxlen: false */\n var tokens = [];\n var regexp = /\\\\(?:(w)|(d)|(s)|(W)|(D)|(S))|((?:(?:\\\\)(.)|([^\\]\\\\]))-(?:\\\\)?([^\\]]))|(\\])|(?:\\\\)?(.)/g;\n var rs, c;\n\n\n while ((rs = regexp.exec(str)) != null) {\n if (rs[1]) {\n tokens.push(sets.words());\n\n } else if (rs[2]) {\n tokens.push(sets.ints());\n\n } else if (rs[3]) {\n tokens.push(sets.whitespace());\n\n } else if (rs[4]) {\n tokens.push(sets.notWords());\n\n } else if (rs[5]) {\n tokens.push(sets.notInts());\n\n } else if (rs[6]) {\n tokens.push(sets.notWhitespace());\n\n } else if (rs[7]) {\n tokens.push({\n type: types.RANGE,\n from: (rs[8] || rs[9]).charCodeAt(0),\n to: rs[10].charCodeAt(0),\n });\n\n } else if (c = rs[12]) {\n tokens.push({\n type: types.CHAR,\n value: c.charCodeAt(0),\n });\n\n } else {\n return [tokens, regexp.lastIndex];\n }\n }\n\n exports.error(regexpStr, 'Unterminated character class');\n};\n\n\n/**\n * Shortcut to throw errors.\n *\n * @param {String} regexp\n * @param {String} msg\n */\nexports.error = function(regexp, msg) {\n throw new SyntaxError('Invalid regular expression: /' + regexp + '/: ' + msg);\n};\n","var parse = require('ret');\nvar types = parse.types;\n\nmodule.exports = function (re, opts) {\n if (!opts) opts = {};\n var replimit = opts.limit === undefined ? 25 : opts.limit;\n \n if (isRegExp(re)) re = re.source;\n else if (typeof re !== 'string') re = String(re);\n \n try { re = parse(re) }\n catch (err) { return false }\n \n var reps = 0;\n return (function walk (node, starHeight) {\n if (node.type === types.REPETITION) {\n starHeight ++;\n reps ++;\n if (starHeight > 1) return false;\n if (reps > replimit) return false;\n }\n \n if (node.options) {\n for (var i = 0, len = node.options.length; i < len; i++) {\n var ok = walk({ stack: node.options[i] }, starHeight);\n if (!ok) return false;\n }\n }\n var stack = node.stack || (node.value && node.value.stack);\n if (!stack) return true;\n \n for (var i = 0; i < stack.length; i++) {\n var ok = walk(stack[i], starHeight);\n if (!ok) return false;\n }\n \n return true;\n })(re, 0);\n};\n\nfunction isRegExp (x) {\n return {}.toString.call(x) === '[object RegExp]';\n}\n","/*!\n * set-value <https://github.com/jonschlinkert/set-value>\n *\n * Copyright (c) 2014-2015, 2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar split = require('split-string');\nvar extend = require('extend-shallow');\nvar isPlainObject = require('is-plain-object');\nvar isObject = require('is-extendable');\n\nmodule.exports = function(obj, prop, val) {\n if (!isObject(obj)) {\n return obj;\n }\n\n if (Array.isArray(prop)) {\n prop = [].concat.apply([], prop).join('.');\n }\n\n if (typeof prop !== 'string') {\n return obj;\n }\n\n var keys = split(prop, {sep: '.', brackets: true}).filter(isValidKey);\n var len = keys.length;\n var idx = -1;\n var current = obj;\n\n while (++idx < len) {\n var key = keys[idx];\n if (idx !== len - 1) {\n if (!isObject(current[key])) {\n current[key] = {};\n }\n current = current[key];\n continue;\n }\n\n if (isPlainObject(current[key]) && isPlainObject(val)) {\n current[key] = extend({}, current[key], val);\n } else {\n current[key] = val;\n }\n }\n\n return obj;\n};\n\nfunction isValidKey(key) {\n return key !== '__proto__' && key !== 'constructor' && key !== 'prototype';\n}\n","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n","'use strict';\nmodule.exports = input => {\n\tconst isExtendedLengthPath = /^\\\\\\\\\\?\\\\/.test(input);\n\tconst hasNonAscii = /[^\\u0000-\\u0080]+/.test(input); // eslint-disable-line no-control-regex\n\n\tif (isExtendedLengthPath || hasNonAscii) {\n\t\treturn input;\n\t}\n\n\treturn input.replace(/\\\\/g, '/');\n};\n","'use strict';\n\nvar isObject = require('isobject');\nvar define = require('define-property');\nvar utils = require('snapdragon-util');\nvar ownNames;\n\n/**\n * Create a new AST `Node` with the given `val` and `type`.\n *\n * ```js\n * var node = new Node('*', 'Star');\n * var node = new Node({type: 'star', val: '*'});\n * ```\n * @name Node\n * @param {String|Object} `val` Pass a matched substring, or an object to merge onto the node.\n * @param {String} `type` The node type to use when `val` is a string.\n * @return {Object} node instance\n * @api public\n */\n\nfunction Node(val, type, parent) {\n if (typeof type !== 'string') {\n parent = type;\n type = null;\n }\n\n define(this, 'parent', parent);\n define(this, 'isNode', true);\n define(this, 'expect', null);\n\n if (typeof type !== 'string' && isObject(val)) {\n lazyKeys();\n var keys = Object.keys(val);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (ownNames.indexOf(key) === -1) {\n this[key] = val[key];\n }\n }\n } else {\n this.type = type;\n this.val = val;\n }\n}\n\n/**\n * Returns true if the given value is a node.\n *\n * ```js\n * var Node = require('snapdragon-node');\n * var node = new Node({type: 'foo'});\n * console.log(Node.isNode(node)); //=> true\n * console.log(Node.isNode({})); //=> false\n * ```\n * @param {Object} `node`\n * @returns {Boolean}\n * @api public\n */\n\nNode.isNode = function(node) {\n return utils.isNode(node);\n};\n\n/**\n * Define a non-enumberable property on the node instance.\n * Useful for adding properties that shouldn't be extended\n * or visible during debugging.\n *\n * ```js\n * var node = new Node();\n * node.define('foo', 'something non-enumerable');\n * ```\n * @param {String} `name`\n * @param {any} `val`\n * @return {Object} returns the node instance\n * @api public\n */\n\nNode.prototype.define = function(name, val) {\n define(this, name, val);\n return this;\n};\n\n/**\n * Returns true if `node.val` is an empty string, or `node.nodes` does\n * not contain any non-empty text nodes.\n *\n * ```js\n * var node = new Node({type: 'text'});\n * node.isEmpty(); //=> true\n * node.val = 'foo';\n * node.isEmpty(); //=> false\n * ```\n * @param {Function} `fn` (optional) Filter function that is called on `node` and/or child nodes. `isEmpty` will return false immediately when the filter function returns false on any nodes.\n * @return {Boolean}\n * @api public\n */\n\nNode.prototype.isEmpty = function(fn) {\n return utils.isEmpty(this, fn);\n};\n\n/**\n * Given node `foo` and node `bar`, push node `bar` onto `foo.nodes`, and\n * set `foo` as `bar.parent`.\n *\n * ```js\n * var foo = new Node({type: 'foo'});\n * var bar = new Node({type: 'bar'});\n * foo.push(bar);\n * ```\n * @param {Object} `node`\n * @return {Number} Returns the length of `node.nodes`\n * @api public\n */\n\nNode.prototype.push = function(node) {\n assert(Node.isNode(node), 'expected node to be an instance of Node');\n define(node, 'parent', this);\n\n this.nodes = this.nodes || [];\n return this.nodes.push(node);\n};\n\n/**\n * Given node `foo` and node `bar`, unshift node `bar` onto `foo.nodes`, and\n * set `foo` as `bar.parent`.\n *\n * ```js\n * var foo = new Node({type: 'foo'});\n * var bar = new Node({type: 'bar'});\n * foo.unshift(bar);\n * ```\n * @param {Object} `node`\n * @return {Number} Returns the length of `node.nodes`\n * @api public\n */\n\nNode.prototype.unshift = function(node) {\n assert(Node.isNode(node), 'expected node to be an instance of Node');\n define(node, 'parent', this);\n\n this.nodes = this.nodes || [];\n return this.nodes.unshift(node);\n};\n\n/**\n * Pop a node from `node.nodes`.\n *\n * ```js\n * var node = new Node({type: 'foo'});\n * node.push(new Node({type: 'a'}));\n * node.push(new Node({type: 'b'}));\n * node.push(new Node({type: 'c'}));\n * node.push(new Node({type: 'd'}));\n * console.log(node.nodes.length);\n * //=> 4\n * node.pop();\n * console.log(node.nodes.length);\n * //=> 3\n * ```\n * @return {Number} Returns the popped `node`\n * @api public\n */\n\nNode.prototype.pop = function() {\n return this.nodes && this.nodes.pop();\n};\n\n/**\n * Shift a node from `node.nodes`.\n *\n * ```js\n * var node = new Node({type: 'foo'});\n * node.push(new Node({type: 'a'}));\n * node.push(new Node({type: 'b'}));\n * node.push(new Node({type: 'c'}));\n * node.push(new Node({type: 'd'}));\n * console.log(node.nodes.length);\n * //=> 4\n * node.shift();\n * console.log(node.nodes.length);\n * //=> 3\n * ```\n * @return {Object} Returns the shifted `node`\n * @api public\n */\n\nNode.prototype.shift = function() {\n return this.nodes && this.nodes.shift();\n};\n\n/**\n * Remove `node` from `node.nodes`.\n *\n * ```js\n * node.remove(childNode);\n * ```\n * @param {Object} `node`\n * @return {Object} Returns the removed node.\n * @api public\n */\n\nNode.prototype.remove = function(node) {\n assert(Node.isNode(node), 'expected node to be an instance of Node');\n this.nodes = this.nodes || [];\n var idx = node.index;\n if (idx !== -1) {\n node.index = -1;\n return this.nodes.splice(idx, 1);\n }\n return null;\n};\n\n/**\n * Get the first child node from `node.nodes` that matches the given `type`.\n * If `type` is a number, the child node at that index is returned.\n *\n * ```js\n * var child = node.find(1); //<= index of the node to get\n * var child = node.find('foo'); //<= node.type of a child node\n * var child = node.find(/^(foo|bar)$/); //<= regex to match node.type\n * var child = node.find(['foo', 'bar']); //<= array of node.type(s)\n * ```\n * @param {String} `type`\n * @return {Object} Returns a child node or undefined.\n * @api public\n */\n\nNode.prototype.find = function(type) {\n return utils.findNode(this.nodes, type);\n};\n\n/**\n * Return true if the node is the given `type`.\n *\n * ```js\n * var node = new Node({type: 'bar'});\n * cosole.log(node.isType('foo')); // false\n * cosole.log(node.isType(/^(foo|bar)$/)); // true\n * cosole.log(node.isType(['foo', 'bar'])); // true\n * ```\n * @param {String} `type`\n * @return {Boolean}\n * @api public\n */\n\nNode.prototype.isType = function(type) {\n return utils.isType(this, type);\n};\n\n/**\n * Return true if the `node.nodes` has the given `type`.\n *\n * ```js\n * var foo = new Node({type: 'foo'});\n * var bar = new Node({type: 'bar'});\n * foo.push(bar);\n *\n * cosole.log(foo.hasType('qux')); // false\n * cosole.log(foo.hasType(/^(qux|bar)$/)); // true\n * cosole.log(foo.hasType(['qux', 'bar'])); // true\n * ```\n * @param {String} `type`\n * @return {Boolean}\n * @api public\n */\n\nNode.prototype.hasType = function(type) {\n return utils.hasType(this, type);\n};\n\n/**\n * Get the siblings array, or `null` if it doesn't exist.\n *\n * ```js\n * var foo = new Node({type: 'foo'});\n * var bar = new Node({type: 'bar'});\n * var baz = new Node({type: 'baz'});\n * foo.push(bar);\n * foo.push(baz);\n *\n * console.log(bar.siblings.length) // 2\n * console.log(baz.siblings.length) // 2\n * ```\n * @return {Array}\n * @api public\n */\n\nObject.defineProperty(Node.prototype, 'siblings', {\n set: function() {\n throw new Error('node.siblings is a getter and cannot be defined');\n },\n get: function() {\n return this.parent ? this.parent.nodes : null;\n }\n});\n\n/**\n * Get the node's current index from `node.parent.nodes`.\n * This should always be correct, even when the parent adds nodes.\n *\n * ```js\n * var foo = new Node({type: 'foo'});\n * var bar = new Node({type: 'bar'});\n * var baz = new Node({type: 'baz'});\n * var qux = new Node({type: 'qux'});\n * foo.push(bar);\n * foo.push(baz);\n * foo.unshift(qux);\n *\n * console.log(bar.index) // 1\n * console.log(baz.index) // 2\n * console.log(qux.index) // 0\n * ```\n * @return {Number}\n * @api public\n */\n\nObject.defineProperty(Node.prototype, 'index', {\n set: function(index) {\n define(this, 'idx', index);\n },\n get: function() {\n if (!Array.isArray(this.siblings)) {\n return -1;\n }\n var tok = this.idx !== -1 ? this.siblings[this.idx] : null;\n if (tok !== this) {\n this.idx = this.siblings.indexOf(this);\n }\n return this.idx;\n }\n});\n\n/**\n * Get the previous node from the siblings array or `null`.\n *\n * ```js\n * var foo = new Node({type: 'foo'});\n * var bar = new Node({type: 'bar'});\n * var baz = new Node({type: 'baz'});\n * foo.push(bar);\n * foo.push(baz);\n *\n * console.log(baz.prev.type) // 'bar'\n * ```\n * @return {Object}\n * @api public\n */\n\nObject.defineProperty(Node.prototype, 'prev', {\n set: function() {\n throw new Error('node.prev is a getter and cannot be defined');\n },\n get: function() {\n if (Array.isArray(this.siblings)) {\n return this.siblings[this.index - 1] || this.parent.prev;\n }\n return null;\n }\n});\n\n/**\n * Get the siblings array, or `null` if it doesn't exist.\n *\n * ```js\n * var foo = new Node({type: 'foo'});\n * var bar = new Node({type: 'bar'});\n * var baz = new Node({type: 'baz'});\n * foo.push(bar);\n * foo.push(baz);\n *\n * console.log(bar.siblings.length) // 2\n * console.log(baz.siblings.length) // 2\n * ```\n * @return {Object}\n * @api public\n */\n\nObject.defineProperty(Node.prototype, 'next', {\n set: function() {\n throw new Error('node.next is a getter and cannot be defined');\n },\n get: function() {\n if (Array.isArray(this.siblings)) {\n return this.siblings[this.index + 1] || this.parent.next;\n }\n return null;\n }\n});\n\n/**\n * Get the first node from `node.nodes`.\n *\n * ```js\n * var foo = new Node({type: 'foo'});\n * var bar = new Node({type: 'bar'});\n * var baz = new Node({type: 'baz'});\n * var qux = new Node({type: 'qux'});\n * foo.push(bar);\n * foo.push(baz);\n * foo.push(qux);\n *\n * console.log(foo.first.type) // 'bar'\n * ```\n * @return {Object} The first node, or undefiend\n * @api public\n */\n\nObject.defineProperty(Node.prototype, 'first', {\n get: function() {\n return this.nodes ? this.nodes[0] : null;\n }\n});\n\n/**\n * Get the last node from `node.nodes`.\n *\n * ```js\n * var foo = new Node({type: 'foo'});\n * var bar = new Node({type: 'bar'});\n * var baz = new Node({type: 'baz'});\n * var qux = new Node({type: 'qux'});\n * foo.push(bar);\n * foo.push(baz);\n * foo.push(qux);\n *\n * console.log(foo.last.type) // 'qux'\n * ```\n * @return {Object} The last node, or undefiend\n * @api public\n */\n\nObject.defineProperty(Node.prototype, 'last', {\n get: function() {\n return this.nodes ? utils.last(this.nodes) : null;\n }\n});\n\n/**\n * Get the last node from `node.nodes`.\n *\n * ```js\n * var foo = new Node({type: 'foo'});\n * var bar = new Node({type: 'bar'});\n * var baz = new Node({type: 'baz'});\n * var qux = new Node({type: 'qux'});\n * foo.push(bar);\n * foo.push(baz);\n * foo.push(qux);\n *\n * console.log(foo.last.type) // 'qux'\n * ```\n * @return {Object} The last node, or undefiend\n * @api public\n */\n\nObject.defineProperty(Node.prototype, 'scope', {\n get: function() {\n if (this.isScope !== true) {\n return this.parent ? this.parent.scope : this;\n }\n return this;\n }\n});\n\n/**\n * Get own property names from Node prototype, but only the\n * first time `Node` is instantiated\n */\n\nfunction lazyKeys() {\n if (!ownNames) {\n ownNames = Object.getOwnPropertyNames(Node.prototype);\n }\n}\n\n/**\n * Simplified assertion. Throws an error is `val` is falsey.\n */\n\nfunction assert(val, message) {\n if (!val) throw new Error(message);\n}\n\n/**\n * Expose `Node`\n */\n\nexports = module.exports = Node;\n","/*!\n * define-property <https://github.com/jonschlinkert/define-property>\n *\n * Copyright (c) 2015, 2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isDescriptor = require('is-descriptor');\n\nmodule.exports = function defineProperty(obj, prop, val) {\n if (typeof obj !== 'object' && typeof obj !== 'function') {\n throw new TypeError('expected an object or function.');\n }\n\n if (typeof prop !== 'string') {\n throw new TypeError('expected `prop` to be a string.');\n }\n\n if (isDescriptor(val) && ('set' in val || 'get' in val)) {\n return Object.defineProperty(obj, prop, val);\n }\n\n return Object.defineProperty(obj, prop, {\n configurable: true,\n enumerable: false,\n writable: true,\n value: val\n });\n};\n","'use strict';\n\nvar typeOf = require('kind-of');\nvar utils = module.exports;\n\n/**\n * Returns true if the given value is a node.\n *\n * ```js\n * var Node = require('snapdragon-node');\n * var node = new Node({type: 'foo'});\n * console.log(utils.isNode(node)); //=> true\n * console.log(utils.isNode({})); //=> false\n * ```\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @returns {Boolean}\n * @api public\n */\n\nutils.isNode = function(node) {\n return typeOf(node) === 'object' && node.isNode === true;\n};\n\n/**\n * Emit an empty string for the given `node`.\n *\n * ```js\n * // do nothing for beginning-of-string\n * snapdragon.compiler.set('bos', utils.noop);\n * ```\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @returns {undefined}\n * @api public\n */\n\nutils.noop = function(node) {\n append(this, '', node);\n};\n\n/**\n * Appdend `node.val` to `compiler.output`, exactly as it was created\n * by the parser.\n *\n * ```js\n * snapdragon.compiler.set('text', utils.identity);\n * ```\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @returns {undefined}\n * @api public\n */\n\nutils.identity = function(node) {\n append(this, node.val, node);\n};\n\n/**\n * Previously named `.emit`, this method appends the given `val`\n * to `compiler.output` for the given node. Useful when you know\n * what value should be appended advance, regardless of the actual\n * value of `node.val`.\n *\n * ```js\n * snapdragon.compiler\n * .set('i', function(node) {\n * this.mapVisit(node);\n * })\n * .set('i.open', utils.append('<i>'))\n * .set('i.close', utils.append('</i>'))\n * ```\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @returns {Function} Returns a compiler middleware function.\n * @api public\n */\n\nutils.append = function(val) {\n return function(node) {\n append(this, val, node);\n };\n};\n\n/**\n * Used in compiler middleware, this onverts an AST node into\n * an empty `text` node and deletes `node.nodes` if it exists.\n * The advantage of this method is that, as opposed to completely\n * removing the node, indices will not need to be re-calculated\n * in sibling nodes, and nothing is appended to the output.\n *\n * ```js\n * utils.toNoop(node);\n * // convert `node.nodes` to the given value instead of deleting it\n * utils.toNoop(node, []);\n * ```\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @param {Array} `nodes` Optionally pass a new `nodes` value, to replace the existing `node.nodes` array.\n * @api public\n */\n\nutils.toNoop = function(node, nodes) {\n if (nodes) {\n node.nodes = nodes;\n } else {\n delete node.nodes;\n node.type = 'text';\n node.val = '';\n }\n};\n\n/**\n * Visit `node` with the given `fn`. The built-in `.visit` method in snapdragon\n * automatically calls registered compilers, this allows you to pass a visitor\n * function.\n *\n * ```js\n * snapdragon.compiler.set('i', function(node) {\n * utils.visit(node, function(childNode) {\n * // do stuff with \"childNode\"\n * return childNode;\n * });\n * });\n * ```\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @param {Function} `fn`\n * @return {Object} returns the node after recursively visiting all child nodes.\n * @api public\n */\n\nutils.visit = function(node, fn) {\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n assert(isFunction(fn), 'expected a visitor function');\n fn(node);\n return node.nodes ? utils.mapVisit(node, fn) : node;\n};\n\n/**\n * Map [visit](#visit) the given `fn` over `node.nodes`. This is called by\n * [visit](#visit), use this method if you do not want `fn` to be called on\n * the first node.\n *\n * ```js\n * snapdragon.compiler.set('i', function(node) {\n * utils.mapVisit(node, function(childNode) {\n * // do stuff with \"childNode\"\n * return childNode;\n * });\n * });\n * ```\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @param {Object} `options`\n * @param {Function} `fn`\n * @return {Object} returns the node\n * @api public\n */\n\nutils.mapVisit = function(node, fn) {\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n assert(isArray(node.nodes), 'expected node.nodes to be an array');\n assert(isFunction(fn), 'expected a visitor function');\n\n for (var i = 0; i < node.nodes.length; i++) {\n utils.visit(node.nodes[i], fn);\n }\n return node;\n};\n\n/**\n * Unshift an `*.open` node onto `node.nodes`.\n *\n * ```js\n * var Node = require('snapdragon-node');\n * snapdragon.parser.set('brace', function(node) {\n * var match = this.match(/^{/);\n * if (match) {\n * var parent = new Node({type: 'brace'});\n * utils.addOpen(parent, Node);\n * console.log(parent.nodes[0]):\n * // { type: 'brace.open', val: '' };\n *\n * // push the parent \"brace\" node onto the stack\n * this.push(parent);\n *\n * // return the parent node, so it's also added to the AST\n * return brace;\n * }\n * });\n * ```\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @param {Function} `Node` (required) Node constructor function from [snapdragon-node][].\n * @param {Function} `filter` Optionaly specify a filter function to exclude the node.\n * @return {Object} Returns the created opening node.\n * @api public\n */\n\nutils.addOpen = function(node, Node, val, filter) {\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n assert(isFunction(Node), 'expected Node to be a constructor function');\n\n if (typeof val === 'function') {\n filter = val;\n val = '';\n }\n\n if (typeof filter === 'function' && !filter(node)) return;\n var open = new Node({ type: node.type + '.open', val: val});\n var unshift = node.unshift || node.unshiftNode;\n if (typeof unshift === 'function') {\n unshift.call(node, open);\n } else {\n utils.unshiftNode(node, open);\n }\n return open;\n};\n\n/**\n * Push a `*.close` node onto `node.nodes`.\n *\n * ```js\n * var Node = require('snapdragon-node');\n * snapdragon.parser.set('brace', function(node) {\n * var match = this.match(/^}/);\n * if (match) {\n * var parent = this.parent();\n * if (parent.type !== 'brace') {\n * throw new Error('missing opening: ' + '}');\n * }\n *\n * utils.addClose(parent, Node);\n * console.log(parent.nodes[parent.nodes.length - 1]):\n * // { type: 'brace.close', val: '' };\n *\n * // no need to return a node, since the parent\n * // was already added to the AST\n * return;\n * }\n * });\n * ```\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @param {Function} `Node` (required) Node constructor function from [snapdragon-node][].\n * @param {Function} `filter` Optionaly specify a filter function to exclude the node.\n * @return {Object} Returns the created closing node.\n * @api public\n */\n\nutils.addClose = function(node, Node, val, filter) {\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n assert(isFunction(Node), 'expected Node to be a constructor function');\n\n if (typeof val === 'function') {\n filter = val;\n val = '';\n }\n\n if (typeof filter === 'function' && !filter(node)) return;\n var close = new Node({ type: node.type + '.close', val: val});\n var push = node.push || node.pushNode;\n if (typeof push === 'function') {\n push.call(node, close);\n } else {\n utils.pushNode(node, close);\n }\n return close;\n};\n\n/**\n * Wraps the given `node` with `*.open` and `*.close` nodes.\n *\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @param {Function} `Node` (required) Node constructor function from [snapdragon-node][].\n * @param {Function} `filter` Optionaly specify a filter function to exclude the node.\n * @return {Object} Returns the node\n * @api public\n */\n\nutils.wrapNodes = function(node, Node, filter) {\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n assert(isFunction(Node), 'expected Node to be a constructor function');\n\n utils.addOpen(node, Node, filter);\n utils.addClose(node, Node, filter);\n return node;\n};\n\n/**\n * Push the given `node` onto `parent.nodes`, and set `parent` as `node.parent.\n *\n * ```js\n * var parent = new Node({type: 'foo'});\n * var node = new Node({type: 'bar'});\n * utils.pushNode(parent, node);\n * console.log(parent.nodes[0].type) // 'bar'\n * console.log(node.parent.type) // 'foo'\n * ```\n * @param {Object} `parent`\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @return {Object} Returns the child node\n * @api public\n */\n\nutils.pushNode = function(parent, node) {\n assert(utils.isNode(parent), 'expected parent node to be an instance of Node');\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n\n node.define('parent', parent);\n parent.nodes = parent.nodes || [];\n parent.nodes.push(node);\n return node;\n};\n\n/**\n * Unshift `node` onto `parent.nodes`, and set `parent` as `node.parent.\n *\n * ```js\n * var parent = new Node({type: 'foo'});\n * var node = new Node({type: 'bar'});\n * utils.unshiftNode(parent, node);\n * console.log(parent.nodes[0].type) // 'bar'\n * console.log(node.parent.type) // 'foo'\n * ```\n * @param {Object} `parent`\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @return {undefined}\n * @api public\n */\n\nutils.unshiftNode = function(parent, node) {\n assert(utils.isNode(parent), 'expected parent node to be an instance of Node');\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n\n node.define('parent', parent);\n parent.nodes = parent.nodes || [];\n parent.nodes.unshift(node);\n};\n\n/**\n * Pop the last `node` off of `parent.nodes`. The advantage of\n * using this method is that it checks for `node.nodes` and works\n * with any version of `snapdragon-node`.\n *\n * ```js\n * var parent = new Node({type: 'foo'});\n * utils.pushNode(parent, new Node({type: 'foo'}));\n * utils.pushNode(parent, new Node({type: 'bar'}));\n * utils.pushNode(parent, new Node({type: 'baz'}));\n * console.log(parent.nodes.length); //=> 3\n * utils.popNode(parent);\n * console.log(parent.nodes.length); //=> 2\n * ```\n * @param {Object} `parent`\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @return {Number|Undefined} Returns the length of `node.nodes` or undefined.\n * @api public\n */\n\nutils.popNode = function(node) {\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n if (typeof node.pop === 'function') {\n return node.pop();\n }\n return node.nodes && node.nodes.pop();\n};\n\n/**\n * Shift the first `node` off of `parent.nodes`. The advantage of\n * using this method is that it checks for `node.nodes` and works\n * with any version of `snapdragon-node`.\n *\n * ```js\n * var parent = new Node({type: 'foo'});\n * utils.pushNode(parent, new Node({type: 'foo'}));\n * utils.pushNode(parent, new Node({type: 'bar'}));\n * utils.pushNode(parent, new Node({type: 'baz'}));\n * console.log(parent.nodes.length); //=> 3\n * utils.shiftNode(parent);\n * console.log(parent.nodes.length); //=> 2\n * ```\n * @param {Object} `parent`\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @return {Number|Undefined} Returns the length of `node.nodes` or undefined.\n * @api public\n */\n\nutils.shiftNode = function(node) {\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n if (typeof node.shift === 'function') {\n return node.shift();\n }\n return node.nodes && node.nodes.shift();\n};\n\n/**\n * Remove the specified `node` from `parent.nodes`.\n *\n * ```js\n * var parent = new Node({type: 'abc'});\n * var foo = new Node({type: 'foo'});\n * utils.pushNode(parent, foo);\n * utils.pushNode(parent, new Node({type: 'bar'}));\n * utils.pushNode(parent, new Node({type: 'baz'}));\n * console.log(parent.nodes.length); //=> 3\n * utils.removeNode(parent, foo);\n * console.log(parent.nodes.length); //=> 2\n * ```\n * @param {Object} `parent`\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @return {Object|undefined} Returns the removed node, if successful, or undefined if it does not exist on `parent.nodes`.\n * @api public\n */\n\nutils.removeNode = function(parent, node) {\n assert(utils.isNode(parent), 'expected parent.node to be an instance of Node');\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n\n if (!parent.nodes) {\n return null;\n }\n\n if (typeof parent.remove === 'function') {\n return parent.remove(node);\n }\n\n var idx = parent.nodes.indexOf(node);\n if (idx !== -1) {\n return parent.nodes.splice(idx, 1);\n }\n};\n\n/**\n * Returns true if `node.type` matches the given `type`. Throws a\n * `TypeError` if `node` is not an instance of `Node`.\n *\n * ```js\n * var Node = require('snapdragon-node');\n * var node = new Node({type: 'foo'});\n * console.log(utils.isType(node, 'foo')); // false\n * console.log(utils.isType(node, 'bar')); // true\n * ```\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @param {String} `type`\n * @return {Boolean}\n * @api public\n */\n\nutils.isType = function(node, type) {\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n switch (typeOf(type)) {\n case 'array':\n var types = type.slice();\n for (var i = 0; i < types.length; i++) {\n if (utils.isType(node, types[i])) {\n return true;\n }\n }\n return false;\n case 'string':\n return node.type === type;\n case 'regexp':\n return type.test(node.type);\n default: {\n throw new TypeError('expected \"type\" to be an array, string or regexp');\n }\n }\n};\n\n/**\n * Returns true if the given `node` has the given `type` in `node.nodes`.\n * Throws a `TypeError` if `node` is not an instance of `Node`.\n *\n * ```js\n * var Node = require('snapdragon-node');\n * var node = new Node({\n * type: 'foo',\n * nodes: [\n * new Node({type: 'bar'}),\n * new Node({type: 'baz'})\n * ]\n * });\n * console.log(utils.hasType(node, 'xyz')); // false\n * console.log(utils.hasType(node, 'baz')); // true\n * ```\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @param {String} `type`\n * @return {Boolean}\n * @api public\n */\n\nutils.hasType = function(node, type) {\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n if (!Array.isArray(node.nodes)) return false;\n for (var i = 0; i < node.nodes.length; i++) {\n if (utils.isType(node.nodes[i], type)) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * Returns the first node from `node.nodes` of the given `type`\n *\n * ```js\n * var node = new Node({\n * type: 'foo',\n * nodes: [\n * new Node({type: 'text', val: 'abc'}),\n * new Node({type: 'text', val: 'xyz'})\n * ]\n * });\n *\n * var textNode = utils.firstOfType(node.nodes, 'text');\n * console.log(textNode.val);\n * //=> 'abc'\n * ```\n * @param {Array} `nodes`\n * @param {String} `type`\n * @return {Object|undefined} Returns the first matching node or undefined.\n * @api public\n */\n\nutils.firstOfType = function(nodes, type) {\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n if (utils.isType(node, type)) {\n return node;\n }\n }\n};\n\n/**\n * Returns the node at the specified index, or the first node of the\n * given `type` from `node.nodes`.\n *\n * ```js\n * var node = new Node({\n * type: 'foo',\n * nodes: [\n * new Node({type: 'text', val: 'abc'}),\n * new Node({type: 'text', val: 'xyz'})\n * ]\n * });\n *\n * var nodeOne = utils.findNode(node.nodes, 'text');\n * console.log(nodeOne.val);\n * //=> 'abc'\n *\n * var nodeTwo = utils.findNode(node.nodes, 1);\n * console.log(nodeTwo.val);\n * //=> 'xyz'\n * ```\n *\n * @param {Array} `nodes`\n * @param {String|Number} `type` Node type or index.\n * @return {Object} Returns a node or undefined.\n * @api public\n */\n\nutils.findNode = function(nodes, type) {\n if (!Array.isArray(nodes)) {\n return null;\n }\n if (typeof type === 'number') {\n return nodes[type];\n }\n return utils.firstOfType(nodes, type);\n};\n\n/**\n * Returns true if the given node is an \"*.open\" node.\n *\n * ```js\n * var Node = require('snapdragon-node');\n * var brace = new Node({type: 'brace'});\n * var open = new Node({type: 'brace.open'});\n * var close = new Node({type: 'brace.close'});\n *\n * console.log(utils.isOpen(brace)); // false\n * console.log(utils.isOpen(open)); // true\n * console.log(utils.isOpen(close)); // false\n * ```\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @return {Boolean}\n * @api public\n */\n\nutils.isOpen = function(node) {\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n return node.type.slice(-5) === '.open';\n};\n\n/**\n * Returns true if the given node is a \"*.close\" node.\n *\n * ```js\n * var Node = require('snapdragon-node');\n * var brace = new Node({type: 'brace'});\n * var open = new Node({type: 'brace.open'});\n * var close = new Node({type: 'brace.close'});\n *\n * console.log(utils.isClose(brace)); // false\n * console.log(utils.isClose(open)); // false\n * console.log(utils.isClose(close)); // true\n * ```\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @return {Boolean}\n * @api public\n */\n\nutils.isClose = function(node) {\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n return node.type.slice(-6) === '.close';\n};\n\n/**\n * Returns true if `node.nodes` **has** an `.open` node\n *\n * ```js\n * var Node = require('snapdragon-node');\n * var brace = new Node({\n * type: 'brace',\n * nodes: []\n * });\n *\n * var open = new Node({type: 'brace.open'});\n * console.log(utils.hasOpen(brace)); // false\n *\n * brace.pushNode(open);\n * console.log(utils.hasOpen(brace)); // true\n * ```\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @return {Boolean}\n * @api public\n */\n\nutils.hasOpen = function(node) {\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n var first = node.first || node.nodes ? node.nodes[0] : null;\n if (utils.isNode(first)) {\n return first.type === node.type + '.open';\n }\n return false;\n};\n\n/**\n * Returns true if `node.nodes` **has** a `.close` node\n *\n * ```js\n * var Node = require('snapdragon-node');\n * var brace = new Node({\n * type: 'brace',\n * nodes: []\n * });\n *\n * var close = new Node({type: 'brace.close'});\n * console.log(utils.hasClose(brace)); // false\n *\n * brace.pushNode(close);\n * console.log(utils.hasClose(brace)); // true\n * ```\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @return {Boolean}\n * @api public\n */\n\nutils.hasClose = function(node) {\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n var last = node.last || node.nodes ? node.nodes[node.nodes.length - 1] : null;\n if (utils.isNode(last)) {\n return last.type === node.type + '.close';\n }\n return false;\n};\n\n/**\n * Returns true if `node.nodes` has both `.open` and `.close` nodes\n *\n * ```js\n * var Node = require('snapdragon-node');\n * var brace = new Node({\n * type: 'brace',\n * nodes: []\n * });\n *\n * var open = new Node({type: 'brace.open'});\n * var close = new Node({type: 'brace.close'});\n * console.log(utils.hasOpen(brace)); // false\n * console.log(utils.hasClose(brace)); // false\n *\n * brace.pushNode(open);\n * brace.pushNode(close);\n * console.log(utils.hasOpen(brace)); // true\n * console.log(utils.hasClose(brace)); // true\n * ```\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @return {Boolean}\n * @api public\n */\n\nutils.hasOpenAndClose = function(node) {\n return utils.hasOpen(node) && utils.hasClose(node);\n};\n\n/**\n * Push the given `node` onto the `state.inside` array for the\n * given type. This array is used as a specialized \"stack\" for\n * only the given `node.type`.\n *\n * ```js\n * var state = { inside: {}};\n * var node = new Node({type: 'brace'});\n * utils.addType(state, node);\n * console.log(state.inside);\n * //=> { brace: [{type: 'brace'}] }\n * ```\n * @param {Object} `state` The `compiler.state` object or custom state object.\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @return {Array} Returns the `state.inside` stack for the given type.\n * @api public\n */\n\nutils.addType = function(state, node) {\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n assert(isObject(state), 'expected state to be an object');\n\n var type = node.parent\n ? node.parent.type\n : node.type.replace(/\\.open$/, '');\n\n if (!state.hasOwnProperty('inside')) {\n state.inside = {};\n }\n if (!state.inside.hasOwnProperty(type)) {\n state.inside[type] = [];\n }\n\n var arr = state.inside[type];\n arr.push(node);\n return arr;\n};\n\n/**\n * Remove the given `node` from the `state.inside` array for the\n * given type. This array is used as a specialized \"stack\" for\n * only the given `node.type`.\n *\n * ```js\n * var state = { inside: {}};\n * var node = new Node({type: 'brace'});\n * utils.addType(state, node);\n * console.log(state.inside);\n * //=> { brace: [{type: 'brace'}] }\n * utils.removeType(state, node);\n * //=> { brace: [] }\n * ```\n * @param {Object} `state` The `compiler.state` object or custom state object.\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @return {Array} Returns the `state.inside` stack for the given type.\n * @api public\n */\n\nutils.removeType = function(state, node) {\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n assert(isObject(state), 'expected state to be an object');\n\n var type = node.parent\n ? node.parent.type\n : node.type.replace(/\\.close$/, '');\n\n if (state.inside.hasOwnProperty(type)) {\n return state.inside[type].pop();\n }\n};\n\n/**\n * Returns true if `node.val` is an empty string, or `node.nodes` does\n * not contain any non-empty text nodes.\n *\n * ```js\n * var node = new Node({type: 'text'});\n * utils.isEmpty(node); //=> true\n * node.val = 'foo';\n * utils.isEmpty(node); //=> false\n * ```\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @param {Function} `fn`\n * @return {Boolean}\n * @api public\n */\n\nutils.isEmpty = function(node, fn) {\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n\n if (!Array.isArray(node.nodes)) {\n if (node.type !== 'text') {\n return true;\n }\n if (typeof fn === 'function') {\n return fn(node, node.parent);\n }\n return !utils.trim(node.val);\n }\n\n for (var i = 0; i < node.nodes.length; i++) {\n var child = node.nodes[i];\n if (utils.isOpen(child) || utils.isClose(child)) {\n continue;\n }\n if (!utils.isEmpty(child, fn)) {\n return false;\n }\n }\n\n return true;\n};\n\n/**\n * Returns true if the `state.inside` stack for the given type exists\n * and has one or more nodes on it.\n *\n * ```js\n * var state = { inside: {}};\n * var node = new Node({type: 'brace'});\n * console.log(utils.isInsideType(state, 'brace')); //=> false\n * utils.addType(state, node);\n * console.log(utils.isInsideType(state, 'brace')); //=> true\n * utils.removeType(state, node);\n * console.log(utils.isInsideType(state, 'brace')); //=> false\n * ```\n * @param {Object} `state`\n * @param {String} `type`\n * @return {Boolean}\n * @api public\n */\n\nutils.isInsideType = function(state, type) {\n assert(isObject(state), 'expected state to be an object');\n assert(isString(type), 'expected type to be a string');\n\n if (!state.hasOwnProperty('inside')) {\n return false;\n }\n\n if (!state.inside.hasOwnProperty(type)) {\n return false;\n }\n\n return state.inside[type].length > 0;\n};\n\n/**\n * Returns true if `node` is either a child or grand-child of the given `type`,\n * or `state.inside[type]` is a non-empty array.\n *\n * ```js\n * var state = { inside: {}};\n * var node = new Node({type: 'brace'});\n * var open = new Node({type: 'brace.open'});\n * console.log(utils.isInside(state, open, 'brace')); //=> false\n * utils.pushNode(node, open);\n * console.log(utils.isInside(state, open, 'brace')); //=> true\n * ```\n * @param {Object} `state` Either the `compiler.state` object, if it exists, or a user-supplied state object.\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @param {String} `type` The `node.type` to check for.\n * @return {Boolean}\n * @api public\n */\n\nutils.isInside = function(state, node, type) {\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n assert(isObject(state), 'expected state to be an object');\n\n if (Array.isArray(type)) {\n for (var i = 0; i < type.length; i++) {\n if (utils.isInside(state, node, type[i])) {\n return true;\n }\n }\n return false;\n }\n\n var parent = node.parent;\n if (typeof type === 'string') {\n return (parent && parent.type === type) || utils.isInsideType(state, type);\n }\n\n if (typeOf(type) === 'regexp') {\n if (parent && parent.type && type.test(parent.type)) {\n return true;\n }\n\n var keys = Object.keys(state.inside);\n var len = keys.length;\n var idx = -1;\n while (++idx < len) {\n var key = keys[idx];\n var val = state.inside[key];\n\n if (Array.isArray(val) && val.length !== 0 && type.test(key)) {\n return true;\n }\n }\n }\n return false;\n};\n\n/**\n * Get the last `n` element from the given `array`. Used for getting\n * a node from `node.nodes.`\n *\n * @param {Array} `array`\n * @param {Number} `n`\n * @return {undefined}\n * @api public\n */\n\nutils.last = function(arr, n) {\n return arr[arr.length - (n || 1)];\n};\n\n/**\n * Cast the given `val` to an array.\n *\n * ```js\n * console.log(utils.arrayify(''));\n * //=> []\n * console.log(utils.arrayify('foo'));\n * //=> ['foo']\n * console.log(utils.arrayify(['foo']));\n * //=> ['foo']\n * ```\n * @param {any} `val`\n * @return {Array}\n * @api public\n */\n\nutils.arrayify = function(val) {\n if (typeof val === 'string' && val !== '') {\n return [val];\n }\n if (!Array.isArray(val)) {\n return [];\n }\n return val;\n};\n\n/**\n * Convert the given `val` to a string by joining with `,`. Useful\n * for creating a cheerio/CSS/DOM-style selector from a list of strings.\n *\n * @param {any} `val`\n * @return {Array}\n * @api public\n */\n\nutils.stringify = function(val) {\n return utils.arrayify(val).join(',');\n};\n\n/**\n * Ensure that the given value is a string and call `.trim()` on it,\n * or return an empty string.\n *\n * @param {String} `str`\n * @return {String}\n * @api public\n */\n\nutils.trim = function(str) {\n return typeof str === 'string' ? str.trim() : '';\n};\n\n/**\n * Return true if val is an object\n */\n\nfunction isObject(val) {\n return typeOf(val) === 'object';\n}\n\n/**\n * Return true if val is a string\n */\n\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Return true if val is a function\n */\n\nfunction isFunction(val) {\n return typeof val === 'function';\n}\n\n/**\n * Return true if val is an array\n */\n\nfunction isArray(val) {\n return Array.isArray(val);\n}\n\n/**\n * Shim to ensure the `.append` methods work with any version of snapdragon\n */\n\nfunction append(compiler, val, node) {\n if (typeof compiler.append !== 'function') {\n return compiler.emit(val, node);\n }\n return compiler.append(val, node);\n}\n\n/**\n * Simplified assertion. Throws an error is `val` is falsey.\n */\n\nfunction assert(val, message) {\n if (!val) throw new Error(message);\n}\n","'use strict';\n\nvar Base = require('base');\nvar define = require('define-property');\nvar Compiler = require('./lib/compiler');\nvar Parser = require('./lib/parser');\nvar utils = require('./lib/utils');\nvar regexCache = {};\nvar cache = {};\n\n/**\n * Create a new instance of `Snapdragon` with the given `options`.\n *\n * ```js\n * var snapdragon = new Snapdragon();\n * ```\n *\n * @param {Object} `options`\n * @api public\n */\n\nfunction Snapdragon(options) {\n Base.call(this, null, options);\n this.options = utils.extend({source: 'string'}, this.options);\n this.compiler = new Compiler(this.options);\n this.parser = new Parser(this.options);\n\n Object.defineProperty(this, 'compilers', {\n get: function() {\n return this.compiler.compilers;\n }\n });\n\n Object.defineProperty(this, 'parsers', {\n get: function() {\n return this.parser.parsers;\n }\n });\n\n Object.defineProperty(this, 'regex', {\n get: function() {\n return this.parser.regex;\n }\n });\n}\n\n/**\n * Inherit Base\n */\n\nBase.extend(Snapdragon);\n\n/**\n * Add a parser to `snapdragon.parsers` for capturing the given `type` using\n * the specified regex or parser function. A function is useful if you need\n * to customize how the token is created and/or have access to the parser\n * instance to check options, etc.\n *\n * ```js\n * snapdragon\n * .capture('slash', /^\\//)\n * .capture('dot', function() {\n * var pos = this.position();\n * var m = this.match(/^\\./);\n * if (!m) return;\n * return pos({\n * type: 'dot',\n * val: m[0]\n * });\n * });\n * ```\n * @param {String} `type`\n * @param {RegExp|Function} `regex`\n * @return {Object} Returns the parser instance for chaining\n * @api public\n */\n\nSnapdragon.prototype.capture = function() {\n return this.parser.capture.apply(this.parser, arguments);\n};\n\n/**\n * Register a plugin `fn`.\n *\n * ```js\n * var snapdragon = new Snapdgragon([options]);\n * snapdragon.use(function() {\n * console.log(this); //<= snapdragon instance\n * console.log(this.parser); //<= parser instance\n * console.log(this.compiler); //<= compiler instance\n * });\n * ```\n * @param {Object} `fn`\n * @api public\n */\n\nSnapdragon.prototype.use = function(fn) {\n fn.call(this, this);\n return this;\n};\n\n/**\n * Parse the given `str`.\n *\n * ```js\n * var snapdragon = new Snapdgragon([options]);\n * // register parsers\n * snapdragon.parser.use(function() {});\n *\n * // parse\n * var ast = snapdragon.parse('foo/bar');\n * console.log(ast);\n * ```\n * @param {String} `str`\n * @param {Object} `options` Set `options.sourcemap` to true to enable source maps.\n * @return {Object} Returns an AST.\n * @api public\n */\n\nSnapdragon.prototype.parse = function(str, options) {\n this.options = utils.extend({}, this.options, options);\n var parsed = this.parser.parse(str, this.options);\n\n // add non-enumerable parser reference\n define(parsed, 'parser', this.parser);\n return parsed;\n};\n\n/**\n * Compile the given `AST`.\n *\n * ```js\n * var snapdragon = new Snapdgragon([options]);\n * // register plugins\n * snapdragon.use(function() {});\n * // register parser plugins\n * snapdragon.parser.use(function() {});\n * // register compiler plugins\n * snapdragon.compiler.use(function() {});\n *\n * // parse\n * var ast = snapdragon.parse('foo/bar');\n *\n * // compile\n * var res = snapdragon.compile(ast);\n * console.log(res.output);\n * ```\n * @param {Object} `ast`\n * @param {Object} `options`\n * @return {Object} Returns an object with an `output` property with the rendered string.\n * @api public\n */\n\nSnapdragon.prototype.compile = function(ast, options) {\n this.options = utils.extend({}, this.options, options);\n var compiled = this.compiler.compile(ast, this.options);\n\n // add non-enumerable compiler reference\n define(compiled, 'compiler', this.compiler);\n return compiled;\n};\n\n/**\n * Expose `Snapdragon`\n */\n\nmodule.exports = Snapdragon;\n\n/**\n * Expose `Parser` and `Compiler`\n */\n\nmodule.exports.Compiler = Compiler;\nmodule.exports.Parser = Parser;\n","'use strict';\n\nvar use = require('use');\nvar define = require('define-property');\nvar debug = require('debug')('snapdragon:compiler');\nvar utils = require('./utils');\n\n/**\n * Create a new `Compiler` with the given `options`.\n * @param {Object} `options`\n */\n\nfunction Compiler(options, state) {\n debug('initializing', __filename);\n this.options = utils.extend({source: 'string'}, options);\n this.state = state || {};\n this.compilers = {};\n this.output = '';\n this.set('eos', function(node) {\n return this.emit(node.val, node);\n });\n this.set('noop', function(node) {\n return this.emit(node.val, node);\n });\n this.set('bos', function(node) {\n return this.emit(node.val, node);\n });\n use(this);\n}\n\n/**\n * Prototype methods\n */\n\nCompiler.prototype = {\n\n /**\n * Throw an error message with details including the cursor position.\n * @param {String} `msg` Message to use in the Error.\n */\n\n error: function(msg, node) {\n var pos = node.position || {start: {column: 0}};\n var message = this.options.source + ' column:' + pos.start.column + ': ' + msg;\n\n var err = new Error(message);\n err.reason = msg;\n err.column = pos.start.column;\n err.source = this.pattern;\n\n if (this.options.silent) {\n this.errors.push(err);\n } else {\n throw err;\n }\n },\n\n /**\n * Define a non-enumberable property on the `Compiler` instance.\n *\n * ```js\n * compiler.define('foo', 'bar');\n * ```\n * @name .define\n * @param {String} `key` propery name\n * @param {any} `val` property value\n * @return {Object} Returns the Compiler instance for chaining.\n * @api public\n */\n\n define: function(key, val) {\n define(this, key, val);\n return this;\n },\n\n /**\n * Emit `node.val`\n */\n\n emit: function(str, node) {\n this.output += str;\n return str;\n },\n\n /**\n * Add a compiler `fn` with the given `name`\n */\n\n set: function(name, fn) {\n this.compilers[name] = fn;\n return this;\n },\n\n /**\n * Get compiler `name`.\n */\n\n get: function(name) {\n return this.compilers[name];\n },\n\n /**\n * Get the previous AST node.\n */\n\n prev: function(n) {\n return this.ast.nodes[this.idx - (n || 1)] || { type: 'bos', val: '' };\n },\n\n /**\n * Get the next AST node.\n */\n\n next: function(n) {\n return this.ast.nodes[this.idx + (n || 1)] || { type: 'eos', val: '' };\n },\n\n /**\n * Visit `node`.\n */\n\n visit: function(node, nodes, i) {\n var fn = this.compilers[node.type];\n this.idx = i;\n\n if (typeof fn !== 'function') {\n throw this.error('compiler \"' + node.type + '\" is not registered', node);\n }\n return fn.call(this, node, nodes, i);\n },\n\n /**\n * Map visit over array of `nodes`.\n */\n\n mapVisit: function(nodes) {\n if (!Array.isArray(nodes)) {\n throw new TypeError('expected an array');\n }\n var len = nodes.length;\n var idx = -1;\n while (++idx < len) {\n this.visit(nodes[idx], nodes, idx);\n }\n return this;\n },\n\n /**\n * Compile `ast`.\n */\n\n compile: function(ast, options) {\n var opts = utils.extend({}, this.options, options);\n this.ast = ast;\n this.parsingErrors = this.ast.errors;\n this.output = '';\n\n // source map support\n if (opts.sourcemap) {\n var sourcemaps = require('./source-maps');\n sourcemaps(this);\n this.mapVisit(this.ast.nodes);\n this.applySourceMaps();\n this.map = opts.sourcemap === 'generator' ? this.map : this.map.toJSON();\n return this;\n }\n\n this.mapVisit(this.ast.nodes);\n return this;\n }\n};\n\n/**\n * Expose `Compiler`\n */\n\nmodule.exports = Compiler;\n","'use strict';\n\nvar use = require('use');\nvar util = require('util');\nvar Cache = require('map-cache');\nvar define = require('define-property');\nvar debug = require('debug')('snapdragon:parser');\nvar Position = require('./position');\nvar utils = require('./utils');\n\n/**\n * Create a new `Parser` with the given `input` and `options`.\n * @param {String} `input`\n * @param {Object} `options`\n * @api public\n */\n\nfunction Parser(options) {\n debug('initializing', __filename);\n this.options = utils.extend({source: 'string'}, options);\n this.init(this.options);\n use(this);\n}\n\n/**\n * Prototype methods\n */\n\nParser.prototype = {\n constructor: Parser,\n\n init: function(options) {\n this.orig = '';\n this.input = '';\n this.parsed = '';\n\n this.column = 1;\n this.line = 1;\n\n this.regex = new Cache();\n this.errors = this.errors || [];\n this.parsers = this.parsers || {};\n this.types = this.types || [];\n this.sets = this.sets || {};\n this.fns = this.fns || [];\n this.currentType = 'root';\n\n var pos = this.position();\n this.bos = pos({type: 'bos', val: ''});\n\n this.ast = {\n type: 'root',\n errors: this.errors,\n nodes: [this.bos]\n };\n\n define(this.bos, 'parent', this.ast);\n this.nodes = [this.ast];\n\n this.count = 0;\n this.setCount = 0;\n this.stack = [];\n },\n\n /**\n * Throw a formatted error with the cursor column and `msg`.\n * @param {String} `msg` Message to use in the Error.\n */\n\n error: function(msg, node) {\n var pos = node.position || {start: {column: 0, line: 0}};\n var line = pos.start.line;\n var column = pos.start.column;\n var source = this.options.source;\n\n var message = source + ' <line:' + line + ' column:' + column + '>: ' + msg;\n var err = new Error(message);\n err.source = source;\n err.reason = msg;\n err.pos = pos;\n\n if (this.options.silent) {\n this.errors.push(err);\n } else {\n throw err;\n }\n },\n\n /**\n * Define a non-enumberable property on the `Parser` instance.\n *\n * ```js\n * parser.define('foo', 'bar');\n * ```\n * @name .define\n * @param {String} `key` propery name\n * @param {any} `val` property value\n * @return {Object} Returns the Parser instance for chaining.\n * @api public\n */\n\n define: function(key, val) {\n define(this, key, val);\n return this;\n },\n\n /**\n * Mark position and patch `node.position`.\n */\n\n position: function() {\n var start = { line: this.line, column: this.column };\n var self = this;\n\n return function(node) {\n define(node, 'position', new Position(start, self));\n return node;\n };\n },\n\n /**\n * Set parser `name` with the given `fn`\n * @param {String} `name`\n * @param {Function} `fn`\n * @api public\n */\n\n set: function(type, fn) {\n if (this.types.indexOf(type) === -1) {\n this.types.push(type);\n }\n this.parsers[type] = fn.bind(this);\n return this;\n },\n\n /**\n * Get parser `name`\n * @param {String} `name`\n * @api public\n */\n\n get: function(name) {\n return this.parsers[name];\n },\n\n /**\n * Push a `token` onto the `type` stack.\n *\n * @param {String} `type`\n * @return {Object} `token`\n * @api public\n */\n\n push: function(type, token) {\n this.sets[type] = this.sets[type] || [];\n this.count++;\n this.stack.push(token);\n return this.sets[type].push(token);\n },\n\n /**\n * Pop a token off of the `type` stack\n * @param {String} `type`\n * @returns {Object} Returns a token\n * @api public\n */\n\n pop: function(type) {\n this.sets[type] = this.sets[type] || [];\n this.count--;\n this.stack.pop();\n return this.sets[type].pop();\n },\n\n /**\n * Return true if inside a `stack` node. Types are `braces`, `parens` or `brackets`.\n *\n * @param {String} `type`\n * @return {Boolean}\n * @api public\n */\n\n isInside: function(type) {\n this.sets[type] = this.sets[type] || [];\n return this.sets[type].length > 0;\n },\n\n /**\n * Return true if `node` is the given `type`.\n *\n * ```js\n * parser.isType(node, 'brace');\n * ```\n * @param {Object} `node`\n * @param {String} `type`\n * @return {Boolean}\n * @api public\n */\n\n isType: function(node, type) {\n return node && node.type === type;\n },\n\n /**\n * Get the previous AST node\n * @return {Object}\n */\n\n prev: function(n) {\n return this.stack.length > 0\n ? utils.last(this.stack, n)\n : utils.last(this.nodes, n);\n },\n\n /**\n * Update line and column based on `str`.\n */\n\n consume: function(len) {\n this.input = this.input.substr(len);\n },\n\n /**\n * Update column based on `str`.\n */\n\n updatePosition: function(str, len) {\n var lines = str.match(/\\n/g);\n if (lines) this.line += lines.length;\n var i = str.lastIndexOf('\\n');\n this.column = ~i ? len - i : this.column + len;\n this.parsed += str;\n this.consume(len);\n },\n\n /**\n * Match `regex`, return captures, and update the cursor position by `match[0]` length.\n * @param {RegExp} `regex`\n * @return {Object}\n */\n\n match: function(regex) {\n var m = regex.exec(this.input);\n if (m) {\n this.updatePosition(m[0], m[0].length);\n return m;\n }\n },\n\n /**\n * Capture `type` with the given regex.\n * @param {String} `type`\n * @param {RegExp} `regex`\n * @return {Function}\n */\n\n capture: function(type, regex) {\n if (typeof regex === 'function') {\n return this.set.apply(this, arguments);\n }\n\n this.regex.set(type, regex);\n this.set(type, function() {\n var parsed = this.parsed;\n var pos = this.position();\n var m = this.match(regex);\n if (!m || !m[0]) return;\n\n var prev = this.prev();\n var node = pos({\n type: type,\n val: m[0],\n parsed: parsed,\n rest: this.input\n });\n\n if (m[1]) {\n node.inner = m[1];\n }\n\n define(node, 'inside', this.stack.length > 0);\n define(node, 'parent', prev);\n prev.nodes.push(node);\n }.bind(this));\n return this;\n },\n\n /**\n * Create a parser with open and close for parens,\n * brackets or braces\n */\n\n capturePair: function(type, openRegex, closeRegex, fn) {\n this.sets[type] = this.sets[type] || [];\n\n /**\n * Open\n */\n\n this.set(type + '.open', function() {\n var parsed = this.parsed;\n var pos = this.position();\n var m = this.match(openRegex);\n if (!m || !m[0]) return;\n\n var val = m[0];\n this.setCount++;\n this.specialChars = true;\n var open = pos({\n type: type + '.open',\n val: val,\n rest: this.input\n });\n\n if (typeof m[1] !== 'undefined') {\n open.inner = m[1];\n }\n\n var prev = this.prev();\n var node = pos({\n type: type,\n nodes: [open]\n });\n\n define(node, 'rest', this.input);\n define(node, 'parsed', parsed);\n define(node, 'prefix', m[1]);\n define(node, 'parent', prev);\n define(open, 'parent', node);\n\n if (typeof fn === 'function') {\n fn.call(this, open, node);\n }\n\n this.push(type, node);\n prev.nodes.push(node);\n });\n\n /**\n * Close\n */\n\n this.set(type + '.close', function() {\n var pos = this.position();\n var m = this.match(closeRegex);\n if (!m || !m[0]) return;\n\n var parent = this.pop(type);\n var node = pos({\n type: type + '.close',\n rest: this.input,\n suffix: m[1],\n val: m[0]\n });\n\n if (!this.isType(parent, type)) {\n if (this.options.strict) {\n throw new Error('missing opening \"' + type + '\"');\n }\n\n this.setCount--;\n node.escaped = true;\n return node;\n }\n\n if (node.suffix === '\\\\') {\n parent.escaped = true;\n node.escaped = true;\n }\n\n parent.nodes.push(node);\n define(node, 'parent', parent);\n });\n\n return this;\n },\n\n /**\n * Capture end-of-string\n */\n\n eos: function() {\n var pos = this.position();\n if (this.input) return;\n var prev = this.prev();\n\n while (prev.type !== 'root' && !prev.visited) {\n if (this.options.strict === true) {\n throw new SyntaxError('invalid syntax:' + util.inspect(prev, null, 2));\n }\n\n if (!hasDelims(prev)) {\n prev.parent.escaped = true;\n prev.escaped = true;\n }\n\n visit(prev, function(node) {\n if (!hasDelims(node.parent)) {\n node.parent.escaped = true;\n node.escaped = true;\n }\n });\n\n prev = prev.parent;\n }\n\n var tok = pos({\n type: 'eos',\n val: this.append || ''\n });\n\n define(tok, 'parent', this.ast);\n return tok;\n },\n\n /**\n * Run parsers to advance the cursor position\n */\n\n next: function() {\n var parsed = this.parsed;\n var len = this.types.length;\n var idx = -1;\n var tok;\n\n while (++idx < len) {\n if ((tok = this.parsers[this.types[idx]].call(this))) {\n define(tok, 'rest', this.input);\n define(tok, 'parsed', parsed);\n this.last = tok;\n return tok;\n }\n }\n },\n\n /**\n * Parse the given string.\n * @return {Array}\n */\n\n parse: function(input) {\n if (typeof input !== 'string') {\n throw new TypeError('expected a string');\n }\n\n this.init(this.options);\n this.orig = input;\n this.input = input;\n var self = this;\n\n function parse() {\n // check input before calling `.next()`\n input = self.input;\n\n // get the next AST ndoe\n var node = self.next();\n if (node) {\n var prev = self.prev();\n if (prev) {\n define(node, 'parent', prev);\n if (prev.nodes) {\n prev.nodes.push(node);\n }\n }\n\n if (self.sets.hasOwnProperty(prev.type)) {\n self.currentType = prev.type;\n }\n }\n\n // if we got here but input is not changed, throw an error\n if (self.input && input === self.input) {\n throw new Error('no parsers registered for: \"' + self.input.slice(0, 5) + '\"');\n }\n }\n\n while (this.input) parse();\n if (this.stack.length && this.options.strict) {\n var node = this.stack.pop();\n throw this.error('missing opening ' + node.type + ': \"' + this.orig + '\"');\n }\n\n var eos = this.eos();\n var tok = this.prev();\n if (tok.type !== 'eos') {\n this.ast.nodes.push(eos);\n }\n\n return this.ast;\n }\n};\n\n/**\n * Visit `node` with the given `fn`\n */\n\nfunction visit(node, fn) {\n if (!node.visited) {\n define(node, 'visited', true);\n return node.nodes ? mapVisit(node.nodes, fn) : fn(node);\n }\n return node;\n}\n\n/**\n * Map visit over array of `nodes`.\n */\n\nfunction mapVisit(nodes, fn) {\n var len = nodes.length;\n var idx = -1;\n while (++idx < len) {\n visit(nodes[idx], fn);\n }\n}\n\nfunction hasOpen(node) {\n return node.nodes && node.nodes[0].type === (node.type + '.open');\n}\n\nfunction hasClose(node) {\n return node.nodes && utils.last(node.nodes).type === (node.type + '.close');\n}\n\nfunction hasDelims(node) {\n return hasOpen(node) && hasClose(node);\n}\n\n/**\n * Expose `Parser`\n */\n\nmodule.exports = Parser;\n","'use strict';\n\nvar define = require('define-property');\n\n/**\n * Store position for a node\n */\n\nmodule.exports = function Position(start, parser) {\n this.start = start;\n this.end = { line: parser.line, column: parser.column };\n define(this, 'content', parser.orig);\n define(this, 'source', parser.options.source);\n};\n","'use strict';\n\nvar fs = require('fs');\nvar path = require('path');\nvar define = require('define-property');\nvar utils = require('./utils');\n\n/**\n * Expose `mixin()`.\n * This code is based on `source-maps-support.js` in reworkcss/css\n * https://github.com/reworkcss/css/blob/master/lib/stringify/source-map-support.js\n * Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca>\n */\n\nmodule.exports = mixin;\n\n/**\n * Mixin source map support into `compiler`.\n *\n * @param {Object} `compiler`\n * @api public\n */\n\nfunction mixin(compiler) {\n define(compiler, '_comment', compiler.comment);\n compiler.map = new utils.SourceMap.SourceMapGenerator();\n compiler.position = { line: 1, column: 1 };\n compiler.content = {};\n compiler.files = {};\n\n for (var key in exports) {\n define(compiler, key, exports[key]);\n }\n}\n\n/**\n * Update position.\n *\n * @param {String} str\n */\n\nexports.updatePosition = function(str) {\n var lines = str.match(/\\n/g);\n if (lines) this.position.line += lines.length;\n var i = str.lastIndexOf('\\n');\n this.position.column = ~i ? str.length - i : this.position.column + str.length;\n};\n\n/**\n * Emit `str` with `position`.\n *\n * @param {String} str\n * @param {Object} [pos]\n * @return {String}\n */\n\nexports.emit = function(str, node) {\n var position = node.position || {};\n var source = position.source;\n if (source) {\n if (position.filepath) {\n source = utils.unixify(position.filepath);\n }\n\n this.map.addMapping({\n source: source,\n generated: {\n line: this.position.line,\n column: Math.max(this.position.column - 1, 0)\n },\n original: {\n line: position.start.line,\n column: position.start.column - 1\n }\n });\n\n if (position.content) {\n this.addContent(source, position);\n }\n if (position.filepath) {\n this.addFile(source, position);\n }\n\n this.updatePosition(str);\n this.output += str;\n }\n return str;\n};\n\n/**\n * Adds a file to the source map output if it has not already been added\n * @param {String} `file`\n * @param {Object} `pos`\n */\n\nexports.addFile = function(file, position) {\n if (typeof position.content !== 'string') return;\n if (Object.prototype.hasOwnProperty.call(this.files, file)) return;\n this.files[file] = position.content;\n};\n\n/**\n * Adds a content source to the source map output if it has not already been added\n * @param {String} `source`\n * @param {Object} `position`\n */\n\nexports.addContent = function(source, position) {\n if (typeof position.content !== 'string') return;\n if (Object.prototype.hasOwnProperty.call(this.content, source)) return;\n this.map.setSourceContent(source, position.content);\n};\n\n/**\n * Applies any original source maps to the output and embeds the source file\n * contents in the source map.\n */\n\nexports.applySourceMaps = function() {\n Object.keys(this.files).forEach(function(file) {\n var content = this.files[file];\n this.map.setSourceContent(file, content);\n\n if (this.options.inputSourcemaps === true) {\n var originalMap = utils.sourceMapResolve.resolveSync(content, file, fs.readFileSync);\n if (originalMap) {\n var map = new utils.SourceMap.SourceMapConsumer(originalMap.map);\n var relativeTo = originalMap.sourcesRelativeTo;\n this.map.applySourceMap(map, file, utils.unixify(path.dirname(relativeTo)));\n }\n }\n }, this);\n};\n\n/**\n * Process comments, drops sourceMap comments.\n * @param {Object} node\n */\n\nexports.comment = function(node) {\n if (/^# sourceMappingURL=/.test(node.comment)) {\n return this.emit('', node.position);\n }\n return this._comment(node);\n};\n","'use strict';\n\n/**\n * Module dependencies\n */\n\nexports.extend = require('extend-shallow');\nexports.SourceMap = require('source-map');\nexports.sourceMapResolve = require('source-map-resolve');\n\n/**\n * Convert backslash in the given string to forward slashes\n */\n\nexports.unixify = function(fp) {\n return fp.split(/\\\\+/).join('/');\n};\n\n/**\n * Return true if `val` is a non-empty string\n *\n * @param {String} `str`\n * @return {Boolean}\n */\n\nexports.isString = function(str) {\n return str && typeof str === 'string';\n};\n\n/**\n * Cast `val` to an array\n * @return {Array}\n */\n\nexports.arrayify = function(val) {\n if (typeof val === 'string') return [val];\n return val ? (Array.isArray(val) ? val : [val]) : [];\n};\n\n/**\n * Get the last `n` element from the given `array`\n * @param {Array} `array`\n * @return {*}\n */\n\nexports.last = function(arr, n) {\n return arr[arr.length - (n || 1)];\n};\n","/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n 'lightseagreen',\n 'forestgreen',\n 'goldenrod',\n 'dodgerblue',\n 'darkorchid',\n 'crimson'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n return debug;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (var i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\nvar hasNativeMap = typeof Map !== \"undefined\";\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = hasNativeMap ? new Map() : Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n if (hasNativeMap) {\n this._set.set(aStr, idx);\n } else {\n this._set[sStr] = idx;\n }\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n if (hasNativeMap) {\n return this._set.has(aStr);\n } else {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n }\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n if (hasNativeMap) {\n var idx = this._set.get(aStr);\n if (idx >= 0) {\n return idx;\n }\n } else {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n }\n\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return (charCode - bigA);\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return (charCode - littleA + littleOffset);\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return (charCode - zero + numberOffset);\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n }\n else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n }\n else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n\n return index;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n // Optimized for most common case\n var lineA = mappingA.generatedLine;\n var lineB = mappingB.generatedLine;\n var columnA = mappingA.generatedColumn;\n var columnB = mappingB.generatedColumn;\n return lineB > lineA || lineB == lineA && columnB >= columnA ||\n util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n this._array = [];\n this._sorted = true;\n // Serves as infimum\n this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n function MappingList_forEach(aCallback, aThisArg) {\n this._array.forEach(aCallback, aThisArg);\n };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n if (generatedPositionAfter(this._last, aMapping)) {\n this._last = aMapping;\n this._array.push(aMapping);\n } else {\n this._sorted = false;\n this._array.push(aMapping);\n }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n if (!this._sorted) {\n this._array.sort(util.compareByGeneratedPositionsInflated);\n this._sorted = true;\n }\n return this._array;\n};\n\nexports.MappingList = MappingList;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\nfunction swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n return sourceMap.sections != null\n ? new IndexedSourceMapConsumer(sourceMap)\n : new BasicSourceMapConsumer(sourceMap);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n// {\n// generatedLine: The line number in the generated code,\n// generatedColumn: The column number in the generated code,\n// source: The path to the original source file that generated this\n// chunk of code,\n// originalLine: The line number in the original source that\n// corresponds to this chunk of generated code,\n// originalColumn: The column number in the original source that\n// corresponds to this chunk of generated code,\n// name: The name of the original symbol which generated this chunk of\n// code.\n// }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n if (source != null && sourceRoot != null) {\n source = util.join(sourceRoot, source);\n }\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: Optional. the column number in the original source.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n\n if (this.sourceRoot != null) {\n needle.source = util.relative(this.sourceRoot, needle.source);\n }\n if (!this._sources.has(needle.source)) {\n return [];\n }\n needle.source = this._sources.indexOf(needle.source);\n\n var mappings = [];\n\n var index = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping &&\n mapping.originalLine === line &&\n mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n }\n }\n\n return mappings;\n };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The only parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n sources = sources\n .map(String)\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n ? util.relative(sourceRoot, source)\n : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names.map(String), true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping;\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n\n destOriginalMappings.push(destMapping);\n }\n\n destGeneratedMappings.push(destMapping);\n }\n\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n return smc;\n };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._sources.toArray().map(function (s) {\n return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;\n }, this);\n }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n }\n else if (aStr.charAt(index) === ',') {\n index++;\n }\n else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source.\n * - column: The column number in the generated source.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null.\n * - column: The column number in the original source, or null.\n * - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositionsDeflated,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n if (this.sourceRoot != null) {\n source = util.join(this.sourceRoot, source);\n }\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() &&\n !this.sourcesContent.some(function (sc) { return sc == null; });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n\n if (this.sourceRoot != null) {\n aSource = util.relative(this.sourceRoot, aSource);\n }\n\n if (this._sources.has(aSource)) {\n return this.sourcesContent[this._sources.indexOf(aSource)];\n }\n\n var url;\n if (this.sourceRoot != null\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = aSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + aSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + aSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: The column number in the original source.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n if (this.sourceRoot != null) {\n source = util.relative(this.sourceRoot, source);\n }\n if (!this._sources.has(source)) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n source = this._sources.indexOf(source);\n\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The only parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n this._sources = new ArraySet();\n this._names = new ArraySet();\n\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n\n if (offsetLine < lastOffset.line ||\n (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'))\n }\n });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source.\n * - column: The column number in the generated source.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null.\n * - column: The column number in the original source, or null.\n * - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections,\n function(needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return (needle.generatedColumn -\n section.generatedOffset.generatedColumn);\n });\n var section = this._sections[sectionIndex];\n\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n\n return section.consumer.originalPositionFor({\n line: needle.generatedLine -\n (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn -\n (section.generatedOffset.generatedLine === needle.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n bias: aArgs.bias\n });\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: The column number in the original source.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line +\n (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column +\n (section.generatedOffset.generatedLine === generatedPosition.line\n ? section.generatedOffset.generatedColumn - 1\n : 0)\n };\n return ret;\n }\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n\n var source = section.consumer._sources.at(mapping.source);\n if (section.consumer.sourceRoot !== null) {\n source = util.join(section.consumer.sourceRoot, source);\n }\n this._sources.add(source);\n source = this._sources.indexOf(source);\n\n var name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine +\n (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn +\n (section.generatedOffset.generatedLine === mapping.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n\n if (!this._skipValidation) {\n this._validateMapping(generated, original, source, name);\n }\n\n if (source != null) {\n source = String(source);\n if (!this._sources.has(source)) {\n this._sources.add(source);\n }\n }\n\n if (name != null) {\n name = String(name);\n if (!this._names.has(name)) {\n this._names.add(name);\n }\n }\n\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = Object.create(null);\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error(\n 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n 'or the source map\\'s \"file\" property. Both were omitted.'\n );\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source)\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n aName) {\n // When aOriginal is truthy but has empty values for .line and .column,\n // it is most likely a programmer error. In this case we throw a very\n // specific error message to try to guide them the right way.\n // For example: https://github.com/Polymer/polymer-bundler/pull/519\n if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n throw new Error(\n 'original.line and original.column are not numbers -- you probably meant to omit ' +\n 'the original mapping entirely and only map the generated position. If so, pass ' +\n 'null for the original mapping instead of an object with empty or null values.'\n );\n }\n\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aGenerated.line > 0 && aGenerated.column >= 0\n && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n }\n else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n && aGenerated.line > 0 && aGenerated.column >= 0\n && aOriginal.line > 0 && aOriginal.column >= 0\n && aSource) {\n // Cases 2 and 3.\n return;\n }\n else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n }));\n }\n };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var next;\n var mapping;\n var nameIdx;\n var sourceIdx;\n\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n next = ''\n\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n next += ';';\n previousGeneratedLine++;\n }\n }\n else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n next += ',';\n }\n }\n\n next += base64VLQ.encode(mapping.generatedColumn\n - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n next += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n next += base64VLQ.encode(mapping.originalLine - 1\n - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n\n next += base64VLQ.encode(mapping.originalColumn\n - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n next += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n\n result += next;\n }\n\n return result;\n };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n ? this._sourcesContents[key]\n : null;\n }, this);\n };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n\n return map;\n };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine == null ? null : aLine;\n this.column = aColumn == null ? null : aColumn;\n this.source = aSource == null ? null : aSource;\n this.name = aName == null ? null : aName;\n this[isSourceNode] = true;\n if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n * SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap =\n function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // All even indices of this array are one line of the generated code,\n // while all odd indices are the newlines between two adjacent lines\n // (since `REGEX_NEWLINE` captures its match).\n // Processed fragments are accessed by calling `shiftNextLine`.\n var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n var remainingLinesIndex = 0;\n var shiftNextLine = function() {\n var lineContents = getNextLine();\n // The last line of a file might not have a newline.\n var newLine = getNextLine() || \"\";\n return lineContents + newLine;\n\n function getNextLine() {\n return remainingLinesIndex < remainingLines.length ?\n remainingLines[remainingLinesIndex++] : undefined;\n }\n };\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping !== null) {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n // Associate first line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n // The remaining code is added without mapping\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[remainingLinesIndex];\n var code = nextLine.substr(0, mapping.generatedColumn -\n lastGeneratedColumn);\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n // No more remaining code, continue\n lastMapping = mapping;\n return;\n }\n }\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(shiftNextLine());\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[remainingLinesIndex];\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n if (remainingLinesIndex < remainingLines.length) {\n if (lastMapping) {\n // Associate the remaining code in the current line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n }\n // and add the remaining lines without any mapping\n node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n }\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aRelativePath != null) {\n sourceFile = util.join(aRelativePath, sourceFile);\n }\n node.setSourceContent(sourceFile, content);\n }\n });\n\n return node;\n\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n var source = aRelativePath\n ? util.join(aRelativePath, mapping.source)\n : mapping.source;\n node.add(new SourceNode(mapping.originalLine,\n mapping.originalColumn,\n source,\n code,\n mapping.name));\n }\n }\n };\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length-1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk[isSourceNode]) {\n chunk.walk(aFn);\n }\n else {\n if (chunk !== '') {\n aFn(chunk, { source: this.source,\n line: this.line,\n column: this.column,\n name: this.name });\n }\n }\n }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len-1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild[isSourceNode]) {\n lastChild.replaceRight(aPattern, aReplacement);\n }\n else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n }\n else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent =\n function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n };\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents =\n function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i][isSourceNode]) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n };\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null\n && original.line !== null\n && original.column !== null) {\n if(lastOriginalSource !== original.source\n || lastOriginalLine !== original.line\n || lastOriginalColumn !== original.column\n || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n for (var idx = 0, length = chunk.length; idx < length; idx++) {\n if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n generated.line++;\n generated.column = 0;\n // Mappings end at eol\n if (idx + 1 === length) {\n lastOriginalSource = null;\n sourceMappingActive = false;\n } else if (sourceMappingActive) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n } else {\n generated.column++;\n }\n }\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n\n return { code: generated.code, map: map };\n};\n\nexports.SourceNode = SourceNode;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.]*)(?::(\\d+))?(\\S*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '<dir>/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n\n var parts = path.split(/\\/+/);\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n\n var joined = aPath.charAt(0) === '/'\n ? aPath\n : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n var obj = Object.create(null);\n return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n if (isProtoString(aStr)) {\n return '$' + aStr;\n }\n\n return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n if (isProtoString(aStr)) {\n return aStr.slice(1);\n }\n\n return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n if (!s) {\n return false;\n }\n\n var length = s.length;\n\n if (length < 9 /* \"__proto__\".length */) {\n return false;\n }\n\n if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n s.charCodeAt(length - 9) !== 95 /* '_' */) {\n return false;\n }\n\n for (var i = length - 10; i >= 0; i--) {\n if (s.charCodeAt(i) !== 36 /* '$' */) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = mappingA.source - mappingB.source;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n return mappingA.name - mappingB.name;\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = mappingA.source - mappingB.source;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return mappingA.name - mappingB.name;\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n\n if (aStr1 > aStr2) {\n return 1;\n }\n\n return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n","// Copyright 2014, 2015, 2016, 2017 Simon Lydell\n// X11 (“MIT”) Licensed. (See LICENSE.)\n\n// Note: source-map-resolve.js is generated from source-map-resolve-node.js and\n// source-map-resolve-template.js. Only edit the two latter files, _not_\n// source-map-resolve.js!\n\nvoid (function(root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define([\"source-map-url\", \"resolve-url\"], factory)\n } else if (typeof exports === \"object\") {\n var sourceMappingURL = require(\"source-map-url\")\n var resolveUrl = require(\"resolve-url\")\n module.exports = factory(sourceMappingURL, resolveUrl)\n } else {\n root.sourceMapResolve = factory(root.sourceMappingURL, root.resolveUrl)\n }\n}(this, function(sourceMappingURL, resolveUrl) {\n\n function callbackAsync(callback, error, result) {\n setImmediate(function() { callback(error, result) })\n }\n\n function parseMapToJSON(string, data) {\n try {\n return JSON.parse(string.replace(/^\\)\\]\\}'/, \"\"))\n } catch (error) {\n error.sourceMapData = data\n throw error\n }\n }\n\n function readSync(read, url, data) {\n var readUrl = url\n try {\n return String(read(readUrl))\n } catch (error) {\n error.sourceMapData = data\n throw error\n }\n }\n\n\n\n function resolveSourceMap(code, codeUrl, read, callback) {\n var mapData\n try {\n mapData = resolveSourceMapHelper(code, codeUrl)\n } catch (error) {\n return callbackAsync(callback, error)\n }\n if (!mapData || mapData.map) {\n return callbackAsync(callback, null, mapData)\n }\n var readUrl = mapData.url\n read(readUrl, function(error, result) {\n if (error) {\n error.sourceMapData = mapData\n return callback(error)\n }\n mapData.map = String(result)\n try {\n mapData.map = parseMapToJSON(mapData.map, mapData)\n } catch (error) {\n return callback(error)\n }\n callback(null, mapData)\n })\n }\n\n function resolveSourceMapSync(code, codeUrl, read) {\n var mapData = resolveSourceMapHelper(code, codeUrl)\n if (!mapData || mapData.map) {\n return mapData\n }\n mapData.map = readSync(read, mapData.url, mapData)\n mapData.map = parseMapToJSON(mapData.map, mapData)\n return mapData\n }\n\n var dataUriRegex = /^data:([^,;]*)(;[^,;]*)*(?:,(.*))?$/\n var jsonMimeTypeRegex = /^(?:application|text)\\/json$/\n\n function resolveSourceMapHelper(code, codeUrl) {\n var url = sourceMappingURL.getFrom(code)\n if (!url) {\n return null\n }\n\n var dataUri = url.match(dataUriRegex)\n if (dataUri) {\n var mimeType = dataUri[1]\n var lastParameter = dataUri[2] || \"\"\n var encoded = dataUri[3] || \"\"\n var data = {\n sourceMappingURL: url,\n url: null,\n sourcesRelativeTo: codeUrl,\n map: encoded\n }\n if (!jsonMimeTypeRegex.test(mimeType)) {\n var error = new Error(\"Unuseful data uri mime type: \" + (mimeType || \"text/plain\"))\n error.sourceMapData = data\n throw error\n }\n data.map = parseMapToJSON(\n lastParameter === \";base64\" ? atob(encoded) : decodeURIComponent(encoded),\n data\n )\n return data\n }\n\n var mapUrl = resolveUrl(codeUrl, url)\n return {\n sourceMappingURL: url,\n url: mapUrl,\n sourcesRelativeTo: mapUrl,\n map: null\n }\n }\n\n\n\n function resolveSources(map, mapUrl, read, options, callback) {\n if (typeof options === \"function\") {\n callback = options\n options = {}\n }\n var pending = map.sources ? map.sources.length : 0\n var result = {\n sourcesResolved: [],\n sourcesContent: []\n }\n\n if (pending === 0) {\n callbackAsync(callback, null, result)\n return\n }\n\n var done = function() {\n pending--\n if (pending === 0) {\n callback(null, result)\n }\n }\n\n resolveSourcesHelper(map, mapUrl, options, function(fullUrl, sourceContent, index) {\n result.sourcesResolved[index] = fullUrl\n if (typeof sourceContent === \"string\") {\n result.sourcesContent[index] = sourceContent\n callbackAsync(done, null)\n } else {\n var readUrl = fullUrl\n read(readUrl, function(error, source) {\n result.sourcesContent[index] = error ? error : String(source)\n done()\n })\n }\n })\n }\n\n function resolveSourcesSync(map, mapUrl, read, options) {\n var result = {\n sourcesResolved: [],\n sourcesContent: []\n }\n\n if (!map.sources || map.sources.length === 0) {\n return result\n }\n\n resolveSourcesHelper(map, mapUrl, options, function(fullUrl, sourceContent, index) {\n result.sourcesResolved[index] = fullUrl\n if (read !== null) {\n if (typeof sourceContent === \"string\") {\n result.sourcesContent[index] = sourceContent\n } else {\n var readUrl = fullUrl\n try {\n result.sourcesContent[index] = String(read(readUrl))\n } catch (error) {\n result.sourcesContent[index] = error\n }\n }\n }\n })\n\n return result\n }\n\n var endingSlash = /\\/?$/\n\n function resolveSourcesHelper(map, mapUrl, options, fn) {\n options = options || {}\n var fullUrl\n var sourceContent\n var sourceRoot\n for (var index = 0, len = map.sources.length; index < len; index++) {\n sourceRoot = null\n if (typeof options.sourceRoot === \"string\") {\n sourceRoot = options.sourceRoot\n } else if (typeof map.sourceRoot === \"string\" && options.sourceRoot !== false) {\n sourceRoot = map.sourceRoot\n }\n // If the sourceRoot is the empty string, it is equivalent to not setting\n // the property at all.\n if (sourceRoot === null || sourceRoot === '') {\n fullUrl = resolveUrl(mapUrl, map.sources[index])\n } else {\n // Make sure that the sourceRoot ends with a slash, so that `/scripts/subdir` becomes\n // `/scripts/subdir/<source>`, not `/scripts/<source>`. Pointing to a file as source root\n // does not make sense.\n fullUrl = resolveUrl(mapUrl, sourceRoot.replace(endingSlash, \"/\"), map.sources[index])\n }\n sourceContent = (map.sourcesContent || [])[index]\n fn(fullUrl, sourceContent, index)\n }\n }\n\n\n\n function resolve(code, codeUrl, read, options, callback) {\n if (typeof options === \"function\") {\n callback = options\n options = {}\n }\n if (code === null) {\n var mapUrl = codeUrl\n var data = {\n sourceMappingURL: null,\n url: mapUrl,\n sourcesRelativeTo: mapUrl,\n map: null\n }\n var readUrl = mapUrl\n read(readUrl, function(error, result) {\n if (error) {\n error.sourceMapData = data\n return callback(error)\n }\n data.map = String(result)\n try {\n data.map = parseMapToJSON(data.map, data)\n } catch (error) {\n return callback(error)\n }\n _resolveSources(data)\n })\n } else {\n resolveSourceMap(code, codeUrl, read, function(error, mapData) {\n if (error) {\n return callback(error)\n }\n if (!mapData) {\n return callback(null, null)\n }\n _resolveSources(mapData)\n })\n }\n\n function _resolveSources(mapData) {\n resolveSources(mapData.map, mapData.sourcesRelativeTo, read, options, function(error, result) {\n if (error) {\n return callback(error)\n }\n mapData.sourcesResolved = result.sourcesResolved\n mapData.sourcesContent = result.sourcesContent\n callback(null, mapData)\n })\n }\n }\n\n function resolveSync(code, codeUrl, read, options) {\n var mapData\n if (code === null) {\n var mapUrl = codeUrl\n mapData = {\n sourceMappingURL: null,\n url: mapUrl,\n sourcesRelativeTo: mapUrl,\n map: null\n }\n mapData.map = readSync(read, mapUrl, mapData)\n mapData.map = parseMapToJSON(mapData.map, mapData)\n } else {\n mapData = resolveSourceMapSync(code, codeUrl, read)\n if (!mapData) {\n return null\n }\n }\n var result = resolveSourcesSync(mapData.map, mapData.sourcesRelativeTo, read, options)\n mapData.sourcesResolved = result.sourcesResolved\n mapData.sourcesContent = result.sourcesContent\n return mapData\n }\n\n\n\n return {\n resolveSourceMap: resolveSourceMap,\n resolveSourceMapSync: resolveSourceMapSync,\n resolveSources: resolveSources,\n resolveSourcesSync: resolveSourcesSync,\n resolve: resolve,\n resolveSync: resolveSync,\n parseMapToJSON: parseMapToJSON\n }\n\n}));\n","// Copyright 2014 Simon Lydell\n// X11 (“MIT”) Licensed. (See LICENSE.)\n\nvoid (function(root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(factory)\n } else if (typeof exports === \"object\") {\n module.exports = factory()\n } else {\n root.sourceMappingURL = factory()\n }\n}(this, function() {\n\n var innerRegex = /[#@] sourceMappingURL=([^\\s'\"]*)/\n\n var regex = RegExp(\n \"(?:\" +\n \"/\\\\*\" +\n \"(?:\\\\s*\\r?\\n(?://)?)?\" +\n \"(?:\" + innerRegex.source + \")\" +\n \"\\\\s*\" +\n \"\\\\*/\" +\n \"|\" +\n \"//(?:\" + innerRegex.source + \")\" +\n \")\" +\n \"\\\\s*\"\n )\n\n return {\n\n regex: regex,\n _innerRegex: innerRegex,\n\n getFrom: function(code) {\n var match = code.match(regex)\n return (match ? match[1] || match[2] || \"\" : null)\n },\n\n existsIn: function(code) {\n return regex.test(code)\n },\n\n removeFrom: function(code) {\n return code.replace(regex, \"\")\n },\n\n insertBefore: function(code, string) {\n var match = code.match(regex)\n if (match) {\n return code.slice(0, match.index) + string + code.slice(match.index)\n } else {\n return code + string\n }\n }\n }\n\n}));\n","/*!\n * split-string <https://github.com/jonschlinkert/split-string>\n *\n * Copyright (c) 2015-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar extend = require('extend-shallow');\n\nmodule.exports = function(str, options, fn) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string');\n }\n\n if (typeof options === 'function') {\n fn = options;\n options = null;\n }\n\n // allow separator to be defined as a string\n if (typeof options === 'string') {\n options = { sep: options };\n }\n\n var opts = extend({sep: '.'}, options);\n var quotes = opts.quotes || ['\"', \"'\", '`'];\n var brackets;\n\n if (opts.brackets === true) {\n brackets = {\n '<': '>',\n '(': ')',\n '[': ']',\n '{': '}'\n };\n } else if (opts.brackets) {\n brackets = opts.brackets;\n }\n\n var tokens = [];\n var stack = [];\n var arr = [''];\n var sep = opts.sep;\n var len = str.length;\n var idx = -1;\n var closeIdx;\n\n function expected() {\n if (brackets && stack.length) {\n return brackets[stack[stack.length - 1]];\n }\n }\n\n while (++idx < len) {\n var ch = str[idx];\n var next = str[idx + 1];\n var tok = { val: ch, idx: idx, arr: arr, str: str };\n tokens.push(tok);\n\n if (ch === '\\\\') {\n tok.val = keepEscaping(opts, str, idx) === true ? (ch + next) : next;\n tok.escaped = true;\n if (typeof fn === 'function') {\n fn(tok);\n }\n arr[arr.length - 1] += tok.val;\n idx++;\n continue;\n }\n\n if (brackets && brackets[ch]) {\n stack.push(ch);\n var e = expected();\n var i = idx + 1;\n\n if (str.indexOf(e, i + 1) !== -1) {\n while (stack.length && i < len) {\n var s = str[++i];\n if (s === '\\\\') {\n s++;\n continue;\n }\n\n if (quotes.indexOf(s) !== -1) {\n i = getClosingQuote(str, s, i + 1);\n continue;\n }\n\n e = expected();\n if (stack.length && str.indexOf(e, i + 1) === -1) {\n break;\n }\n\n if (brackets[s]) {\n stack.push(s);\n continue;\n }\n\n if (e === s) {\n stack.pop();\n }\n }\n }\n\n closeIdx = i;\n if (closeIdx === -1) {\n arr[arr.length - 1] += ch;\n continue;\n }\n\n ch = str.slice(idx, closeIdx + 1);\n tok.val = ch;\n tok.idx = idx = closeIdx;\n }\n\n if (quotes.indexOf(ch) !== -1) {\n closeIdx = getClosingQuote(str, ch, idx + 1);\n if (closeIdx === -1) {\n arr[arr.length - 1] += ch;\n continue;\n }\n\n if (keepQuotes(ch, opts) === true) {\n ch = str.slice(idx, closeIdx + 1);\n } else {\n ch = str.slice(idx + 1, closeIdx);\n }\n\n tok.val = ch;\n tok.idx = idx = closeIdx;\n }\n\n if (typeof fn === 'function') {\n fn(tok, tokens);\n ch = tok.val;\n idx = tok.idx;\n }\n\n if (tok.val === sep && tok.split !== false) {\n arr.push('');\n continue;\n }\n\n arr[arr.length - 1] += tok.val;\n }\n\n return arr;\n};\n\nfunction getClosingQuote(str, ch, i, brackets) {\n var idx = str.indexOf(ch, i);\n if (str.charAt(idx - 1) === '\\\\') {\n return getClosingQuote(str, ch, idx + 1);\n }\n return idx;\n}\n\nfunction keepQuotes(ch, opts) {\n if (opts.keepDoubleQuotes === true && ch === '\"') return true;\n if (opts.keepSingleQuotes === true && ch === \"'\") return true;\n return opts.keepQuotes;\n}\n\nfunction keepEscaping(opts, str, idx) {\n if (typeof opts.keepEscaping === 'function') {\n return opts.keepEscaping(str, idx);\n }\n return opts.keepEscaping === true || str[idx + 1] === '\\\\';\n}\n","'use strict';\n\nvar isExtendable = require('is-extendable');\nvar assignSymbols = require('assign-symbols');\n\nmodule.exports = Object.assign || function(obj/*, objects*/) {\n if (obj === null || typeof obj === 'undefined') {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n if (!isObject(obj)) {\n obj = {};\n }\n for (var i = 1; i < arguments.length; i++) {\n var val = arguments[i];\n if (isString(val)) {\n val = toObject(val);\n }\n if (isObject(val)) {\n assign(obj, val);\n assignSymbols(obj, val);\n }\n }\n return obj;\n};\n\nfunction assign(a, b) {\n for (var key in b) {\n if (hasOwn(b, key)) {\n a[key] = b[key];\n }\n }\n}\n\nfunction isString(val) {\n return (val && typeof val === 'string');\n}\n\nfunction toObject(str) {\n var obj = {};\n for (var i in str) {\n obj[i] = str[i];\n }\n return obj;\n}\n\nfunction isObject(val) {\n return (val && typeof val === 'object') || isExtendable(val);\n}\n\n/**\n * Returns true if the given `key` is an own property of `obj`.\n */\n\nfunction hasOwn(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction isEnum(obj, key) {\n return Object.prototype.propertyIsEnumerable.call(obj, key);\n}\n","/*!\n * is-extendable <https://github.com/jonschlinkert/is-extendable>\n *\n * Copyright (c) 2015-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isPlainObject = require('is-plain-object');\n\nmodule.exports = function isExtendable(val) {\n return isPlainObject(val) || typeof val === 'function' || Array.isArray(val);\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 * static-extend <https://github.com/jonschlinkert/static-extend>\n *\n * Copyright (c) 2016, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nvar copy = require('object-copy');\nvar define = require('define-property');\nvar util = require('util');\n\n/**\n * Returns a function for extending the static properties,\n * prototype properties, and descriptors from the `Parent`\n * constructor onto `Child` constructors.\n *\n * ```js\n * var extend = require('static-extend');\n * Parent.extend = extend(Parent);\n *\n * // optionally pass a custom merge function as the second arg\n * Parent.extend = extend(Parent, function(Child) {\n * Child.prototype.mixin = function(key, val) {\n * Child.prototype[key] = val;\n * };\n * });\n *\n * // extend \"child\" constructors\n * Parent.extend(Child);\n *\n * // optionally define prototype methods as the second arg\n * Parent.extend(Child, {\n * foo: function() {},\n * bar: function() {}\n * });\n * ```\n * @param {Function} `Parent` Parent ctor\n * @param {Function} `extendFn` Optional extend function for handling any necessary custom merging. Useful when updating methods that require a specific prototype.\n * @param {Function} `Child` Child ctor\n * @param {Object} `proto` Optionally pass additional prototype properties to inherit.\n * @return {Object}\n * @api public\n */\n\nfunction extend(Parent, extendFn) {\n if (typeof Parent !== 'function') {\n throw new TypeError('expected Parent to be a function.');\n }\n\n return function(Ctor, proto) {\n if (typeof Ctor !== 'function') {\n throw new TypeError('expected Ctor to be a function.');\n }\n\n util.inherits(Ctor, Parent);\n copy(Ctor, Parent);\n\n // proto can be null or a plain object\n if (typeof proto === 'object') {\n var obj = Object.create(proto);\n\n for (var k in obj) {\n Ctor.prototype[k] = obj[k];\n }\n }\n\n // keep a reference to the parent prototype\n define(Ctor.prototype, '_parent_', {\n configurable: true,\n set: function() {},\n get: function() {\n return Parent.prototype;\n }\n });\n\n if (typeof extendFn === 'function') {\n extendFn(Ctor, Parent);\n }\n\n Ctor.extend = extend(Ctor, extendFn);\n };\n};\n\n/**\n * Expose `extend`\n */\n\nmodule.exports = extend;\n","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n","/*!\n * to-object-path <https://github.com/jonschlinkert/to-object-path>\n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nvar typeOf = require('kind-of');\n\nmodule.exports = function toPath(args) {\n if (typeOf(args) !== 'arguments') {\n args = arguments;\n }\n return filter(args).join('.');\n};\n\nfunction filter(arr) {\n var len = arr.length;\n var idx = -1;\n var res = [];\n\n while (++idx < len) {\n var ele = arr[idx];\n if (typeOf(ele) === 'arguments' || Array.isArray(ele)) {\n res.push.apply(res, filter(ele));\n } else if (typeof ele === 'string') {\n res.push(ele);\n }\n }\n return res;\n}\n","/*!\n * to-regex-range <https://github.com/jonschlinkert/to-regex-range>\n *\n * Copyright (c) 2015, 2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar repeat = require('repeat-string');\nvar isNumber = require('is-number');\nvar cache = {};\n\nfunction toRegexRange(min, max, options) {\n if (isNumber(min) === false) {\n throw new RangeError('toRegexRange: first argument is invalid.');\n }\n\n if (typeof max === 'undefined' || min === max) {\n return String(min);\n }\n\n if (isNumber(max) === false) {\n throw new RangeError('toRegexRange: second argument is invalid.');\n }\n\n options = options || {};\n var relax = String(options.relaxZeros);\n var shorthand = String(options.shorthand);\n var capture = String(options.capture);\n var key = min + ':' + max + '=' + relax + shorthand + capture;\n if (cache.hasOwnProperty(key)) {\n return cache[key].result;\n }\n\n var a = Math.min(min, max);\n var b = Math.max(min, max);\n\n if (Math.abs(a - b) === 1) {\n var result = min + '|' + max;\n if (options.capture) {\n return '(' + result + ')';\n }\n return result;\n }\n\n var isPadded = padding(min) || padding(max);\n var positives = [];\n var negatives = [];\n\n var tok = {min: min, max: max, a: a, b: b};\n if (isPadded) {\n tok.isPadded = isPadded;\n tok.maxLen = String(tok.max).length;\n }\n\n if (a < 0) {\n var newMin = b < 0 ? Math.abs(b) : 1;\n var newMax = Math.abs(a);\n negatives = splitToPatterns(newMin, newMax, tok, options);\n a = tok.a = 0;\n }\n\n if (b >= 0) {\n positives = splitToPatterns(a, b, tok, options);\n }\n\n tok.negatives = negatives;\n tok.positives = positives;\n tok.result = siftPatterns(negatives, positives, options);\n\n if (options.capture && (positives.length + negatives.length) > 1) {\n tok.result = '(' + tok.result + ')';\n }\n\n cache[key] = tok;\n return tok.result;\n}\n\nfunction siftPatterns(neg, pos, options) {\n var onlyNegative = filterPatterns(neg, pos, '-', false, options) || [];\n var onlyPositive = filterPatterns(pos, neg, '', false, options) || [];\n var intersected = filterPatterns(neg, pos, '-?', true, options) || [];\n var subpatterns = onlyNegative.concat(intersected).concat(onlyPositive);\n return subpatterns.join('|');\n}\n\nfunction splitToRanges(min, max) {\n min = Number(min);\n max = Number(max);\n\n var nines = 1;\n var stops = [max];\n var stop = +countNines(min, nines);\n\n while (min <= stop && stop <= max) {\n stops = push(stops, stop);\n nines += 1;\n stop = +countNines(min, nines);\n }\n\n var zeros = 1;\n stop = countZeros(max + 1, zeros) - 1;\n\n while (min < stop && stop <= max) {\n stops = push(stops, stop);\n zeros += 1;\n stop = countZeros(max + 1, zeros) - 1;\n }\n\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: String(start), digits: []};\n }\n\n var zipped = zip(String(start), String(stop));\n var len = zipped.length, i = -1;\n\n var pattern = '';\n var digits = 0;\n\n while (++i < len) {\n var numbers = zipped[i];\n var startDigit = numbers[0];\n var stopDigit = numbers[1];\n\n if (startDigit === stopDigit) {\n pattern += startDigit;\n\n } else if (startDigit !== '0' || stopDigit !== '9') {\n pattern += toCharacterClass(startDigit, stopDigit);\n\n } else {\n digits += 1;\n }\n }\n\n if (digits) {\n pattern += options.shorthand ? '\\\\d' : '[0-9]';\n }\n\n return { pattern: pattern, digits: [digits] };\n}\n\nfunction splitToPatterns(min, max, tok, options) {\n var ranges = splitToRanges(min, max);\n var len = ranges.length;\n var idx = -1;\n\n var tokens = [];\n var start = min;\n var prev;\n\n while (++idx < len) {\n var range = ranges[idx];\n var obj = rangeToPattern(start, range, options);\n var zeros = '';\n\n if (!tok.isPadded && prev && prev.pattern === obj.pattern) {\n if (prev.digits.length > 1) {\n prev.digits.pop();\n }\n prev.digits.push(obj.digits[0]);\n prev.string = prev.pattern + toQuantifier(prev.digits);\n start = range + 1;\n continue;\n }\n\n if (tok.isPadded) {\n zeros = padZeros(range, tok);\n }\n\n obj.string = zeros + obj.pattern + toQuantifier(obj.digits);\n tokens.push(obj);\n start = range + 1;\n prev = obj;\n }\n\n return tokens;\n}\n\nfunction filterPatterns(arr, comparison, prefix, intersection, options) {\n var res = [];\n\n for (var i = 0; i < arr.length; i++) {\n var tok = arr[i];\n var ele = tok.string;\n\n if (options.relaxZeros !== false) {\n if (prefix === '-' && ele.charAt(0) === '0') {\n if (ele.charAt(1) === '{') {\n ele = '0*' + ele.replace(/^0\\{\\d+\\}/, '');\n } else {\n ele = '0*' + ele.slice(1);\n }\n }\n }\n\n if (!intersection && !contains(comparison, 'string', ele)) {\n res.push(prefix + ele);\n }\n\n if (intersection && contains(comparison, 'string', ele)) {\n res.push(prefix + ele);\n }\n }\n return res;\n}\n\n/**\n * Zip strings (`for in` can be used on string characters)\n */\n\nfunction zip(a, b) {\n var arr = [];\n for (var ch in a) arr.push([a[ch], b[ch]]);\n return arr;\n}\n\nfunction compare(a, b) {\n return a > b ? 1 : b > a ? -1 : 0;\n}\n\nfunction push(arr, ele) {\n if (arr.indexOf(ele) === -1) arr.push(ele);\n return arr;\n}\n\nfunction contains(arr, key, val) {\n for (var i = 0; i < arr.length; i++) {\n if (arr[i][key] === val) {\n return true;\n }\n }\n return false;\n}\n\nfunction countNines(min, len) {\n return String(min).slice(0, -len) + repeat('9', len);\n}\n\nfunction countZeros(integer, zeros) {\n return integer - (integer % Math.pow(10, zeros));\n}\n\nfunction toQuantifier(digits) {\n var start = digits[0];\n var stop = digits[1] ? (',' + digits[1]) : '';\n if (!stop && (!start || start === 1)) {\n return '';\n }\n return '{' + start + stop + '}';\n}\n\nfunction toCharacterClass(a, b) {\n return '[' + a + ((b - a === 1) ? '' : '-') + b + ']';\n}\n\nfunction padding(str) {\n return /^-?(0+)\\d/.exec(str);\n}\n\nfunction padZeros(val, tok) {\n if (tok.isPadded) {\n var diff = Math.abs(tok.maxLen - String(val).length);\n switch (diff) {\n case 0:\n return '';\n case 1:\n return '0';\n default: {\n return '0{' + diff + '}';\n }\n }\n }\n return val;\n}\n\n/**\n * Expose `toRegexRange`\n */\n\nmodule.exports = toRegexRange;\n","'use strict';\n\nvar safe = require('safe-regex');\nvar define = require('define-property');\nvar extend = require('extend-shallow');\nvar not = require('regex-not');\nvar MAX_LENGTH = 1024 * 64;\n\n/**\n * Session cache\n */\n\nvar cache = {};\n\n/**\n * Create a regular expression from the given `pattern` string.\n *\n * @param {String|RegExp} `pattern` Pattern can be a string or regular expression.\n * @param {Object} `options`\n * @return {RegExp}\n * @api public\n */\n\nmodule.exports = function(patterns, options) {\n if (!Array.isArray(patterns)) {\n return makeRe(patterns, options);\n }\n return makeRe(patterns.join('|'), options);\n};\n\n/**\n * Create a regular expression from the given `pattern` string.\n *\n * @param {String|RegExp} `pattern` Pattern can be a string or regular expression.\n * @param {Object} `options`\n * @return {RegExp}\n * @api public\n */\n\nfunction makeRe(pattern, options) {\n if (pattern instanceof RegExp) {\n return pattern;\n }\n\n if (typeof pattern !== 'string') {\n throw new TypeError('expected a string');\n }\n\n if (pattern.length > MAX_LENGTH) {\n throw new Error('expected pattern to be less than ' + MAX_LENGTH + ' characters');\n }\n\n var key = pattern;\n // do this before shallow cloning options, it's a lot faster\n if (!options || (options && options.cache !== false)) {\n key = createKey(pattern, options);\n\n if (cache.hasOwnProperty(key)) {\n return cache[key];\n }\n }\n\n var opts = extend({}, options);\n if (opts.contains === true) {\n if (opts.negate === true) {\n opts.strictNegate = false;\n } else {\n opts.strict = false;\n }\n }\n\n if (opts.strict === false) {\n opts.strictOpen = false;\n opts.strictClose = false;\n }\n\n var open = opts.strictOpen !== false ? '^' : '';\n var close = opts.strictClose !== false ? '$' : '';\n var flags = opts.flags || '';\n var regex;\n\n if (opts.nocase === true && !/i/.test(flags)) {\n flags += 'i';\n }\n\n try {\n if (opts.negate || typeof opts.strictNegate === 'boolean') {\n pattern = not.create(pattern, opts);\n }\n\n var str = open + '(?:' + pattern + ')' + close;\n regex = new RegExp(str, flags);\n\n if (opts.safe === true && safe(regex) === false) {\n throw new Error('potentially unsafe regular expression: ' + regex.source);\n }\n\n } catch (err) {\n if (opts.strictErrors === true || opts.safe === true) {\n err.key = key;\n err.pattern = pattern;\n err.originalOptions = options;\n err.createdOptions = opts;\n throw err;\n }\n\n try {\n regex = new RegExp('^' + pattern.replace(/(\\W)/g, '\\\\$1') + '$');\n } catch (err) {\n regex = /.^/; //<= match nothing\n }\n }\n\n if (opts.cache !== false) {\n memoize(regex, key, pattern, opts);\n }\n return regex;\n}\n\n/**\n * Memoize generated regex. This can result in dramatic speed improvements\n * and simplify debugging by adding options and pattern to the regex. It can be\n * disabled by passing setting `options.cache` to false.\n */\n\nfunction memoize(regex, key, pattern, options) {\n define(regex, 'cached', true);\n define(regex, 'pattern', pattern);\n define(regex, 'options', options);\n define(regex, 'key', key);\n cache[key] = regex;\n}\n\n/**\n * Create the key to use for memoization. The key is generated\n * by iterating over the options and concatenating key-value pairs\n * to the pattern string.\n */\n\nfunction createKey(pattern, options) {\n if (!options) return pattern;\n var key = pattern;\n for (var prop in options) {\n if (options.hasOwnProperty(prop)) {\n key += ';' + prop + '=' + String(options[prop]);\n }\n }\n return key;\n}\n\n/**\n * Expose `makeRe`\n */\n\nmodule.exports.makeRe = makeRe;\n","/*!\n * define-property <https://github.com/jonschlinkert/define-property>\n *\n * Copyright (c) 2015-2018, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isobject = require('isobject');\nvar isDescriptor = require('is-descriptor');\nvar define = (typeof Reflect !== 'undefined' && Reflect.defineProperty)\n ? Reflect.defineProperty\n : Object.defineProperty;\n\nmodule.exports = function defineProperty(obj, key, val) {\n if (!isobject(obj) && typeof obj !== 'function' && !Array.isArray(obj)) {\n throw new TypeError('expected an object, function, or array');\n }\n\n if (typeof key !== 'string') {\n throw new TypeError('expected \"key\" to be a string');\n }\n\n if (isDescriptor(val)) {\n define(obj, key, val);\n return obj;\n }\n\n define(obj, key, {\n configurable: true,\n enumerable: false,\n writable: true,\n value: val\n });\n\n return obj;\n};\n","'use strict';\n\nvar isExtendable = require('is-extendable');\nvar assignSymbols = require('assign-symbols');\n\nmodule.exports = Object.assign || function(obj/*, objects*/) {\n if (obj === null || typeof obj === 'undefined') {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n if (!isObject(obj)) {\n obj = {};\n }\n for (var i = 1; i < arguments.length; i++) {\n var val = arguments[i];\n if (isString(val)) {\n val = toObject(val);\n }\n if (isObject(val)) {\n assign(obj, val);\n assignSymbols(obj, val);\n }\n }\n return obj;\n};\n\nfunction assign(a, b) {\n for (var key in b) {\n if (hasOwn(b, key)) {\n a[key] = b[key];\n }\n }\n}\n\nfunction isString(val) {\n return (val && typeof val === 'string');\n}\n\nfunction toObject(str) {\n var obj = {};\n for (var i in str) {\n obj[i] = str[i];\n }\n return obj;\n}\n\nfunction isObject(val) {\n return (val && typeof val === 'object') || isExtendable(val);\n}\n\n/**\n * Returns true if the given `key` is an own property of `obj`.\n */\n\nfunction hasOwn(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction isEnum(obj, key) {\n return Object.prototype.propertyIsEnumerable.call(obj, key);\n}\n","/*!\n * is-extendable <https://github.com/jonschlinkert/is-extendable>\n *\n * Copyright (c) 2015-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isPlainObject = require('is-plain-object');\n\nmodule.exports = function isExtendable(val) {\n return isPlainObject(val) || typeof val === 'function' || Array.isArray(val);\n};\n","'use strict';\n\nvar isObject = require('is-extendable');\nvar union = require('arr-union');\nvar get = require('get-value');\nvar set = require('set-value');\n\nmodule.exports = function unionValue(obj, prop, value) {\n if (!isObject(obj)) {\n throw new TypeError('union-value expects the first argument to be an object.');\n }\n\n if (typeof prop !== 'string') {\n throw new TypeError('union-value expects `prop` to be a string.');\n }\n\n var arr = arrayify(get(obj, prop));\n set(obj, prop, union(arr, arrayify(value)));\n return obj;\n};\n\nfunction arrayify(val) {\n if (val === null || typeof val === 'undefined') {\n return [];\n }\n if (Array.isArray(val)) {\n return val;\n }\n return [val];\n}\n","/*!\n * unset-value <https://github.com/jonschlinkert/unset-value>\n *\n * Copyright (c) 2015, 2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isObject = require('isobject');\nvar has = require('has-value');\n\nmodule.exports = function unset(obj, prop) {\n if (!isObject(obj)) {\n throw new TypeError('expected an object.');\n }\n if (obj.hasOwnProperty(prop)) {\n delete obj[prop];\n return true;\n }\n\n if (has(obj, prop)) {\n var segs = prop.split('.');\n var last = segs.pop();\n while (segs.length && segs[segs.length - 1].slice(-1) === '\\\\') {\n last = segs.pop().slice(0, -1) + '.' + last;\n }\n while (segs.length) obj = obj[prop = segs.shift()];\n return (delete obj[last]);\n }\n return true;\n};\n","/*!\n * has-value <https://github.com/jonschlinkert/has-value>\n *\n * Copyright (c) 2014-2016, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nvar isObject = require('isobject');\nvar hasValues = require('has-values');\nvar get = require('get-value');\n\nmodule.exports = function(obj, prop, noZero) {\n if (isObject(obj)) {\n return hasValues(get(obj, prop), noZero);\n }\n return hasValues(obj, prop);\n};\n","/*!\n * isobject <https://github.com/jonschlinkert/isobject>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nvar isArray = require('isarray');\n\nmodule.exports = function isObject(val) {\n return val != null && typeof val === 'object' && isArray(val) === false;\n};\n","/*!\n * has-values <https://github.com/jonschlinkert/has-values>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function hasValue(o, noZero) {\n if (o === null || o === undefined) {\n return false;\n }\n\n if (typeof o === 'boolean') {\n return true;\n }\n\n if (typeof o === 'number') {\n if (o === 0 && noZero === true) {\n return false;\n }\n return true;\n }\n\n if (o.length !== undefined) {\n return o.length !== 0;\n }\n\n for (var key in o) {\n if (o.hasOwnProperty(key)) {\n return true;\n }\n }\n return false;\n};\n","/*!\n * use <https://github.com/jonschlinkert/use>\n *\n * Copyright (c) 2015-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function base(app, options) {\n if (!isObject(app) && typeof app !== 'function') {\n throw new TypeError('expected an object or function');\n }\n\n var opts = isObject(options) ? options : {};\n var prop = typeof opts.prop === 'string' ? opts.prop : 'fns';\n if (!Array.isArray(app[prop])) {\n define(app, prop, []);\n }\n\n /**\n * Define a plugin function to be passed to use. The only\n * parameter exposed to the plugin is `app`, the object or function.\n * passed to `use(app)`. `app` is also exposed as `this` in plugins.\n *\n * Additionally, **if a plugin returns a function, the function will\n * be pushed onto the `fns` array**, allowing the plugin to be\n * called at a later point by the `run` method.\n *\n * ```js\n * var use = require('use');\n *\n * // define a plugin\n * function foo(app) {\n * // do stuff\n * }\n *\n * var app = function(){};\n * use(app);\n *\n * // register plugins\n * app.use(foo);\n * app.use(bar);\n * app.use(baz);\n * ```\n * @name .use\n * @param {Function} `fn` plugin function to call\n * @api public\n */\n\n define(app, 'use', use);\n\n /**\n * Run all plugins on `fns`. Any plugin that returns a function\n * when called by `use` is pushed onto the `fns` array.\n *\n * ```js\n * var config = {};\n * app.run(config);\n * ```\n * @name .run\n * @param {Object} `value` Object to be modified by plugins.\n * @return {Object} Returns the object passed to `run`\n * @api public\n */\n\n define(app, 'run', function(val) {\n if (!isObject(val)) return;\n\n if (!val.use || !val.run) {\n define(val, prop, val[prop] || []);\n define(val, 'use', use);\n }\n\n if (!val[prop] || val[prop].indexOf(base) === -1) {\n val.use(base);\n }\n\n var self = this || app;\n var fns = self[prop];\n var len = fns.length;\n var idx = -1;\n\n while (++idx < len) {\n val.use(fns[idx]);\n }\n return val;\n });\n\n /**\n * Call plugin `fn`. If a function is returned push it into the\n * `fns` array to be called by the `run` method.\n */\n\n function use(type, fn, options) {\n var offset = 1;\n\n if (typeof type === 'string' || Array.isArray(type)) {\n fn = wrap(type, fn);\n offset++;\n } else {\n options = fn;\n fn = type;\n }\n\n if (typeof fn !== 'function') {\n throw new TypeError('expected a function');\n }\n\n var self = this || app;\n var fns = self[prop];\n\n var args = [].slice.call(arguments, offset);\n args.unshift(self);\n\n if (typeof opts.hook === 'function') {\n opts.hook.apply(self, args);\n }\n\n var val = fn.apply(self, args);\n if (typeof val === 'function' && fns.indexOf(val) === -1) {\n fns.push(val);\n }\n return self;\n }\n\n /**\n * Wrap a named plugin function so that it's only called on objects of the\n * given `type`\n *\n * @param {String} `type`\n * @param {Function} `fn` Plugin function\n * @return {Function}\n */\n\n function wrap(type, fn) {\n return function plugin() {\n return this.type === type ? fn.apply(this, arguments) : plugin;\n };\n }\n\n return app;\n};\n\nfunction isObject(val) {\n return val && typeof val === 'object' && !Array.isArray(val);\n}\n\nfunction define(obj, key, val) {\n Object.defineProperty(obj, key, {\n configurable: true,\n writable: true,\n value: val\n });\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 _callbacks$ = callbacks[0],\n foundSubsequence = _callbacks$.foundSubsequence,\n isCommon = _callbacks$.isCommon;\n callbacks[1] = {\n foundSubsequence: (function(_foundSubsequence) {\n function foundSubsequence(_x, _x2, _x3) {\n return _foundSubsequence.apply(this, arguments);\n }\n\n foundSubsequence.toString = function() {\n return _foundSubsequence.toString();\n };\n\n return foundSubsequence;\n })((nCommon, bCommon, aCommon) => {\n foundSubsequence(nCommon, aCommon, bCommon);\n }),\n isCommon: (function(_isCommon) {\n function isCommon(_x4, _x5) {\n return _isCommon.apply(this, arguments);\n }\n\n isCommon.toString = function() {\n return _isCommon.toString();\n };\n\n return isCommon;\n })((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 _callbacks = callbacks[transposed ? 1 : 0],\n foundSubsequence = _callbacks.foundSubsequence,\n isCommon = _callbacks.isCommon; // 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 nChangePreceding = division.nChangePreceding,\n aEndPreceding = division.aEndPreceding,\n bEndPreceding = division.bEndPreceding,\n nCommonPreceding = division.nCommonPreceding,\n aCommonPreceding = division.aCommonPreceding,\n bCommonPreceding = division.bCommonPreceding,\n nCommonFollowing = division.nCommonFollowing,\n aCommonFollowing = division.aCommonFollowing,\n bCommonFollowing = division.bCommonFollowing,\n nChangeFollowing = division.nChangeFollowing,\n aStartFollowing = division.aStartFollowing,\n bStartFollowing = division.bStartFollowing; // 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: any) => new Any(expectedObject);\nexport const anything = () => new Anything();\nexport const arrayContaining = (sample: Array<unknown>) =>\n new ArrayContaining(sample);\nexport const arrayNotContaining = (sample: Array<unknown>) =>\n new ArrayContaining(sample, true);\nexport const objectContaining = (sample: Record<string, any>) =>\n new ObjectContaining(sample);\nexport const objectNotContaining = (sample: Record<string, any>) =>\n new ObjectContaining(sample, true);\nexport const stringContaining = (expected: string) =>\n new StringContaining(expected);\nexport const stringNotContaining = (expected: string) =>\n new StringContaining(expected, true);\nexport const stringMatching = (expected: string | RegExp) =>\n new StringMatching(expected);\nexport const stringNotMatching = (expected: string | RegExp) =>\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 {\n AsyncExpectationResult,\n SyncExpectationResult,\n ExpectationResult,\n Matchers as MatcherInterface,\n MatcherState as JestMatcherState,\n MatchersObject,\n RawMatcherFn,\n ThrowingMatcherFn,\n PromiseMatcherFn,\n Expect,\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 stringNotContaining,\n stringMatching,\n stringNotMatching,\n} from './asymmetricMatchers';\nimport {\n INTERNAL_MATCHER_FLAG,\n getState,\n setState,\n getMatchers,\n setMatchers,\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>,\n outerErr: JestAssertionError,\n): PromiseMatcherFn => (...args) => {\n const options = {\n isNot,\n promise: 'rejects',\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 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 handlError = (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 = matcher.call(matcherContext, actual, ...args);\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 => handlError(error));\n } else {\n const syncResult = potentialResult as SyncExpectationResult;\n\n return processResult(syncResult);\n }\n } catch (error) {\n return handlError(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 {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 // Strings, numbers, dates, and booleans are compared by value.\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return a == String(b);\n case '[object Number]':\n return Object.is(Number(a), Number(b));\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans 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 (\n a.source == b.source &&\n a.global == b.global &&\n a.multiline == b.multiline &&\n a.ignoreCase == b.ignoreCase\n );\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 {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 = () => (global as any)[JEST_MATCHERS_OBJECT].state;\n\nexport const setState = (state: object) => {\n Object.assign((global as any)[JEST_MATCHERS_OBJECT].state, state);\n};\n\nexport const getMatchers = () => (global as any)[JEST_MATCHERS_OBJECT].matchers;\n\nexport const setMatchers = (\n matchers: MatchersObject,\n isInternal: boolean,\n expect: Expect,\n) => {\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.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, {isPrimitive} from 'jest-get-type';\nimport {\n DIM_COLOR,\n EXPECTED_COLOR,\n RECEIVED_COLOR,\n SUGGEST_TO_CONTAIN_EQUAL,\n ensureExpectedIsNonNegativeInteger,\n ensureNoExpected,\n ensureNumbers,\n getLabelPrinter,\n matcherErrorMessage,\n matcherHint,\n printDiffOrStringify,\n printReceived,\n printExpected,\n printWithType,\n stringify,\n MatcherHintOptions,\n} from 'jest-matcher-utils';\nimport {MatchersObject, MatcherState} from './types';\nimport {\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<any>\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 options: MatcherHintOptions = {\n isNot: this.isNot,\n promise: this.promise,\n secondArgument,\n secondArgumentColor: (arg: string) => arg,\n };\n ensureNumbers(received, expected, matcherName, options);\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 `Expected precision: ${stringify(precision)}\\n` +\n `Expected difference: not < ${printExpected(expectedDiff)}\\n` +\n `Received difference: ${printReceived(receivedDiff)}`)\n : () =>\n matcherHint(matcherName, undefined, undefined, options) +\n '\\n\\n' +\n `Expected: ${printExpected(expected)}\\n` +\n `Received: ${printReceived(received)}\\n` +\n '\\n' +\n `Expected precision: ${stringify(precision)}\\n` +\n `Expected difference: < ${printExpected(expectedDiff)}\\n` +\n `Received difference: ${printReceived(receivedDiff)}`;\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(this: MatcherState, received: number, expected: number) {\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,\n expected: number,\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 (isPrimitive(received) || 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(this: MatcherState, received: number, expected: number) {\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(this: MatcherState, received: number, expected: number) {\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 (\n typeof received !== 'string' &&\n (!received || typeof received.length !== 'number')\n ) {\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 : 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 printExpectedConstructorName = (\n label: string,\n expected: Function,\n) => printConstructorName(label, expected, false, true) + '\\n';\n\nexport const printExpectedConstructorNameNot = (\n label: string,\n expected: Function,\n) => printConstructorName(label, expected, true, true) + '\\n';\n\nexport const printReceivedConstructorName = (\n label: string,\n received: Function,\n) => 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) =>\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, {isPrimitive} from 'jest-get-type';\nimport {\n diff,\n ensureExpectedIsNumber,\n ensureNoExpected,\n DIM_COLOR,\n EXPECTED_COLOR,\n matcherErrorMessage,\n matcherHint,\n MatcherHintOptions,\n printExpected,\n printReceived,\n printWithType,\n RECEIVED_COLOR,\n stringify,\n} from 'jest-matcher-utils';\nimport {MatchersObject, MatcherState, SyncExpectationResult} 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(\n difference\n .split('\\n')\n .slice(3)\n .join('\\n') + ',',\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 (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 ensureExpectedIsNumber(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 ensureExpectedIsNumber(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 RECEIVED_COLOR,\n matcherErrorMessage,\n matcherHint,\n printDiffOrStringify,\n printExpected,\n printReceived,\n printWithType,\n MatcherHintOptions,\n} from 'jest-matcher-utils';\nimport {\n printExpectedConstructorName,\n printExpectedConstructorNameNot,\n printReceivedConstructorName,\n printReceivedConstructorNameNot,\n printReceivedStringContainExpectedResult,\n printReceivedStringContainExpectedSubstring,\n} from './print';\nimport {\n MatchersObject,\n MatcherState,\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 function(this: MatcherState, received: Function, expected: any) {\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: any,\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) =>\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.\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 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 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\nexport const iterableEquality = (\n a: any,\n b: any,\n aStack: Array<any> = [],\n bStack: Array<any> = [],\n) => {\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\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\nexport const subsetEquality = (\n object: any,\n subset: any,\n): undefined | boolean => {\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): undefined | boolean => {\n if (!isObjectWithKeys(subset)) {\n return undefined;\n }\n\n return Object.keys(subset).every(key => {\n if (isObjectWithKeys(subset[key])) {\n if (seenReferences.get(subset[key])) {\n return equals(object[key], subset[key], [iterableEquality]);\n }\n seenReferences.set(subset[key], true);\n }\n\n return (\n object != null &&\n hasOwnProperty(object, key) &&\n equals(object[key], subset[key], [\n iterableEquality,\n subsetEqualityWithContext(seenReferences),\n ])\n );\n });\n };\n\n return subsetEqualityWithContext()(object, subset);\n};\n\nexport const typeEquality = (a: any, b: any) => {\n if (a == null || b == null || a.constructor === b.constructor) {\n return undefined;\n }\n\n return false;\n};\n\nexport const sparseArrayEquality = (a: unknown, b: unknown) => {\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) => {\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\nexport function emptyObject(obj: any) {\n return obj && typeof obj === 'object' ? !Object.keys(obj).length : false;\n}\n\nconst MULTILINE_REGEXP = /[\\r\\n]/;\n\nexport const isOneline = (expected: any, received: any): 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 diff_commonPrefix(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 diff_commonSuffix(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 diff_commonOverlap_(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 diff_cleanupSemantic(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 diff_cleanupSemanticLossless(\n diffs\n) {\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 diff_cleanupMerge(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.default = void 0;\n\nvar _chalk = _interopRequireDefault(require('chalk'));\n\nvar _diffSequences = _interopRequireDefault(require('diff-sequences'));\n\nvar _constants = require('./constants');\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 DIFF_CONTEXT_DEFAULT = 5;\nconst fgDelete = _chalk.default.green;\nconst fgInsert = _chalk.default.red;\nconst fgCommon = _chalk.default.dim; // common lines (even indentation same)\n\nconst fgIndent = _chalk.default.cyan; // common lines (only indentation different)\n\nconst bgCommon = _chalk.default.bgYellow; // edge spaces in common line (even indentation same)\n\nconst bgInverse = _chalk.default.inverse; // edge spaces in any other lines\n// ONLY trailing if expected value is snapshot or multiline string.\n\nconst highlightTrailingSpaces = (line, bgColor) =>\n line.replace(/\\s+$/, bgColor('$&')); // BOTH leading AND trailing if expected value is data structure.\n\nconst highlightLeadingTrailingSpaces = (\n line,\n bgColor // If line consists of ALL spaces: highlight all of them.\n) =>\n highlightTrailingSpaces(line, bgColor).replace(\n // If line has an ODD length of leading spaces: highlight only the LAST.\n /^(\\s\\s)*(\\s)(?=[^\\s])/,\n '$1' + bgColor('$2')\n );\n\nconst getHighlightSpaces = bothEdges =>\n bothEdges ? highlightLeadingTrailingSpaces : highlightTrailingSpaces;\n\n// Given index interval in expected lines, put formatted delete lines.\nconst formatDelete = (aStart, aEnd, aLinesUn, aLinesIn, put) => {\n const highlightSpaces = getHighlightSpaces(aLinesUn !== aLinesIn);\n\n for (let aIndex = aStart; aIndex !== aEnd; aIndex += 1) {\n const aLineUn = aLinesUn[aIndex];\n const aLineIn = aLinesIn[aIndex];\n const indentation = aLineIn.slice(0, aLineIn.length - aLineUn.length);\n put(fgDelete('- ' + indentation + highlightSpaces(aLineUn, bgInverse)));\n }\n}; // Given index interval in received lines, put formatted insert lines.\n\nconst formatInsert = (bStart, bEnd, bLinesUn, bLinesIn, put) => {\n const highlightSpaces = getHighlightSpaces(bLinesUn !== bLinesIn);\n\n for (let bIndex = bStart; bIndex !== bEnd; bIndex += 1) {\n const bLineUn = bLinesUn[bIndex];\n const bLineIn = bLinesIn[bIndex];\n const indentation = bLineIn.slice(0, bLineIn.length - bLineUn.length);\n put(fgInsert('+ ' + indentation + highlightSpaces(bLineUn, bgInverse)));\n }\n}; // Given the number of items and starting indexes of a common subsequence,\n// put formatted common lines.\n\nconst formatCommon = (\n nCommon,\n aCommon,\n bCommon,\n aLinesIn,\n bLinesUn,\n bLinesIn,\n put\n) => {\n const highlightSpaces = getHighlightSpaces(bLinesUn !== bLinesIn);\n\n for (; nCommon !== 0; nCommon -= 1, aCommon += 1, bCommon += 1) {\n const bLineUn = bLinesUn[bCommon];\n const bLineIn = bLinesIn[bCommon];\n const bLineInLength = bLineIn.length; // For common lines, received indentation seems more intuitive.\n\n const indentation = bLineIn.slice(0, bLineInLength - bLineUn.length); // Color shows whether expected and received line has same indentation.\n\n const hasSameIndentation = aLinesIn[aCommon].length === bLineInLength;\n const fg = hasSameIndentation ? fgCommon : fgIndent;\n const bg = hasSameIndentation ? bgCommon : bgInverse;\n put(fg(' ' + indentation + highlightSpaces(bLineUn, bg)));\n }\n}; // jest --expand\n// Return formatted diff as joined string of all lines.\n\nconst diffExpand = (aLinesUn, bLinesUn, aLinesIn, bLinesIn) => {\n const isCommon = (aIndex, bIndex) => aLinesUn[aIndex] === bLinesUn[bIndex];\n\n const array = [];\n\n const put = line => {\n array.push(line);\n };\n\n let aStart = 0;\n let bStart = 0;\n\n const foundSubsequence = (nCommon, aCommon, bCommon) => {\n formatDelete(aStart, aCommon, aLinesUn, aLinesIn, put);\n formatInsert(bStart, bCommon, bLinesUn, bLinesIn, put);\n formatCommon(nCommon, aCommon, bCommon, aLinesIn, bLinesUn, bLinesIn, put);\n aStart = aCommon + nCommon;\n bStart = bCommon + nCommon;\n };\n\n const aLength = aLinesUn.length;\n const bLength = bLinesUn.length;\n (0, _diffSequences.default)(aLength, bLength, isCommon, foundSubsequence); // After the last common subsequence, format remaining change lines.\n\n formatDelete(aStart, aLength, aLinesUn, aLinesIn, put);\n formatInsert(bStart, bLength, bLinesUn, bLinesIn, put);\n return array.join('\\n');\n};\n\nconst getContextLines = options =>\n options &&\n typeof options.contextLines === 'number' &&\n options.contextLines >= 0\n ? options.contextLines\n : DIFF_CONTEXT_DEFAULT; // jest --no-expand\n// Return joined string of formatted diff for all change lines,\n// but if some common lines are omitted because there are more than the context,\n// then a “patch mark” precedes each set of adjacent changed and common lines.\n\nconst diffNoExpand = (\n aLinesUn,\n bLinesUn,\n aLinesIn,\n bLinesIn,\n nContextLines\n) => {\n const isCommon = (aIndex, bIndex) => aLinesUn[aIndex] === bLinesUn[bIndex];\n\n let iPatchMark = 0; // index of placeholder line for patch mark\n\n const array = [''];\n\n const put = line => {\n array.push(line);\n };\n\n let isAtEnd = false;\n const aLength = aLinesUn.length;\n const bLength = bLinesUn.length;\n const nContextLines2 = nContextLines + nContextLines; // Initialize the first patch for changes at the start,\n // especially for edge case in which there is no common subsequence.\n\n let aStart = 0;\n let aEnd = 0;\n let bStart = 0;\n let bEnd = 0; // Given the number of items and starting indexes of each common subsequence,\n // format any preceding change lines, and then common context lines.\n\n const foundSubsequence = (nCommon, aStartCommon, bStartCommon) => {\n const aEndCommon = aStartCommon + nCommon;\n const bEndCommon = bStartCommon + nCommon;\n isAtEnd = aEndCommon === aLength && bEndCommon === bLength; // If common subsequence is at start, re-initialize the first patch.\n\n if (aStartCommon === 0 && bStartCommon === 0) {\n const nLines = nContextLines < nCommon ? nContextLines : nCommon;\n aStart = aEndCommon - nLines;\n bStart = bEndCommon - nLines;\n formatCommon(nLines, aStart, bStart, aLinesIn, bLinesUn, bLinesIn, put);\n aEnd = aEndCommon;\n bEnd = bEndCommon;\n return;\n } // Format preceding change lines.\n\n formatDelete(aEnd, aStartCommon, aLinesUn, aLinesIn, put);\n formatInsert(bEnd, bStartCommon, bLinesUn, bLinesIn, put);\n aEnd = aStartCommon;\n bEnd = bStartCommon; // If common subsequence is at end, then context follows preceding changes;\n // else context follows preceding changes AND precedes following changes.\n\n const maxContextLines = isAtEnd ? nContextLines : nContextLines2;\n\n if (nCommon <= maxContextLines) {\n // The patch includes all lines in the common subsequence.\n formatCommon(nCommon, aEnd, bEnd, aLinesIn, bLinesUn, bLinesIn, put);\n aEnd += nCommon;\n bEnd += nCommon;\n return;\n } // The patch ends because context is less than number of common lines.\n\n formatCommon(nContextLines, aEnd, bEnd, aLinesIn, bLinesUn, bLinesIn, put);\n aEnd += nContextLines;\n bEnd += nContextLines;\n array[iPatchMark] = (0, _printDiffs.createPatchMark)(\n aStart,\n aEnd,\n bStart,\n bEnd\n ); // If common subsequence is not at end, another patch follows it.\n\n if (!isAtEnd) {\n iPatchMark = array.length; // index of placeholder line\n\n array[iPatchMark] = '';\n const nLines = nContextLines < nCommon ? nContextLines : nCommon;\n aStart = aEndCommon - nLines;\n bStart = bEndCommon - nLines;\n formatCommon(nLines, aStart, bStart, aLinesIn, bLinesUn, bLinesIn, put);\n aEnd = aEndCommon;\n bEnd = bEndCommon;\n }\n };\n\n (0, _diffSequences.default)(aLength, bLength, isCommon, foundSubsequence); // If no common subsequence or last was not at end, format remaining change lines.\n\n if (!isAtEnd) {\n formatDelete(aEnd, aLength, aLinesUn, aLinesIn, put);\n formatInsert(bEnd, bLength, bLinesUn, bLinesIn, put);\n aEnd = aLength;\n bEnd = bLength;\n }\n\n if (aStart === 0 && aEnd === aLength && bStart === 0 && bEnd === bLength) {\n array.splice(0, 1); // delete placeholder line for patch mark\n } else {\n array[iPatchMark] = (0, _printDiffs.createPatchMark)(\n aStart,\n aEnd,\n bStart,\n bEnd\n );\n }\n\n return array.join('\\n');\n};\n\nvar _default = (a, b, options, original) => {\n if (a === b) {\n return _constants.NO_DIFF_MESSAGE;\n }\n\n let aLinesUn = a.split('\\n');\n let bLinesUn = b.split('\\n'); // Indentation is unknown if expected value is snapshot or multiline string.\n\n let aLinesIn = aLinesUn;\n let bLinesIn = bLinesUn;\n\n if (original) {\n // Indentation is known if expected value is data structure:\n // Compare lines without indentation and format lines with indentation.\n aLinesIn = original.a.split('\\n');\n bLinesIn = original.b.split('\\n');\n\n if (\n aLinesUn.length !== aLinesIn.length ||\n bLinesUn.length !== bLinesIn.length\n ) {\n // Fall back if unindented and indented lines are inconsistent.\n aLinesUn = aLinesIn;\n bLinesUn = bLinesIn;\n }\n }\n\n return (\n (0, _printDiffs.printAnnotation)(options) +\n (options && options.expand === false\n ? diffNoExpand(\n aLinesUn,\n bLinesUn,\n aLinesIn,\n bLinesIn,\n getContextLines(options)\n )\n : diffExpand(aLinesUn, bLinesUn, aLinesIn, bLinesIn))\n );\n};\n\nexports.default = _default;\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\nvar _printDiffs = require('./printDiffs');\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// Encapsulate change lines until either a common newline or the end.\nclass ChangeBuffer {\n // incomplete line\n // complete lines\n constructor(op) {\n _defineProperty(this, 'op', void 0);\n\n _defineProperty(this, 'line', void 0);\n\n _defineProperty(this, 'lines', void 0);\n\n this.op = op;\n this.line = [];\n this.lines = [];\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 this.lines.push(\n new _cleanupSemantic.Diff(\n this.op,\n (0, _printDiffs.getHighlightedString)(this.op, this.line)\n )\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 (_printDiffs.MULTILINE_REGEXP.test(string)) {\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 (_printDiffs.MULTILINE_REGEXP.test(string)) {\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 => {\n const deleteBuffer = new ChangeBuffer(_cleanupSemantic.DIFF_DELETE);\n const insertBuffer = new ChangeBuffer(_cleanupSemantic.DIFF_INSERT);\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\nvar _prettyFormat = _interopRequireDefault(require('pretty-format'));\n\nvar _chalk = _interopRequireDefault(require('chalk'));\n\nvar _jestGetType = _interopRequireDefault(require('jest-get-type'));\n\nvar _diffLines = _interopRequireDefault(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;\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(\n Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n })\n );\n }\n ownKeys.forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n }\n return target;\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 _prettyFormat$plugins = _prettyFormat.default.plugins,\n AsymmetricMatcher = _prettyFormat$plugins.AsymmetricMatcher,\n DOMCollection = _prettyFormat$plugins.DOMCollection,\n DOMElement = _prettyFormat$plugins.DOMElement,\n Immutable = _prettyFormat$plugins.Immutable,\n ReactElement = _prettyFormat$plugins.ReactElement,\n ReactTestComponent = _prettyFormat$plugins.ReactTestComponent;\nconst PLUGINS = [\n ReactTestComponent,\n ReactElement,\n DOMElement,\n DOMCollection,\n Immutable,\n AsymmetricMatcher\n];\nconst FORMAT_OPTIONS = {\n plugins: PLUGINS\n};\n\nconst FORMAT_OPTIONS_0 = _objectSpread({}, FORMAT_OPTIONS, {\n indent: 0\n});\n\nconst FALLBACK_FORMAT_OPTIONS = {\n callToJSON: false,\n maxDepth: 10,\n plugins: PLUGINS\n};\n\nconst FALLBACK_FORMAT_OPTIONS_0 = _objectSpread({}, FALLBACK_FORMAT_OPTIONS, {\n indent: 0\n}); // 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.default)(a, b, options);\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 return (0, _diffLines.default)(\n (0, _prettyFormat.default)(a, FORMAT_OPTIONS),\n (0, _prettyFormat.default)(b, FORMAT_OPTIONS),\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 diffMessage;\n let hasThrown = false;\n\n try {\n diffMessage = (0, _diffLines.default)(\n (0, _prettyFormat.default)(a, FORMAT_OPTIONS_0),\n (0, _prettyFormat.default)(b, FORMAT_OPTIONS_0),\n options,\n {\n a: (0, _prettyFormat.default)(a, FORMAT_OPTIONS),\n b: (0, _prettyFormat.default)(b, FORMAT_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 (!diffMessage || diffMessage === _constants.NO_DIFF_MESSAGE) {\n diffMessage = (0, _diffLines.default)(\n (0, _prettyFormat.default)(a, FALLBACK_FORMAT_OPTIONS_0),\n (0, _prettyFormat.default)(b, FALLBACK_FORMAT_OPTIONS_0),\n options,\n {\n a: (0, _prettyFormat.default)(a, FALLBACK_FORMAT_OPTIONS),\n b: (0, _prettyFormat.default)(b, FALLBACK_FORMAT_OPTIONS)\n }\n );\n\n if (diffMessage !== _constants.NO_DIFF_MESSAGE && !hasThrown) {\n diffMessage = _constants.SIMILAR_MESSAGE + '\\n\\n' + diffMessage;\n }\n }\n\n return diffMessage;\n} // eslint-disable-next-line no-redeclare\n\ndiff.getStringDiff = _printDiffs.getStringDiff;\nmodule.exports = diff;\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 */\nconst DIFF_CONTEXT_DEFAULT = 5; // same as diffLines\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).\n\nconst joinAlignedDiffsNoExpand = (\n diffs,\n nContextLines = DIFF_CONTEXT_DEFAULT\n) => {\n const iLength = diffs.length;\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((0, _printDiffs.printCommonLine)(line, j === 0 || j === jLast));\n aEnd += 1;\n bEnd += 1;\n };\n\n const pushDeleteLine = line => {\n lines.push((0, _printDiffs.printDeleteLine)(line));\n aEnd += 1;\n };\n\n const pushInsertLine = line => {\n lines.push((0, _printDiffs.printInsertLine)(line));\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 );\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 );\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 =>\n diffs\n .map((diff, i, diffs) => {\n const line = diff[1];\n\n switch (diff[0]) {\n case _cleanupSemantic.DIFF_DELETE:\n return (0, _printDiffs.printDeleteLine)(line);\n\n case _cleanupSemantic.DIFF_INSERT:\n return (0, _printDiffs.printInsertLine)(line);\n\n default:\n return (0, _printDiffs.printCommonLine)(\n line,\n i === 0 || i === diffs.length - 1\n );\n }\n })\n .join('\\n');\n\nexports.joinAlignedDiffsExpand = joinAlignedDiffsExpand;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.getStringDiff = exports.printMultilineStringDiffs = exports.createPatchMark = exports.printAnnotation = exports.hasCommonDiff = exports.computeStringDiffs = exports.printCommonLine = exports.printInsertLine = exports.printDeleteLine = exports.MULTILINE_REGEXP = exports.getReceivedString = exports.getExpectedString = exports.getHighlightedString = exports.RECEIVED_COLOR = exports.INVERTED_COLOR = exports.EXPECTED_COLOR = exports.DIM_COLOR = void 0;\n\nvar _chalk = _interopRequireDefault(require('chalk'));\n\nvar _cleanupSemantic = require('./cleanupSemantic');\n\nvar _diffStrings = _interopRequireDefault(require('./diffStrings'));\n\nvar _getAlignedDiffs = _interopRequireDefault(require('./getAlignedDiffs'));\n\nvar _joinAlignedDiffs = require('./joinAlignedDiffs');\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 DIM_COLOR = _chalk.default.dim;\nexports.DIM_COLOR = DIM_COLOR;\nconst EXPECTED_COLOR = _chalk.default.green;\nexports.EXPECTED_COLOR = EXPECTED_COLOR;\nconst INVERTED_COLOR = _chalk.default.inverse;\nexports.INVERTED_COLOR = INVERTED_COLOR;\nconst RECEIVED_COLOR = _chalk.default.red;\nexports.RECEIVED_COLOR = RECEIVED_COLOR;\nconst PATCH_COLOR = _chalk.default.yellow; // Given change op and array of diffs, return concatenated string:\n// * include common strings\n// * include change strings which have argument op (inverse highlight)\n// * exclude change strings which have opposite op\n\nconst getHighlightedString = (op, diffs) =>\n diffs.reduce(\n (reduced, diff) =>\n reduced +\n (diff[0] === _cleanupSemantic.DIFF_EQUAL\n ? diff[1]\n : diff[0] === op\n ? INVERTED_COLOR(diff[1])\n : ''),\n ''\n );\n\nexports.getHighlightedString = getHighlightedString;\n\nconst getExpectedString = diffs =>\n getHighlightedString(_cleanupSemantic.DIFF_DELETE, diffs);\n\nexports.getExpectedString = getExpectedString;\n\nconst getReceivedString = diffs =>\n getHighlightedString(_cleanupSemantic.DIFF_INSERT, diffs);\n\nexports.getReceivedString = getReceivedString;\nconst MULTILINE_REGEXP = /\\n/;\nexports.MULTILINE_REGEXP = MULTILINE_REGEXP;\nconst NEWLINE_SYMBOL = '\\u{21B5}'; // downwards arrow with corner leftwards\n\nconst SPACE_SYMBOL = '\\u{00B7}'; // middle dot\n// Instead of inverse highlight which now implies a change,\n// replace common spaces with middle dot at the end of the line.\n\nconst replaceSpacesAtEnd = line =>\n line.replace(/\\s+$/, spaces => SPACE_SYMBOL.repeat(spaces.length));\n\nconst printDeleteLine = line =>\n EXPECTED_COLOR(line.length !== 0 ? '- ' + replaceSpacesAtEnd(line) : '-');\n\nexports.printDeleteLine = printDeleteLine;\n\nconst printInsertLine = line =>\n RECEIVED_COLOR(line.length !== 0 ? '+ ' + replaceSpacesAtEnd(line) : '+'); // Prevent visually ambiguous empty line as the first or the last.\n\nexports.printInsertLine = printInsertLine;\n\nconst printCommonLine = (line, isFirstOrLast = false) =>\n line.length !== 0\n ? DIM_COLOR(' ' + replaceSpacesAtEnd(line))\n : isFirstOrLast\n ? DIM_COLOR(' ' + NEWLINE_SYMBOL)\n : '';\n\nexports.printCommonLine = printCommonLine;\n\nconst computeStringDiffs = (expected, received) => {\n const isMultiline =\n MULTILINE_REGEXP.test(expected) || MULTILINE_REGEXP.test(received); // getAlignedDiffs assumes that a newline was appended to the strings.\n\n if (isMultiline) {\n expected += '\\n';\n received += '\\n';\n }\n\n const diffs = (0, _diffStrings.default)(expected, received);\n (0, _cleanupSemantic.cleanupSemantic)(diffs); // impure function\n\n return {\n diffs,\n isMultiline\n };\n};\n\nexports.computeStringDiffs = computeStringDiffs;\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 printAnnotation = options =>\n EXPECTED_COLOR('- ' + ((options && options.aAnnotation) || 'Expected')) +\n '\\n' +\n RECEIVED_COLOR('+ ' + ((options && options.bAnnotation) || 'Received')) +\n '\\n\\n'; // In GNU diff format, indexes are one-based instead of zero-based.\n\nexports.printAnnotation = printAnnotation;\n\nconst createPatchMark = (aStart, aEnd, bStart, bEnd) =>\n PATCH_COLOR(\n `@@ -${aStart + 1},${aEnd - aStart} +${bStart + 1},${bEnd - bStart} @@`\n ); // Return formatted diff lines without labels.\n\nexports.createPatchMark = createPatchMark;\n\nconst printMultilineStringDiffs = (diffs, expand) => {\n const lines = (0, _getAlignedDiffs.default)(diffs);\n return expand\n ? (0, _joinAlignedDiffs.joinAlignedDiffsExpand)(lines)\n : (0, _joinAlignedDiffs.joinAlignedDiffsNoExpand)(lines);\n};\n\nexports.printMultilineStringDiffs = printMultilineStringDiffs;\nconst MAX_DIFF_STRING_LENGTH = 20000;\n\n// Print specific substring diff for strings only:\n// * if strings are not equal\n// * if neither string is empty\n// * if neither string is too long\n// * if there is a common string after semantic cleanup\nconst getStringDiff = (expected, received, options) => {\n if (\n expected === received ||\n expected.length === 0 ||\n received.length === 0 ||\n expected.length > MAX_DIFF_STRING_LENGTH ||\n received.length > MAX_DIFF_STRING_LENGTH\n ) {\n return null;\n }\n\n const _computeStringDiffs = computeStringDiffs(expected, received),\n diffs = _computeStringDiffs.diffs,\n isMultiline = _computeStringDiffs.isMultiline;\n\n if (!hasCommonDiff(diffs, isMultiline)) {\n return null;\n }\n\n return isMultiline\n ? {\n annotatedDiff:\n printAnnotation(options) +\n printMultilineStringDiffs(\n diffs,\n options === undefined || options.expand !== false\n ),\n isMultiline\n }\n : {\n a: getExpectedString(diffs),\n b: getReceivedString(diffs),\n isMultiline\n };\n};\n\nexports.getStringDiff = getStringDiff;\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 === '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});\nObject.defineProperty(exports, 'DiffOptions', {\n enumerable: true,\n get: function get() {\n return _jestDiff.DiffOptions;\n }\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 = _interopRequireWildcard(require('jest-get-type'));\n\nvar _prettyFormat = _interopRequireDefault(require('pretty-format'));\n\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc =\n Object.defineProperty && Object.getOwnPropertyDescriptor\n ? Object.getOwnPropertyDescriptor(obj, key)\n : {};\n if (desc.get || desc.set) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n }\n newObj.default = obj;\n return newObj;\n }\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 _prettyFormat$plugins = _prettyFormat.default.plugins,\n AsymmetricMatcher = _prettyFormat$plugins.AsymmetricMatcher,\n DOMCollection = _prettyFormat$plugins.DOMCollection,\n DOMElement = _prettyFormat$plugins.DOMElement,\n Immutable = _prettyFormat$plugins.Immutable,\n ReactElement = _prettyFormat$plugins.ReactElement,\n ReactTestComponent = _prettyFormat$plugins.ReactTestComponent;\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 = (\n name,\n value,\n print // printExpected or printReceived\n) => {\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 'this matcher must not have an expected argument',\n printWithType('Expected', expected, printExpected)\n )\n );\n }\n};\n\nexports.ensureNoExpected = ensureNoExpected;\n\nconst ensureActualIsNumber = (actual, matcherName, options) => {\n if (typeof actual !== 'number') {\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`,\n printWithType('Received', actual, printReceived)\n )\n );\n }\n};\n\nexports.ensureActualIsNumber = ensureActualIsNumber;\n\nconst ensureExpectedIsNumber = (expected, matcherName, options) => {\n if (typeof expected !== 'number') {\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`,\n printWithType('Expected', expected, printExpected)\n )\n );\n }\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};\n\nexports.ensureExpectedIsNonNegativeInteger = ensureExpectedIsNonNegativeInteger;\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 ((0, _jestGetType.isPrimitive)(expected)) {\n // Print generic line diff for strings only:\n // * if neither string is empty\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 printDiffOrStringify = (\n expected,\n received,\n expectedLabel,\n receivedLabel,\n expand\n) => {\n if (typeof expected === 'string' && typeof received === 'string') {\n const result = (0, _jestDiff.getStringDiff)(expected, received, {\n aAnnotation: expectedLabel,\n bAnnotation: receivedLabel,\n expand\n });\n\n if (result !== null) {\n if (result.isMultiline) {\n return result.annotatedDiff;\n }\n\n const printLabel = getLabelPrinter(expectedLabel, receivedLabel);\n const expectedLine = printLabel(expectedLabel) + printExpected(result.a);\n const receivedLine = printLabel(receivedLabel) + printReceived(result.b);\n return expectedLine + '\\n' + receivedLine;\n }\n }\n\n if (isLineDiffable(expected, received)) {\n const difference = (0, _jestDiff.default)(expected, received, {\n aAnnotation: expectedLabel,\n bAnnotation: receivedLabel,\n expand\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 === 'boolean' && typeof expected === 'boolean') {\n return false;\n }\n\n return true;\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 = (\n hint,\n generic,\n specific // incorrect value returned from call to printWithType\n) =>\n `${hint}\\n\\n${_chalk.default.bold(\n 'Matcher error'\n )}: ${generic}\\n\\n${specific}`; // 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 _options$comment = options.comment,\n comment = _options$comment === void 0 ? '' : _options$comment,\n _options$expectedColo = options.expectedColor,\n expectedColor =\n _options$expectedColo === void 0 ? EXPECTED_COLOR : _options$expectedColo,\n _options$isDirectExpe = options.isDirectExpectCall,\n isDirectExpectCall =\n _options$isDirectExpe === void 0 ? false : _options$isDirectExpe,\n _options$isNot = options.isNot,\n isNot = _options$isNot === void 0 ? false : _options$isNot,\n _options$promise = options.promise,\n promise = _options$promise === void 0 ? '' : _options$promise,\n _options$receivedColo = options.receivedColor,\n receivedColor =\n _options$receivedColo === void 0 ? RECEIVED_COLOR : _options$receivedColo,\n _options$secondArgume = options.secondArgument,\n secondArgument =\n _options$secondArgume === void 0 ? '' : _options$secondArgume,\n _options$secondArgume2 = options.secondArgumentColor,\n secondArgumentColor =\n _options$secondArgume2 === void 0\n ? EXPECTED_COLOR\n : _options$secondArgume2;\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});\nObject.defineProperty(exports, 'Frame', {\n enumerable: true,\n get: function get() {\n return _types.Frame;\n }\n});\nexports.separateMessageFromStack = exports.formatResultsErrors = exports.formatStackTrace = exports.getTopFrame = exports.getStackTraceLines = exports.formatExecError = void 0;\n\nvar _fs = _interopRequireDefault(require('fs'));\n\nvar _path = _interopRequireDefault(require('path'));\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\nvar _types = require('./types');\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\n\nvar Symbol = global['jest-symbol-do-not-touch'] || global.Symbol;\n\nvar jestReadFile =\n global[Symbol.for('jest-native-read-file')] || _fs.default.readFileSync;\n\nvar Symbol = global['jest-symbol-do-not-touch'] || global.Symbol;\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.default.sep}node_modules${_path.default.sep}`;\nconst PATH_JEST_PACKAGES = `${_path.default.sep}jest${_path.default.sep}packages${_path.default.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*$/; // 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 = 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)(\n _path.default.relative(config.rootDir, match[2])\n ); // highlight paths from the current test file\n\n if (\n (config.testMatch &&\n config.testMatch.length &&\n _micromatch.default.some(filePath, config.testMatch)) ||\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 noStackTrace: false\n }\n) => removeInternalStackEntries(stack.split(/\\n/), options);\n\nexports.getStackTraceLines = getStackTraceLines;\n\nconst getTopFrame = lines => {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (\n var _iterator = lines[Symbol.iterator](), _step;\n !(_iteratorNormalCompletion = (_step = _iterator.next()).done);\n _iteratorNormalCompletion = true\n ) {\n const line = _step.value;\n\n if (\n line.includes(PATH_NODE_MODULES) ||\n line.includes(PATH_JEST_PACKAGES)\n ) {\n continue;\n }\n\n const parsedFrame = stackUtils.parseLine(line.trim());\n\n if (parsedFrame && parsedFrame.file) {\n return parsedFrame;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\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 const topFrame = getTopFrame(lines);\n let renderedCallsite = '';\n const relativeTestPath = testPath\n ? (0, _slash.default)(_path.default.relative(config.rootDir, testPath))\n : null;\n\n if (topFrame) {\n const column = topFrame.column,\n filename = topFrame.file,\n line = topFrame.line;\n\n if (line && filename && _path.default.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 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${stacktrace}`;\n};\n\nexports.formatStackTrace = formatStackTrace;\n\nconst formatResultsErrors = (testResults, config, options, testPath) => {\n const failedResults = testResults.reduce((errors, result) => {\n result.failureMessages.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 _separateMessageFromS = separateMessageFromStack(content),\n message = _separateMessageFromS.message,\n stack = _separateMessageFromS.stack;\n\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( // Flow 0.51.0: property `@@iterator` of $Iterator not found in Object\n // To allow simplistic getRecordIterator in immutable.js\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 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\nvar Symbol = global['jest-symbol-do-not-touch'] || global.Symbol;\nconst toString = Object.prototype.toString;\nconst toISOString = Date.prototype.toISOString;\nconst errorToString = Error.prototype.toString;\nconst regExpToString = RegExp.prototype.toString;\nconst symbolToString = Symbol.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 symbolToString.call(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};\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 = Symbol.for('jest.asymmetricMatcher');\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\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(\n Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n })\n );\n }\n ownKeys.forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n }\n return target;\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 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); // Convert array of attribute objects to props object.\n\nexports.test = test;\n\nconst propsReducer = (props, attribute) => {\n props[attribute.name] = attribute.value;\n return props;\n};\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 name === 'NamedNodeMap'\n ? Array.prototype.reduce.call(collection, propsReducer, {})\n : _objectSpread({}, 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\nconst 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 };\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 _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc =\n Object.defineProperty && Object.getOwnPropertyDescriptor\n ? Object.getOwnPropertyDescriptor(obj, key)\n : {};\n if (desc.get || desc.set) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n }\n newObj.default = obj;\n return newObj;\n }\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 const functionName = type.render.displayName || type.render.name || '';\n return functionName !== ''\n ? 'ForwardRef(' + functionName + ')'\n : 'ForwardRef';\n }\n\n if (ReactIs.isMemo(type)) {\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.props;\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 = Symbol.for('react.test.json');\n\nconst getPropKeys = object => {\n const props = object.props;\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, '<').replace(/>/g, '>');\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":""} |