{"version":3,"sources":["webpack:///./node_modules/axe-core/axe.js"],"names":["axeFunction","window","global","document","_typeof","obj","Symbol","iterator","constructor","prototype","SupportError","error","this","name","cause","message","concat","ruleId","stack","Error","axe","version","module","exports","toString","source","getComputedStyle","Object","create","r","e","n","t","o","i","f","u","a","code","p","call","length","1","_dereq_","polyfill","Uint32Array","imports","axios","CssSelectorParser","doT","emojiRegexText","memoize","memoizee","2","templateSettings","evaluate","interpolate","encode","use","useParams","define","defineParams","conditional","iterate","varname","strip","append","selfcontained","doNotSkipEncoded","template","undefined","compile","log","globalThis","defineProperty","get","configurable","__magic__","self","encodeHTMLSource","encodeHTMLRules","'","matchHTML","replace","m","startend","start","end","startencode","split","skip","unescape","tmpl","c","def","needhtmlencode","indv","cse","sid","str","resolveDefs","block","assign","value","indexOf","substring","param","v","arg","text","Function","s","d","rw","__exp","RegExp","elsecase","vname","iname","_encodeHTML","console","3","4","utils","settle","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","config","Promise","resolve","reject","requestData","data","requestHeaders","headers","isFormData","request","XMLHttpRequest","auth","username","password","Authorization","btoa","fullPath","baseURL","url","open","method","toUpperCase","params","paramsSerializer","timeout","onreadystatechange","readyState","status","responseURL","responseHeaders","getAllResponseHeaders","response","responseType","responseText","statusText","onabort","onerror","ontimeout","timeoutErrorMessage","isStandardBrowserEnv","cookies","xsrfValue","withCredentials","xsrfCookieName","read","xsrfHeaderName","forEach","val","key","toLowerCase","setRequestHeader","isUndefined","onDownloadProgress","addEventListener","onUploadProgress","upload","cancelToken","promise","then","cancel","abort","send","5","bind","Axios","mergeConfig","createInstance","defaultConfig","context","instance","extend","instanceConfig","defaults","Cancel","CancelToken","isCancel","all","promises","spread","default","6","__CANCEL__","7","executor","TypeError","resolvePromise","token","reason","throwIfRequested","8","9","InterceptorManager","dispatchRequest","interceptors","arguments","chain","interceptor","unshift","fulfilled","rejected","push","shift","getUri","merge","10","handlers","eject","id","fn","h","11","isAbsoluteURL","combineURLs","requestedURL","12","enhanceError","13","transformData","throwIfCancellationRequested","transformRequest","common","adapter","transformResponse","14","isAxiosError","toJSON","description","number","fileName","lineNumber","columnNumber","15","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","prop","isObject","deepMerge","axiosKeys","otherKeys","keys","filter","16","validateStatus","17","fns","18","process","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","JSON","stringify","parse","maxContentLength","Accept","_process","19","thisArg","args","Array","apply","20","encodeURIComponent","serializedParams","parts","isArray","isDate","toISOString","join","hashmarkIndex","slice","21","relativeURL","22","write","expires","path","domain","secure","cookie","isNumber","Date","toGMTString","isString","match","decodeURIComponent","remove","now","23","test","24","originURL","msie","navigator","userAgent","urlParsingNode","createElement","resolveURL","href","setAttribute","protocol","host","search","hash","hostname","port","pathname","charAt","location","requestURL","parsed","25","normalizedName","26","ignoreDuplicateOf","line","trim","substr","27","callback","arr","28","isFunction","l","hasOwnProperty","FormData","ArrayBuffer","isView","pipe","URLSearchParams","product","result","assignValue","b","29","30","31","32","33","parent","34","it","String","35","36","wellKnownSymbol","definePropertyModule","UNSCOPABLES","ArrayPrototype","37","Constructor","38","39","DataView","40","NAME","NATIVE_ARRAY_BUFFER","DESCRIPTORS","has","classof","createNonEnumerableProperty","redefine","getPrototypeOf","setPrototypeOf","uid","Int8Array","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","ObjectPrototype","isPrototypeOf","TO_STRING_TAG","TYPED_ARRAY_TAG","NATIVE_ARRAY_BUFFER_VIEWS","opera","TYPED_ARRAY_TAG_REQIRED","TypedArrayConstructorsList","Uint8Array","Int16Array","Uint16Array","Int32Array","Float32Array","Float64Array","isTypedArray","aTypedArray","aTypedArrayConstructor","C","ARRAY","TypedArrayConstructor","exportTypedArrayMethod","KEY","property","forced","exportTypedArrayStaticMethod","klass","41","redefineAll","fails","anInstance","toInteger","toLength","toIndex","IEEE754","getOwnPropertyNames","arrayFill","setToStringTag","InternalStateModule","getInternalState","setInternalState","set","NativeArrayBuffer","$ArrayBuffer","$DataView","$DataViewPrototype","RangeError","packIEEE754","pack","unpackIEEE754","unpack","packInt8","packInt16","packInt32","unpackInt32","packFloat32","packFloat64","addGetter","view","count","index","isLittleEndian","intIndex","store","byteLength","bytes","byteOffset","reverse","conversion","NaN","ArrayBufferPrototype","j","testView","nativeSetInt8","setInt8","getInt8","setUint8","unsafe","bufferLength","offset","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","42","toObject","toAbsoluteIndex","min","Math","copyWithin","target","O","len","to","from","inc","43","argumentsLength","endPos","44","toIndexedObject","createMethod","IS_INCLUDES","$this","el","fromIndex","includes","45","IndexedObject","arraySpeciesCreate","TYPE","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","callbackfn","that","specificCreate","boundFunction","map","some","every","find","findIndex","46","arrayMethodIsStrict","arrayMethodUsesToLength","nativeLastIndexOf","lastIndexOf","NEGATIVE_ZERO","STRICT_METHOD","USES_TO_LENGTH","ACCESSORS","FORCED","searchElement","47","METHOD_NAME","argument","48","cache","thrower","options","argument0","argument1","enumerable","49","aFunction","IS_RIGHT","memo","left","right","50","SPECIES","originalArray","51","ITERATOR","SAFE_CLOSING","called","iteratorWithReturn","next","done","return","exec","SKIP_CLOSING","ITERATION_SUPPORT","object","52","53","TO_STRING_TAG_SUPPORT","classofRaw","CORRECT_ARGUMENTS","tag","tryGet","callee","54","ownKeys","getOwnPropertyDescriptorModule","getOwnPropertyDescriptor","55","F","56","IteratorPrototype","createPropertyDescriptor","Iterators","returnThis","IteratorConstructor","57","58","bitmap","writable","59","$","createIteratorConstructor","IS_PURE","IteratorsCore","BUGGY_SAFARI_ITERATORS","Iterable","DEFAULT","IS_SET","CurrentIteratorPrototype","methods","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","entries","values","proto","60","61","EXISTS","62","63","setGlobal","copyConstructorProperties","isForced","targetProperty","sourceProperty","descriptor","TARGET","GLOBAL","STATIC","stat","noTargetGet","sham","64","65","66","variable","namespace","67","68","check","69","70","71","getBuiltIn","72","73","abs","pow","floor","LN2","mantissaLength","exponent","mantissa","exponentLength","eMax","eBias","rt","sign","nBits","74","propertyIsEnumerable","75","dummy","Wrapper","NewTarget","NewTargetPrototype","76","functionToString","inspectSource","77","NATIVE_WEAK_MAP","objectHas","sharedKey","hiddenKeys","WeakMap","wmget","wmhas","wmset","metadata","STATE","enforce","getterFor","state","type","78","79","80","replacement","feature","detection","normalize","POLYFILL","NATIVE","string","81","82","83","PrototypeOfArrayIteratorPrototype","arrayIterator","84","dup","85","getOwnPropertySymbols","86","87","activeXDocument","anObject","defineProperties","enumBugKeys","html","documentCreateElement","IE_PROTO","EmptyConstructor","scriptTag","content","LT","_NullProtoObject","ActiveXObject","iframeDocument","iframe","close","temp","parentWindow","NullProtoObjectViaActiveX","style","display","appendChild","src","contentWindow","Properties","88","objectKeys","89","IE8_DOM_DEFINE","toPrimitive","nativeDefineProperty","P","Attributes","90","propertyIsEnumerableModule","nativeGetOwnPropertyDescriptor","91","internalObjectKeys","92","93","CORRECT_PROTOTYPE_GETTER","94","names","95","96","nativePropertyIsEnumerable","NASHORN_BUG","V","97","aPossiblePrototype","setter","CORRECT_SETTER","__proto__","98","99","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","100","101","102","enforceInternalState","TEMPLATE","simple","103","104","105","CONSTRUCTOR_NAME","106","TAG","107","shared","108","109","mode","copyright","110","defaultConstructor","S","111","max","integer","112","113","requireObjectCoercible","114","ceil","isNaN","115","116","117","toPositiveInteger","BYTES","118","119","input","PREFERRED_STRING","valueOf","120","121","TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS","ArrayBufferViewCore","ArrayBufferModule","toOffset","typedArrayFrom","setSpecies","inheritIfRequired","round","fromList","list","isTypedArrayIndex","wrappedGetOwnPropertyDescriptor","wrappedDefineProperty","wrapper","CLAMPED","GETTER","SETTER","NativeTypedArrayConstructor","TypedArrayConstructorPrototype","exported","addElement","getter","typedArrayOffset","$length","$len","122","checkCorrectnessOfIteration","iterable","123","getIteratorMethod","isArrayIteratorMethod","step","mapfn","mapping","iteratorMethod","124","postfix","random","125","NATIVE_SYMBOL","126","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","127","addToUnscopables","defineIterator","iterated","kind","Arguments","128","129","$copyWithin","130","$every","131","$fill","132","$filter","speciesConstructor","133","$findIndex","predicate","134","$find","135","$forEach","136","137","$includes","138","$indexOf","139","ArrayIterators","arrayValues","arrayKeys","arrayEntries","nativeTypedArrayIterator","CORRECT_ITER_NAME","typedArrayValues","140","$join","separator","141","$lastIndexOf","142","$map","143","144","$reduceRight","145","$reduce","146","middle","147","arrayLike","148","$slice","149","$some","150","$sort","sort","comparefn","151","begin","beginIndex","BYTES_PER_ELEMENT","152","$toLocaleString","toLocaleString","TO_LOCALE_STRING_BUG","153","Uint8ArrayPrototype","arrayToString","arrayJoin","IS_NOT_ARRAY_METHOD","154","createTypedArrayConstructor","init","155","156","pseudos","attrEqualityMods","ruleNestingOperators","substitutesEnabled","isHex","registerSelectorPseudos","unregisterSelectorPseudos","registerNumericPseudos","unregisterNumericPseudos","registerNestingOperators","operator","unregisterNestingOperators","registerAttrEqualityMods","mod","unregisterAttrEqualityMods","enableSubstitutes","disableSubstitutes","identSpecialChars","strReplacementsRev","singleQuoteEscapeChars","doubleQuotesEscapeChars","ParseContext","pos","chr","getIdent","getStr","skipWhitespace","quote","escapeTable","esc","hex","fromCharCode","parseInt","res","parseSelector","selector","parseSingleSelector","selectors","rule","parseRule","currentRule","op","nestingOperator","tagName","classNames","attr","attrValue","valueType","attrs","pseudoName","pseudo","escapeIdentifier","charCode","charCodeAt","extraCharCode","escapeStr","render","_renderEntity","entity","currentEntity","cn","157","isValue","isPlainFunction","normalizeOpts","contains","dscr","w","desc","gs","158","159","numberIsNaN","toPosInt","objHasOwnProperty","160","161","Boolean","162","iteratorSymbol","isArguments","callable","validValue","Context","getIterator","mapFn","163","164","captureStackTrace","err","ext","165","generate","mixin","arg1","arg2","ignore","166","objToString","167","isFunctionStringTag","168","169","170","171","Number","172","173","174","175","isFinite","176","177","objPropertyIsEnumerable","defVal","cb","compareFn","178","179","foo","bar","trzy","180","dest","181","182","183","function","184","_undefined","185","186","187","188","targetObj","189","sourceObject","symbol","190","opts1","191","192","193","194","ensureValue","stringifiable","195","isCallable","196","197","198","199","searchString","200","201","safeToString","reNewLine","char","202","factory","x","vertxNext","customSchedulerFn","asap","queue","flush","scheduleFlush","browserWindow","browserGlobal","BrowserMutationObserver","MutationObserver","WebKitMutationObserver","isNode","isWorker","importScripts","MessageChannel","useSetTimeout","globalSetTimeout","setTimeout","channel","iterations","observer","node","onFulfillment","onRejection","child","noop","PROMISE_ID","makePromise","_state","invokeCallback","_result","subscribe","resolve$1","nextTick","createTextNode","observe","characterData","port1","onmessage","port2","postMessage","vertx","require","runOnLoop","runOnContext","attemptVertx","handleMaybeThenable","maybeThenable","then$$1","thenable","fulfill","handleOwnThenable","sealed","fulfillmentHandler","rejectionHandler","tryThen","_label","handleForeignThenable","publishRejection","_onerror","publish","_subscribers","subscribers","settled","detail","hasCallback","succeeded","Enumerator","_instanceConstructor","_remaining","_enumerate","_eachEntry","entry","resolve$$1","_then","didError","_settledAt","Promise$1","_willSettleAt","enumerator","resolver","needsResolver","initializePromise","needsNew","catch","finally","race","_","_setScheduler","scheduleFn","_setAsap","asapFn","_asap","local","promiseToString","cast","203","204","validTypes","toStringTag","205","206","objPrototype","created","ie11BugWorkaround","207","NativeSymbol","SymbolPolyfill","hasInstance","isConcatSpreadable","species","unscopables","208","validateSymbol","registry","for","keyFor","209","HiddenSymbol","isNativeSafe","generateName","setupStandardSymbols","setupSymbolRegistry","__description__","__name__","210","isSymbol","211","on","_once2","off","emit","descriptors","base","listener","_once","__eeOnceListener__","__ee__","once","listeners","candidate","splice","212","naiveFallback","__global__","213","214","215","216","limit","del","size","hit","oldIndex","nuIndex","delete","clear","217","aFrom","objectMap","defineLength","async","tbi","conf","currentCallback","currentContext","currentArgs","waiting","memoized","original","last","origCb","oldCache","218","extensions","dispose","resultArray","219","isPromise","maxAge","timeouts","preFetchAge","preFetchTimeouts","unref","clearTimeout","preFetch","220","toPosInteger","lruQueue","221","primitiveSet","ensureString","toShortString","supportedModes","isFailed","onSuccess","onFailure","resolvedMode","nextTickFailure","222","refCounter","deleteRef","getRefCount","223","resolveLength","plain","normalizer","primitive","224","customError","ee","resolveResolve","resolveNormalize","_on","memLength","_get","_clear","extDel","extGet","extHas","getListeners","setListeners","deleteListeners","resolvers","profileName","updateEnv","__memoized__","_has","225","226","optsLength","fnLength","isAsync","227","userNormalizer","228","resolveArgs","toArray","229","lastId","argsMap","230","pop","231","currentLength","232","233","234","configure","force","extFn","__profiler__","235","setImmediate","byObserver","Observer","currentQueue","timers","236","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","draining","queueIndex","cleanUpNextTick","drainQueue","run","marker","runClearTimeout","Item","array","title","browser","env","argv","versions","addListener","removeListener","removeAllListeners","prependListener","prependOnceListener","binding","cwd","chdir","dir","umask","237","clearImmediate","immediateIds","nextImmediateId","Timeout","clearFn","_id","_clearFn","setInterval","clearInterval","ref","enroll","item","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","238","239","maxTimeout","240","isPrototype","241","possibleTypes","242","classRe","243","244","245","genId","checkInstance","methodName","prefix","rand","helpers","_extends","dotRegex","unpackToObject","collection","audit","Audit","brand","application","tagExclude","lang","_init","_defaultLocale","_setDefaultLocale","locale","checks","rules","failureSummaries","incompleteFallbackMessage","checkIDs","_check$messages","messages","pass","fail","incomplete","ruleIDs","_i","help","_i2","failureMessage","_resetLocale","defaultLocale","applyLocale","getDefferedRule","performanceTimer","mark","ruleResult","debug","errResult","RuleResult","constants","CANTTELL","errorNode","getHelpUrl","_ref","helpUrlBase","CheckResult","relatedNodes","createExecutionContext","spec","Check","pushUniqueFrameSelector","selectorArray","frame","frames","querySelectorAll","frameloop","l2","include","exclude","parseSelectorArray","nodeList","getNodeFromTree","Node","documentElement","flatTree","_this","initiator","page","NodeList","normalizeContext","getFlattenedTree","Element","ownerDocument","Document","getRootNode","select","isNodeInContext","isHidden","findBy","pushUniqueFrame","actualNode","respondable","isInFrame","validateContext","nodeSorter","NA","pageLevel","impact","nodes","Rule","parentAudit","_audit","excludeHidden","enabled","any","none","tags","preload","matches","getResult","results","hasResults","_classCallCheck","_defineProperties","props","_createClass","protoProps","staticProps","_applyCheckLocale","_applyRuleLocale","_applyFailureSummaries","clone","commons","reporter","getDefaultConfiguration","commands","_constructHelpUrls","registerCommand","command","addRule","getRule","addCheck","normalizeOptions","_selectCache","allRulesToRun","reduce","out","ruleShouldRun","later","getRulesToRun","runNowRules","runLaterRules","nowRulesQueue","defer","preloaderQueue","assets","warn","queueForNowRulesAndPreloader","nowRulesAndPreloaderResults","assetsFromQueue","nowRulesResults","laterRulesQueue","deferredRule","laterRuleResults","after","ruleIds","runOnly","hasTag","hasRule","only","unmatchedTags","setBranding","branding","previous","metaData","helpUrl","resetRulesAndChecks","_cache","checkOptions","checkResult","checkHelper","DqElement","runSync","_options$enabled","gather","markStart","markEnd","markHiddenStart","markHiddenEnd","elements","element","measure","runChecks","checkQueue","option","getCheckOption","rej","runChecksSync","_trackPerformance","q","gatherAndMatchNodes","_logGatherPerformance","resolveNode","rejectNode","_logRulePerformance","_this2","_markStart","_markEnd","_markChecksStart","_markChecksEnd","timeElapsed","_this3","markMatchesStart","markMatchesEnd","afterChecks","getAllChecks","findAfterChecks","ruleID","beforeResults","checkID","checkResults","nodeResult","findCheckResults","afterResults","filtered","checkTypes","filterChecks","sanitizeNodes","whitespaceRegex","AbstractVirtualNode","children","className","classAttr","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","_getPrototypeOf","_inherits","subClass","superClass","_setPrototypeOf","isXHTMLGlobal","SerialVirtualNode","_axe$AbstractVirtualN","serialNode","_ref$attributes","attributes","attrMap","_props","nodeName","_serialNode$nodeType","nodeType","assert","freeze","normaliseProps","_attrs","htmlFor","attrName","VirtualNode","shadowId","_isHidden","isXHTML","_isXHTML","getAttribute","hasAttribute","computedStyle","getPropertyValue","_this$actualNode","multiple","isFocusable","dom","tabbableElements","getTabbableElements","clientRects","getClientRects","rect","width","boundingClientRect","getBoundingClientRect","cleanupPlugins","cleanupErrors","plugins","cleanup","flattenedTree","body","sendCommandToFrame","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","_arr","_n","_d","_e","_s","runCommand","keepalive","runRules","Plugin","_run","_collect","collect","_registry","resultGroups","resultGroupMap","priority","group","definition","axeVersion","ver","specVersion","_specVersion$split","_specVersion$split2","canary","_version$split$map","_version$split$map2","major","minor","patch","_axe$version$split","_axe$version$split2","axeCanary","_axeVersion$split$map","_axeVersion$split$map2","axeMajor","axeMinor","axePatch","reporters","modifiedRules","disableOtherRules","getRules","matchingRules","ruleData","matchingRule","rd","_load","respond","add","impl","registerPlugin","plugin","defaultReporter","_memoizedFns","_tree","_selectorData","getSelectorData","scrollState","auditStart","iframes","collectResultsFromFrames","restoreScroll","getScrollState","setScrollState","auditEnd","mergeResults","publishMetaData","finalizeRuleResult","getReporter","addReporter","isDefault","reset","_runRules","runVirtualRule","vNode","rawResults","aggregateResult","violations","failureSummary","getEnvironmentData","toolOptions","normalizeRunParams","typeErr","potential","isContext","_resolve","_reject","_running","nodeData","failingChecks","sum","win","_win$screen","screen","_win$navigator","_win$location","innerHeight","innerWidth","orientation","msOrientation","mozOrientation","testEngine","testRunner","testEnvironment","windowWidth","windowHeight","orientationAngle","angle","orientationType","timestamp","resultKeys","processAggregate","resultObject","resultTypes","subResult","elementRef","fromFrame","xpath","checkRes","relatedNode","normalizeRelatedNodes","passes","inapplicable","raw","transformedResult","_types","typeResult","addFailureSummaries","aggregate","initial","sorting","_axe$constants","CANTTELL_PRIO","FAIL_PRIO","checkMap","PASS_PRIO","anyAllNone","functor","copyToGroup","resultCopy","getSelector","_fromFrame","absolutePaths","_options","toRoot","outerHTML","XMLSerializer","serializeToString","maxLength","truncate","getSource","_element","isMostlyNumbers","splitString","splitIndex","trimRight","uriParser","query","_splitString","_splitString2","_splitString3","_splitString4","_url$split","_url$split2","_splitString5","_splitString6","_splitString7","_splitString8","_splitString9","_splitString10","aggregateChecks","nodeResOriginal","priorities","impacts","aggregateNodeResults","nodeResults","resultList","groupName","impactGroup","FAIL_GROUP","CANTTELL_GROUP","impactList","failure","NA_GROUP","areStylesSet","styles","stopAt","styl","att","parentNode","bool","_data","parameters","frameWaitTime","parameter","frameElement","otherVNode","containsShadowChild","compareDocumentPosition","parser","cssParser","getXpath","matchesSelector","candidates","getMethod","escapeSelector","codeUnit","firstCodeUnit","extendMetaData","flattenTree","retVal","realArray","reduceShadowDOM","replacements","isShadowRoot","shadowRoot","childNodes","getDistributedNodes","assignedNodes","firstChild","nextSibling","getSlotChildren","getBaseLang","getCheckMessage","checkId","processMessage","ruleCheckOption","checkOption","opts","getFriendlyUriEnd","uri","currentDomain","_options$maxLength","_uriParser","pathEnd","lastDotIndex","getNodeAttributes","NamedNodeMap","cloneNode","doc","getScroll","elm","overflowX","scrollWidth","clientWidth","overflowY","scrollHeight","clientHeight","overflowXStyle","overflowYStyle","scrollableX","scrollableY","top","scrollTop","scrollLeft","styleSheet","ignoredAttributes","getAttributeNameValue","at","atnv","friendly","encodeURI","countSort","filterAttributes","getNthChildString","siblings","sibling","getElmId","getBaseSelector","localName","getThreeLeastCommonFeatures","selectorData","features","clss","classData","classes","tagData","classList","cl","ind","uncommonClasses","atts","attData","hasAttributes","uncommonAttributes","feat","generateSelector","similar","_options$toRoot","parentElement","domTree","currentLevel","_loop","current","comp","getStyleSheetFactory","dynamicDoc","_options$isCrossOrigi","isCrossOrigin","root","_options$isLink","isLink","head","sheet","xpathArray","xpathToString","getXPathArray","previousSibling","injectStyle","cssText","getElementsByTagName","recursed","assignedSlot","htmlTags","isHtmlElement","namespaceURI","possibleShadowRoots","matchExpression","expression","exp","matchesTag","hasClass","matchesClasses","nodeAtt","matchesAttributes","matchesId","matchesExpression","expressions","toStr","maxSafeInteger","escapeRegExp","reUnescape","convertAttributes","regexp","attributeKey","attributeValue","convertClasses","convertPseudos","convertExpressions","newExp","combinator","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","iter","arr2","isSameOriginStylesheet","cssRules","filerStyleAndLinkAttributesInDocumentFragment","linkHref","linkRel","rel","filterMediaIsPrint","media","convertSelector","matchAnyParent","exps","frameResults","frameResult","normalizeResult","resultSet","frameSelector","frameSpec","pushFrame","sorterResult","firstFromFrame","spliceNodes","nodeA","nodeB","parseCrossOriginStylesheet","importedUrls","axiosOptions","convertDataToStylesheet","rootNode","parseStylesheet","parseSameOriginStylesheet","cssImportRules","cssImportUrlsNotAlreadyImported","importUrl","cssRuleIndex","newPriority","isCrossOriginRequest","nonImportCSSRules","isSameOrigin","performance","originalTime","lastRecordedTime","logMeasures","markName","measureName","startMark","endMark","req","duration","getEntriesByType","axeStart","getEntriesByName","measures","startTime","output","nextKey","pollyfillElementsFromPoint","elementsFromPoint","msElementsFromPoint","usePointer","pointerEvents","cssProp","cssDisableVal","innerHTML","y","previousPointerEvents","elementFromPoint","getPropertyPriority","setProperty","removeChild","k","currentElement","items","T","kValue","A","preloadCssom","_ref$treeRoot","treeRoot","rootNodes","tree","ids","querySelectorAllFilter","uniqueArray","getAllRootNodesInTree","implementation","createHTMLDocument","_ref2","sheets","textContent","stylesheet","getStylesheetsFromDocumentFragment","styleSheets","mediaText","getStylesheetsFromDocument","hrefs","filterStylesheetsWithSameHref","getStylesheetsOfRootNode","rootIndex","parseOptions","sheetIndex","getCssomForAllRootNodes","flattenAssets","acc","preloadMedia","mediaVirtualNodes","_ref3","onMediaReady","removeEventListener","shouldPreload","getPreloadConfig","_axe$constants$preloa","preloadFunctionsMap","cssom","_axe$utils$getPreload","preloadTimeout","asset","preloadAssets","uuid","dataRegex","substitute","regex","extender","checksData","shouldBeTrue","sourceData","checkData","getDefaultMsg","missingData","messageKey","msg","getIncompleteReason","createLocalVariables","vNodes","anyLevel","thisLevel","parentShadowId","matchTags","defaultExclude","getElmScrollRecursive","scrolls","scroll","getDeepest","pushNode","singular","plural","rulesData","shouldBeFalse","childOnly","childAny","combined","added","rest","matchExpressions","funcGuard","tasks","started","remaining","completeQueue","complete","defaultFail","failed","createResolve","task","errorTypes","_getSource","post","topic","_respondable","_source","_axeuuid","_uuid","_keepalive","axeRespondables","v1","createResponder","parseMessage","dataString","ex","errorName","ErrConstructor","postedMessage","messageSource","verify","subscriber","responder","ruleOptions","windowScroll","pageXOffset","pageYOffset","setScroll","curried","reducedIncludes","thing","arr1","elem","tokenList","_global","_rng","_crypto","crypto","msCrypto","getRandomValues","_rnds8","_rnds","BufferClass","Buffer","_byteToHex","_hexToByte","unparse","buf","bth","_seedBytes","_nodeId","_clockseq","_lastMSecs","_lastNSecs","clockseq","getTime","nsecs","dt","tl","tmh","v4","rnds","rng","ii","oct","validInputTypes","langs","validLangs","accesskeys","blink","bypass","checkboxgroup","dlitem","label","listitem","marquee","radiogroup","region","tabindex","fallbackrole","invalidrole","abstractrole","unsupportedrole","noId","ariaCurrent","caption","landmark","fieldset","bgImage","bgGradient","imgNode","bgOverlap","fgAlpha","elmPartiallyObscured","elmPartiallyObscuring","outsideViewport","equalRatio","shortTextContent","nonBmp","noXHTML","noLang","bgContrast","roleNotValid","exists","i1","l1","virtualNode","aria","getRole","noImplicit","dpub","fallback","allowImplicit","ignoredTags","role","getComposedParent","shouldMatchElement","reviewEmpty","supportedRoles","hasAttr","_axe$commons","autocomplete","sanitize","ariaDisabled","tabIndex","roleDef","lookupTable","isVisible","querySelector","findUpVirtual","textIndent","bottom","visuallyOverlaps","disabled","nodeParentLabel","relevantNode","relevantVirtualNode","getElementById","candidateVirtualNode","_candidate","visibleText","visibleVirtual","removeUnicode","emoji","punctuations","range","createRange","nodeValue","selectNodeContents","rects","noScroll","ignoreUnicode","ignoreLength","degreeThreshold","defaultView","_axe$commons2","idSelector","idMatchingElms","isAccessibleRef","_axe$commons3","explicitRoles","isValidRole","implicitRole","insertedIntoFocusOrder","isViolation","primaryLangValue","primaryXmlLangValue","_axe$commons4","accessibleTextVirtual","_axe$commons5","getRolesWithNameFromContents","arialabelText","arialabelledbyText","pixelThreshold","occuranceThreshold","nativeScopeFilter","excludedParentsForHeaderFooterLandmarks","landmarkRoles","getRolesByType","headerFooterElement","isLandmarkVirtual","table","isDataTable","isInTextBlock","scaleMinimum","lowerBound","currentSrc","allowedDuration","nodeText","margins","weight","italic","hasContentVirtual","isSkipLink","isOffscreen","tableArray","abstractRoles","getRoleType","allowed","invalid","allowedAttr","validateAttr","_ref$allowImplicit","_ref$ignoredTags","unallowedRoles","getElementUnallowedRoles","_axe$commons6","allowEmpty","idref","validateAttrValue","roleType","deprecated","allRoles","allowAbstract","_axe$commons7","labelText","accText","accessibleText","missing","_axe$commons$forms","forms","isNativeTextbox","isNativeSelect","isAriaTextbox","isAriaListbox","isAriaCombobox","isAriaRange","preChecks","required","requiredAttr","requiredOwned","implicitNodes","idrefs","owns","virtualTree","ariaOwned","implicit","implicitSelector","ariaOwns","_node","childRoles","one","ownedElements","childRole","textboxIndex","expandedChildRoles","expandedValue","expanded","popupRole","_index","expandedChildRole","missingIndex","missingRequiredChildren","hasDecendantWithRole","getMissingContext","requiredContext","includeElement","missingParents","owners","getAriaOwners","unsupportedAttrs","attribute","unsupported","isException","exceptions","evaluateRoleForElement","isUnsupportedRole","needsReview","skipAttrs","VALID_TAG_NAMES_FOR_SCROLLABLE_REGIONS","ARTICLE","ASIDE","NAV","SECTION","VALID_ROLES_FOR_SCROLLABLE_REGIONS","banner","complementary","contentinfo","form","main","navigation","validScrollableRole","validScrollableTagName","validScrollableSemantics","_axe$commons8","color","hasUnicode","bgNodes","bgColor","getBackgroundColor","fgColor","getForegroundColor","nodeStyle","fontSize","parseFloat","fontWeight","bold","cr","hasValidContrastRatio","truncatedResult","contrastRatio","incompleteData","toHexString","toFixed","expectedContrastRatio","isValid","_axe$commons9","getContrast","color1","color2","c1lum","getRelativeLuminance","c2lum","blockLike","isBlock","nodeColor","parentColor","parentBlock","elementIsDistinct","contrast","allowedTypesMap","bday","email","tel","photo","impp","autocompleteTerms","term","purposeTerm","stateTerms","allowedTypes","isValidAutocomplete","failureCode","getUnrelatedElements","matchingNodes","firstNode","firstElementChild","otherElements","checkFieldset","hasLabelledByText","ariaLabel","checkARIAGroup","runCheck","seen","hasBeenSeen","_axe$commons10","sharedLabels","uniqueLabels","groupItem","labels","newLabel","sharedLabel","uniqueLabel","accessibleTextOptions","inLabelledByContext","labelNode","elementsThatCanBeDisabled","isModalOpen","_ref4","_ref5","landmarks","matchingElms","elms","alt","_axe$commons11","parentVNode","labelVirtual","_axe$commons12","inControlContext","_ref6","isHumanInterpretable","nonLigatureText","visibleTextNodes","textVNode","isIconLigature","isStringContained","compare","compareWith","curatedCompareWith","curateString","curatedCompare","noUnicodeStr","ATVisibleLabels","uniqueLandmarks","currentResult","matchedResult","someResult","langValue","xmlLangValue","langAttr","langVal","baselangVal","parentTagName","parentRole","_axe$commons13","ALLOWED_ROLES","childNode","explicitRole","badNodes","hasNonEmptyTextNode","_axe$commons14","atLeastOneListitem","isEmpty","badRoleNodes","badRoles","isLi","isListItemRole","roles","hasDt","hasDd","_ref7","_ref8","_Object$assign","timer","_options$allowedDurat","playbackRange","hhMmSs","secs","mins","convertHourMinSecToSeconds","getPlaybackRange","currentTime","getPlayableDuration","_ref9$cssom","_ref10$degreeThreshol","isLocked","relatedElements","rulesGroupByDocumentFragment","_ref11","_Object$keys","_rulesGroupByDocument","orientationRules","isMediaRuleWithOrientation","_ref16","cssRule","locked","_ref13","selectorText","transformStyle","transform","webkitTransform","msTransform","_matches","transformFn","transformFnValue","degrees","transformFunction","getAngleInDegrees","_transformFnValue$spl","_transformFnValue$spl2","z","angleWithUnit","_values","_b","convertRadToDeg","atan2","sinB","asin","cosB","cos","acos","getAngleInDegreesFromMatrixTransform","getRotationInDegrees","getIsOrientationLocked","_ref12","_ref14","unit","turn","grad","convertGradToDeg","radians","PI","_ref17","_ref17$scaleMinimum","_ref17$lowerBound","contentValue","_contentValue$split","_contentValue$split2","curatedKey","curatedValue","_ref18","_ref18$scaleMinimum","_ref18$lowerBound","_contentValue$split3","_contentValue$split4","ariaHeadingLevel","headingLevel","prevLevel","_axe$commons15","afterData","urlProps","urlPropsFromAttribute","incompleteResults","_ref19","uniqueResults","nameMap","_loop2","_currentResult$relate","_currentResult$data","sameNameResults","_ref20","resultNum","isSameUrl","_ref21","isIdenticalObject","aProps","bProps","propName","aValue","bValue","vLink","parsedParams","currentIndex","prevSibling","normalizeFontWeight","getStyleValues","nextNode","outerText","innerText","getTextContainer","isItalic","isHeaderStyle","styleA","styleB","margin","currStyle","nextStyle","prevStyle","blockquote","_axe$commons16","implicitAriaLiveRoles","regionlessNodes","implicitLandmarks","findRegionlessElms","ariaLive","titleAttr","isRegion","getElementByReference","_hasRegionDescendant","hasContent","_ref22","titles","foundNode","uniqueIds","_axe$commons17","_axe$commons18","overriddenProperties","titleText","titleNode","_ref23","toGrid","firstRow","rows","curr","summary","row","cell","badCells","rowIndex","rowLength","cellIndex","cellLength","cells","isHTML5","tableUtils","getAllCells","tableGrid","isDataCell","getHeaders","header","reviewCells","isSelf","notOfTable","headersAttr","reffedHeaders","getCellPosition","hasCell","isColumnHeader","traverse","isRowHeader","parentStyle","isNull","isNotNull","unstandardized","globalAttributes","alert","owned","nameFrom","allowedElements","alertdialog","article","button","checkbox","columnheader","combobox","properties","composite","dialog","directory","namefrom","feed","figure","grid","gridcell","heading","img","link","listbox","math","menu","menubar","menuitem","menuitemcheckbox","menuitemradio","note","presentation","progressbar","radio","roletype","rowgroup","rowheader","scrollbar","searchbox","section","sectionhead","slider","spinbutton","structure","switch","tab","tablist","tabpanel","textbox","toolbar","tooltip","treegrid","treeitem","widget","elementsAllowedNoRole","condition","elementsAllowedAnyRole","_ref24","AREA","_ref25","BUTTON","_ref26","IMG","_ref27","INPUT","_ref28","LI","_ref29","MENU","_ref30","OPTION","_ref31","SELECT","_ref32","SVG","_ref33","rolesOfType","fromDefinition","EdgeFormDefaults","refs","accessibleName","accessibleNameAdd","startNode","dpubRoles","getRoleSegments","nodeRoles","hasAttributeNS","epubRoles","getAttributeNS","roleSegments","isAriaRoleAllowedOnElement","getOwnedVirtual","_ref34","ownedElms","_ref35","abstracts","roleAttr","roleList","validRoles","idRefsRegex","_getFonts","font","bgElm","obscured","visuallyContains","alpha","contentOverlapping","targetElement","bgNode","targetRect","obscuringElements","shadowElementsFromPoint","cacheIdRefs","refAttrs","idRefs","tokens","_i3","roleValue","roleDefinition","_ref36","namedFromContents","_ref37","strict","_ref38","_ref38$flagUnsupporte","flagUnsupported","isRoleUnsupported","availableImplicitRoles","lookup","implicitNodeTypeSelector","nodeAttributes","ariaAttributes","getScore","score","scoredRoleA","scoredRoleB","sortedRole","sortRolesByOptimalAriaContext","attrInfo","centerPointOfRect","height","Color","red","green","blue","redString","greenString","blueString","rgbRegex","rgbaRegex","parseRgbString","colorString","rSRGB","gSRGB","bSRGB","flattenColors","g","bL","fL","bg","fg","isBold","elementHasImage","bgImageStyle","hasBgImage","hasGradient","ancestorNode","edge","borderClr","hasStyle","tDec","bgElms","bgColors","elmStack","getBackgroundStack","bgElmStyle","getOwnBackgroundColor","colors","filteredRectStack","elmIndex","bodyIndex","sortPageBackground","reduceToElementsBelowFloating","originalElm","calculateObscuringElement","rectStack","getRectStack","isSame","boundingStack","rectList","rectA","rectB","elementIndex","getElementStack","filteredArr","getTextElementStack","isOpaque","opacity","getOpacity","_opacity","finalOpacity","elmStyle","targetNode","currentNode","floatingPositions","finalElements","targetFound","position","findElmsInContext","_ref39","_ref39$elm","escapedValue","findUp","closest","fragment","getElementsByName","getElementCoordinates","scrollOffset","getScrollOffset","xOffset","yOffset","coords","getPositionOrder","getComputedStylePropertyValue","isFloated","_isFloated","floated","visuallySort","_stackingOrder","aNode","bNode","boundaries","boundary","_window$Node","DOCUMENT_POSITION_FOLLOWING","DOCUMENT_POSITION_CONTAINS","DOCUMENT_POSITION_CONTAINED_BY","docPosition","DOMOrder","isDescendant","aPosition","bPosition","getStackingOrder","stackingOrder","zIndex","mixBlendMode","perspective","clipPath","willChange","contain","parentDsiplay","isStackingContext","findScrollRegionParent","scrollRegionParent","checkedNodes","_scrollRegionParent","addNodeToGrid","_grid","startRow","startCol","endRow","endCol","col","createGrid","rootGrid","container","subGrid","_subGrid","treeWalker","createTreeWalker","NodeFilter","SHOW_ELEMENT","_vNode","gridCellNode","clientRect","rectX","rectY","gridContainer","docElement","getViewportSize","hiddenTextElms","focusDisabled","isHiddenWithCSS","_isHiddenWithCSS","descendentVisibilityValue","HIDDEN_VISIBILITY_VALUES","visibilityValue","noRecursion","ignoreAria","_ref40","hasChildTextNodes","isVisualContent","isNativelyFocusable","doctype","publicId","systemId","virtualParent","getBlockParent","parentText","linkText","inBrBlock","walkDomNode","currNode","overflow","modalPercent","viewport","percentWidth","percentHeight","stacks","point","_loop3","modalElement","_ret3","leftBoundary","noParentScrolled","isInternalLinkRegex","firstPageLink","clipRegex","clipPathRegex","screenReader","cacheName","mapEl","mapElName","mapElRootNode","_ref41","isAreaVisible","matchesClip","matchesClipPath","isClipped","visualRoles","getSearchPairs","searchStr","pairs","_pair$split","_pair$split2","_pair$split2$","getHashRoute","hasMatch","getScrollAncestor","ancestor","rectBound","parentRect","parentTop","parentLeft","parentScrollArea","HTMLBodyElement","HTMLHtmlElement","nodeX","nodeY","shadowStack","ownerSVGElement","_getPathnameOrFilenam","filename","getPathnameOrFilename","parentScrollAncestor","nextScrollAncestor","rangeRoles","nonTextInputTypes","matcher","fromFunction","matchers","traverseForHeaders","headerType","rowEnd","colEnd","tableCell","textNodeContent","_ref42","shouldIgnoreHidden","_ref43","includeHidden","prepareContext","definitionItem","matcherName","matchMethod","getValue","fromPrimative","someString","matcherType","tableElm","rowHeaders","colHeaders","getScope","scope","headerRow","headerCol","tHead","tFoot","childIndex","childLength","hasBorder","offsetWidth","offsetHeight","sampleRow","colSpan","isHeader","columnIndex","rowSpan","startPos","traverseTable","computationSteps","nativeTextAlternative","formControlValue","subtreeText","accName","alreadyProcessed","virtualnode","processed","controlValueRoles","formControlValueMethods","nativeTextboxValue","nativeSelectValue","selected","ariaTextboxValue","ariaListboxValue","ariaComboboxValue","ariaRangeValue","valueNow","accessibleNameFromFieldValue","valueMethods","valueString","differenceThreshold","getContext","canvasContext","canvas","fonts","fontFamily","occurances","numLigatures","fontStyle","firstChar","measureText","diff","textAlign","textBaseline","fillText","compareData","getImageData","pixel","clearRect","differences","expectedWidth","_char","actualWidth","pixelDifference","sizeDifference","getExplicitLabels","_ref45","findTextMethods","nativeElementType","nativeTextMethods","nativeType","_ref46","namingMethods","standaloneTerms","qualifiers","qualifiedTerms","locations","_ref44","_ref44$looseTyped","looseTyped","_ref44$stateTerms","_ref44$locations","_ref44$qualifiers","_ref44$standaloneTerm","_ref44$qualifiedTerms","labelContext","explicitLabels","implicitLabel","visible","textMethods","defaultButtonValues","submit","image","attrText","_ref49","descendantText","_ref50","nodeNames","valueText","_ref47","buttonDefaultText","_ref48","tableCaptionText","figureText","fieldsetLegendText","altText","tableSummaryText","singleSpace","contentText","appendAccessibleText","phrasingElements","contentTextAdd","alwaysTitleElements","parentVisible","noRecursing"],"mappings":"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AAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,WAAY,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,M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","file":"b88d22df-cc0691589893355dc701.js","sourcesContent":["require(\"core-js/modules/es.promise.finally\");\n\n/*! axe v3.5.5\n * Copyright (c) 2020 Deque Systems, Inc.\n *\n * Your use of this Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * This entire copyright notice must appear in every copy of this file you\n * distribute or in any file that contains substantial portions of this source\n * code.\n */\n(function axeFunction(window) {\n  var global = window;\n  var document = window.document;\n  'use strict';\n\n  function _typeof(obj) {\n    '@babel/helpers - typeof';\n\n    if (typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol') {\n      _typeof = function _typeof(obj) {\n        return typeof obj;\n      };\n    } else {\n      _typeof = function _typeof(obj) {\n        return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj;\n      };\n    }\n\n    return _typeof(obj);\n  }\n\n  var axe = axe || {};\n  axe.version = '3.5.5';\n\n  if (typeof define === 'function' && define.amd) {\n    define('axe-core', [], function () {\n      'use strict';\n\n      return axe;\n    });\n  }\n\n  if ((typeof module === 'undefined' ? 'undefined' : _typeof(module)) === 'object' && module.exports && typeof axeFunction.toString === 'function') {\n    axe.source = '(' + axeFunction.toString() + ')(typeof window === \"object\" ? window : this);';\n    module.exports = axe;\n  }\n\n  if (typeof window.getComputedStyle === 'function') {\n    window.axe = axe;\n  }\n\n  var commons;\n\n  function SupportError(error) {\n    this.name = 'SupportError';\n    this.cause = error.cause;\n    this.message = '`'.concat(error.cause, '` - feature unsupported in your environment.');\n\n    if (error.ruleId) {\n      this.ruleId = error.ruleId;\n      this.message += ' Skipping '.concat(this.ruleId, ' rule.');\n    }\n\n    this.stack = new Error().stack;\n  }\n\n  SupportError.prototype = Object.create(Error.prototype);\n  SupportError.prototype.constructor = SupportError;\n  (function () {\n    function r(e, n, t) {\n      function o(i, f) {\n        if (!n[i]) {\n          if (!e[i]) {\n            var c = 'function' == typeof require && require;\n\n            if (!f && c) {\n              return c(i, !0);\n            }\n\n            if (u) {\n              return u(i, !0);\n            }\n\n            var a = new Error('Cannot find module \\'' + i + '\\'');\n            throw a.code = 'MODULE_NOT_FOUND', a;\n          }\n\n          var p = n[i] = {\n            exports: {}\n          };\n          e[i][0].call(p.exports, function (r) {\n            var n = e[i][1][r];\n            return o(n || r);\n          }, p, p.exports, r, e, n, t);\n        }\n\n        return n[i].exports;\n      }\n\n      for (var u = 'function' == typeof require && require, i = 0; i < t.length; i++) {\n        o(t[i]);\n      }\n\n      return o;\n    }\n\n    return r;\n  })()({\n    1: [function (_dereq_, module, exports) {\n      if (!('Promise' in window)) {\n        _dereq_('es6-promise').polyfill();\n      }\n\n      if (!('Uint32Array' in window)) {\n        _dereq_('core-js/features/typed-array/uint32-array');\n      }\n\n      if (window.Uint32Array) {\n        if (!('some' in window.Uint32Array.prototype)) {\n          _dereq_('core-js/features/typed-array/some');\n        }\n\n        if (!('reduce' in window.Uint32Array.prototype)) {\n          _dereq_('core-js/features/typed-array/reduce');\n        }\n      }\n\n      _dereq_('weakmap-polyfill');\n\n      axe.imports = {\n        axios: _dereq_('axios'),\n        CssSelectorParser: _dereq_('css-selector-parser').CssSelectorParser,\n        doT: _dereq_('@deque/dot'),\n        emojiRegexText: _dereq_('emoji-regex'),\n        memoize: _dereq_('memoizee')\n      };\n    }, {\n      '@deque/dot': 2,\n      axios: 3,\n      'core-js/features/typed-array/reduce': 31,\n      'core-js/features/typed-array/some': 32,\n      'core-js/features/typed-array/uint32-array': 33,\n      'css-selector-parser': 155,\n      'emoji-regex': 158,\n      'es6-promise': 202,\n      memoizee: 223,\n      'weakmap-polyfill': 245\n    }],\n    2: [function (_dereq_, module, exports) {\n      (function (global) {\n        (function () {\n          'use strict';\n\n          var doT = {\n            name: 'doT',\n            version: '1.1.1',\n            templateSettings: {\n              evaluate: /\\{\\{([\\s\\S]+?(\\}?)+)\\}\\}/g,\n              interpolate: /\\{\\{=([\\s\\S]+?)\\}\\}/g,\n              encode: /\\{\\{!([\\s\\S]+?)\\}\\}/g,\n              use: /\\{\\{#([\\s\\S]+?)\\}\\}/g,\n              useParams: /(^|[^\\w$])def(?:\\.|\\[[\\'\\\"])([\\w$\\.]+)(?:[\\'\\\"]\\])?\\s*\\:\\s*([\\w$\\.]+|\\\"[^\\\"]+\\\"|\\'[^\\']+\\'|\\{[^\\}]+\\})/g,\n              define: /\\{\\{##\\s*([\\w\\.$]+)\\s*(\\:|=)([\\s\\S]+?)#\\}\\}/g,\n              defineParams: /^\\s*([\\w$]+):([\\s\\S]+)/,\n              conditional: /\\{\\{\\?(\\?)?\\s*([\\s\\S]*?)\\s*\\}\\}/g,\n              iterate: /\\{\\{~\\s*(?:\\}\\}|([\\s\\S]+?)\\s*\\:\\s*([\\w$]+)\\s*(?:\\:\\s*([\\w$]+))?\\s*\\}\\})/g,\n              varname: 'it',\n              strip: true,\n              append: true,\n              selfcontained: false,\n              doNotSkipEncoded: false\n            },\n            template: undefined,\n            compile: undefined,\n            log: true\n          };\n\n          (function () {\n            if (typeof globalThis === 'object') {\n              return;\n            }\n\n            try {\n              Object.defineProperty(Object.prototype, '__magic__', {\n                get: function get() {\n                  return this;\n                },\n                configurable: true\n              });\n              __magic__.globalThis = __magic__;\n              delete Object.prototype.__magic__;\n            } catch (e) {\n              window.globalThis = function () {\n                if (typeof self !== 'undefined') {\n                  return self;\n                }\n\n                if (typeof window !== 'undefined') {\n                  return window;\n                }\n\n                if (typeof global !== 'undefined') {\n                  return global;\n                }\n\n                if (typeof this !== 'undefined') {\n                  return this;\n                }\n\n                throw new Error('Unable to locate global `this`');\n              }();\n            }\n          })();\n\n          doT.encodeHTMLSource = function (doNotSkipEncoded) {\n            var encodeHTMLRules = {\n              '&': '&#38;',\n              '<': '&#60;',\n              '>': '&#62;',\n              '\"': '&#34;',\n              '\\'': '&#39;',\n              '/': '&#47;'\n            },\n                matchHTML = doNotSkipEncoded ? /[&<>\"'\\/]/g : /&(?!#?\\w+;)|<|>|\"|'|\\//g;\n            return function (code) {\n              return code ? code.toString().replace(matchHTML, function (m) {\n                return encodeHTMLRules[m] || m;\n              }) : '';\n            };\n          };\n\n          if (typeof module !== 'undefined' && module.exports) {\n            module.exports = doT;\n          } else if (typeof define === 'function' && define.amd) {\n            define(function () {\n              return doT;\n            });\n          } else {\n            globalThis.doT = doT;\n          }\n\n          var startend = {\n            append: {\n              start: '\\'+(',\n              end: ')+\\'',\n              startencode: '\\'+encodeHTML('\n            },\n            split: {\n              start: '\\';out+=(',\n              end: ');out+=\\'',\n              startencode: '\\';out+=encodeHTML('\n            }\n          },\n              skip = /$^/;\n\n          function resolveDefs(c, block, def) {\n            return (typeof block === 'string' ? block : block.toString()).replace(c.define || skip, function (m, code, assign, value) {\n              if (code.indexOf('def.') === 0) {\n                code = code.substring(4);\n              }\n\n              if (!(code in def)) {\n                if (assign === ':') {\n                  if (c.defineParams) {\n                    value.replace(c.defineParams, function (m, param, v) {\n                      def[code] = {\n                        arg: param,\n                        text: v\n                      };\n                    });\n                  }\n\n                  if (!(code in def)) {\n                    def[code] = value;\n                  }\n                } else {\n                  new Function('def', 'def[\\'' + code + '\\']=' + value)(def);\n                }\n              }\n\n              return '';\n            }).replace(c.use || skip, function (m, code) {\n              if (c.useParams) {\n                code = code.replace(c.useParams, function (m, s, d, param) {\n                  if (def[d] && def[d].arg && param) {\n                    var rw = (d + ':' + param).replace(/'|\\\\/g, '_');\n                    def.__exp = def.__exp || {};\n                    def.__exp[rw] = def[d].text.replace(new RegExp('(^|[^\\\\w$])' + def[d].arg + '([^\\\\w$])', 'g'), '$1' + param + '$2');\n                    return s + 'def.__exp[\\'' + rw + '\\']';\n                  }\n                });\n              }\n\n              var v = new Function('def', 'return ' + code)(def);\n              return v ? resolveDefs(c, v, def) : v;\n            });\n          }\n\n          function unescape(code) {\n            return code.replace(/\\\\('|\\\\)/g, '$1').replace(/[\\r\\t\\n]/g, ' ');\n          }\n\n          doT.template = function (tmpl, c, def) {\n            c = c || doT.templateSettings;\n            var cse = c.append ? startend.append : startend.split,\n                needhtmlencode,\n                sid = 0,\n                indv,\n                str = c.use || c.define ? resolveDefs(c, tmpl, def || {}) : tmpl;\n            str = ('var out=\\'' + (c.strip ? str.replace(/(^|\\r|\\n)\\t* +| +\\t*(\\r|\\n|$)/g, ' ').replace(/\\r|\\n|\\t|\\/\\*[\\s\\S]*?\\*\\//g, '') : str).replace(/'|\\\\/g, '\\\\$&').replace(c.interpolate || skip, function (m, code) {\n              return cse.start + unescape(code) + cse.end;\n            }).replace(c.encode || skip, function (m, code) {\n              needhtmlencode = true;\n              return cse.startencode + unescape(code) + cse.end;\n            }).replace(c.conditional || skip, function (m, elsecase, code) {\n              return elsecase ? code ? '\\';}else if(' + unescape(code) + '){out+=\\'' : '\\';}else{out+=\\'' : code ? '\\';if(' + unescape(code) + '){out+=\\'' : '\\';}out+=\\'';\n            }).replace(c.iterate || skip, function (m, iterate, vname, iname) {\n              if (!iterate) {\n                return '\\';} } out+=\\'';\n              }\n\n              sid += 1;\n              indv = iname || 'i' + sid;\n              iterate = unescape(iterate);\n              return '\\';var arr' + sid + '=' + iterate + ';if(arr' + sid + '){var ' + vname + ',' + indv + '=-1,l' + sid + '=arr' + sid + '.length-1;while(' + indv + '<l' + sid + '){' + vname + '=arr' + sid + '[' + indv + '+=1];out+=\\'';\n            }).replace(c.evaluate || skip, function (m, code) {\n              return '\\';' + unescape(code) + 'out+=\\'';\n            }) + '\\';return out;').replace(/\\n/g, '\\\\n').replace(/\\t/g, '\\\\t').replace(/\\r/g, '\\\\r').replace(/(\\s|;|\\}|^|\\{)out\\+='';/g, '$1').replace(/\\+''/g, '');\n\n            if (needhtmlencode) {\n              if (!c.selfcontained && globalThis && !globalThis._encodeHTML) {\n                globalThis._encodeHTML = doT.encodeHTMLSource(c.doNotSkipEncoded);\n              }\n\n              str = 'var encodeHTML = typeof _encodeHTML !== \\'undefined\\' ? _encodeHTML : (' + doT.encodeHTMLSource.toString() + '(' + (c.doNotSkipEncoded || '') + '));' + str;\n            }\n\n            try {\n              return new Function(c.varname, str);\n            } catch (e) {\n              if (typeof console !== 'undefined') {\n                console.log('Could not create a template function: ' + str);\n              }\n\n              throw e;\n            }\n          };\n\n          doT.compile = function (tmpl, def) {\n            return doT.template(tmpl, null, def);\n          };\n        })();\n      }).call(this, typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : {});\n    }, {}],\n    3: [function (_dereq_, module, exports) {\n      module.exports = _dereq_('./lib/axios');\n    }, {\n      './lib/axios': 5\n    }],\n    4: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var utils = _dereq_('./../utils');\n\n      var settle = _dereq_('./../core/settle');\n\n      var buildURL = _dereq_('./../helpers/buildURL');\n\n      var buildFullPath = _dereq_('../core/buildFullPath');\n\n      var parseHeaders = _dereq_('./../helpers/parseHeaders');\n\n      var isURLSameOrigin = _dereq_('./../helpers/isURLSameOrigin');\n\n      var createError = _dereq_('../core/createError');\n\n      module.exports = function xhrAdapter(config) {\n        return new Promise(function dispatchXhrRequest(resolve, reject) {\n          var requestData = config.data;\n          var requestHeaders = config.headers;\n\n          if (utils.isFormData(requestData)) {\n            delete requestHeaders['Content-Type'];\n          }\n\n          var request = new XMLHttpRequest();\n\n          if (config.auth) {\n            var username = config.auth.username || '';\n            var password = config.auth.password || '';\n            requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n          }\n\n          var fullPath = buildFullPath(config.baseURL, config.url);\n          request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n          request.timeout = config.timeout;\n\n          request.onreadystatechange = function handleLoad() {\n            if (!request || request.readyState !== 4) {\n              return;\n            }\n\n            if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n              return;\n            }\n\n            var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n            var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n            var response = {\n              data: responseData,\n              status: request.status,\n              statusText: request.statusText,\n              headers: responseHeaders,\n              config: config,\n              request: request\n            };\n            settle(resolve, reject, response);\n            request = null;\n          };\n\n          request.onabort = function handleAbort() {\n            if (!request) {\n              return;\n            }\n\n            reject(createError('Request aborted', config, 'ECONNABORTED', request));\n            request = null;\n          };\n\n          request.onerror = function handleError() {\n            reject(createError('Network Error', config, null, request));\n            request = null;\n          };\n\n          request.ontimeout = function handleTimeout() {\n            var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n\n            if (config.timeoutErrorMessage) {\n              timeoutErrorMessage = config.timeoutErrorMessage;\n            }\n\n            reject(createError(timeoutErrorMessage, config, 'ECONNABORTED', request));\n            request = null;\n          };\n\n          if (utils.isStandardBrowserEnv()) {\n            var cookies = _dereq_('./../helpers/cookies');\n\n            var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ? cookies.read(config.xsrfCookieName) : undefined;\n\n            if (xsrfValue) {\n              requestHeaders[config.xsrfHeaderName] = xsrfValue;\n            }\n          }\n\n          if ('setRequestHeader' in request) {\n            utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n              if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n                delete requestHeaders[key];\n              } else {\n                request.setRequestHeader(key, val);\n              }\n            });\n          }\n\n          if (!utils.isUndefined(config.withCredentials)) {\n            request.withCredentials = !!config.withCredentials;\n          }\n\n          if (config.responseType) {\n            try {\n              request.responseType = config.responseType;\n            } catch (e) {\n              if (config.responseType !== 'json') {\n                throw e;\n              }\n            }\n          }\n\n          if (typeof config.onDownloadProgress === 'function') {\n            request.addEventListener('progress', config.onDownloadProgress);\n          }\n\n          if (typeof config.onUploadProgress === 'function' && request.upload) {\n            request.upload.addEventListener('progress', config.onUploadProgress);\n          }\n\n          if (config.cancelToken) {\n            config.cancelToken.promise.then(function onCanceled(cancel) {\n              if (!request) {\n                return;\n              }\n\n              request.abort();\n              reject(cancel);\n              request = null;\n            });\n          }\n\n          if (requestData === undefined) {\n            requestData = null;\n          }\n\n          request.send(requestData);\n        });\n      };\n    }, {\n      '../core/buildFullPath': 11,\n      '../core/createError': 12,\n      './../core/settle': 16,\n      './../helpers/buildURL': 20,\n      './../helpers/cookies': 22,\n      './../helpers/isURLSameOrigin': 24,\n      './../helpers/parseHeaders': 26,\n      './../utils': 28\n    }],\n    5: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var utils = _dereq_('./utils');\n\n      var bind = _dereq_('./helpers/bind');\n\n      var Axios = _dereq_('./core/Axios');\n\n      var mergeConfig = _dereq_('./core/mergeConfig');\n\n      var defaults = _dereq_('./defaults');\n\n      function createInstance(defaultConfig) {\n        var context = new Axios(defaultConfig);\n        var instance = bind(Axios.prototype.request, context);\n        utils.extend(instance, Axios.prototype, context);\n        utils.extend(instance, context);\n        return instance;\n      }\n\n      var axios = createInstance(defaults);\n      axios.Axios = Axios;\n\n      axios.create = function create(instanceConfig) {\n        return createInstance(mergeConfig(axios.defaults, instanceConfig));\n      };\n\n      axios.Cancel = _dereq_('./cancel/Cancel');\n      axios.CancelToken = _dereq_('./cancel/CancelToken');\n      axios.isCancel = _dereq_('./cancel/isCancel');\n\n      axios.all = function all(promises) {\n        return Promise.all(promises);\n      };\n\n      axios.spread = _dereq_('./helpers/spread');\n      module.exports = axios;\n      module.exports.default = axios;\n    }, {\n      './cancel/Cancel': 6,\n      './cancel/CancelToken': 7,\n      './cancel/isCancel': 8,\n      './core/Axios': 9,\n      './core/mergeConfig': 15,\n      './defaults': 18,\n      './helpers/bind': 19,\n      './helpers/spread': 27,\n      './utils': 28\n    }],\n    6: [function (_dereq_, module, exports) {\n      'use strict';\n\n      function Cancel(message) {\n        this.message = message;\n      }\n\n      Cancel.prototype.toString = function toString() {\n        return 'Cancel' + (this.message ? ': ' + this.message : '');\n      };\n\n      Cancel.prototype.__CANCEL__ = true;\n      module.exports = Cancel;\n    }, {}],\n    7: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var Cancel = _dereq_('./Cancel');\n\n      function CancelToken(executor) {\n        if (typeof executor !== 'function') {\n          throw new TypeError('executor must be a function.');\n        }\n\n        var resolvePromise;\n        this.promise = new Promise(function promiseExecutor(resolve) {\n          resolvePromise = resolve;\n        });\n        var token = this;\n        executor(function cancel(message) {\n          if (token.reason) {\n            return;\n          }\n\n          token.reason = new Cancel(message);\n          resolvePromise(token.reason);\n        });\n      }\n\n      CancelToken.prototype.throwIfRequested = function throwIfRequested() {\n        if (this.reason) {\n          throw this.reason;\n        }\n      };\n\n      CancelToken.source = function source() {\n        var cancel;\n        var token = new CancelToken(function executor(c) {\n          cancel = c;\n        });\n        return {\n          token: token,\n          cancel: cancel\n        };\n      };\n\n      module.exports = CancelToken;\n    }, {\n      './Cancel': 6\n    }],\n    8: [function (_dereq_, module, exports) {\n      'use strict';\n\n      module.exports = function isCancel(value) {\n        return !!(value && value.__CANCEL__);\n      };\n    }, {}],\n    9: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var utils = _dereq_('./../utils');\n\n      var buildURL = _dereq_('../helpers/buildURL');\n\n      var InterceptorManager = _dereq_('./InterceptorManager');\n\n      var dispatchRequest = _dereq_('./dispatchRequest');\n\n      var mergeConfig = _dereq_('./mergeConfig');\n\n      function Axios(instanceConfig) {\n        this.defaults = instanceConfig;\n        this.interceptors = {\n          request: new InterceptorManager(),\n          response: new InterceptorManager()\n        };\n      }\n\n      Axios.prototype.request = function request(config) {\n        if (typeof config === 'string') {\n          config = arguments[1] || {};\n          config.url = arguments[0];\n        } else {\n          config = config || {};\n        }\n\n        config = mergeConfig(this.defaults, config);\n\n        if (config.method) {\n          config.method = config.method.toLowerCase();\n        } else if (this.defaults.method) {\n          config.method = this.defaults.method.toLowerCase();\n        } else {\n          config.method = 'get';\n        }\n\n        var chain = [dispatchRequest, undefined];\n        var promise = Promise.resolve(config);\n        this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n          chain.unshift(interceptor.fulfilled, interceptor.rejected);\n        });\n        this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n          chain.push(interceptor.fulfilled, interceptor.rejected);\n        });\n\n        while (chain.length) {\n          promise = promise.then(chain.shift(), chain.shift());\n        }\n\n        return promise;\n      };\n\n      Axios.prototype.getUri = function getUri(config) {\n        config = mergeConfig(this.defaults, config);\n        return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n      };\n\n      utils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n        Axios.prototype[method] = function (url, config) {\n          return this.request(utils.merge(config || {}, {\n            method: method,\n            url: url\n          }));\n        };\n      });\n      utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n        Axios.prototype[method] = function (url, data, config) {\n          return this.request(utils.merge(config || {}, {\n            method: method,\n            url: url,\n            data: data\n          }));\n        };\n      });\n      module.exports = Axios;\n    }, {\n      '../helpers/buildURL': 20,\n      './../utils': 28,\n      './InterceptorManager': 10,\n      './dispatchRequest': 13,\n      './mergeConfig': 15\n    }],\n    10: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var utils = _dereq_('./../utils');\n\n      function InterceptorManager() {\n        this.handlers = [];\n      }\n\n      InterceptorManager.prototype.use = function use(fulfilled, rejected) {\n        this.handlers.push({\n          fulfilled: fulfilled,\n          rejected: rejected\n        });\n        return this.handlers.length - 1;\n      };\n\n      InterceptorManager.prototype.eject = function eject(id) {\n        if (this.handlers[id]) {\n          this.handlers[id] = null;\n        }\n      };\n\n      InterceptorManager.prototype.forEach = function forEach(fn) {\n        utils.forEach(this.handlers, function forEachHandler(h) {\n          if (h !== null) {\n            fn(h);\n          }\n        });\n      };\n\n      module.exports = InterceptorManager;\n    }, {\n      './../utils': 28\n    }],\n    11: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var isAbsoluteURL = _dereq_('../helpers/isAbsoluteURL');\n\n      var combineURLs = _dereq_('../helpers/combineURLs');\n\n      module.exports = function buildFullPath(baseURL, requestedURL) {\n        if (baseURL && !isAbsoluteURL(requestedURL)) {\n          return combineURLs(baseURL, requestedURL);\n        }\n\n        return requestedURL;\n      };\n    }, {\n      '../helpers/combineURLs': 21,\n      '../helpers/isAbsoluteURL': 23\n    }],\n    12: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var enhanceError = _dereq_('./enhanceError');\n\n      module.exports = function createError(message, config, code, request, response) {\n        var error = new Error(message);\n        return enhanceError(error, config, code, request, response);\n      };\n    }, {\n      './enhanceError': 14\n    }],\n    13: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var utils = _dereq_('./../utils');\n\n      var transformData = _dereq_('./transformData');\n\n      var isCancel = _dereq_('../cancel/isCancel');\n\n      var defaults = _dereq_('../defaults');\n\n      function throwIfCancellationRequested(config) {\n        if (config.cancelToken) {\n          config.cancelToken.throwIfRequested();\n        }\n      }\n\n      module.exports = function dispatchRequest(config) {\n        throwIfCancellationRequested(config);\n        config.headers = config.headers || {};\n        config.data = transformData(config.data, config.headers, config.transformRequest);\n        config.headers = utils.merge(config.headers.common || {}, config.headers[config.method] || {}, config.headers);\n        utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], function cleanHeaderConfig(method) {\n          delete config.headers[method];\n        });\n        var adapter = config.adapter || defaults.adapter;\n        return adapter(config).then(function onAdapterResolution(response) {\n          throwIfCancellationRequested(config);\n          response.data = transformData(response.data, response.headers, config.transformResponse);\n          return response;\n        }, function onAdapterRejection(reason) {\n          if (!isCancel(reason)) {\n            throwIfCancellationRequested(config);\n\n            if (reason && reason.response) {\n              reason.response.data = transformData(reason.response.data, reason.response.headers, config.transformResponse);\n            }\n          }\n\n          return Promise.reject(reason);\n        });\n      };\n    }, {\n      '../cancel/isCancel': 8,\n      '../defaults': 18,\n      './../utils': 28,\n      './transformData': 17\n    }],\n    14: [function (_dereq_, module, exports) {\n      'use strict';\n\n      module.exports = function enhanceError(error, config, code, request, response) {\n        error.config = config;\n\n        if (code) {\n          error.code = code;\n        }\n\n        error.request = request;\n        error.response = response;\n        error.isAxiosError = true;\n\n        error.toJSON = function () {\n          return {\n            message: this.message,\n            name: this.name,\n            description: this.description,\n            number: this.number,\n            fileName: this.fileName,\n            lineNumber: this.lineNumber,\n            columnNumber: this.columnNumber,\n            stack: this.stack,\n            config: this.config,\n            code: this.code\n          };\n        };\n\n        return error;\n      };\n    }, {}],\n    15: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var utils = _dereq_('../utils');\n\n      module.exports = function mergeConfig(config1, config2) {\n        config2 = config2 || {};\n        var config = {};\n        var valueFromConfig2Keys = ['url', 'method', 'params', 'data'];\n        var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy'];\n        var defaultToConfig2Keys = ['baseURL', 'url', 'transformRequest', 'transformResponse', 'paramsSerializer', 'timeout', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName', 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'maxContentLength', 'validateStatus', 'maxRedirects', 'httpAgent', 'httpsAgent', 'cancelToken', 'socketPath'];\n        utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n          if (typeof config2[prop] !== 'undefined') {\n            config[prop] = config2[prop];\n          }\n        });\n        utils.forEach(mergeDeepPropertiesKeys, function mergeDeepProperties(prop) {\n          if (utils.isObject(config2[prop])) {\n            config[prop] = utils.deepMerge(config1[prop], config2[prop]);\n          } else if (typeof config2[prop] !== 'undefined') {\n            config[prop] = config2[prop];\n          } else if (utils.isObject(config1[prop])) {\n            config[prop] = utils.deepMerge(config1[prop]);\n          } else if (typeof config1[prop] !== 'undefined') {\n            config[prop] = config1[prop];\n          }\n        });\n        utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n          if (typeof config2[prop] !== 'undefined') {\n            config[prop] = config2[prop];\n          } else if (typeof config1[prop] !== 'undefined') {\n            config[prop] = config1[prop];\n          }\n        });\n        var axiosKeys = valueFromConfig2Keys.concat(mergeDeepPropertiesKeys).concat(defaultToConfig2Keys);\n        var otherKeys = Object.keys(config2).filter(function filterAxiosKeys(key) {\n          return axiosKeys.indexOf(key) === -1;\n        });\n        utils.forEach(otherKeys, function otherKeysDefaultToConfig2(prop) {\n          if (typeof config2[prop] !== 'undefined') {\n            config[prop] = config2[prop];\n          } else if (typeof config1[prop] !== 'undefined') {\n            config[prop] = config1[prop];\n          }\n        });\n        return config;\n      };\n    }, {\n      '../utils': 28\n    }],\n    16: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var createError = _dereq_('./createError');\n\n      module.exports = function settle(resolve, reject, response) {\n        var validateStatus = response.config.validateStatus;\n\n        if (!validateStatus || validateStatus(response.status)) {\n          resolve(response);\n        } else {\n          reject(createError('Request failed with status code ' + response.status, response.config, null, response.request, response));\n        }\n      };\n    }, {\n      './createError': 12\n    }],\n    17: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var utils = _dereq_('./../utils');\n\n      module.exports = function transformData(data, headers, fns) {\n        utils.forEach(fns, function transform(fn) {\n          data = fn(data, headers);\n        });\n        return data;\n      };\n    }, {\n      './../utils': 28\n    }],\n    18: [function (_dereq_, module, exports) {\n      (function (process) {\n        'use strict';\n\n        var utils = _dereq_('./utils');\n\n        var normalizeHeaderName = _dereq_('./helpers/normalizeHeaderName');\n\n        var DEFAULT_CONTENT_TYPE = {\n          'Content-Type': 'application/x-www-form-urlencoded'\n        };\n\n        function setContentTypeIfUnset(headers, value) {\n          if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n            headers['Content-Type'] = value;\n          }\n        }\n\n        function getDefaultAdapter() {\n          var adapter;\n\n          if (typeof XMLHttpRequest !== 'undefined') {\n            adapter = _dereq_('./adapters/xhr');\n          } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n            adapter = _dereq_('./adapters/http');\n          }\n\n          return adapter;\n        }\n\n        var defaults = {\n          adapter: getDefaultAdapter(),\n          transformRequest: [function transformRequest(data, headers) {\n            normalizeHeaderName(headers, 'Accept');\n            normalizeHeaderName(headers, 'Content-Type');\n\n            if (utils.isFormData(data) || utils.isArrayBuffer(data) || utils.isBuffer(data) || utils.isStream(data) || utils.isFile(data) || utils.isBlob(data)) {\n              return data;\n            }\n\n            if (utils.isArrayBufferView(data)) {\n              return data.buffer;\n            }\n\n            if (utils.isURLSearchParams(data)) {\n              setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n              return data.toString();\n            }\n\n            if (utils.isObject(data)) {\n              setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n              return JSON.stringify(data);\n            }\n\n            return data;\n          }],\n          transformResponse: [function transformResponse(data) {\n            if (typeof data === 'string') {\n              try {\n                data = JSON.parse(data);\n              } catch (e) {}\n            }\n\n            return data;\n          }],\n          timeout: 0,\n          xsrfCookieName: 'XSRF-TOKEN',\n          xsrfHeaderName: 'X-XSRF-TOKEN',\n          maxContentLength: -1,\n          validateStatus: function validateStatus(status) {\n            return status >= 200 && status < 300;\n          }\n        };\n        defaults.headers = {\n          common: {\n            Accept: 'application/json, text/plain, */*'\n          }\n        };\n        utils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n          defaults.headers[method] = {};\n        });\n        utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n          defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n        });\n        module.exports = defaults;\n      }).call(this, _dereq_('_process'));\n    }, {\n      './adapters/http': 4,\n      './adapters/xhr': 4,\n      './helpers/normalizeHeaderName': 25,\n      './utils': 28,\n      _process: 236\n    }],\n    19: [function (_dereq_, module, exports) {\n      'use strict';\n\n      module.exports = function bind(fn, thisArg) {\n        return function wrap() {\n          var args = new Array(arguments.length);\n\n          for (var i = 0; i < args.length; i++) {\n            args[i] = arguments[i];\n          }\n\n          return fn.apply(thisArg, args);\n        };\n      };\n    }, {}],\n    20: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var utils = _dereq_('./../utils');\n\n      function encode(val) {\n        return encodeURIComponent(val).replace(/%40/gi, '@').replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',').replace(/%20/g, '+').replace(/%5B/gi, '[').replace(/%5D/gi, ']');\n      }\n\n      module.exports = function buildURL(url, params, paramsSerializer) {\n        if (!params) {\n          return url;\n        }\n\n        var serializedParams;\n\n        if (paramsSerializer) {\n          serializedParams = paramsSerializer(params);\n        } else if (utils.isURLSearchParams(params)) {\n          serializedParams = params.toString();\n        } else {\n          var parts = [];\n          utils.forEach(params, function serialize(val, key) {\n            if (val === null || typeof val === 'undefined') {\n              return;\n            }\n\n            if (utils.isArray(val)) {\n              key = key + '[]';\n            } else {\n              val = [val];\n            }\n\n            utils.forEach(val, function parseValue(v) {\n              if (utils.isDate(v)) {\n                v = v.toISOString();\n              } else if (utils.isObject(v)) {\n                v = JSON.stringify(v);\n              }\n\n              parts.push(encode(key) + '=' + encode(v));\n            });\n          });\n          serializedParams = parts.join('&');\n        }\n\n        if (serializedParams) {\n          var hashmarkIndex = url.indexOf('#');\n\n          if (hashmarkIndex !== -1) {\n            url = url.slice(0, hashmarkIndex);\n          }\n\n          url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n        }\n\n        return url;\n      };\n    }, {\n      './../utils': 28\n    }],\n    21: [function (_dereq_, module, exports) {\n      'use strict';\n\n      module.exports = function combineURLs(baseURL, relativeURL) {\n        return relativeURL ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '') : baseURL;\n      };\n    }, {}],\n    22: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var utils = _dereq_('./../utils');\n\n      module.exports = utils.isStandardBrowserEnv() ? function standardBrowserEnv() {\n        return {\n          write: function write(name, value, expires, path, domain, secure) {\n            var cookie = [];\n            cookie.push(name + '=' + encodeURIComponent(value));\n\n            if (utils.isNumber(expires)) {\n              cookie.push('expires=' + new Date(expires).toGMTString());\n            }\n\n            if (utils.isString(path)) {\n              cookie.push('path=' + path);\n            }\n\n            if (utils.isString(domain)) {\n              cookie.push('domain=' + domain);\n            }\n\n            if (secure === true) {\n              cookie.push('secure');\n            }\n\n            document.cookie = cookie.join('; ');\n          },\n          read: function read(name) {\n            var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n            return match ? decodeURIComponent(match[3]) : null;\n          },\n          remove: function remove(name) {\n            this.write(name, '', Date.now() - 864e5);\n          }\n        };\n      }() : function nonStandardBrowserEnv() {\n        return {\n          write: function write() {},\n          read: function read() {\n            return null;\n          },\n          remove: function remove() {}\n        };\n      }();\n    }, {\n      './../utils': 28\n    }],\n    23: [function (_dereq_, module, exports) {\n      'use strict';\n\n      module.exports = function isAbsoluteURL(url) {\n        return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n      };\n    }, {}],\n    24: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var utils = _dereq_('./../utils');\n\n      module.exports = utils.isStandardBrowserEnv() ? function standardBrowserEnv() {\n        var msie = /(msie|trident)/i.test(navigator.userAgent);\n        var urlParsingNode = document.createElement('a');\n        var originURL;\n\n        function resolveURL(url) {\n          var href = url;\n\n          if (msie) {\n            urlParsingNode.setAttribute('href', href);\n            href = urlParsingNode.href;\n          }\n\n          urlParsingNode.setAttribute('href', href);\n          return {\n            href: urlParsingNode.href,\n            protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n            host: urlParsingNode.host,\n            search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n            hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n            hostname: urlParsingNode.hostname,\n            port: urlParsingNode.port,\n            pathname: urlParsingNode.pathname.charAt(0) === '/' ? urlParsingNode.pathname : '/' + urlParsingNode.pathname\n          };\n        }\n\n        originURL = resolveURL(window.location.href);\n        return function isURLSameOrigin(requestURL) {\n          var parsed = utils.isString(requestURL) ? resolveURL(requestURL) : requestURL;\n          return parsed.protocol === originURL.protocol && parsed.host === originURL.host;\n        };\n      }() : function nonStandardBrowserEnv() {\n        return function isURLSameOrigin() {\n          return true;\n        };\n      }();\n    }, {\n      './../utils': 28\n    }],\n    25: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var utils = _dereq_('../utils');\n\n      module.exports = function normalizeHeaderName(headers, normalizedName) {\n        utils.forEach(headers, function processHeader(value, name) {\n          if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n            headers[normalizedName] = value;\n            delete headers[name];\n          }\n        });\n      };\n    }, {\n      '../utils': 28\n    }],\n    26: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var utils = _dereq_('./../utils');\n\n      var ignoreDuplicateOf = ['age', 'authorization', 'content-length', 'content-type', 'etag', 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', 'last-modified', 'location', 'max-forwards', 'proxy-authorization', 'referer', 'retry-after', 'user-agent'];\n\n      module.exports = function parseHeaders(headers) {\n        var parsed = {};\n        var key;\n        var val;\n        var i;\n\n        if (!headers) {\n          return parsed;\n        }\n\n        utils.forEach(headers.split('\\n'), function parser(line) {\n          i = line.indexOf(':');\n          key = utils.trim(line.substr(0, i)).toLowerCase();\n          val = utils.trim(line.substr(i + 1));\n\n          if (key) {\n            if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n              return;\n            }\n\n            if (key === 'set-cookie') {\n              parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n            } else {\n              parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n            }\n          }\n        });\n        return parsed;\n      };\n    }, {\n      './../utils': 28\n    }],\n    27: [function (_dereq_, module, exports) {\n      'use strict';\n\n      module.exports = function spread(callback) {\n        return function wrap(arr) {\n          return callback.apply(null, arr);\n        };\n      };\n    }, {}],\n    28: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var bind = _dereq_('./helpers/bind');\n\n      var toString = Object.prototype.toString;\n\n      function isArray(val) {\n        return toString.call(val) === '[object Array]';\n      }\n\n      function isUndefined(val) {\n        return typeof val === 'undefined';\n      }\n\n      function isBuffer(val) {\n        return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n      }\n\n      function isArrayBuffer(val) {\n        return toString.call(val) === '[object ArrayBuffer]';\n      }\n\n      function isFormData(val) {\n        return typeof FormData !== 'undefined' && val instanceof FormData;\n      }\n\n      function isArrayBufferView(val) {\n        var result;\n\n        if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n          result = ArrayBuffer.isView(val);\n        } else {\n          result = val && val.buffer && val.buffer instanceof ArrayBuffer;\n        }\n\n        return result;\n      }\n\n      function isString(val) {\n        return typeof val === 'string';\n      }\n\n      function isNumber(val) {\n        return typeof val === 'number';\n      }\n\n      function isObject(val) {\n        return val !== null && typeof val === 'object';\n      }\n\n      function isDate(val) {\n        return toString.call(val) === '[object Date]';\n      }\n\n      function isFile(val) {\n        return toString.call(val) === '[object File]';\n      }\n\n      function isBlob(val) {\n        return toString.call(val) === '[object Blob]';\n      }\n\n      function isFunction(val) {\n        return toString.call(val) === '[object Function]';\n      }\n\n      function isStream(val) {\n        return isObject(val) && isFunction(val.pipe);\n      }\n\n      function isURLSearchParams(val) {\n        return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n      }\n\n      function trim(str) {\n        return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n      }\n\n      function isStandardBrowserEnv() {\n        if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' || navigator.product === 'NativeScript' || navigator.product === 'NS')) {\n          return false;\n        }\n\n        return typeof window !== 'undefined' && typeof document !== 'undefined';\n      }\n\n      function forEach(obj, fn) {\n        if (obj === null || typeof obj === 'undefined') {\n          return;\n        }\n\n        if (typeof obj !== 'object') {\n          obj = [obj];\n        }\n\n        if (isArray(obj)) {\n          for (var i = 0, l = obj.length; i < l; i++) {\n            fn.call(null, obj[i], i, obj);\n          }\n        } else {\n          for (var key in obj) {\n            if (Object.prototype.hasOwnProperty.call(obj, key)) {\n              fn.call(null, obj[key], key, obj);\n            }\n          }\n        }\n      }\n\n      function merge() {\n        var result = {};\n\n        function assignValue(val, key) {\n          if (typeof result[key] === 'object' && typeof val === 'object') {\n            result[key] = merge(result[key], val);\n          } else {\n            result[key] = val;\n          }\n        }\n\n        for (var i = 0, l = arguments.length; i < l; i++) {\n          forEach(arguments[i], assignValue);\n        }\n\n        return result;\n      }\n\n      function deepMerge() {\n        var result = {};\n\n        function assignValue(val, key) {\n          if (typeof result[key] === 'object' && typeof val === 'object') {\n            result[key] = deepMerge(result[key], val);\n          } else if (typeof val === 'object') {\n            result[key] = deepMerge({}, val);\n          } else {\n            result[key] = val;\n          }\n        }\n\n        for (var i = 0, l = arguments.length; i < l; i++) {\n          forEach(arguments[i], assignValue);\n        }\n\n        return result;\n      }\n\n      function extend(a, b, thisArg) {\n        forEach(b, function assignValue(val, key) {\n          if (thisArg && typeof val === 'function') {\n            a[key] = bind(val, thisArg);\n          } else {\n            a[key] = val;\n          }\n        });\n        return a;\n      }\n\n      module.exports = {\n        isArray: isArray,\n        isArrayBuffer: isArrayBuffer,\n        isBuffer: isBuffer,\n        isFormData: isFormData,\n        isArrayBufferView: isArrayBufferView,\n        isString: isString,\n        isNumber: isNumber,\n        isObject: isObject,\n        isUndefined: isUndefined,\n        isDate: isDate,\n        isFile: isFile,\n        isBlob: isBlob,\n        isFunction: isFunction,\n        isStream: isStream,\n        isURLSearchParams: isURLSearchParams,\n        isStandardBrowserEnv: isStandardBrowserEnv,\n        forEach: forEach,\n        merge: merge,\n        deepMerge: deepMerge,\n        extend: extend,\n        trim: trim\n      };\n    }, {\n      './helpers/bind': 19\n    }],\n    29: [function (_dereq_, module, exports) {\n      _dereq_('../../modules/es.typed-array.from');\n\n      _dereq_('../../modules/es.typed-array.of');\n\n      _dereq_('../../modules/es.typed-array.copy-within');\n\n      _dereq_('../../modules/es.typed-array.every');\n\n      _dereq_('../../modules/es.typed-array.fill');\n\n      _dereq_('../../modules/es.typed-array.filter');\n\n      _dereq_('../../modules/es.typed-array.find');\n\n      _dereq_('../../modules/es.typed-array.find-index');\n\n      _dereq_('../../modules/es.typed-array.for-each');\n\n      _dereq_('../../modules/es.typed-array.includes');\n\n      _dereq_('../../modules/es.typed-array.index-of');\n\n      _dereq_('../../modules/es.typed-array.join');\n\n      _dereq_('../../modules/es.typed-array.last-index-of');\n\n      _dereq_('../../modules/es.typed-array.map');\n\n      _dereq_('../../modules/es.typed-array.reduce');\n\n      _dereq_('../../modules/es.typed-array.reduce-right');\n\n      _dereq_('../../modules/es.typed-array.reverse');\n\n      _dereq_('../../modules/es.typed-array.set');\n\n      _dereq_('../../modules/es.typed-array.slice');\n\n      _dereq_('../../modules/es.typed-array.some');\n\n      _dereq_('../../modules/es.typed-array.sort');\n\n      _dereq_('../../modules/es.typed-array.subarray');\n\n      _dereq_('../../modules/es.typed-array.to-locale-string');\n\n      _dereq_('../../modules/es.typed-array.to-string');\n\n      _dereq_('../../modules/es.typed-array.iterator');\n\n      _dereq_('../../modules/es.object.to-string');\n    }, {\n      '../../modules/es.object.to-string': 128,\n      '../../modules/es.typed-array.copy-within': 129,\n      '../../modules/es.typed-array.every': 130,\n      '../../modules/es.typed-array.fill': 131,\n      '../../modules/es.typed-array.filter': 132,\n      '../../modules/es.typed-array.find': 134,\n      '../../modules/es.typed-array.find-index': 133,\n      '../../modules/es.typed-array.for-each': 135,\n      '../../modules/es.typed-array.from': 136,\n      '../../modules/es.typed-array.includes': 137,\n      '../../modules/es.typed-array.index-of': 138,\n      '../../modules/es.typed-array.iterator': 139,\n      '../../modules/es.typed-array.join': 140,\n      '../../modules/es.typed-array.last-index-of': 141,\n      '../../modules/es.typed-array.map': 142,\n      '../../modules/es.typed-array.of': 143,\n      '../../modules/es.typed-array.reduce': 145,\n      '../../modules/es.typed-array.reduce-right': 144,\n      '../../modules/es.typed-array.reverse': 146,\n      '../../modules/es.typed-array.set': 147,\n      '../../modules/es.typed-array.slice': 148,\n      '../../modules/es.typed-array.some': 149,\n      '../../modules/es.typed-array.sort': 150,\n      '../../modules/es.typed-array.subarray': 151,\n      '../../modules/es.typed-array.to-locale-string': 152,\n      '../../modules/es.typed-array.to-string': 153\n    }],\n    30: [function (_dereq_, module, exports) {\n      _dereq_('../../modules/es.typed-array.uint32-array');\n\n      _dereq_('./methods');\n\n      var global = _dereq_('../../internals/global');\n\n      module.exports = global.Uint32Array;\n    }, {\n      '../../internals/global': 68,\n      '../../modules/es.typed-array.uint32-array': 154,\n      './methods': 29\n    }],\n    31: [function (_dereq_, module, exports) {\n      _dereq_('../../modules/es.typed-array.reduce');\n    }, {\n      '../../modules/es.typed-array.reduce': 145\n    }],\n    32: [function (_dereq_, module, exports) {\n      _dereq_('../../modules/es.typed-array.some');\n    }, {\n      '../../modules/es.typed-array.some': 149\n    }],\n    33: [function (_dereq_, module, exports) {\n      var parent = _dereq_('../../es/typed-array/uint32-array');\n\n      module.exports = parent;\n    }, {\n      '../../es/typed-array/uint32-array': 30\n    }],\n    34: [function (_dereq_, module, exports) {\n      module.exports = function (it) {\n        if (typeof it != 'function') {\n          throw TypeError(String(it) + ' is not a function');\n        }\n\n        return it;\n      };\n    }, {}],\n    35: [function (_dereq_, module, exports) {\n      var isObject = _dereq_('../internals/is-object');\n\n      module.exports = function (it) {\n        if (!isObject(it) && it !== null) {\n          throw TypeError('Can\\'t set ' + String(it) + ' as a prototype');\n        }\n\n        return it;\n      };\n    }, {\n      '../internals/is-object': 81\n    }],\n    36: [function (_dereq_, module, exports) {\n      var wellKnownSymbol = _dereq_('../internals/well-known-symbol');\n\n      var create = _dereq_('../internals/object-create');\n\n      var definePropertyModule = _dereq_('../internals/object-define-property');\n\n      var UNSCOPABLES = wellKnownSymbol('unscopables');\n      var ArrayPrototype = Array.prototype;\n\n      if (ArrayPrototype[UNSCOPABLES] == undefined) {\n        definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n          configurable: true,\n          value: create(null)\n        });\n      }\n\n      module.exports = function (key) {\n        ArrayPrototype[UNSCOPABLES][key] = true;\n      };\n    }, {\n      '../internals/object-create': 87,\n      '../internals/object-define-property': 89,\n      '../internals/well-known-symbol': 126\n    }],\n    37: [function (_dereq_, module, exports) {\n      module.exports = function (it, Constructor, name) {\n        if (!(it instanceof Constructor)) {\n          throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n        }\n\n        return it;\n      };\n    }, {}],\n    38: [function (_dereq_, module, exports) {\n      var isObject = _dereq_('../internals/is-object');\n\n      module.exports = function (it) {\n        if (!isObject(it)) {\n          throw TypeError(String(it) + ' is not an object');\n        }\n\n        return it;\n      };\n    }, {\n      '../internals/is-object': 81\n    }],\n    39: [function (_dereq_, module, exports) {\n      module.exports = typeof ArrayBuffer !== 'undefined' && typeof DataView !== 'undefined';\n    }, {}],\n    40: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var NATIVE_ARRAY_BUFFER = _dereq_('../internals/array-buffer-native');\n\n      var DESCRIPTORS = _dereq_('../internals/descriptors');\n\n      var global = _dereq_('../internals/global');\n\n      var isObject = _dereq_('../internals/is-object');\n\n      var has = _dereq_('../internals/has');\n\n      var classof = _dereq_('../internals/classof');\n\n      var createNonEnumerableProperty = _dereq_('../internals/create-non-enumerable-property');\n\n      var redefine = _dereq_('../internals/redefine');\n\n      var defineProperty = _dereq_('../internals/object-define-property').f;\n\n      var getPrototypeOf = _dereq_('../internals/object-get-prototype-of');\n\n      var setPrototypeOf = _dereq_('../internals/object-set-prototype-of');\n\n      var wellKnownSymbol = _dereq_('../internals/well-known-symbol');\n\n      var uid = _dereq_('../internals/uid');\n\n      var Int8Array = global.Int8Array;\n      var Int8ArrayPrototype = Int8Array && Int8Array.prototype;\n      var Uint8ClampedArray = global.Uint8ClampedArray;\n      var Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\n      var TypedArray = Int8Array && getPrototypeOf(Int8Array);\n      var TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\n      var ObjectPrototype = Object.prototype;\n      var isPrototypeOf = ObjectPrototype.isPrototypeOf;\n      var TO_STRING_TAG = wellKnownSymbol('toStringTag');\n      var TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\n      var NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\n      var TYPED_ARRAY_TAG_REQIRED = false;\n      var NAME;\n      var TypedArrayConstructorsList = {\n        Int8Array: 1,\n        Uint8Array: 1,\n        Uint8ClampedArray: 1,\n        Int16Array: 2,\n        Uint16Array: 2,\n        Int32Array: 4,\n        Uint32Array: 4,\n        Float32Array: 4,\n        Float64Array: 8\n      };\n\n      var isView = function isView(it) {\n        var klass = classof(it);\n        return klass === 'DataView' || has(TypedArrayConstructorsList, klass);\n      };\n\n      var isTypedArray = function isTypedArray(it) {\n        return isObject(it) && has(TypedArrayConstructorsList, classof(it));\n      };\n\n      var aTypedArray = function aTypedArray(it) {\n        if (isTypedArray(it)) {\n          return it;\n        }\n\n        throw TypeError('Target is not a typed array');\n      };\n\n      var aTypedArrayConstructor = function aTypedArrayConstructor(C) {\n        if (setPrototypeOf) {\n          if (isPrototypeOf.call(TypedArray, C)) {\n            return C;\n          }\n        } else {\n          for (var ARRAY in TypedArrayConstructorsList) {\n            if (has(TypedArrayConstructorsList, NAME)) {\n              var TypedArrayConstructor = global[ARRAY];\n\n              if (TypedArrayConstructor && (C === TypedArrayConstructor || isPrototypeOf.call(TypedArrayConstructor, C))) {\n                return C;\n              }\n            }\n          }\n        }\n\n        throw TypeError('Target is not a typed array constructor');\n      };\n\n      var exportTypedArrayMethod = function exportTypedArrayMethod(KEY, property, forced) {\n        if (!DESCRIPTORS) {\n          return;\n        }\n\n        if (forced) {\n          for (var ARRAY in TypedArrayConstructorsList) {\n            var TypedArrayConstructor = global[ARRAY];\n\n            if (TypedArrayConstructor && has(TypedArrayConstructor.prototype, KEY)) {\n              delete TypedArrayConstructor.prototype[KEY];\n            }\n          }\n        }\n\n        if (!TypedArrayPrototype[KEY] || forced) {\n          redefine(TypedArrayPrototype, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property);\n        }\n      };\n\n      var exportTypedArrayStaticMethod = function exportTypedArrayStaticMethod(KEY, property, forced) {\n        var ARRAY, TypedArrayConstructor;\n\n        if (!DESCRIPTORS) {\n          return;\n        }\n\n        if (setPrototypeOf) {\n          if (forced) {\n            for (ARRAY in TypedArrayConstructorsList) {\n              TypedArrayConstructor = global[ARRAY];\n\n              if (TypedArrayConstructor && has(TypedArrayConstructor, KEY)) {\n                delete TypedArrayConstructor[KEY];\n              }\n            }\n          }\n\n          if (!TypedArray[KEY] || forced) {\n            try {\n              return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8Array[KEY] || property);\n            } catch (error) {}\n          } else {\n            return;\n          }\n        }\n\n        for (ARRAY in TypedArrayConstructorsList) {\n          TypedArrayConstructor = global[ARRAY];\n\n          if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n            redefine(TypedArrayConstructor, KEY, property);\n          }\n        }\n      };\n\n      for (NAME in TypedArrayConstructorsList) {\n        if (!global[NAME]) {\n          NATIVE_ARRAY_BUFFER_VIEWS = false;\n        }\n      }\n\n      if (!NATIVE_ARRAY_BUFFER_VIEWS || typeof TypedArray != 'function' || TypedArray === Function.prototype) {\n        TypedArray = function TypedArray() {\n          throw TypeError('Incorrect invocation');\n        };\n\n        if (NATIVE_ARRAY_BUFFER_VIEWS) {\n          for (NAME in TypedArrayConstructorsList) {\n            if (global[NAME]) {\n              setPrototypeOf(global[NAME], TypedArray);\n            }\n          }\n        }\n      }\n\n      if (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n        TypedArrayPrototype = TypedArray.prototype;\n\n        if (NATIVE_ARRAY_BUFFER_VIEWS) {\n          for (NAME in TypedArrayConstructorsList) {\n            if (global[NAME]) {\n              setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n            }\n          }\n        }\n      }\n\n      if (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n        setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n      }\n\n      if (DESCRIPTORS && !has(TypedArrayPrototype, TO_STRING_TAG)) {\n        TYPED_ARRAY_TAG_REQIRED = true;\n        defineProperty(TypedArrayPrototype, TO_STRING_TAG, {\n          get: function get() {\n            return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n          }\n        });\n\n        for (NAME in TypedArrayConstructorsList) {\n          if (global[NAME]) {\n            createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n          }\n        }\n      }\n\n      module.exports = {\n        NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n        TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG,\n        aTypedArray: aTypedArray,\n        aTypedArrayConstructor: aTypedArrayConstructor,\n        exportTypedArrayMethod: exportTypedArrayMethod,\n        exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n        isView: isView,\n        isTypedArray: isTypedArray,\n        TypedArray: TypedArray,\n        TypedArrayPrototype: TypedArrayPrototype\n      };\n    }, {\n      '../internals/array-buffer-native': 39,\n      '../internals/classof': 53,\n      '../internals/create-non-enumerable-property': 57,\n      '../internals/descriptors': 60,\n      '../internals/global': 68,\n      '../internals/has': 69,\n      '../internals/is-object': 81,\n      '../internals/object-define-property': 89,\n      '../internals/object-get-prototype-of': 93,\n      '../internals/object-set-prototype-of': 97,\n      '../internals/redefine': 102,\n      '../internals/uid': 124,\n      '../internals/well-known-symbol': 126\n    }],\n    41: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var global = _dereq_('../internals/global');\n\n      var DESCRIPTORS = _dereq_('../internals/descriptors');\n\n      var NATIVE_ARRAY_BUFFER = _dereq_('../internals/array-buffer-native');\n\n      var createNonEnumerableProperty = _dereq_('../internals/create-non-enumerable-property');\n\n      var redefineAll = _dereq_('../internals/redefine-all');\n\n      var fails = _dereq_('../internals/fails');\n\n      var anInstance = _dereq_('../internals/an-instance');\n\n      var toInteger = _dereq_('../internals/to-integer');\n\n      var toLength = _dereq_('../internals/to-length');\n\n      var toIndex = _dereq_('../internals/to-index');\n\n      var IEEE754 = _dereq_('../internals/ieee754');\n\n      var getPrototypeOf = _dereq_('../internals/object-get-prototype-of');\n\n      var setPrototypeOf = _dereq_('../internals/object-set-prototype-of');\n\n      var getOwnPropertyNames = _dereq_('../internals/object-get-own-property-names').f;\n\n      var defineProperty = _dereq_('../internals/object-define-property').f;\n\n      var arrayFill = _dereq_('../internals/array-fill');\n\n      var setToStringTag = _dereq_('../internals/set-to-string-tag');\n\n      var InternalStateModule = _dereq_('../internals/internal-state');\n\n      var getInternalState = InternalStateModule.get;\n      var setInternalState = InternalStateModule.set;\n      var ARRAY_BUFFER = 'ArrayBuffer';\n      var DATA_VIEW = 'DataView';\n      var PROTOTYPE = 'prototype';\n      var WRONG_LENGTH = 'Wrong length';\n      var WRONG_INDEX = 'Wrong index';\n      var NativeArrayBuffer = global[ARRAY_BUFFER];\n      var $ArrayBuffer = NativeArrayBuffer;\n      var $DataView = global[DATA_VIEW];\n      var $DataViewPrototype = $DataView && $DataView[PROTOTYPE];\n      var ObjectPrototype = Object.prototype;\n      var RangeError = global.RangeError;\n      var packIEEE754 = IEEE754.pack;\n      var unpackIEEE754 = IEEE754.unpack;\n\n      var packInt8 = function packInt8(number) {\n        return [number & 255];\n      };\n\n      var packInt16 = function packInt16(number) {\n        return [number & 255, number >> 8 & 255];\n      };\n\n      var packInt32 = function packInt32(number) {\n        return [number & 255, number >> 8 & 255, number >> 16 & 255, number >> 24 & 255];\n      };\n\n      var unpackInt32 = function unpackInt32(buffer) {\n        return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n      };\n\n      var packFloat32 = function packFloat32(number) {\n        return packIEEE754(number, 23, 4);\n      };\n\n      var packFloat64 = function packFloat64(number) {\n        return packIEEE754(number, 52, 8);\n      };\n\n      var addGetter = function addGetter(Constructor, key) {\n        defineProperty(Constructor[PROTOTYPE], key, {\n          get: function get() {\n            return getInternalState(this)[key];\n          }\n        });\n      };\n\n      var get = function get(view, count, index, isLittleEndian) {\n        var intIndex = toIndex(index);\n        var store = getInternalState(view);\n\n        if (intIndex + count > store.byteLength) {\n          throw RangeError(WRONG_INDEX);\n        }\n\n        var bytes = getInternalState(store.buffer).bytes;\n        var start = intIndex + store.byteOffset;\n        var pack = bytes.slice(start, start + count);\n        return isLittleEndian ? pack : pack.reverse();\n      };\n\n      var set = function set(view, count, index, conversion, value, isLittleEndian) {\n        var intIndex = toIndex(index);\n        var store = getInternalState(view);\n\n        if (intIndex + count > store.byteLength) {\n          throw RangeError(WRONG_INDEX);\n        }\n\n        var bytes = getInternalState(store.buffer).bytes;\n        var start = intIndex + store.byteOffset;\n        var pack = conversion(+value);\n\n        for (var i = 0; i < count; i++) {\n          bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];\n        }\n      };\n\n      if (!NATIVE_ARRAY_BUFFER) {\n        $ArrayBuffer = function ArrayBuffer(length) {\n          anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n          var byteLength = toIndex(length);\n          setInternalState(this, {\n            bytes: arrayFill.call(new Array(byteLength), 0),\n            byteLength: byteLength\n          });\n\n          if (!DESCRIPTORS) {\n            this.byteLength = byteLength;\n          }\n        };\n\n        $DataView = function DataView(buffer, byteOffset, byteLength) {\n          anInstance(this, $DataView, DATA_VIEW);\n          anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n          var bufferLength = getInternalState(buffer).byteLength;\n          var offset = toInteger(byteOffset);\n\n          if (offset < 0 || offset > bufferLength) {\n            throw RangeError('Wrong offset');\n          }\n\n          byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n\n          if (offset + byteLength > bufferLength) {\n            throw RangeError(WRONG_LENGTH);\n          }\n\n          setInternalState(this, {\n            buffer: buffer,\n            byteLength: byteLength,\n            byteOffset: offset\n          });\n\n          if (!DESCRIPTORS) {\n            this.buffer = buffer;\n            this.byteLength = byteLength;\n            this.byteOffset = offset;\n          }\n        };\n\n        if (DESCRIPTORS) {\n          addGetter($ArrayBuffer, 'byteLength');\n          addGetter($DataView, 'buffer');\n          addGetter($DataView, 'byteLength');\n          addGetter($DataView, 'byteOffset');\n        }\n\n        redefineAll($DataView[PROTOTYPE], {\n          getInt8: function getInt8(byteOffset) {\n            return get(this, 1, byteOffset)[0] << 24 >> 24;\n          },\n          getUint8: function getUint8(byteOffset) {\n            return get(this, 1, byteOffset)[0];\n          },\n          getInt16: function getInt16(byteOffset) {\n            var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n            return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n          },\n          getUint16: function getUint16(byteOffset) {\n            var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n            return bytes[1] << 8 | bytes[0];\n          },\n          getInt32: function getInt32(byteOffset) {\n            return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));\n          },\n          getUint32: function getUint32(byteOffset) {\n            return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;\n          },\n          getFloat32: function getFloat32(byteOffset) {\n            return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);\n          },\n          getFloat64: function getFloat64(byteOffset) {\n            return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);\n          },\n          setInt8: function setInt8(byteOffset, value) {\n            set(this, 1, byteOffset, packInt8, value);\n          },\n          setUint8: function setUint8(byteOffset, value) {\n            set(this, 1, byteOffset, packInt8, value);\n          },\n          setInt16: function setInt16(byteOffset, value) {\n            set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n          },\n          setUint16: function setUint16(byteOffset, value) {\n            set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n          },\n          setInt32: function setInt32(byteOffset, value) {\n            set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n          },\n          setUint32: function setUint32(byteOffset, value) {\n            set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n          },\n          setFloat32: function setFloat32(byteOffset, value) {\n            set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);\n          },\n          setFloat64: function setFloat64(byteOffset, value) {\n            set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);\n          }\n        });\n      } else {\n        if (!fails(function () {\n          NativeArrayBuffer(1);\n        }) || !fails(function () {\n          new NativeArrayBuffer(-1);\n        }) || fails(function () {\n          new NativeArrayBuffer();\n          new NativeArrayBuffer(1.5);\n          new NativeArrayBuffer(NaN);\n          return NativeArrayBuffer.name != ARRAY_BUFFER;\n        })) {\n          $ArrayBuffer = function ArrayBuffer(length) {\n            anInstance(this, $ArrayBuffer);\n            return new NativeArrayBuffer(toIndex(length));\n          };\n\n          var ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE] = NativeArrayBuffer[PROTOTYPE];\n\n          for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n            if (!((key = keys[j++]) in $ArrayBuffer)) {\n              createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n            }\n          }\n\n          ArrayBufferPrototype.constructor = $ArrayBuffer;\n        }\n\n        if (setPrototypeOf && getPrototypeOf($DataViewPrototype) !== ObjectPrototype) {\n          setPrototypeOf($DataViewPrototype, ObjectPrototype);\n        }\n\n        var testView = new $DataView(new $ArrayBuffer(2));\n        var nativeSetInt8 = $DataViewPrototype.setInt8;\n        testView.setInt8(0, 2147483648);\n        testView.setInt8(1, 2147483649);\n\n        if (testView.getInt8(0) || !testView.getInt8(1)) {\n          redefineAll($DataViewPrototype, {\n            setInt8: function setInt8(byteOffset, value) {\n              nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n            },\n            setUint8: function setUint8(byteOffset, value) {\n              nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n            }\n          }, {\n            unsafe: true\n          });\n        }\n      }\n\n      setToStringTag($ArrayBuffer, ARRAY_BUFFER);\n      setToStringTag($DataView, DATA_VIEW);\n      module.exports = {\n        ArrayBuffer: $ArrayBuffer,\n        DataView: $DataView\n      };\n    }, {\n      '../internals/an-instance': 37,\n      '../internals/array-buffer-native': 39,\n      '../internals/array-fill': 43,\n      '../internals/create-non-enumerable-property': 57,\n      '../internals/descriptors': 60,\n      '../internals/fails': 64,\n      '../internals/global': 68,\n      '../internals/ieee754': 73,\n      '../internals/internal-state': 77,\n      '../internals/object-define-property': 89,\n      '../internals/object-get-own-property-names': 91,\n      '../internals/object-get-prototype-of': 93,\n      '../internals/object-set-prototype-of': 97,\n      '../internals/redefine-all': 101,\n      '../internals/set-to-string-tag': 106,\n      '../internals/to-index': 112,\n      '../internals/to-integer': 114,\n      '../internals/to-length': 115\n    }],\n    42: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var toObject = _dereq_('../internals/to-object');\n\n      var toAbsoluteIndex = _dereq_('../internals/to-absolute-index');\n\n      var toLength = _dereq_('../internals/to-length');\n\n      var min = Math.min;\n\n      module.exports = [].copyWithin || function copyWithin(target, start) {\n        var O = toObject(this);\n        var len = toLength(O.length);\n        var to = toAbsoluteIndex(target, len);\n        var from = toAbsoluteIndex(start, len);\n        var end = arguments.length > 2 ? arguments[2] : undefined;\n        var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n        var inc = 1;\n\n        if (from < to && to < from + count) {\n          inc = -1;\n          from += count - 1;\n          to += count - 1;\n        }\n\n        while (count-- > 0) {\n          if (from in O) {\n            O[to] = O[from];\n          } else {\n            delete O[to];\n          }\n\n          to += inc;\n          from += inc;\n        }\n\n        return O;\n      };\n    }, {\n      '../internals/to-absolute-index': 111,\n      '../internals/to-length': 115,\n      '../internals/to-object': 116\n    }],\n    43: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var toObject = _dereq_('../internals/to-object');\n\n      var toAbsoluteIndex = _dereq_('../internals/to-absolute-index');\n\n      var toLength = _dereq_('../internals/to-length');\n\n      module.exports = function fill(value) {\n        var O = toObject(this);\n        var length = toLength(O.length);\n        var argumentsLength = arguments.length;\n        var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n        var end = argumentsLength > 2 ? arguments[2] : undefined;\n        var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n\n        while (endPos > index) {\n          O[index++] = value;\n        }\n\n        return O;\n      };\n    }, {\n      '../internals/to-absolute-index': 111,\n      '../internals/to-length': 115,\n      '../internals/to-object': 116\n    }],\n    44: [function (_dereq_, module, exports) {\n      var toIndexedObject = _dereq_('../internals/to-indexed-object');\n\n      var toLength = _dereq_('../internals/to-length');\n\n      var toAbsoluteIndex = _dereq_('../internals/to-absolute-index');\n\n      var createMethod = function createMethod(IS_INCLUDES) {\n        return function ($this, el, fromIndex) {\n          var O = toIndexedObject($this);\n          var length = toLength(O.length);\n          var index = toAbsoluteIndex(fromIndex, length);\n          var value;\n\n          if (IS_INCLUDES && el != el) {\n            while (length > index) {\n              value = O[index++];\n\n              if (value != value) {\n                return true;\n              }\n            }\n          } else {\n            for (; length > index; index++) {\n              if ((IS_INCLUDES || index in O) && O[index] === el) {\n                return IS_INCLUDES || index || 0;\n              }\n            }\n          }\n\n          return !IS_INCLUDES && -1;\n        };\n      };\n\n      module.exports = {\n        includes: createMethod(true),\n        indexOf: createMethod(false)\n      };\n    }, {\n      '../internals/to-absolute-index': 111,\n      '../internals/to-indexed-object': 113,\n      '../internals/to-length': 115\n    }],\n    45: [function (_dereq_, module, exports) {\n      var bind = _dereq_('../internals/function-bind-context');\n\n      var IndexedObject = _dereq_('../internals/indexed-object');\n\n      var toObject = _dereq_('../internals/to-object');\n\n      var toLength = _dereq_('../internals/to-length');\n\n      var arraySpeciesCreate = _dereq_('../internals/array-species-create');\n\n      var push = [].push;\n\n      var createMethod = function createMethod(TYPE) {\n        var IS_MAP = TYPE == 1;\n        var IS_FILTER = TYPE == 2;\n        var IS_SOME = TYPE == 3;\n        var IS_EVERY = TYPE == 4;\n        var IS_FIND_INDEX = TYPE == 6;\n        var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n        return function ($this, callbackfn, that, specificCreate) {\n          var O = toObject($this);\n          var self = IndexedObject(O);\n          var boundFunction = bind(callbackfn, that, 3);\n          var length = toLength(self.length);\n          var index = 0;\n          var create = specificCreate || arraySpeciesCreate;\n          var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n          var value, result;\n\n          for (; length > index; index++) {\n            if (NO_HOLES || index in self) {\n              value = self[index];\n              result = boundFunction(value, index, O);\n\n              if (TYPE) {\n                if (IS_MAP) {\n                  target[index] = result;\n                } else if (result) {\n                  switch (TYPE) {\n                    case 3:\n                      return true;\n\n                    case 5:\n                      return value;\n\n                    case 6:\n                      return index;\n\n                    case 2:\n                      push.call(target, value);\n                  }\n                } else if (IS_EVERY) {\n                  return false;\n                }\n              }\n            }\n          }\n\n          return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n        };\n      };\n\n      module.exports = {\n        forEach: createMethod(0),\n        map: createMethod(1),\n        filter: createMethod(2),\n        some: createMethod(3),\n        every: createMethod(4),\n        find: createMethod(5),\n        findIndex: createMethod(6)\n      };\n    }, {\n      '../internals/array-species-create': 50,\n      '../internals/function-bind-context': 65,\n      '../internals/indexed-object': 74,\n      '../internals/to-length': 115,\n      '../internals/to-object': 116\n    }],\n    46: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var toIndexedObject = _dereq_('../internals/to-indexed-object');\n\n      var toInteger = _dereq_('../internals/to-integer');\n\n      var toLength = _dereq_('../internals/to-length');\n\n      var arrayMethodIsStrict = _dereq_('../internals/array-method-is-strict');\n\n      var arrayMethodUsesToLength = _dereq_('../internals/array-method-uses-to-length');\n\n      var min = Math.min;\n      var nativeLastIndexOf = [].lastIndexOf;\n      var NEGATIVE_ZERO = !!nativeLastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\n      var STRICT_METHOD = arrayMethodIsStrict('lastIndexOf');\n      var USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', {\n        ACCESSORS: true,\n        1: 0\n      });\n      var FORCED = NEGATIVE_ZERO || !STRICT_METHOD || !USES_TO_LENGTH;\n      module.exports = FORCED ? function lastIndexOf(searchElement) {\n        if (NEGATIVE_ZERO) {\n          return nativeLastIndexOf.apply(this, arguments) || 0;\n        }\n\n        var O = toIndexedObject(this);\n        var length = toLength(O.length);\n        var index = length - 1;\n\n        if (arguments.length > 1) {\n          index = min(index, toInteger(arguments[1]));\n        }\n\n        if (index < 0) {\n          index = length + index;\n        }\n\n        for (; index >= 0; index--) {\n          if (index in O && O[index] === searchElement) {\n            return index || 0;\n          }\n        }\n\n        return -1;\n      } : nativeLastIndexOf;\n    }, {\n      '../internals/array-method-is-strict': 47,\n      '../internals/array-method-uses-to-length': 48,\n      '../internals/to-indexed-object': 113,\n      '../internals/to-integer': 114,\n      '../internals/to-length': 115\n    }],\n    47: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var fails = _dereq_('../internals/fails');\n\n      module.exports = function (METHOD_NAME, argument) {\n        var method = [][METHOD_NAME];\n        return !!method && fails(function () {\n          method.call(null, argument || function () {\n            throw 1;\n          }, 1);\n        });\n      };\n    }, {\n      '../internals/fails': 64\n    }],\n    48: [function (_dereq_, module, exports) {\n      var DESCRIPTORS = _dereq_('../internals/descriptors');\n\n      var fails = _dereq_('../internals/fails');\n\n      var has = _dereq_('../internals/has');\n\n      var defineProperty = Object.defineProperty;\n      var cache = {};\n\n      var thrower = function thrower(it) {\n        throw it;\n      };\n\n      module.exports = function (METHOD_NAME, options) {\n        if (has(cache, METHOD_NAME)) {\n          return cache[METHOD_NAME];\n        }\n\n        if (!options) {\n          options = {};\n        }\n\n        var method = [][METHOD_NAME];\n        var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false;\n        var argument0 = has(options, 0) ? options[0] : thrower;\n        var argument1 = has(options, 1) ? options[1] : undefined;\n        return cache[METHOD_NAME] = !!method && !fails(function () {\n          if (ACCESSORS && !DESCRIPTORS) {\n            return true;\n          }\n\n          var O = {\n            length: -1\n          };\n\n          if (ACCESSORS) {\n            defineProperty(O, 1, {\n              enumerable: true,\n              get: thrower\n            });\n          } else {\n            O[1] = 1;\n          }\n\n          method.call(O, argument0, argument1);\n        });\n      };\n    }, {\n      '../internals/descriptors': 60,\n      '../internals/fails': 64,\n      '../internals/has': 69\n    }],\n    49: [function (_dereq_, module, exports) {\n      var aFunction = _dereq_('../internals/a-function');\n\n      var toObject = _dereq_('../internals/to-object');\n\n      var IndexedObject = _dereq_('../internals/indexed-object');\n\n      var toLength = _dereq_('../internals/to-length');\n\n      var createMethod = function createMethod(IS_RIGHT) {\n        return function (that, callbackfn, argumentsLength, memo) {\n          aFunction(callbackfn);\n          var O = toObject(that);\n          var self = IndexedObject(O);\n          var length = toLength(O.length);\n          var index = IS_RIGHT ? length - 1 : 0;\n          var i = IS_RIGHT ? -1 : 1;\n\n          if (argumentsLength < 2) {\n            while (true) {\n              if (index in self) {\n                memo = self[index];\n                index += i;\n                break;\n              }\n\n              index += i;\n\n              if (IS_RIGHT ? index < 0 : length <= index) {\n                throw TypeError('Reduce of empty array with no initial value');\n              }\n            }\n          }\n\n          for (; IS_RIGHT ? index >= 0 : length > index; index += i) {\n            if (index in self) {\n              memo = callbackfn(memo, self[index], index, O);\n            }\n          }\n\n          return memo;\n        };\n      };\n\n      module.exports = {\n        left: createMethod(false),\n        right: createMethod(true)\n      };\n    }, {\n      '../internals/a-function': 34,\n      '../internals/indexed-object': 74,\n      '../internals/to-length': 115,\n      '../internals/to-object': 116\n    }],\n    50: [function (_dereq_, module, exports) {\n      var isObject = _dereq_('../internals/is-object');\n\n      var isArray = _dereq_('../internals/is-array');\n\n      var wellKnownSymbol = _dereq_('../internals/well-known-symbol');\n\n      var SPECIES = wellKnownSymbol('species');\n\n      module.exports = function (originalArray, length) {\n        var C;\n\n        if (isArray(originalArray)) {\n          C = originalArray.constructor;\n\n          if (typeof C == 'function' && (C === Array || isArray(C.prototype))) {\n            C = undefined;\n          } else if (isObject(C)) {\n            C = C[SPECIES];\n\n            if (C === null) {\n              C = undefined;\n            }\n          }\n        }\n\n        return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n      };\n    }, {\n      '../internals/is-array': 79,\n      '../internals/is-object': 81,\n      '../internals/well-known-symbol': 126\n    }],\n    51: [function (_dereq_, module, exports) {\n      var wellKnownSymbol = _dereq_('../internals/well-known-symbol');\n\n      var ITERATOR = wellKnownSymbol('iterator');\n      var SAFE_CLOSING = false;\n\n      try {\n        var called = 0;\n        var iteratorWithReturn = {\n          next: function next() {\n            return {\n              done: !!called++\n            };\n          },\n          return: function _return() {\n            SAFE_CLOSING = true;\n          }\n        };\n\n        iteratorWithReturn[ITERATOR] = function () {\n          return this;\n        };\n\n        Array.from(iteratorWithReturn, function () {\n          throw 2;\n        });\n      } catch (error) {}\n\n      module.exports = function (exec, SKIP_CLOSING) {\n        if (!SKIP_CLOSING && !SAFE_CLOSING) {\n          return false;\n        }\n\n        var ITERATION_SUPPORT = false;\n\n        try {\n          var object = {};\n\n          object[ITERATOR] = function () {\n            return {\n              next: function next() {\n                return {\n                  done: ITERATION_SUPPORT = true\n                };\n              }\n            };\n          };\n\n          exec(object);\n        } catch (error) {}\n\n        return ITERATION_SUPPORT;\n      };\n    }, {\n      '../internals/well-known-symbol': 126\n    }],\n    52: [function (_dereq_, module, exports) {\n      var toString = {}.toString;\n\n      module.exports = function (it) {\n        return toString.call(it).slice(8, -1);\n      };\n    }, {}],\n    53: [function (_dereq_, module, exports) {\n      var TO_STRING_TAG_SUPPORT = _dereq_('../internals/to-string-tag-support');\n\n      var classofRaw = _dereq_('../internals/classof-raw');\n\n      var wellKnownSymbol = _dereq_('../internals/well-known-symbol');\n\n      var TO_STRING_TAG = wellKnownSymbol('toStringTag');\n      var CORRECT_ARGUMENTS = classofRaw(function () {\n        return arguments;\n      }()) == 'Arguments';\n\n      var tryGet = function tryGet(it, key) {\n        try {\n          return it[key];\n        } catch (error) {}\n      };\n\n      module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n        var O, tag, result;\n        return it === undefined ? 'Undefined' : it === null ? 'Null' : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag : CORRECT_ARGUMENTS ? classofRaw(O) : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n      };\n    }, {\n      '../internals/classof-raw': 52,\n      '../internals/to-string-tag-support': 120,\n      '../internals/well-known-symbol': 126\n    }],\n    54: [function (_dereq_, module, exports) {\n      var has = _dereq_('../internals/has');\n\n      var ownKeys = _dereq_('../internals/own-keys');\n\n      var getOwnPropertyDescriptorModule = _dereq_('../internals/object-get-own-property-descriptor');\n\n      var definePropertyModule = _dereq_('../internals/object-define-property');\n\n      module.exports = function (target, source) {\n        var keys = ownKeys(source);\n        var defineProperty = definePropertyModule.f;\n        var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n\n        for (var i = 0; i < keys.length; i++) {\n          var key = keys[i];\n\n          if (!has(target, key)) {\n            defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n          }\n        }\n      };\n    }, {\n      '../internals/has': 69,\n      '../internals/object-define-property': 89,\n      '../internals/object-get-own-property-descriptor': 90,\n      '../internals/own-keys': 99\n    }],\n    55: [function (_dereq_, module, exports) {\n      var fails = _dereq_('../internals/fails');\n\n      module.exports = !fails(function () {\n        function F() {}\n\n        F.prototype.constructor = null;\n        return Object.getPrototypeOf(new F()) !== F.prototype;\n      });\n    }, {\n      '../internals/fails': 64\n    }],\n    56: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var IteratorPrototype = _dereq_('../internals/iterators-core').IteratorPrototype;\n\n      var create = _dereq_('../internals/object-create');\n\n      var createPropertyDescriptor = _dereq_('../internals/create-property-descriptor');\n\n      var setToStringTag = _dereq_('../internals/set-to-string-tag');\n\n      var Iterators = _dereq_('../internals/iterators');\n\n      var returnThis = function returnThis() {\n        return this;\n      };\n\n      module.exports = function (IteratorConstructor, NAME, next) {\n        var TO_STRING_TAG = NAME + ' Iterator';\n        IteratorConstructor.prototype = create(IteratorPrototype, {\n          next: createPropertyDescriptor(1, next)\n        });\n        setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n        Iterators[TO_STRING_TAG] = returnThis;\n        return IteratorConstructor;\n      };\n    }, {\n      '../internals/create-property-descriptor': 58,\n      '../internals/iterators': 84,\n      '../internals/iterators-core': 83,\n      '../internals/object-create': 87,\n      '../internals/set-to-string-tag': 106\n    }],\n    57: [function (_dereq_, module, exports) {\n      var DESCRIPTORS = _dereq_('../internals/descriptors');\n\n      var definePropertyModule = _dereq_('../internals/object-define-property');\n\n      var createPropertyDescriptor = _dereq_('../internals/create-property-descriptor');\n\n      module.exports = DESCRIPTORS ? function (object, key, value) {\n        return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n      } : function (object, key, value) {\n        object[key] = value;\n        return object;\n      };\n    }, {\n      '../internals/create-property-descriptor': 58,\n      '../internals/descriptors': 60,\n      '../internals/object-define-property': 89\n    }],\n    58: [function (_dereq_, module, exports) {\n      module.exports = function (bitmap, value) {\n        return {\n          enumerable: !(bitmap & 1),\n          configurable: !(bitmap & 2),\n          writable: !(bitmap & 4),\n          value: value\n        };\n      };\n    }, {}],\n    59: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var $ = _dereq_('../internals/export');\n\n      var createIteratorConstructor = _dereq_('../internals/create-iterator-constructor');\n\n      var getPrototypeOf = _dereq_('../internals/object-get-prototype-of');\n\n      var setPrototypeOf = _dereq_('../internals/object-set-prototype-of');\n\n      var setToStringTag = _dereq_('../internals/set-to-string-tag');\n\n      var createNonEnumerableProperty = _dereq_('../internals/create-non-enumerable-property');\n\n      var redefine = _dereq_('../internals/redefine');\n\n      var wellKnownSymbol = _dereq_('../internals/well-known-symbol');\n\n      var IS_PURE = _dereq_('../internals/is-pure');\n\n      var Iterators = _dereq_('../internals/iterators');\n\n      var IteratorsCore = _dereq_('../internals/iterators-core');\n\n      var IteratorPrototype = IteratorsCore.IteratorPrototype;\n      var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\n      var ITERATOR = wellKnownSymbol('iterator');\n      var KEYS = 'keys';\n      var VALUES = 'values';\n      var ENTRIES = 'entries';\n\n      var returnThis = function returnThis() {\n        return this;\n      };\n\n      module.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n        createIteratorConstructor(IteratorConstructor, NAME, next);\n\n        var getIterationMethod = function getIterationMethod(KIND) {\n          if (KIND === DEFAULT && defaultIterator) {\n            return defaultIterator;\n          }\n\n          if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) {\n            return IterablePrototype[KIND];\n          }\n\n          switch (KIND) {\n            case KEYS:\n              return function keys() {\n                return new IteratorConstructor(this, KIND);\n              };\n\n            case VALUES:\n              return function values() {\n                return new IteratorConstructor(this, KIND);\n              };\n\n            case ENTRIES:\n              return function entries() {\n                return new IteratorConstructor(this, KIND);\n              };\n          }\n\n          return function () {\n            return new IteratorConstructor(this);\n          };\n        };\n\n        var TO_STRING_TAG = NAME + ' Iterator';\n        var INCORRECT_VALUES_NAME = false;\n        var IterablePrototype = Iterable.prototype;\n        var nativeIterator = IterablePrototype[ITERATOR] || IterablePrototype['@@iterator'] || DEFAULT && IterablePrototype[DEFAULT];\n        var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n        var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n        var CurrentIteratorPrototype, methods, KEY;\n\n        if (anyNativeIterator) {\n          CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n\n          if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n            if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n              if (setPrototypeOf) {\n                setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n              } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n                createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n              }\n            }\n\n            setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n\n            if (IS_PURE) {\n              Iterators[TO_STRING_TAG] = returnThis;\n            }\n          }\n        }\n\n        if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n          INCORRECT_VALUES_NAME = true;\n\n          defaultIterator = function values() {\n            return nativeIterator.call(this);\n          };\n        }\n\n        if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n          createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n        }\n\n        Iterators[NAME] = defaultIterator;\n\n        if (DEFAULT) {\n          methods = {\n            values: getIterationMethod(VALUES),\n            keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n            entries: getIterationMethod(ENTRIES)\n          };\n\n          if (FORCED) {\n            for (KEY in methods) {\n              if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n                redefine(IterablePrototype, KEY, methods[KEY]);\n              }\n            }\n          } else {\n            $({\n              target: NAME,\n              proto: true,\n              forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME\n            }, methods);\n          }\n        }\n\n        return methods;\n      };\n    }, {\n      '../internals/create-iterator-constructor': 56,\n      '../internals/create-non-enumerable-property': 57,\n      '../internals/export': 63,\n      '../internals/is-pure': 82,\n      '../internals/iterators': 84,\n      '../internals/iterators-core': 83,\n      '../internals/object-get-prototype-of': 93,\n      '../internals/object-set-prototype-of': 97,\n      '../internals/redefine': 102,\n      '../internals/set-to-string-tag': 106,\n      '../internals/well-known-symbol': 126\n    }],\n    60: [function (_dereq_, module, exports) {\n      var fails = _dereq_('../internals/fails');\n\n      module.exports = !fails(function () {\n        return Object.defineProperty({}, 1, {\n          get: function get() {\n            return 7;\n          }\n        })[1] != 7;\n      });\n    }, {\n      '../internals/fails': 64\n    }],\n    61: [function (_dereq_, module, exports) {\n      var global = _dereq_('../internals/global');\n\n      var isObject = _dereq_('../internals/is-object');\n\n      var document = global.document;\n      var EXISTS = isObject(document) && isObject(document.createElement);\n\n      module.exports = function (it) {\n        return EXISTS ? document.createElement(it) : {};\n      };\n    }, {\n      '../internals/global': 68,\n      '../internals/is-object': 81\n    }],\n    62: [function (_dereq_, module, exports) {\n      module.exports = ['constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'valueOf'];\n    }, {}],\n    63: [function (_dereq_, module, exports) {\n      var global = _dereq_('../internals/global');\n\n      var getOwnPropertyDescriptor = _dereq_('../internals/object-get-own-property-descriptor').f;\n\n      var createNonEnumerableProperty = _dereq_('../internals/create-non-enumerable-property');\n\n      var redefine = _dereq_('../internals/redefine');\n\n      var setGlobal = _dereq_('../internals/set-global');\n\n      var copyConstructorProperties = _dereq_('../internals/copy-constructor-properties');\n\n      var isForced = _dereq_('../internals/is-forced');\n\n      module.exports = function (options, source) {\n        var TARGET = options.target;\n        var GLOBAL = options.global;\n        var STATIC = options.stat;\n        var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n\n        if (GLOBAL) {\n          target = global;\n        } else if (STATIC) {\n          target = global[TARGET] || setGlobal(TARGET, {});\n        } else {\n          target = (global[TARGET] || {}).prototype;\n        }\n\n        if (target) {\n          for (key in source) {\n            sourceProperty = source[key];\n\n            if (options.noTargetGet) {\n              descriptor = getOwnPropertyDescriptor(target, key);\n              targetProperty = descriptor && descriptor.value;\n            } else {\n              targetProperty = target[key];\n            }\n\n            FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n\n            if (!FORCED && targetProperty !== undefined) {\n              if (typeof sourceProperty === typeof targetProperty) {\n                continue;\n              }\n\n              copyConstructorProperties(sourceProperty, targetProperty);\n            }\n\n            if (options.sham || targetProperty && targetProperty.sham) {\n              createNonEnumerableProperty(sourceProperty, 'sham', true);\n            }\n\n            redefine(target, key, sourceProperty, options);\n          }\n        }\n      };\n    }, {\n      '../internals/copy-constructor-properties': 54,\n      '../internals/create-non-enumerable-property': 57,\n      '../internals/global': 68,\n      '../internals/is-forced': 80,\n      '../internals/object-get-own-property-descriptor': 90,\n      '../internals/redefine': 102,\n      '../internals/set-global': 104\n    }],\n    64: [function (_dereq_, module, exports) {\n      module.exports = function (exec) {\n        try {\n          return !!exec();\n        } catch (error) {\n          return true;\n        }\n      };\n    }, {}],\n    65: [function (_dereq_, module, exports) {\n      var aFunction = _dereq_('../internals/a-function');\n\n      module.exports = function (fn, that, length) {\n        aFunction(fn);\n\n        if (that === undefined) {\n          return fn;\n        }\n\n        switch (length) {\n          case 0:\n            return function () {\n              return fn.call(that);\n            };\n\n          case 1:\n            return function (a) {\n              return fn.call(that, a);\n            };\n\n          case 2:\n            return function (a, b) {\n              return fn.call(that, a, b);\n            };\n\n          case 3:\n            return function (a, b, c) {\n              return fn.call(that, a, b, c);\n            };\n        }\n\n        return function () {\n          return fn.apply(that, arguments);\n        };\n      };\n    }, {\n      '../internals/a-function': 34\n    }],\n    66: [function (_dereq_, module, exports) {\n      var path = _dereq_('../internals/path');\n\n      var global = _dereq_('../internals/global');\n\n      var aFunction = function aFunction(variable) {\n        return typeof variable == 'function' ? variable : undefined;\n      };\n\n      module.exports = function (namespace, method) {\n        return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace]) : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n      };\n    }, {\n      '../internals/global': 68,\n      '../internals/path': 100\n    }],\n    67: [function (_dereq_, module, exports) {\n      var classof = _dereq_('../internals/classof');\n\n      var Iterators = _dereq_('../internals/iterators');\n\n      var wellKnownSymbol = _dereq_('../internals/well-known-symbol');\n\n      var ITERATOR = wellKnownSymbol('iterator');\n\n      module.exports = function (it) {\n        if (it != undefined) {\n          return it[ITERATOR] || it['@@iterator'] || Iterators[classof(it)];\n        }\n      };\n    }, {\n      '../internals/classof': 53,\n      '../internals/iterators': 84,\n      '../internals/well-known-symbol': 126\n    }],\n    68: [function (_dereq_, module, exports) {\n      (function (global) {\n        var check = function check(it) {\n          return it && it.Math == Math && it;\n        };\n\n        module.exports = check(typeof globalThis == 'object' && globalThis) || check(typeof window == 'object' && window) || check(typeof self == 'object' && self) || check(typeof global == 'object' && global) || Function('return this')();\n      }).call(this, typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : {});\n    }, {}],\n    69: [function (_dereq_, module, exports) {\n      var hasOwnProperty = {}.hasOwnProperty;\n\n      module.exports = function (it, key) {\n        return hasOwnProperty.call(it, key);\n      };\n    }, {}],\n    70: [function (_dereq_, module, exports) {\n      module.exports = {};\n    }, {}],\n    71: [function (_dereq_, module, exports) {\n      var getBuiltIn = _dereq_('../internals/get-built-in');\n\n      module.exports = getBuiltIn('document', 'documentElement');\n    }, {\n      '../internals/get-built-in': 66\n    }],\n    72: [function (_dereq_, module, exports) {\n      var DESCRIPTORS = _dereq_('../internals/descriptors');\n\n      var fails = _dereq_('../internals/fails');\n\n      var createElement = _dereq_('../internals/document-create-element');\n\n      module.exports = !DESCRIPTORS && !fails(function () {\n        return Object.defineProperty(createElement('div'), 'a', {\n          get: function get() {\n            return 7;\n          }\n        }).a != 7;\n      });\n    }, {\n      '../internals/descriptors': 60,\n      '../internals/document-create-element': 61,\n      '../internals/fails': 64\n    }],\n    73: [function (_dereq_, module, exports) {\n      var Infinity = 1 / 0;\n      var abs = Math.abs;\n      var pow = Math.pow;\n      var floor = Math.floor;\n      var log = Math.log;\n      var LN2 = Math.LN2;\n\n      var pack = function pack(number, mantissaLength, bytes) {\n        var buffer = new Array(bytes);\n        var exponentLength = bytes * 8 - mantissaLength - 1;\n        var eMax = (1 << exponentLength) - 1;\n        var eBias = eMax >> 1;\n        var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n        var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n        var index = 0;\n        var exponent, mantissa, c;\n        number = abs(number);\n\n        if (number != number || number === Infinity) {\n          mantissa = number != number ? 1 : 0;\n          exponent = eMax;\n        } else {\n          exponent = floor(log(number) / LN2);\n\n          if (number * (c = pow(2, -exponent)) < 1) {\n            exponent--;\n            c *= 2;\n          }\n\n          if (exponent + eBias >= 1) {\n            number += rt / c;\n          } else {\n            number += rt * pow(2, 1 - eBias);\n          }\n\n          if (number * c >= 2) {\n            exponent++;\n            c /= 2;\n          }\n\n          if (exponent + eBias >= eMax) {\n            mantissa = 0;\n            exponent = eMax;\n          } else if (exponent + eBias >= 1) {\n            mantissa = (number * c - 1) * pow(2, mantissaLength);\n            exponent = exponent + eBias;\n          } else {\n            mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n            exponent = 0;\n          }\n        }\n\n        for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8) {}\n\n        exponent = exponent << mantissaLength | mantissa;\n        exponentLength += mantissaLength;\n\n        for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8) {}\n\n        buffer[--index] |= sign * 128;\n        return buffer;\n      };\n\n      var unpack = function unpack(buffer, mantissaLength) {\n        var bytes = buffer.length;\n        var exponentLength = bytes * 8 - mantissaLength - 1;\n        var eMax = (1 << exponentLength) - 1;\n        var eBias = eMax >> 1;\n        var nBits = exponentLength - 7;\n        var index = bytes - 1;\n        var sign = buffer[index--];\n        var exponent = sign & 127;\n        var mantissa;\n        sign >>= 7;\n\n        for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8) {}\n\n        mantissa = exponent & (1 << -nBits) - 1;\n        exponent >>= -nBits;\n        nBits += mantissaLength;\n\n        for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8) {}\n\n        if (exponent === 0) {\n          exponent = 1 - eBias;\n        } else if (exponent === eMax) {\n          return mantissa ? NaN : sign ? -Infinity : Infinity;\n        } else {\n          mantissa = mantissa + pow(2, mantissaLength);\n          exponent = exponent - eBias;\n        }\n\n        return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n      };\n\n      module.exports = {\n        pack: pack,\n        unpack: unpack\n      };\n    }, {}],\n    74: [function (_dereq_, module, exports) {\n      var fails = _dereq_('../internals/fails');\n\n      var classof = _dereq_('../internals/classof-raw');\n\n      var split = ''.split;\n      module.exports = fails(function () {\n        return !Object('z').propertyIsEnumerable(0);\n      }) ? function (it) {\n        return classof(it) == 'String' ? split.call(it, '') : Object(it);\n      } : Object;\n    }, {\n      '../internals/classof-raw': 52,\n      '../internals/fails': 64\n    }],\n    75: [function (_dereq_, module, exports) {\n      var isObject = _dereq_('../internals/is-object');\n\n      var setPrototypeOf = _dereq_('../internals/object-set-prototype-of');\n\n      module.exports = function ($this, dummy, Wrapper) {\n        var NewTarget, NewTargetPrototype;\n\n        if (setPrototypeOf && typeof (NewTarget = dummy.constructor) == 'function' && NewTarget !== Wrapper && isObject(NewTargetPrototype = NewTarget.prototype) && NewTargetPrototype !== Wrapper.prototype) {\n          setPrototypeOf($this, NewTargetPrototype);\n        }\n\n        return $this;\n      };\n    }, {\n      '../internals/is-object': 81,\n      '../internals/object-set-prototype-of': 97\n    }],\n    76: [function (_dereq_, module, exports) {\n      var store = _dereq_('../internals/shared-store');\n\n      var functionToString = Function.toString;\n\n      if (typeof store.inspectSource != 'function') {\n        store.inspectSource = function (it) {\n          return functionToString.call(it);\n        };\n      }\n\n      module.exports = store.inspectSource;\n    }, {\n      '../internals/shared-store': 108\n    }],\n    77: [function (_dereq_, module, exports) {\n      var NATIVE_WEAK_MAP = _dereq_('../internals/native-weak-map');\n\n      var global = _dereq_('../internals/global');\n\n      var isObject = _dereq_('../internals/is-object');\n\n      var createNonEnumerableProperty = _dereq_('../internals/create-non-enumerable-property');\n\n      var objectHas = _dereq_('../internals/has');\n\n      var sharedKey = _dereq_('../internals/shared-key');\n\n      var hiddenKeys = _dereq_('../internals/hidden-keys');\n\n      var WeakMap = global.WeakMap;\n      var set, get, has;\n\n      var enforce = function enforce(it) {\n        return has(it) ? get(it) : set(it, {});\n      };\n\n      var getterFor = function getterFor(TYPE) {\n        return function (it) {\n          var state;\n\n          if (!isObject(it) || (state = get(it)).type !== TYPE) {\n            throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n          }\n\n          return state;\n        };\n      };\n\n      if (NATIVE_WEAK_MAP) {\n        var store = new WeakMap();\n        var wmget = store.get;\n        var wmhas = store.has;\n        var wmset = store.set;\n\n        set = function set(it, metadata) {\n          wmset.call(store, it, metadata);\n          return metadata;\n        };\n\n        get = function get(it) {\n          return wmget.call(store, it) || {};\n        };\n\n        has = function has(it) {\n          return wmhas.call(store, it);\n        };\n      } else {\n        var STATE = sharedKey('state');\n        hiddenKeys[STATE] = true;\n\n        set = function set(it, metadata) {\n          createNonEnumerableProperty(it, STATE, metadata);\n          return metadata;\n        };\n\n        get = function get(it) {\n          return objectHas(it, STATE) ? it[STATE] : {};\n        };\n\n        has = function has(it) {\n          return objectHas(it, STATE);\n        };\n      }\n\n      module.exports = {\n        set: set,\n        get: get,\n        has: has,\n        enforce: enforce,\n        getterFor: getterFor\n      };\n    }, {\n      '../internals/create-non-enumerable-property': 57,\n      '../internals/global': 68,\n      '../internals/has': 69,\n      '../internals/hidden-keys': 70,\n      '../internals/is-object': 81,\n      '../internals/native-weak-map': 86,\n      '../internals/shared-key': 107\n    }],\n    78: [function (_dereq_, module, exports) {\n      var wellKnownSymbol = _dereq_('../internals/well-known-symbol');\n\n      var Iterators = _dereq_('../internals/iterators');\n\n      var ITERATOR = wellKnownSymbol('iterator');\n      var ArrayPrototype = Array.prototype;\n\n      module.exports = function (it) {\n        return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n      };\n    }, {\n      '../internals/iterators': 84,\n      '../internals/well-known-symbol': 126\n    }],\n    79: [function (_dereq_, module, exports) {\n      var classof = _dereq_('../internals/classof-raw');\n\n      module.exports = Array.isArray || function isArray(arg) {\n        return classof(arg) == 'Array';\n      };\n    }, {\n      '../internals/classof-raw': 52\n    }],\n    80: [function (_dereq_, module, exports) {\n      var fails = _dereq_('../internals/fails');\n\n      var replacement = /#|\\.prototype\\./;\n\n      var isForced = function isForced(feature, detection) {\n        var value = data[normalize(feature)];\n        return value == POLYFILL ? true : value == NATIVE ? false : typeof detection == 'function' ? fails(detection) : !!detection;\n      };\n\n      var normalize = isForced.normalize = function (string) {\n        return String(string).replace(replacement, '.').toLowerCase();\n      };\n\n      var data = isForced.data = {};\n      var NATIVE = isForced.NATIVE = 'N';\n      var POLYFILL = isForced.POLYFILL = 'P';\n      module.exports = isForced;\n    }, {\n      '../internals/fails': 64\n    }],\n    81: [function (_dereq_, module, exports) {\n      module.exports = function (it) {\n        return typeof it === 'object' ? it !== null : typeof it === 'function';\n      };\n    }, {}],\n    82: [function (_dereq_, module, exports) {\n      module.exports = false;\n    }, {}],\n    83: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var getPrototypeOf = _dereq_('../internals/object-get-prototype-of');\n\n      var createNonEnumerableProperty = _dereq_('../internals/create-non-enumerable-property');\n\n      var has = _dereq_('../internals/has');\n\n      var wellKnownSymbol = _dereq_('../internals/well-known-symbol');\n\n      var IS_PURE = _dereq_('../internals/is-pure');\n\n      var ITERATOR = wellKnownSymbol('iterator');\n      var BUGGY_SAFARI_ITERATORS = false;\n\n      var returnThis = function returnThis() {\n        return this;\n      };\n\n      var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n      if ([].keys) {\n        arrayIterator = [].keys();\n\n        if (!('next' in arrayIterator)) {\n          BUGGY_SAFARI_ITERATORS = true;\n        } else {\n          PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n\n          if (PrototypeOfArrayIteratorPrototype !== Object.prototype) {\n            IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n          }\n        }\n      }\n\n      if (IteratorPrototype == undefined) {\n        IteratorPrototype = {};\n      }\n\n      if (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {\n        createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n      }\n\n      module.exports = {\n        IteratorPrototype: IteratorPrototype,\n        BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n      };\n    }, {\n      '../internals/create-non-enumerable-property': 57,\n      '../internals/has': 69,\n      '../internals/is-pure': 82,\n      '../internals/object-get-prototype-of': 93,\n      '../internals/well-known-symbol': 126\n    }],\n    84: [function (_dereq_, module, exports) {\n      arguments[4][70][0].apply(exports, arguments);\n    }, {\n      dup: 70\n    }],\n    85: [function (_dereq_, module, exports) {\n      var fails = _dereq_('../internals/fails');\n\n      module.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n        return !String(Symbol());\n      });\n    }, {\n      '../internals/fails': 64\n    }],\n    86: [function (_dereq_, module, exports) {\n      var global = _dereq_('../internals/global');\n\n      var inspectSource = _dereq_('../internals/inspect-source');\n\n      var WeakMap = global.WeakMap;\n      module.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n    }, {\n      '../internals/global': 68,\n      '../internals/inspect-source': 76\n    }],\n    87: [function (_dereq_, module, exports) {\n      var anObject = _dereq_('../internals/an-object');\n\n      var defineProperties = _dereq_('../internals/object-define-properties');\n\n      var enumBugKeys = _dereq_('../internals/enum-bug-keys');\n\n      var hiddenKeys = _dereq_('../internals/hidden-keys');\n\n      var html = _dereq_('../internals/html');\n\n      var documentCreateElement = _dereq_('../internals/document-create-element');\n\n      var sharedKey = _dereq_('../internals/shared-key');\n\n      var GT = '>';\n      var LT = '<';\n      var PROTOTYPE = 'prototype';\n      var SCRIPT = 'script';\n      var IE_PROTO = sharedKey('IE_PROTO');\n\n      var EmptyConstructor = function EmptyConstructor() {};\n\n      var scriptTag = function scriptTag(content) {\n        return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n      };\n\n      var NullProtoObjectViaActiveX = function NullProtoObjectViaActiveX(activeXDocument) {\n        activeXDocument.write(scriptTag(''));\n        activeXDocument.close();\n        var temp = activeXDocument.parentWindow.Object;\n        activeXDocument = null;\n        return temp;\n      };\n\n      var NullProtoObjectViaIFrame = function NullProtoObjectViaIFrame() {\n        var iframe = documentCreateElement('iframe');\n        var JS = 'java' + SCRIPT + ':';\n        var iframeDocument;\n        iframe.style.display = 'none';\n        html.appendChild(iframe);\n        iframe.src = String(JS);\n        iframeDocument = iframe.contentWindow.document;\n        iframeDocument.open();\n        iframeDocument.write(scriptTag('document.F=Object'));\n        iframeDocument.close();\n        return iframeDocument.F;\n      };\n\n      var activeXDocument;\n\n      var _NullProtoObject = function NullProtoObject() {\n        try {\n          activeXDocument = document.domain && new ActiveXObject('htmlfile');\n        } catch (error) {}\n\n        _NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n        var length = enumBugKeys.length;\n\n        while (length--) {\n          delete _NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n        }\n\n        return _NullProtoObject();\n      };\n\n      hiddenKeys[IE_PROTO] = true;\n\n      module.exports = Object.create || function create(O, Properties) {\n        var result;\n\n        if (O !== null) {\n          EmptyConstructor[PROTOTYPE] = anObject(O);\n          result = new EmptyConstructor();\n          EmptyConstructor[PROTOTYPE] = null;\n          result[IE_PROTO] = O;\n        } else {\n          result = _NullProtoObject();\n        }\n\n        return Properties === undefined ? result : defineProperties(result, Properties);\n      };\n    }, {\n      '../internals/an-object': 38,\n      '../internals/document-create-element': 61,\n      '../internals/enum-bug-keys': 62,\n      '../internals/hidden-keys': 70,\n      '../internals/html': 71,\n      '../internals/object-define-properties': 88,\n      '../internals/shared-key': 107\n    }],\n    88: [function (_dereq_, module, exports) {\n      var DESCRIPTORS = _dereq_('../internals/descriptors');\n\n      var definePropertyModule = _dereq_('../internals/object-define-property');\n\n      var anObject = _dereq_('../internals/an-object');\n\n      var objectKeys = _dereq_('../internals/object-keys');\n\n      module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n        anObject(O);\n        var keys = objectKeys(Properties);\n        var length = keys.length;\n        var index = 0;\n        var key;\n\n        while (length > index) {\n          definePropertyModule.f(O, key = keys[index++], Properties[key]);\n        }\n\n        return O;\n      };\n    }, {\n      '../internals/an-object': 38,\n      '../internals/descriptors': 60,\n      '../internals/object-define-property': 89,\n      '../internals/object-keys': 95\n    }],\n    89: [function (_dereq_, module, exports) {\n      var DESCRIPTORS = _dereq_('../internals/descriptors');\n\n      var IE8_DOM_DEFINE = _dereq_('../internals/ie8-dom-define');\n\n      var anObject = _dereq_('../internals/an-object');\n\n      var toPrimitive = _dereq_('../internals/to-primitive');\n\n      var nativeDefineProperty = Object.defineProperty;\n      exports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n        anObject(O);\n        P = toPrimitive(P, true);\n        anObject(Attributes);\n\n        if (IE8_DOM_DEFINE) {\n          try {\n            return nativeDefineProperty(O, P, Attributes);\n          } catch (error) {}\n        }\n\n        if ('get' in Attributes || 'set' in Attributes) {\n          throw TypeError('Accessors not supported');\n        }\n\n        if ('value' in Attributes) {\n          O[P] = Attributes.value;\n        }\n\n        return O;\n      };\n    }, {\n      '../internals/an-object': 38,\n      '../internals/descriptors': 60,\n      '../internals/ie8-dom-define': 72,\n      '../internals/to-primitive': 119\n    }],\n    90: [function (_dereq_, module, exports) {\n      var DESCRIPTORS = _dereq_('../internals/descriptors');\n\n      var propertyIsEnumerableModule = _dereq_('../internals/object-property-is-enumerable');\n\n      var createPropertyDescriptor = _dereq_('../internals/create-property-descriptor');\n\n      var toIndexedObject = _dereq_('../internals/to-indexed-object');\n\n      var toPrimitive = _dereq_('../internals/to-primitive');\n\n      var has = _dereq_('../internals/has');\n\n      var IE8_DOM_DEFINE = _dereq_('../internals/ie8-dom-define');\n\n      var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n      exports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n        O = toIndexedObject(O);\n        P = toPrimitive(P, true);\n\n        if (IE8_DOM_DEFINE) {\n          try {\n            return nativeGetOwnPropertyDescriptor(O, P);\n          } catch (error) {}\n        }\n\n        if (has(O, P)) {\n          return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n        }\n      };\n    }, {\n      '../internals/create-property-descriptor': 58,\n      '../internals/descriptors': 60,\n      '../internals/has': 69,\n      '../internals/ie8-dom-define': 72,\n      '../internals/object-property-is-enumerable': 96,\n      '../internals/to-indexed-object': 113,\n      '../internals/to-primitive': 119\n    }],\n    91: [function (_dereq_, module, exports) {\n      var internalObjectKeys = _dereq_('../internals/object-keys-internal');\n\n      var enumBugKeys = _dereq_('../internals/enum-bug-keys');\n\n      var hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n      exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n        return internalObjectKeys(O, hiddenKeys);\n      };\n    }, {\n      '../internals/enum-bug-keys': 62,\n      '../internals/object-keys-internal': 94\n    }],\n    92: [function (_dereq_, module, exports) {\n      exports.f = Object.getOwnPropertySymbols;\n    }, {}],\n    93: [function (_dereq_, module, exports) {\n      var has = _dereq_('../internals/has');\n\n      var toObject = _dereq_('../internals/to-object');\n\n      var sharedKey = _dereq_('../internals/shared-key');\n\n      var CORRECT_PROTOTYPE_GETTER = _dereq_('../internals/correct-prototype-getter');\n\n      var IE_PROTO = sharedKey('IE_PROTO');\n      var ObjectPrototype = Object.prototype;\n      module.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n        O = toObject(O);\n\n        if (has(O, IE_PROTO)) {\n          return O[IE_PROTO];\n        }\n\n        if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n          return O.constructor.prototype;\n        }\n\n        return O instanceof Object ? ObjectPrototype : null;\n      };\n    }, {\n      '../internals/correct-prototype-getter': 55,\n      '../internals/has': 69,\n      '../internals/shared-key': 107,\n      '../internals/to-object': 116\n    }],\n    94: [function (_dereq_, module, exports) {\n      var has = _dereq_('../internals/has');\n\n      var toIndexedObject = _dereq_('../internals/to-indexed-object');\n\n      var indexOf = _dereq_('../internals/array-includes').indexOf;\n\n      var hiddenKeys = _dereq_('../internals/hidden-keys');\n\n      module.exports = function (object, names) {\n        var O = toIndexedObject(object);\n        var i = 0;\n        var result = [];\n        var key;\n\n        for (key in O) {\n          !has(hiddenKeys, key) && has(O, key) && result.push(key);\n        }\n\n        while (names.length > i) {\n          if (has(O, key = names[i++])) {\n            ~indexOf(result, key) || result.push(key);\n          }\n        }\n\n        return result;\n      };\n    }, {\n      '../internals/array-includes': 44,\n      '../internals/has': 69,\n      '../internals/hidden-keys': 70,\n      '../internals/to-indexed-object': 113\n    }],\n    95: [function (_dereq_, module, exports) {\n      var internalObjectKeys = _dereq_('../internals/object-keys-internal');\n\n      var enumBugKeys = _dereq_('../internals/enum-bug-keys');\n\n      module.exports = Object.keys || function keys(O) {\n        return internalObjectKeys(O, enumBugKeys);\n      };\n    }, {\n      '../internals/enum-bug-keys': 62,\n      '../internals/object-keys-internal': 94\n    }],\n    96: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var nativePropertyIsEnumerable = {}.propertyIsEnumerable;\n      var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n      var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({\n        1: 2\n      }, 1);\n      exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n        var descriptor = getOwnPropertyDescriptor(this, V);\n        return !!descriptor && descriptor.enumerable;\n      } : nativePropertyIsEnumerable;\n    }, {}],\n    97: [function (_dereq_, module, exports) {\n      var anObject = _dereq_('../internals/an-object');\n\n      var aPossiblePrototype = _dereq_('../internals/a-possible-prototype');\n\n      module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n        var CORRECT_SETTER = false;\n        var test = {};\n        var setter;\n\n        try {\n          setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n          setter.call(test, []);\n          CORRECT_SETTER = test instanceof Array;\n        } catch (error) {}\n\n        return function setPrototypeOf(O, proto) {\n          anObject(O);\n          aPossiblePrototype(proto);\n\n          if (CORRECT_SETTER) {\n            setter.call(O, proto);\n          } else {\n            O.__proto__ = proto;\n          }\n\n          return O;\n        };\n      }() : undefined);\n    }, {\n      '../internals/a-possible-prototype': 35,\n      '../internals/an-object': 38\n    }],\n    98: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var TO_STRING_TAG_SUPPORT = _dereq_('../internals/to-string-tag-support');\n\n      var classof = _dereq_('../internals/classof');\n\n      module.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n        return '[object ' + classof(this) + ']';\n      };\n    }, {\n      '../internals/classof': 53,\n      '../internals/to-string-tag-support': 120\n    }],\n    99: [function (_dereq_, module, exports) {\n      var getBuiltIn = _dereq_('../internals/get-built-in');\n\n      var getOwnPropertyNamesModule = _dereq_('../internals/object-get-own-property-names');\n\n      var getOwnPropertySymbolsModule = _dereq_('../internals/object-get-own-property-symbols');\n\n      var anObject = _dereq_('../internals/an-object');\n\n      module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n        var keys = getOwnPropertyNamesModule.f(anObject(it));\n        var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n        return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n      };\n    }, {\n      '../internals/an-object': 38,\n      '../internals/get-built-in': 66,\n      '../internals/object-get-own-property-names': 91,\n      '../internals/object-get-own-property-symbols': 92\n    }],\n    100: [function (_dereq_, module, exports) {\n      var global = _dereq_('../internals/global');\n\n      module.exports = global;\n    }, {\n      '../internals/global': 68\n    }],\n    101: [function (_dereq_, module, exports) {\n      var redefine = _dereq_('../internals/redefine');\n\n      module.exports = function (target, src, options) {\n        for (var key in src) {\n          redefine(target, key, src[key], options);\n        }\n\n        return target;\n      };\n    }, {\n      '../internals/redefine': 102\n    }],\n    102: [function (_dereq_, module, exports) {\n      var global = _dereq_('../internals/global');\n\n      var createNonEnumerableProperty = _dereq_('../internals/create-non-enumerable-property');\n\n      var has = _dereq_('../internals/has');\n\n      var setGlobal = _dereq_('../internals/set-global');\n\n      var inspectSource = _dereq_('../internals/inspect-source');\n\n      var InternalStateModule = _dereq_('../internals/internal-state');\n\n      var getInternalState = InternalStateModule.get;\n      var enforceInternalState = InternalStateModule.enforce;\n      var TEMPLATE = String(String).split('String');\n      (module.exports = function (O, key, value, options) {\n        var unsafe = options ? !!options.unsafe : false;\n        var simple = options ? !!options.enumerable : false;\n        var noTargetGet = options ? !!options.noTargetGet : false;\n\n        if (typeof value == 'function') {\n          if (typeof key == 'string' && !has(value, 'name')) {\n            createNonEnumerableProperty(value, 'name', key);\n          }\n\n          enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n        }\n\n        if (O === global) {\n          if (simple) {\n            O[key] = value;\n          } else {\n            setGlobal(key, value);\n          }\n\n          return;\n        } else if (!unsafe) {\n          delete O[key];\n        } else if (!noTargetGet && O[key]) {\n          simple = true;\n        }\n\n        if (simple) {\n          O[key] = value;\n        } else {\n          createNonEnumerableProperty(O, key, value);\n        }\n      })(Function.prototype, 'toString', function toString() {\n        return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n      });\n    }, {\n      '../internals/create-non-enumerable-property': 57,\n      '../internals/global': 68,\n      '../internals/has': 69,\n      '../internals/inspect-source': 76,\n      '../internals/internal-state': 77,\n      '../internals/set-global': 104\n    }],\n    103: [function (_dereq_, module, exports) {\n      module.exports = function (it) {\n        if (it == undefined) {\n          throw TypeError('Can\\'t call method on ' + it);\n        }\n\n        return it;\n      };\n    }, {}],\n    104: [function (_dereq_, module, exports) {\n      var global = _dereq_('../internals/global');\n\n      var createNonEnumerableProperty = _dereq_('../internals/create-non-enumerable-property');\n\n      module.exports = function (key, value) {\n        try {\n          createNonEnumerableProperty(global, key, value);\n        } catch (error) {\n          global[key] = value;\n        }\n\n        return value;\n      };\n    }, {\n      '../internals/create-non-enumerable-property': 57,\n      '../internals/global': 68\n    }],\n    105: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var getBuiltIn = _dereq_('../internals/get-built-in');\n\n      var definePropertyModule = _dereq_('../internals/object-define-property');\n\n      var wellKnownSymbol = _dereq_('../internals/well-known-symbol');\n\n      var DESCRIPTORS = _dereq_('../internals/descriptors');\n\n      var SPECIES = wellKnownSymbol('species');\n\n      module.exports = function (CONSTRUCTOR_NAME) {\n        var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n        var defineProperty = definePropertyModule.f;\n\n        if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n          defineProperty(Constructor, SPECIES, {\n            configurable: true,\n            get: function get() {\n              return this;\n            }\n          });\n        }\n      };\n    }, {\n      '../internals/descriptors': 60,\n      '../internals/get-built-in': 66,\n      '../internals/object-define-property': 89,\n      '../internals/well-known-symbol': 126\n    }],\n    106: [function (_dereq_, module, exports) {\n      var defineProperty = _dereq_('../internals/object-define-property').f;\n\n      var has = _dereq_('../internals/has');\n\n      var wellKnownSymbol = _dereq_('../internals/well-known-symbol');\n\n      var TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\n      module.exports = function (it, TAG, STATIC) {\n        if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n          defineProperty(it, TO_STRING_TAG, {\n            configurable: true,\n            value: TAG\n          });\n        }\n      };\n    }, {\n      '../internals/has': 69,\n      '../internals/object-define-property': 89,\n      '../internals/well-known-symbol': 126\n    }],\n    107: [function (_dereq_, module, exports) {\n      var shared = _dereq_('../internals/shared');\n\n      var uid = _dereq_('../internals/uid');\n\n      var keys = shared('keys');\n\n      module.exports = function (key) {\n        return keys[key] || (keys[key] = uid(key));\n      };\n    }, {\n      '../internals/shared': 109,\n      '../internals/uid': 124\n    }],\n    108: [function (_dereq_, module, exports) {\n      var global = _dereq_('../internals/global');\n\n      var setGlobal = _dereq_('../internals/set-global');\n\n      var SHARED = '__core-js_shared__';\n      var store = global[SHARED] || setGlobal(SHARED, {});\n      module.exports = store;\n    }, {\n      '../internals/global': 68,\n      '../internals/set-global': 104\n    }],\n    109: [function (_dereq_, module, exports) {\n      var IS_PURE = _dereq_('../internals/is-pure');\n\n      var store = _dereq_('../internals/shared-store');\n\n      (module.exports = function (key, value) {\n        return store[key] || (store[key] = value !== undefined ? value : {});\n      })('versions', []).push({\n        version: '3.6.4',\n        mode: IS_PURE ? 'pure' : 'global',\n        copyright: '\\xa9 2020 Denis Pushkarev (zloirock.ru)'\n      });\n    }, {\n      '../internals/is-pure': 82,\n      '../internals/shared-store': 108\n    }],\n    110: [function (_dereq_, module, exports) {\n      var anObject = _dereq_('../internals/an-object');\n\n      var aFunction = _dereq_('../internals/a-function');\n\n      var wellKnownSymbol = _dereq_('../internals/well-known-symbol');\n\n      var SPECIES = wellKnownSymbol('species');\n\n      module.exports = function (O, defaultConstructor) {\n        var C = anObject(O).constructor;\n        var S;\n        return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n      };\n    }, {\n      '../internals/a-function': 34,\n      '../internals/an-object': 38,\n      '../internals/well-known-symbol': 126\n    }],\n    111: [function (_dereq_, module, exports) {\n      var toInteger = _dereq_('../internals/to-integer');\n\n      var max = Math.max;\n      var min = Math.min;\n\n      module.exports = function (index, length) {\n        var integer = toInteger(index);\n        return integer < 0 ? max(integer + length, 0) : min(integer, length);\n      };\n    }, {\n      '../internals/to-integer': 114\n    }],\n    112: [function (_dereq_, module, exports) {\n      var toInteger = _dereq_('../internals/to-integer');\n\n      var toLength = _dereq_('../internals/to-length');\n\n      module.exports = function (it) {\n        if (it === undefined) {\n          return 0;\n        }\n\n        var number = toInteger(it);\n        var length = toLength(number);\n\n        if (number !== length) {\n          throw RangeError('Wrong length or index');\n        }\n\n        return length;\n      };\n    }, {\n      '../internals/to-integer': 114,\n      '../internals/to-length': 115\n    }],\n    113: [function (_dereq_, module, exports) {\n      var IndexedObject = _dereq_('../internals/indexed-object');\n\n      var requireObjectCoercible = _dereq_('../internals/require-object-coercible');\n\n      module.exports = function (it) {\n        return IndexedObject(requireObjectCoercible(it));\n      };\n    }, {\n      '../internals/indexed-object': 74,\n      '../internals/require-object-coercible': 103\n    }],\n    114: [function (_dereq_, module, exports) {\n      var ceil = Math.ceil;\n      var floor = Math.floor;\n\n      module.exports = function (argument) {\n        return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n      };\n    }, {}],\n    115: [function (_dereq_, module, exports) {\n      var toInteger = _dereq_('../internals/to-integer');\n\n      var min = Math.min;\n\n      module.exports = function (argument) {\n        return argument > 0 ? min(toInteger(argument), 9007199254740991) : 0;\n      };\n    }, {\n      '../internals/to-integer': 114\n    }],\n    116: [function (_dereq_, module, exports) {\n      var requireObjectCoercible = _dereq_('../internals/require-object-coercible');\n\n      module.exports = function (argument) {\n        return Object(requireObjectCoercible(argument));\n      };\n    }, {\n      '../internals/require-object-coercible': 103\n    }],\n    117: [function (_dereq_, module, exports) {\n      var toPositiveInteger = _dereq_('../internals/to-positive-integer');\n\n      module.exports = function (it, BYTES) {\n        var offset = toPositiveInteger(it);\n\n        if (offset % BYTES) {\n          throw RangeError('Wrong offset');\n        }\n\n        return offset;\n      };\n    }, {\n      '../internals/to-positive-integer': 118\n    }],\n    118: [function (_dereq_, module, exports) {\n      var toInteger = _dereq_('../internals/to-integer');\n\n      module.exports = function (it) {\n        var result = toInteger(it);\n\n        if (result < 0) {\n          throw RangeError('The argument can\\'t be less than 0');\n        }\n\n        return result;\n      };\n    }, {\n      '../internals/to-integer': 114\n    }],\n    119: [function (_dereq_, module, exports) {\n      var isObject = _dereq_('../internals/is-object');\n\n      module.exports = function (input, PREFERRED_STRING) {\n        if (!isObject(input)) {\n          return input;\n        }\n\n        var fn, val;\n\n        if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) {\n          return val;\n        }\n\n        if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) {\n          return val;\n        }\n\n        if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) {\n          return val;\n        }\n\n        throw TypeError('Can\\'t convert object to primitive value');\n      };\n    }, {\n      '../internals/is-object': 81\n    }],\n    120: [function (_dereq_, module, exports) {\n      var wellKnownSymbol = _dereq_('../internals/well-known-symbol');\n\n      var TO_STRING_TAG = wellKnownSymbol('toStringTag');\n      var test = {};\n      test[TO_STRING_TAG] = 'z';\n      module.exports = String(test) === '[object z]';\n    }, {\n      '../internals/well-known-symbol': 126\n    }],\n    121: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var $ = _dereq_('../internals/export');\n\n      var global = _dereq_('../internals/global');\n\n      var DESCRIPTORS = _dereq_('../internals/descriptors');\n\n      var TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = _dereq_('../internals/typed-array-constructors-require-wrappers');\n\n      var ArrayBufferViewCore = _dereq_('../internals/array-buffer-view-core');\n\n      var ArrayBufferModule = _dereq_('../internals/array-buffer');\n\n      var anInstance = _dereq_('../internals/an-instance');\n\n      var createPropertyDescriptor = _dereq_('../internals/create-property-descriptor');\n\n      var createNonEnumerableProperty = _dereq_('../internals/create-non-enumerable-property');\n\n      var toLength = _dereq_('../internals/to-length');\n\n      var toIndex = _dereq_('../internals/to-index');\n\n      var toOffset = _dereq_('../internals/to-offset');\n\n      var toPrimitive = _dereq_('../internals/to-primitive');\n\n      var has = _dereq_('../internals/has');\n\n      var classof = _dereq_('../internals/classof');\n\n      var isObject = _dereq_('../internals/is-object');\n\n      var create = _dereq_('../internals/object-create');\n\n      var setPrototypeOf = _dereq_('../internals/object-set-prototype-of');\n\n      var getOwnPropertyNames = _dereq_('../internals/object-get-own-property-names').f;\n\n      var typedArrayFrom = _dereq_('../internals/typed-array-from');\n\n      var forEach = _dereq_('../internals/array-iteration').forEach;\n\n      var setSpecies = _dereq_('../internals/set-species');\n\n      var definePropertyModule = _dereq_('../internals/object-define-property');\n\n      var getOwnPropertyDescriptorModule = _dereq_('../internals/object-get-own-property-descriptor');\n\n      var InternalStateModule = _dereq_('../internals/internal-state');\n\n      var inheritIfRequired = _dereq_('../internals/inherit-if-required');\n\n      var getInternalState = InternalStateModule.get;\n      var setInternalState = InternalStateModule.set;\n      var nativeDefineProperty = definePropertyModule.f;\n      var nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n      var round = Math.round;\n      var RangeError = global.RangeError;\n      var ArrayBuffer = ArrayBufferModule.ArrayBuffer;\n      var DataView = ArrayBufferModule.DataView;\n      var NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\n      var TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\n      var TypedArray = ArrayBufferViewCore.TypedArray;\n      var TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\n      var aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\n      var isTypedArray = ArrayBufferViewCore.isTypedArray;\n      var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\n      var WRONG_LENGTH = 'Wrong length';\n\n      var fromList = function fromList(C, list) {\n        var index = 0;\n        var length = list.length;\n        var result = new (aTypedArrayConstructor(C))(length);\n\n        while (length > index) {\n          result[index] = list[index++];\n        }\n\n        return result;\n      };\n\n      var addGetter = function addGetter(it, key) {\n        nativeDefineProperty(it, key, {\n          get: function get() {\n            return getInternalState(this)[key];\n          }\n        });\n      };\n\n      var isArrayBuffer = function isArrayBuffer(it) {\n        var klass;\n        return it instanceof ArrayBuffer || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';\n      };\n\n      var isTypedArrayIndex = function isTypedArrayIndex(target, key) {\n        return isTypedArray(target) && typeof key != 'symbol' && key in target && String(+key) == String(key);\n      };\n\n      var wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n        return isTypedArrayIndex(target, key = toPrimitive(key, true)) ? createPropertyDescriptor(2, target[key]) : nativeGetOwnPropertyDescriptor(target, key);\n      };\n\n      var wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n        if (isTypedArrayIndex(target, key = toPrimitive(key, true)) && isObject(descriptor) && has(descriptor, 'value') && !has(descriptor, 'get') && !has(descriptor, 'set') && !descriptor.configurable && (!has(descriptor, 'writable') || descriptor.writable) && (!has(descriptor, 'enumerable') || descriptor.enumerable)) {\n          target[key] = descriptor.value;\n          return target;\n        }\n\n        return nativeDefineProperty(target, key, descriptor);\n      };\n\n      if (DESCRIPTORS) {\n        if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n          getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n          definePropertyModule.f = wrappedDefineProperty;\n          addGetter(TypedArrayPrototype, 'buffer');\n          addGetter(TypedArrayPrototype, 'byteOffset');\n          addGetter(TypedArrayPrototype, 'byteLength');\n          addGetter(TypedArrayPrototype, 'length');\n        }\n\n        $({\n          target: 'Object',\n          stat: true,\n          forced: !NATIVE_ARRAY_BUFFER_VIEWS\n        }, {\n          getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n          defineProperty: wrappedDefineProperty\n        });\n\n        module.exports = function (TYPE, wrapper, CLAMPED) {\n          var BYTES = TYPE.match(/\\d+$/)[0] / 8;\n          var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n          var GETTER = 'get' + TYPE;\n          var SETTER = 'set' + TYPE;\n          var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\n          var TypedArrayConstructor = NativeTypedArrayConstructor;\n          var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n          var exported = {};\n\n          var getter = function getter(that, index) {\n            var data = getInternalState(that);\n            return data.view[GETTER](index * BYTES + data.byteOffset, true);\n          };\n\n          var setter = function setter(that, index, value) {\n            var data = getInternalState(that);\n\n            if (CLAMPED) {\n              value = (value = round(value)) < 0 ? 0 : value > 255 ? 255 : value & 255;\n            }\n\n            data.view[SETTER](index * BYTES + data.byteOffset, value, true);\n          };\n\n          var addElement = function addElement(that, index) {\n            nativeDefineProperty(that, index, {\n              get: function get() {\n                return getter(this, index);\n              },\n              set: function set(value) {\n                return setter(this, index, value);\n              },\n              enumerable: true\n            });\n          };\n\n          if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n            TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n              anInstance(that, TypedArrayConstructor, CONSTRUCTOR_NAME);\n              var index = 0;\n              var byteOffset = 0;\n              var buffer, byteLength, length;\n\n              if (!isObject(data)) {\n                length = toIndex(data);\n                byteLength = length * BYTES;\n                buffer = new ArrayBuffer(byteLength);\n              } else if (isArrayBuffer(data)) {\n                buffer = data;\n                byteOffset = toOffset(offset, BYTES);\n                var $len = data.byteLength;\n\n                if ($length === undefined) {\n                  if ($len % BYTES) {\n                    throw RangeError(WRONG_LENGTH);\n                  }\n\n                  byteLength = $len - byteOffset;\n\n                  if (byteLength < 0) {\n                    throw RangeError(WRONG_LENGTH);\n                  }\n                } else {\n                  byteLength = toLength($length) * BYTES;\n\n                  if (byteLength + byteOffset > $len) {\n                    throw RangeError(WRONG_LENGTH);\n                  }\n                }\n\n                length = byteLength / BYTES;\n              } else if (isTypedArray(data)) {\n                return fromList(TypedArrayConstructor, data);\n              } else {\n                return typedArrayFrom.call(TypedArrayConstructor, data);\n              }\n\n              setInternalState(that, {\n                buffer: buffer,\n                byteOffset: byteOffset,\n                byteLength: byteLength,\n                length: length,\n                view: new DataView(buffer)\n              });\n\n              while (index < length) {\n                addElement(that, index++);\n              }\n            });\n\n            if (setPrototypeOf) {\n              setPrototypeOf(TypedArrayConstructor, TypedArray);\n            }\n\n            TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n          } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n            TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n              anInstance(dummy, TypedArrayConstructor, CONSTRUCTOR_NAME);\n              return inheritIfRequired(function () {\n                if (!isObject(data)) {\n                  return new NativeTypedArrayConstructor(toIndex(data));\n                }\n\n                if (isArrayBuffer(data)) {\n                  return $length !== undefined ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length) : typedArrayOffset !== undefined ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES)) : new NativeTypedArrayConstructor(data);\n                }\n\n                if (isTypedArray(data)) {\n                  return fromList(TypedArrayConstructor, data);\n                }\n\n                return typedArrayFrom.call(TypedArrayConstructor, data);\n              }(), dummy, TypedArrayConstructor);\n            });\n\n            if (setPrototypeOf) {\n              setPrototypeOf(TypedArrayConstructor, TypedArray);\n            }\n\n            forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n              if (!(key in TypedArrayConstructor)) {\n                createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n              }\n            });\n            TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n          }\n\n          if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n            createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n          }\n\n          if (TYPED_ARRAY_TAG) {\n            createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n          }\n\n          exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n          $({\n            global: true,\n            forced: TypedArrayConstructor != NativeTypedArrayConstructor,\n            sham: !NATIVE_ARRAY_BUFFER_VIEWS\n          }, exported);\n\n          if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n            createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n          }\n\n          if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n            createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n          }\n\n          setSpecies(CONSTRUCTOR_NAME);\n        };\n      } else {\n        module.exports = function () {};\n      }\n    }, {\n      '../internals/an-instance': 37,\n      '../internals/array-buffer': 41,\n      '../internals/array-buffer-view-core': 40,\n      '../internals/array-iteration': 45,\n      '../internals/classof': 53,\n      '../internals/create-non-enumerable-property': 57,\n      '../internals/create-property-descriptor': 58,\n      '../internals/descriptors': 60,\n      '../internals/export': 63,\n      '../internals/global': 68,\n      '../internals/has': 69,\n      '../internals/inherit-if-required': 75,\n      '../internals/internal-state': 77,\n      '../internals/is-object': 81,\n      '../internals/object-create': 87,\n      '../internals/object-define-property': 89,\n      '../internals/object-get-own-property-descriptor': 90,\n      '../internals/object-get-own-property-names': 91,\n      '../internals/object-set-prototype-of': 97,\n      '../internals/set-species': 105,\n      '../internals/to-index': 112,\n      '../internals/to-length': 115,\n      '../internals/to-offset': 117,\n      '../internals/to-primitive': 119,\n      '../internals/typed-array-constructors-require-wrappers': 122,\n      '../internals/typed-array-from': 123\n    }],\n    122: [function (_dereq_, module, exports) {\n      var global = _dereq_('../internals/global');\n\n      var fails = _dereq_('../internals/fails');\n\n      var checkCorrectnessOfIteration = _dereq_('../internals/check-correctness-of-iteration');\n\n      var NATIVE_ARRAY_BUFFER_VIEWS = _dereq_('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER_VIEWS;\n\n      var ArrayBuffer = global.ArrayBuffer;\n      var Int8Array = global.Int8Array;\n      module.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n        Int8Array(1);\n      }) || !fails(function () {\n        new Int8Array(-1);\n      }) || !checkCorrectnessOfIteration(function (iterable) {\n        new Int8Array();\n        new Int8Array(null);\n        new Int8Array(1.5);\n        new Int8Array(iterable);\n      }, true) || fails(function () {\n        return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n      });\n    }, {\n      '../internals/array-buffer-view-core': 40,\n      '../internals/check-correctness-of-iteration': 51,\n      '../internals/fails': 64,\n      '../internals/global': 68\n    }],\n    123: [function (_dereq_, module, exports) {\n      var toObject = _dereq_('../internals/to-object');\n\n      var toLength = _dereq_('../internals/to-length');\n\n      var getIteratorMethod = _dereq_('../internals/get-iterator-method');\n\n      var isArrayIteratorMethod = _dereq_('../internals/is-array-iterator-method');\n\n      var bind = _dereq_('../internals/function-bind-context');\n\n      var aTypedArrayConstructor = _dereq_('../internals/array-buffer-view-core').aTypedArrayConstructor;\n\n      module.exports = function from(source) {\n        var O = toObject(source);\n        var argumentsLength = arguments.length;\n        var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n        var mapping = mapfn !== undefined;\n        var iteratorMethod = getIteratorMethod(O);\n        var i, length, result, step, iterator, next;\n\n        if (iteratorMethod != undefined && !isArrayIteratorMethod(iteratorMethod)) {\n          iterator = iteratorMethod.call(O);\n          next = iterator.next;\n          O = [];\n\n          while (!(step = next.call(iterator)).done) {\n            O.push(step.value);\n          }\n        }\n\n        if (mapping && argumentsLength > 2) {\n          mapfn = bind(mapfn, arguments[2], 2);\n        }\n\n        length = toLength(O.length);\n        result = new (aTypedArrayConstructor(this))(length);\n\n        for (i = 0; length > i; i++) {\n          result[i] = mapping ? mapfn(O[i], i) : O[i];\n        }\n\n        return result;\n      };\n    }, {\n      '../internals/array-buffer-view-core': 40,\n      '../internals/function-bind-context': 65,\n      '../internals/get-iterator-method': 67,\n      '../internals/is-array-iterator-method': 78,\n      '../internals/to-length': 115,\n      '../internals/to-object': 116\n    }],\n    124: [function (_dereq_, module, exports) {\n      var id = 0;\n      var postfix = Math.random();\n\n      module.exports = function (key) {\n        return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n      };\n    }, {}],\n    125: [function (_dereq_, module, exports) {\n      var NATIVE_SYMBOL = _dereq_('../internals/native-symbol');\n\n      module.exports = NATIVE_SYMBOL && !Symbol.sham && typeof Symbol.iterator == 'symbol';\n    }, {\n      '../internals/native-symbol': 85\n    }],\n    126: [function (_dereq_, module, exports) {\n      var global = _dereq_('../internals/global');\n\n      var shared = _dereq_('../internals/shared');\n\n      var has = _dereq_('../internals/has');\n\n      var uid = _dereq_('../internals/uid');\n\n      var NATIVE_SYMBOL = _dereq_('../internals/native-symbol');\n\n      var USE_SYMBOL_AS_UID = _dereq_('../internals/use-symbol-as-uid');\n\n      var WellKnownSymbolsStore = shared('wks');\n      var Symbol = global.Symbol;\n      var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\n      module.exports = function (name) {\n        if (!has(WellKnownSymbolsStore, name)) {\n          if (NATIVE_SYMBOL && has(Symbol, name)) {\n            WellKnownSymbolsStore[name] = Symbol[name];\n          } else {\n            WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n          }\n        }\n\n        return WellKnownSymbolsStore[name];\n      };\n    }, {\n      '../internals/global': 68,\n      '../internals/has': 69,\n      '../internals/native-symbol': 85,\n      '../internals/shared': 109,\n      '../internals/uid': 124,\n      '../internals/use-symbol-as-uid': 125\n    }],\n    127: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var toIndexedObject = _dereq_('../internals/to-indexed-object');\n\n      var addToUnscopables = _dereq_('../internals/add-to-unscopables');\n\n      var Iterators = _dereq_('../internals/iterators');\n\n      var InternalStateModule = _dereq_('../internals/internal-state');\n\n      var defineIterator = _dereq_('../internals/define-iterator');\n\n      var ARRAY_ITERATOR = 'Array Iterator';\n      var setInternalState = InternalStateModule.set;\n      var getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n      module.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n        setInternalState(this, {\n          type: ARRAY_ITERATOR,\n          target: toIndexedObject(iterated),\n          index: 0,\n          kind: kind\n        });\n      }, function () {\n        var state = getInternalState(this);\n        var target = state.target;\n        var kind = state.kind;\n        var index = state.index++;\n\n        if (!target || index >= target.length) {\n          state.target = undefined;\n          return {\n            value: undefined,\n            done: true\n          };\n        }\n\n        if (kind == 'keys') {\n          return {\n            value: index,\n            done: false\n          };\n        }\n\n        if (kind == 'values') {\n          return {\n            value: target[index],\n            done: false\n          };\n        }\n\n        return {\n          value: [index, target[index]],\n          done: false\n        };\n      }, 'values');\n      Iterators.Arguments = Iterators.Array;\n      addToUnscopables('keys');\n      addToUnscopables('values');\n      addToUnscopables('entries');\n    }, {\n      '../internals/add-to-unscopables': 36,\n      '../internals/define-iterator': 59,\n      '../internals/internal-state': 77,\n      '../internals/iterators': 84,\n      '../internals/to-indexed-object': 113\n    }],\n    128: [function (_dereq_, module, exports) {\n      var TO_STRING_TAG_SUPPORT = _dereq_('../internals/to-string-tag-support');\n\n      var redefine = _dereq_('../internals/redefine');\n\n      var toString = _dereq_('../internals/object-to-string');\n\n      if (!TO_STRING_TAG_SUPPORT) {\n        redefine(Object.prototype, 'toString', toString, {\n          unsafe: true\n        });\n      }\n    }, {\n      '../internals/object-to-string': 98,\n      '../internals/redefine': 102,\n      '../internals/to-string-tag-support': 120\n    }],\n    129: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var ArrayBufferViewCore = _dereq_('../internals/array-buffer-view-core');\n\n      var $copyWithin = _dereq_('../internals/array-copy-within');\n\n      var aTypedArray = ArrayBufferViewCore.aTypedArray;\n      var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n      exportTypedArrayMethod('copyWithin', function copyWithin(target, start) {\n        return $copyWithin.call(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n      });\n    }, {\n      '../internals/array-buffer-view-core': 40,\n      '../internals/array-copy-within': 42\n    }],\n    130: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var ArrayBufferViewCore = _dereq_('../internals/array-buffer-view-core');\n\n      var $every = _dereq_('../internals/array-iteration').every;\n\n      var aTypedArray = ArrayBufferViewCore.aTypedArray;\n      var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n      exportTypedArrayMethod('every', function every(callbackfn) {\n        return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n      });\n    }, {\n      '../internals/array-buffer-view-core': 40,\n      '../internals/array-iteration': 45\n    }],\n    131: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var ArrayBufferViewCore = _dereq_('../internals/array-buffer-view-core');\n\n      var $fill = _dereq_('../internals/array-fill');\n\n      var aTypedArray = ArrayBufferViewCore.aTypedArray;\n      var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n      exportTypedArrayMethod('fill', function fill(value) {\n        return $fill.apply(aTypedArray(this), arguments);\n      });\n    }, {\n      '../internals/array-buffer-view-core': 40,\n      '../internals/array-fill': 43\n    }],\n    132: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var ArrayBufferViewCore = _dereq_('../internals/array-buffer-view-core');\n\n      var $filter = _dereq_('../internals/array-iteration').filter;\n\n      var speciesConstructor = _dereq_('../internals/species-constructor');\n\n      var aTypedArray = ArrayBufferViewCore.aTypedArray;\n      var aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\n      var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n      exportTypedArrayMethod('filter', function filter(callbackfn) {\n        var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n        var C = speciesConstructor(this, this.constructor);\n        var index = 0;\n        var length = list.length;\n        var result = new (aTypedArrayConstructor(C))(length);\n\n        while (length > index) {\n          result[index] = list[index++];\n        }\n\n        return result;\n      });\n    }, {\n      '../internals/array-buffer-view-core': 40,\n      '../internals/array-iteration': 45,\n      '../internals/species-constructor': 110\n    }],\n    133: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var ArrayBufferViewCore = _dereq_('../internals/array-buffer-view-core');\n\n      var $findIndex = _dereq_('../internals/array-iteration').findIndex;\n\n      var aTypedArray = ArrayBufferViewCore.aTypedArray;\n      var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n      exportTypedArrayMethod('findIndex', function findIndex(predicate) {\n        return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n      });\n    }, {\n      '../internals/array-buffer-view-core': 40,\n      '../internals/array-iteration': 45\n    }],\n    134: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var ArrayBufferViewCore = _dereq_('../internals/array-buffer-view-core');\n\n      var $find = _dereq_('../internals/array-iteration').find;\n\n      var aTypedArray = ArrayBufferViewCore.aTypedArray;\n      var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n      exportTypedArrayMethod('find', function find(predicate) {\n        return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n      });\n    }, {\n      '../internals/array-buffer-view-core': 40,\n      '../internals/array-iteration': 45\n    }],\n    135: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var ArrayBufferViewCore = _dereq_('../internals/array-buffer-view-core');\n\n      var $forEach = _dereq_('../internals/array-iteration').forEach;\n\n      var aTypedArray = ArrayBufferViewCore.aTypedArray;\n      var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n      exportTypedArrayMethod('forEach', function forEach(callbackfn) {\n        $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n      });\n    }, {\n      '../internals/array-buffer-view-core': 40,\n      '../internals/array-iteration': 45\n    }],\n    136: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = _dereq_('../internals/typed-array-constructors-require-wrappers');\n\n      var exportTypedArrayStaticMethod = _dereq_('../internals/array-buffer-view-core').exportTypedArrayStaticMethod;\n\n      var typedArrayFrom = _dereq_('../internals/typed-array-from');\n\n      exportTypedArrayStaticMethod('from', typedArrayFrom, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS);\n    }, {\n      '../internals/array-buffer-view-core': 40,\n      '../internals/typed-array-constructors-require-wrappers': 122,\n      '../internals/typed-array-from': 123\n    }],\n    137: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var ArrayBufferViewCore = _dereq_('../internals/array-buffer-view-core');\n\n      var $includes = _dereq_('../internals/array-includes').includes;\n\n      var aTypedArray = ArrayBufferViewCore.aTypedArray;\n      var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n      exportTypedArrayMethod('includes', function includes(searchElement) {\n        return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n      });\n    }, {\n      '../internals/array-buffer-view-core': 40,\n      '../internals/array-includes': 44\n    }],\n    138: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var ArrayBufferViewCore = _dereq_('../internals/array-buffer-view-core');\n\n      var $indexOf = _dereq_('../internals/array-includes').indexOf;\n\n      var aTypedArray = ArrayBufferViewCore.aTypedArray;\n      var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n      exportTypedArrayMethod('indexOf', function indexOf(searchElement) {\n        return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n      });\n    }, {\n      '../internals/array-buffer-view-core': 40,\n      '../internals/array-includes': 44\n    }],\n    139: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var global = _dereq_('../internals/global');\n\n      var ArrayBufferViewCore = _dereq_('../internals/array-buffer-view-core');\n\n      var ArrayIterators = _dereq_('../modules/es.array.iterator');\n\n      var wellKnownSymbol = _dereq_('../internals/well-known-symbol');\n\n      var ITERATOR = wellKnownSymbol('iterator');\n      var Uint8Array = global.Uint8Array;\n      var arrayValues = ArrayIterators.values;\n      var arrayKeys = ArrayIterators.keys;\n      var arrayEntries = ArrayIterators.entries;\n      var aTypedArray = ArrayBufferViewCore.aTypedArray;\n      var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n      var nativeTypedArrayIterator = Uint8Array && Uint8Array.prototype[ITERATOR];\n      var CORRECT_ITER_NAME = !!nativeTypedArrayIterator && (nativeTypedArrayIterator.name == 'values' || nativeTypedArrayIterator.name == undefined);\n\n      var typedArrayValues = function values() {\n        return arrayValues.call(aTypedArray(this));\n      };\n\n      exportTypedArrayMethod('entries', function entries() {\n        return arrayEntries.call(aTypedArray(this));\n      });\n      exportTypedArrayMethod('keys', function keys() {\n        return arrayKeys.call(aTypedArray(this));\n      });\n      exportTypedArrayMethod('values', typedArrayValues, !CORRECT_ITER_NAME);\n      exportTypedArrayMethod(ITERATOR, typedArrayValues, !CORRECT_ITER_NAME);\n    }, {\n      '../internals/array-buffer-view-core': 40,\n      '../internals/global': 68,\n      '../internals/well-known-symbol': 126,\n      '../modules/es.array.iterator': 127\n    }],\n    140: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var ArrayBufferViewCore = _dereq_('../internals/array-buffer-view-core');\n\n      var aTypedArray = ArrayBufferViewCore.aTypedArray;\n      var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n      var $join = [].join;\n      exportTypedArrayMethod('join', function join(separator) {\n        return $join.apply(aTypedArray(this), arguments);\n      });\n    }, {\n      '../internals/array-buffer-view-core': 40\n    }],\n    141: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var ArrayBufferViewCore = _dereq_('../internals/array-buffer-view-core');\n\n      var $lastIndexOf = _dereq_('../internals/array-last-index-of');\n\n      var aTypedArray = ArrayBufferViewCore.aTypedArray;\n      var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n      exportTypedArrayMethod('lastIndexOf', function lastIndexOf(searchElement) {\n        return $lastIndexOf.apply(aTypedArray(this), arguments);\n      });\n    }, {\n      '../internals/array-buffer-view-core': 40,\n      '../internals/array-last-index-of': 46\n    }],\n    142: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var ArrayBufferViewCore = _dereq_('../internals/array-buffer-view-core');\n\n      var $map = _dereq_('../internals/array-iteration').map;\n\n      var speciesConstructor = _dereq_('../internals/species-constructor');\n\n      var aTypedArray = ArrayBufferViewCore.aTypedArray;\n      var aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\n      var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n      exportTypedArrayMethod('map', function map(mapfn) {\n        return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {\n          return new (aTypedArrayConstructor(speciesConstructor(O, O.constructor)))(length);\n        });\n      });\n    }, {\n      '../internals/array-buffer-view-core': 40,\n      '../internals/array-iteration': 45,\n      '../internals/species-constructor': 110\n    }],\n    143: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var ArrayBufferViewCore = _dereq_('../internals/array-buffer-view-core');\n\n      var TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = _dereq_('../internals/typed-array-constructors-require-wrappers');\n\n      var aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\n      var exportTypedArrayStaticMethod = ArrayBufferViewCore.exportTypedArrayStaticMethod;\n      exportTypedArrayStaticMethod('of', function of() {\n        var index = 0;\n        var length = arguments.length;\n        var result = new (aTypedArrayConstructor(this))(length);\n\n        while (length > index) {\n          result[index] = arguments[index++];\n        }\n\n        return result;\n      }, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS);\n    }, {\n      '../internals/array-buffer-view-core': 40,\n      '../internals/typed-array-constructors-require-wrappers': 122\n    }],\n    144: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var ArrayBufferViewCore = _dereq_('../internals/array-buffer-view-core');\n\n      var $reduceRight = _dereq_('../internals/array-reduce').right;\n\n      var aTypedArray = ArrayBufferViewCore.aTypedArray;\n      var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n      exportTypedArrayMethod('reduceRight', function reduceRight(callbackfn) {\n        return $reduceRight(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n      });\n    }, {\n      '../internals/array-buffer-view-core': 40,\n      '../internals/array-reduce': 49\n    }],\n    145: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var ArrayBufferViewCore = _dereq_('../internals/array-buffer-view-core');\n\n      var $reduce = _dereq_('../internals/array-reduce').left;\n\n      var aTypedArray = ArrayBufferViewCore.aTypedArray;\n      var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n      exportTypedArrayMethod('reduce', function reduce(callbackfn) {\n        return $reduce(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n      });\n    }, {\n      '../internals/array-buffer-view-core': 40,\n      '../internals/array-reduce': 49\n    }],\n    146: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var ArrayBufferViewCore = _dereq_('../internals/array-buffer-view-core');\n\n      var aTypedArray = ArrayBufferViewCore.aTypedArray;\n      var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n      var floor = Math.floor;\n      exportTypedArrayMethod('reverse', function reverse() {\n        var that = this;\n        var length = aTypedArray(that).length;\n        var middle = floor(length / 2);\n        var index = 0;\n        var value;\n\n        while (index < middle) {\n          value = that[index];\n          that[index++] = that[--length];\n          that[length] = value;\n        }\n\n        return that;\n      });\n    }, {\n      '../internals/array-buffer-view-core': 40\n    }],\n    147: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var ArrayBufferViewCore = _dereq_('../internals/array-buffer-view-core');\n\n      var toLength = _dereq_('../internals/to-length');\n\n      var toOffset = _dereq_('../internals/to-offset');\n\n      var toObject = _dereq_('../internals/to-object');\n\n      var fails = _dereq_('../internals/fails');\n\n      var aTypedArray = ArrayBufferViewCore.aTypedArray;\n      var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n      var FORCED = fails(function () {\n        new Int8Array(1).set({});\n      });\n      exportTypedArrayMethod('set', function set(arrayLike) {\n        aTypedArray(this);\n        var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n        var length = this.length;\n        var src = toObject(arrayLike);\n        var len = toLength(src.length);\n        var index = 0;\n\n        if (len + offset > length) {\n          throw RangeError('Wrong length');\n        }\n\n        while (index < len) {\n          this[offset + index] = src[index++];\n        }\n      }, FORCED);\n    }, {\n      '../internals/array-buffer-view-core': 40,\n      '../internals/fails': 64,\n      '../internals/to-length': 115,\n      '../internals/to-object': 116,\n      '../internals/to-offset': 117\n    }],\n    148: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var ArrayBufferViewCore = _dereq_('../internals/array-buffer-view-core');\n\n      var speciesConstructor = _dereq_('../internals/species-constructor');\n\n      var fails = _dereq_('../internals/fails');\n\n      var aTypedArray = ArrayBufferViewCore.aTypedArray;\n      var aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\n      var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n      var $slice = [].slice;\n      var FORCED = fails(function () {\n        new Int8Array(1).slice();\n      });\n      exportTypedArrayMethod('slice', function slice(start, end) {\n        var list = $slice.call(aTypedArray(this), start, end);\n        var C = speciesConstructor(this, this.constructor);\n        var index = 0;\n        var length = list.length;\n        var result = new (aTypedArrayConstructor(C))(length);\n\n        while (length > index) {\n          result[index] = list[index++];\n        }\n\n        return result;\n      }, FORCED);\n    }, {\n      '../internals/array-buffer-view-core': 40,\n      '../internals/fails': 64,\n      '../internals/species-constructor': 110\n    }],\n    149: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var ArrayBufferViewCore = _dereq_('../internals/array-buffer-view-core');\n\n      var $some = _dereq_('../internals/array-iteration').some;\n\n      var aTypedArray = ArrayBufferViewCore.aTypedArray;\n      var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n      exportTypedArrayMethod('some', function some(callbackfn) {\n        return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n      });\n    }, {\n      '../internals/array-buffer-view-core': 40,\n      '../internals/array-iteration': 45\n    }],\n    150: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var ArrayBufferViewCore = _dereq_('../internals/array-buffer-view-core');\n\n      var aTypedArray = ArrayBufferViewCore.aTypedArray;\n      var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n      var $sort = [].sort;\n      exportTypedArrayMethod('sort', function sort(comparefn) {\n        return $sort.call(aTypedArray(this), comparefn);\n      });\n    }, {\n      '../internals/array-buffer-view-core': 40\n    }],\n    151: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var ArrayBufferViewCore = _dereq_('../internals/array-buffer-view-core');\n\n      var toLength = _dereq_('../internals/to-length');\n\n      var toAbsoluteIndex = _dereq_('../internals/to-absolute-index');\n\n      var speciesConstructor = _dereq_('../internals/species-constructor');\n\n      var aTypedArray = ArrayBufferViewCore.aTypedArray;\n      var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n      exportTypedArrayMethod('subarray', function subarray(begin, end) {\n        var O = aTypedArray(this);\n        var length = O.length;\n        var beginIndex = toAbsoluteIndex(begin, length);\n        return new (speciesConstructor(O, O.constructor))(O.buffer, O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT, toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex));\n      });\n    }, {\n      '../internals/array-buffer-view-core': 40,\n      '../internals/species-constructor': 110,\n      '../internals/to-absolute-index': 111,\n      '../internals/to-length': 115\n    }],\n    152: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var global = _dereq_('../internals/global');\n\n      var ArrayBufferViewCore = _dereq_('../internals/array-buffer-view-core');\n\n      var fails = _dereq_('../internals/fails');\n\n      var Int8Array = global.Int8Array;\n      var aTypedArray = ArrayBufferViewCore.aTypedArray;\n      var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n      var $toLocaleString = [].toLocaleString;\n      var $slice = [].slice;\n      var TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n        $toLocaleString.call(new Int8Array(1));\n      });\n      var FORCED = fails(function () {\n        return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString();\n      }) || !fails(function () {\n        Int8Array.prototype.toLocaleString.call([1, 2]);\n      });\n      exportTypedArrayMethod('toLocaleString', function toLocaleString() {\n        return $toLocaleString.apply(TO_LOCALE_STRING_BUG ? $slice.call(aTypedArray(this)) : aTypedArray(this), arguments);\n      }, FORCED);\n    }, {\n      '../internals/array-buffer-view-core': 40,\n      '../internals/fails': 64,\n      '../internals/global': 68\n    }],\n    153: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var exportTypedArrayMethod = _dereq_('../internals/array-buffer-view-core').exportTypedArrayMethod;\n\n      var fails = _dereq_('../internals/fails');\n\n      var global = _dereq_('../internals/global');\n\n      var Uint8Array = global.Uint8Array;\n      var Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype || {};\n      var arrayToString = [].toString;\n      var arrayJoin = [].join;\n\n      if (fails(function () {\n        arrayToString.call({});\n      })) {\n        arrayToString = function toString() {\n          return arrayJoin.call(this);\n        };\n      }\n\n      var IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString != arrayToString;\n      exportTypedArrayMethod('toString', arrayToString, IS_NOT_ARRAY_METHOD);\n    }, {\n      '../internals/array-buffer-view-core': 40,\n      '../internals/fails': 64,\n      '../internals/global': 68\n    }],\n    154: [function (_dereq_, module, exports) {\n      var createTypedArrayConstructor = _dereq_('../internals/typed-array-constructor');\n\n      createTypedArrayConstructor('Uint32', function (init) {\n        return function Uint32Array(data, byteOffset, length) {\n          return init(this, data, byteOffset, length);\n        };\n      });\n    }, {\n      '../internals/typed-array-constructor': 121\n    }],\n    155: [function (_dereq_, module, exports) {\n      module.exports = {\n        CssSelectorParser: _dereq_('./lib/css-selector-parser.js').CssSelectorParser\n      };\n    }, {\n      './lib/css-selector-parser.js': 156\n    }],\n    156: [function (_dereq_, module, exports) {\n      function CssSelectorParser() {\n        this.pseudos = {};\n        this.attrEqualityMods = {};\n        this.ruleNestingOperators = {};\n        this.substitutesEnabled = false;\n      }\n\n      CssSelectorParser.prototype.registerSelectorPseudos = function (name) {\n        for (var j = 0, len = arguments.length; j < len; j++) {\n          name = arguments[j];\n          this.pseudos[name] = 'selector';\n        }\n\n        return this;\n      };\n\n      CssSelectorParser.prototype.unregisterSelectorPseudos = function (name) {\n        for (var j = 0, len = arguments.length; j < len; j++) {\n          name = arguments[j];\n          delete this.pseudos[name];\n        }\n\n        return this;\n      };\n\n      CssSelectorParser.prototype.registerNumericPseudos = function (name) {\n        for (var j = 0, len = arguments.length; j < len; j++) {\n          name = arguments[j];\n          this.pseudos[name] = 'numeric';\n        }\n\n        return this;\n      };\n\n      CssSelectorParser.prototype.unregisterNumericPseudos = function (name) {\n        for (var j = 0, len = arguments.length; j < len; j++) {\n          name = arguments[j];\n          delete this.pseudos[name];\n        }\n\n        return this;\n      };\n\n      CssSelectorParser.prototype.registerNestingOperators = function (operator) {\n        for (var j = 0, len = arguments.length; j < len; j++) {\n          operator = arguments[j];\n          this.ruleNestingOperators[operator] = true;\n        }\n\n        return this;\n      };\n\n      CssSelectorParser.prototype.unregisterNestingOperators = function (operator) {\n        for (var j = 0, len = arguments.length; j < len; j++) {\n          operator = arguments[j];\n          delete this.ruleNestingOperators[operator];\n        }\n\n        return this;\n      };\n\n      CssSelectorParser.prototype.registerAttrEqualityMods = function (mod) {\n        for (var j = 0, len = arguments.length; j < len; j++) {\n          mod = arguments[j];\n          this.attrEqualityMods[mod] = true;\n        }\n\n        return this;\n      };\n\n      CssSelectorParser.prototype.unregisterAttrEqualityMods = function (mod) {\n        for (var j = 0, len = arguments.length; j < len; j++) {\n          mod = arguments[j];\n          delete this.attrEqualityMods[mod];\n        }\n\n        return this;\n      };\n\n      CssSelectorParser.prototype.enableSubstitutes = function () {\n        this.substitutesEnabled = true;\n        return this;\n      };\n\n      CssSelectorParser.prototype.disableSubstitutes = function () {\n        this.substitutesEnabled = false;\n        return this;\n      };\n\n      function isIdentStart(c) {\n        return c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' || c === '-' || c === '_';\n      }\n\n      function isIdent(c) {\n        return c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' || c >= '0' && c <= '9' || c === '-' || c === '_';\n      }\n\n      function isHex(c) {\n        return c >= 'a' && c <= 'f' || c >= 'A' && c <= 'F' || c >= '0' && c <= '9';\n      }\n\n      function isDecimal(c) {\n        return c >= '0' && c <= '9';\n      }\n\n      function isAttrMatchOperator(chr) {\n        return chr === '=' || chr === '^' || chr === '$' || chr === '*' || chr === '~';\n      }\n\n      var identSpecialChars = {\n        '!': true,\n        '\"': true,\n        '#': true,\n        $: true,\n        '%': true,\n        '&': true,\n        '\\'': true,\n        '(': true,\n        ')': true,\n        '*': true,\n        '+': true,\n        ',': true,\n        '.': true,\n        '/': true,\n        ';': true,\n        '<': true,\n        '=': true,\n        '>': true,\n        '?': true,\n        '@': true,\n        '[': true,\n        '\\\\': true,\n        ']': true,\n        '^': true,\n        '`': true,\n        '{': true,\n        '|': true,\n        '}': true,\n        '~': true\n      };\n      var strReplacementsRev = {\n        '\\n': '\\\\n',\n        '\\r': '\\\\r',\n        '\\t': '\\\\t',\n        '\\f': '\\\\f',\n        '\\v': '\\\\v'\n      };\n      var singleQuoteEscapeChars = {\n        n: '\\n',\n        r: '\\r',\n        t: '\\t',\n        f: '\\f',\n        '\\\\': '\\\\',\n        '\\'': '\\''\n      };\n      var doubleQuotesEscapeChars = {\n        n: '\\n',\n        r: '\\r',\n        t: '\\t',\n        f: '\\f',\n        '\\\\': '\\\\',\n        '\"': '\"'\n      };\n\n      function ParseContext(str, pos, pseudos, attrEqualityMods, ruleNestingOperators, substitutesEnabled) {\n        var chr, getIdent, getStr, l, skipWhitespace;\n        l = str.length;\n        chr = null;\n\n        getStr = function getStr(quote, escapeTable) {\n          var esc, hex, result;\n          result = '';\n          pos++;\n          chr = str.charAt(pos);\n\n          while (pos < l) {\n            if (chr === quote) {\n              pos++;\n              return result;\n            } else if (chr === '\\\\') {\n              pos++;\n              chr = str.charAt(pos);\n\n              if (chr === quote) {\n                result += quote;\n              } else if (esc = escapeTable[chr]) {\n                result += esc;\n              } else if (isHex(chr)) {\n                hex = chr;\n                pos++;\n                chr = str.charAt(pos);\n\n                while (isHex(chr)) {\n                  hex += chr;\n                  pos++;\n                  chr = str.charAt(pos);\n                }\n\n                if (chr === ' ') {\n                  pos++;\n                  chr = str.charAt(pos);\n                }\n\n                result += String.fromCharCode(parseInt(hex, 16));\n                continue;\n              } else {\n                result += chr;\n              }\n            } else {\n              result += chr;\n            }\n\n            pos++;\n            chr = str.charAt(pos);\n          }\n\n          return result;\n        };\n\n        getIdent = function getIdent() {\n          var result = '';\n          chr = str.charAt(pos);\n\n          while (pos < l) {\n            if (isIdent(chr)) {\n              result += chr;\n            } else if (chr === '\\\\') {\n              pos++;\n\n              if (pos >= l) {\n                throw Error('Expected symbol but end of file reached.');\n              }\n\n              chr = str.charAt(pos);\n\n              if (identSpecialChars[chr]) {\n                result += chr;\n              } else if (isHex(chr)) {\n                var hex = chr;\n                pos++;\n                chr = str.charAt(pos);\n\n                while (isHex(chr)) {\n                  hex += chr;\n                  pos++;\n                  chr = str.charAt(pos);\n                }\n\n                if (chr === ' ') {\n                  pos++;\n                  chr = str.charAt(pos);\n                }\n\n                result += String.fromCharCode(parseInt(hex, 16));\n                continue;\n              } else {\n                result += chr;\n              }\n            } else {\n              return result;\n            }\n\n            pos++;\n            chr = str.charAt(pos);\n          }\n\n          return result;\n        };\n\n        skipWhitespace = function skipWhitespace() {\n          chr = str.charAt(pos);\n          var result = false;\n\n          while (chr === ' ' || chr === '\\t' || chr === '\\n' || chr === '\\r' || chr === '\\f') {\n            result = true;\n            pos++;\n            chr = str.charAt(pos);\n          }\n\n          return result;\n        };\n\n        this.parse = function () {\n          var res = this.parseSelector();\n\n          if (pos < l) {\n            throw Error('Rule expected but \"' + str.charAt(pos) + '\" found.');\n          }\n\n          return res;\n        };\n\n        this.parseSelector = function () {\n          var res;\n          var selector = res = this.parseSingleSelector();\n          chr = str.charAt(pos);\n\n          while (chr === ',') {\n            pos++;\n            skipWhitespace();\n\n            if (res.type !== 'selectors') {\n              res = {\n                type: 'selectors',\n                selectors: [selector]\n              };\n            }\n\n            selector = this.parseSingleSelector();\n\n            if (!selector) {\n              throw Error('Rule expected after \",\".');\n            }\n\n            res.selectors.push(selector);\n          }\n\n          return res;\n        };\n\n        this.parseSingleSelector = function () {\n          skipWhitespace();\n          var selector = {\n            type: 'ruleSet'\n          };\n          var rule = this.parseRule();\n\n          if (!rule) {\n            return null;\n          }\n\n          var currentRule = selector;\n\n          while (rule) {\n            rule.type = 'rule';\n            currentRule.rule = rule;\n            currentRule = rule;\n            skipWhitespace();\n            chr = str.charAt(pos);\n\n            if (pos >= l || chr === ',' || chr === ')') {\n              break;\n            }\n\n            if (ruleNestingOperators[chr]) {\n              var op = chr;\n              pos++;\n              skipWhitespace();\n              rule = this.parseRule();\n\n              if (!rule) {\n                throw Error('Rule expected after \"' + op + '\".');\n              }\n\n              rule.nestingOperator = op;\n            } else {\n              rule = this.parseRule();\n\n              if (rule) {\n                rule.nestingOperator = null;\n              }\n            }\n          }\n\n          return selector;\n        };\n\n        this.parseRule = function () {\n          var rule = null;\n\n          while (pos < l) {\n            chr = str.charAt(pos);\n\n            if (chr === '*') {\n              pos++;\n              (rule = rule || {}).tagName = '*';\n            } else if (isIdentStart(chr) || chr === '\\\\') {\n              (rule = rule || {}).tagName = getIdent();\n            } else if (chr === '.') {\n              pos++;\n              rule = rule || {};\n              (rule.classNames = rule.classNames || []).push(getIdent());\n            } else if (chr === '#') {\n              pos++;\n              (rule = rule || {}).id = getIdent();\n            } else if (chr === '[') {\n              pos++;\n              skipWhitespace();\n              var attr = {\n                name: getIdent()\n              };\n              skipWhitespace();\n\n              if (chr === ']') {\n                pos++;\n              } else {\n                var operator = '';\n\n                if (attrEqualityMods[chr]) {\n                  operator = chr;\n                  pos++;\n                  chr = str.charAt(pos);\n                }\n\n                if (pos >= l) {\n                  throw Error('Expected \"=\" but end of file reached.');\n                }\n\n                if (chr !== '=') {\n                  throw Error('Expected \"=\" but \"' + chr + '\" found.');\n                }\n\n                attr.operator = operator + '=';\n                pos++;\n                skipWhitespace();\n                var attrValue = '';\n                attr.valueType = 'string';\n\n                if (chr === '\"') {\n                  attrValue = getStr('\"', doubleQuotesEscapeChars);\n                } else if (chr === '\\'') {\n                  attrValue = getStr('\\'', singleQuoteEscapeChars);\n                } else if (substitutesEnabled && chr === '$') {\n                  pos++;\n                  attrValue = getIdent();\n                  attr.valueType = 'substitute';\n                } else {\n                  while (pos < l) {\n                    if (chr === ']') {\n                      break;\n                    }\n\n                    attrValue += chr;\n                    pos++;\n                    chr = str.charAt(pos);\n                  }\n\n                  attrValue = attrValue.trim();\n                }\n\n                skipWhitespace();\n\n                if (pos >= l) {\n                  throw Error('Expected \"]\" but end of file reached.');\n                }\n\n                if (chr !== ']') {\n                  throw Error('Expected \"]\" but \"' + chr + '\" found.');\n                }\n\n                pos++;\n                attr.value = attrValue;\n              }\n\n              rule = rule || {};\n              (rule.attrs = rule.attrs || []).push(attr);\n            } else if (chr === ':') {\n              pos++;\n              var pseudoName = getIdent();\n              var pseudo = {\n                name: pseudoName\n              };\n\n              if (chr === '(') {\n                pos++;\n                var value = '';\n                skipWhitespace();\n\n                if (pseudos[pseudoName] === 'selector') {\n                  pseudo.valueType = 'selector';\n                  value = this.parseSelector();\n                } else {\n                  pseudo.valueType = pseudos[pseudoName] || 'string';\n\n                  if (chr === '\"') {\n                    value = getStr('\"', doubleQuotesEscapeChars);\n                  } else if (chr === '\\'') {\n                    value = getStr('\\'', singleQuoteEscapeChars);\n                  } else if (substitutesEnabled && chr === '$') {\n                    pos++;\n                    value = getIdent();\n                    pseudo.valueType = 'substitute';\n                  } else {\n                    while (pos < l) {\n                      if (chr === ')') {\n                        break;\n                      }\n\n                      value += chr;\n                      pos++;\n                      chr = str.charAt(pos);\n                    }\n\n                    value = value.trim();\n                  }\n\n                  skipWhitespace();\n                }\n\n                if (pos >= l) {\n                  throw Error('Expected \")\" but end of file reached.');\n                }\n\n                if (chr !== ')') {\n                  throw Error('Expected \")\" but \"' + chr + '\" found.');\n                }\n\n                pos++;\n                pseudo.value = value;\n              }\n\n              rule = rule || {};\n              (rule.pseudos = rule.pseudos || []).push(pseudo);\n            } else {\n              break;\n            }\n          }\n\n          return rule;\n        };\n\n        return this;\n      }\n\n      CssSelectorParser.prototype.parse = function (str) {\n        var context = new ParseContext(str, 0, this.pseudos, this.attrEqualityMods, this.ruleNestingOperators, this.substitutesEnabled);\n        return context.parse();\n      };\n\n      CssSelectorParser.prototype.escapeIdentifier = function (s) {\n        var result = '';\n        var i = 0;\n        var len = s.length;\n\n        while (i < len) {\n          var chr = s.charAt(i);\n\n          if (identSpecialChars[chr]) {\n            result += '\\\\' + chr;\n          } else {\n            if (!(chr === '_' || chr === '-' || chr >= 'A' && chr <= 'Z' || chr >= 'a' && chr <= 'z' || i !== 0 && chr >= '0' && chr <= '9')) {\n              var charCode = chr.charCodeAt(0);\n\n              if ((charCode & 63488) === 55296) {\n                var extraCharCode = s.charCodeAt(i++);\n\n                if ((charCode & 64512) !== 55296 || (extraCharCode & 64512) !== 56320) {\n                  throw Error('UCS-2(decode): illegal sequence');\n                }\n\n                charCode = ((charCode & 1023) << 10) + (extraCharCode & 1023) + 65536;\n              }\n\n              result += '\\\\' + charCode.toString(16) + ' ';\n            } else {\n              result += chr;\n            }\n          }\n\n          i++;\n        }\n\n        return result;\n      };\n\n      CssSelectorParser.prototype.escapeStr = function (s) {\n        var result = '';\n        var i = 0;\n        var len = s.length;\n        var chr, replacement;\n\n        while (i < len) {\n          chr = s.charAt(i);\n\n          if (chr === '\"') {\n            chr = '\\\\\"';\n          } else if (chr === '\\\\') {\n            chr = '\\\\\\\\';\n          } else if (replacement = strReplacementsRev[chr]) {\n            chr = replacement;\n          }\n\n          result += chr;\n          i++;\n        }\n\n        return '\"' + result + '\"';\n      };\n\n      CssSelectorParser.prototype.render = function (path) {\n        return this._renderEntity(path).trim();\n      };\n\n      CssSelectorParser.prototype._renderEntity = function (entity) {\n        var currentEntity, parts, res;\n        res = '';\n\n        switch (entity.type) {\n          case 'ruleSet':\n            currentEntity = entity.rule;\n            parts = [];\n\n            while (currentEntity) {\n              if (currentEntity.nestingOperator) {\n                parts.push(currentEntity.nestingOperator);\n              }\n\n              parts.push(this._renderEntity(currentEntity));\n              currentEntity = currentEntity.rule;\n            }\n\n            res = parts.join(' ');\n            break;\n\n          case 'selectors':\n            res = entity.selectors.map(this._renderEntity, this).join(', ');\n            break;\n\n          case 'rule':\n            if (entity.tagName) {\n              if (entity.tagName === '*') {\n                res = '*';\n              } else {\n                res = this.escapeIdentifier(entity.tagName);\n              }\n            }\n\n            if (entity.id) {\n              res += '#' + this.escapeIdentifier(entity.id);\n            }\n\n            if (entity.classNames) {\n              res += entity.classNames.map(function (cn) {\n                return '.' + this.escapeIdentifier(cn);\n              }, this).join('');\n            }\n\n            if (entity.attrs) {\n              res += entity.attrs.map(function (attr) {\n                if (attr.operator) {\n                  if (attr.valueType === 'substitute') {\n                    return '[' + this.escapeIdentifier(attr.name) + attr.operator + '$' + attr.value + ']';\n                  } else {\n                    return '[' + this.escapeIdentifier(attr.name) + attr.operator + this.escapeStr(attr.value) + ']';\n                  }\n                } else {\n                  return '[' + this.escapeIdentifier(attr.name) + ']';\n                }\n              }, this).join('');\n            }\n\n            if (entity.pseudos) {\n              res += entity.pseudos.map(function (pseudo) {\n                if (pseudo.valueType) {\n                  if (pseudo.valueType === 'selector') {\n                    return ':' + this.escapeIdentifier(pseudo.name) + '(' + this._renderEntity(pseudo.value) + ')';\n                  } else if (pseudo.valueType === 'substitute') {\n                    return ':' + this.escapeIdentifier(pseudo.name) + '($' + pseudo.value + ')';\n                  } else if (pseudo.valueType === 'numeric') {\n                    return ':' + this.escapeIdentifier(pseudo.name) + '(' + pseudo.value + ')';\n                  } else {\n                    return ':' + this.escapeIdentifier(pseudo.name) + '(' + this.escapeIdentifier(pseudo.value) + ')';\n                  }\n                } else {\n                  return ':' + this.escapeIdentifier(pseudo.name);\n                }\n              }, this).join('');\n            }\n\n            break;\n\n          default:\n            throw Error('Unknown entity type: \"' + entity.type(+'\".'));\n        }\n\n        return res;\n      };\n\n      exports.CssSelectorParser = CssSelectorParser;\n    }, {}],\n    157: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var isValue = _dereq_('type/value/is'),\n          isPlainFunction = _dereq_('type/plain-function/is'),\n          assign = _dereq_('es5-ext/object/assign'),\n          normalizeOpts = _dereq_('es5-ext/object/normalize-options'),\n          contains = _dereq_('es5-ext/string/#/contains');\n\n      var d = module.exports = function (dscr, value) {\n        var c, e, w, options, desc;\n\n        if (arguments.length < 2 || typeof dscr !== 'string') {\n          options = value;\n          value = dscr;\n          dscr = null;\n        } else {\n          options = arguments[2];\n        }\n\n        if (isValue(dscr)) {\n          c = contains.call(dscr, 'c');\n          e = contains.call(dscr, 'e');\n          w = contains.call(dscr, 'w');\n        } else {\n          c = w = true;\n          e = false;\n        }\n\n        desc = {\n          value: value,\n          configurable: c,\n          enumerable: e,\n          writable: w\n        };\n        return !options ? desc : assign(normalizeOpts(options), desc);\n      };\n\n      d.gs = function (dscr, get, set) {\n        var c, e, options, desc;\n\n        if (typeof dscr !== 'string') {\n          options = set;\n          set = get;\n          get = dscr;\n          dscr = null;\n        } else {\n          options = arguments[3];\n        }\n\n        if (!isValue(get)) {\n          get = undefined;\n        } else if (!isPlainFunction(get)) {\n          options = get;\n          get = set = undefined;\n        } else if (!isValue(set)) {\n          set = undefined;\n        } else if (!isPlainFunction(set)) {\n          options = set;\n          set = undefined;\n        }\n\n        if (isValue(dscr)) {\n          c = contains.call(dscr, 'c');\n          e = contains.call(dscr, 'e');\n        } else {\n          c = true;\n          e = false;\n        }\n\n        desc = {\n          get: get,\n          set: set,\n          configurable: c,\n          enumerable: e\n        };\n        return !options ? desc : assign(normalizeOpts(options), desc);\n      };\n    }, {\n      'es5-ext/object/assign': 178,\n      'es5-ext/object/normalize-options': 190,\n      'es5-ext/string/#/contains': 197,\n      'type/plain-function/is': 242,\n      'type/value/is': 244\n    }],\n    158: [function (_dereq_, module, exports) {\n      'use strict';\n\n      module.exports = function () {\n        return /\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F|\\uD83D\\uDC68(?:\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C\\uDFFB|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFE])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83D\\uDC68|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D[\\uDC66\\uDC67])|[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83D[\\uDC66\\uDC67]|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|(?:\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708])\\uFE0F|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C[\\uDFFB-\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFB\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)\\uD83C\\uDFFB|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1)|(?:\\uD83E\\uDDD1\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFE])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83D\\uDC69(?:\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|(?:\\uD83E\\uDDD1\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83D\\uDC69(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|(?:(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)\\uFE0F|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF])\\u200D[\\u2640\\u2642]|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|\\u200D[\\u2640\\u2642])|\\uD83C\\uDFF4\\u200D\\u2620)\\uFE0F|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|\\uD83D\\uDC15\\u200D\\uD83E\\uDDBA|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83C\\uDDF6\\uD83C\\uDDE6|[#\\*0-9]\\uFE0F\\u20E3|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83D\\uDC69(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC70\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDCAA\\uDD74\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD36\\uDDB5\\uDDB6\\uDDBB\\uDDD2-\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5\\uDEEB\\uDEEC\\uDEF4-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])|(?:[#\\*0-9\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u261D\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A1\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5\\u26F7-\\u26FA\\u26FD\\u2702\\u2705\\u2708-\\u270D\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u2764\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-\\uDF93\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFF0\\uDFF3-\\uDFF5\\uDFF7-\\uDFFF]|\\uD83D[\\uDC00-\\uDCFD\\uDCFF-\\uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73-\\uDD7A\\uDD87\\uDD8A-\\uDD8D\\uDD90\\uDD95\\uDD96\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE4F\\uDE80-\\uDEC5\\uDECB-\\uDED2\\uDED5\\uDEE0-\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])\\uFE0F|(?:[\\u261D\\u26F9\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2-\\uDFC4\\uDFC7\\uDFCA-\\uDFCC]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66-\\uDC78\\uDC7C\\uDC81-\\uDC83\\uDC85-\\uDC87\\uDC8F\\uDC91\\uDCAA\\uDD74\\uDD75\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE45-\\uDE47\\uDE4B-\\uDE4F\\uDEA3\\uDEB4-\\uDEB6\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1F\\uDD26\\uDD30-\\uDD39\\uDD3C-\\uDD3E\\uDDB5\\uDDB6\\uDDB8\\uDDB9\\uDDBB\\uDDCD-\\uDDCF\\uDDD1-\\uDDDD])/g;\n      };\n    }, {}],\n    159: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var numberIsNaN = _dereq_('../../number/is-nan'),\n          toPosInt = _dereq_('../../number/to-pos-integer'),\n          value = _dereq_('../../object/valid-value'),\n          indexOf = Array.prototype.indexOf,\n          objHasOwnProperty = Object.prototype.hasOwnProperty,\n          abs = Math.abs,\n          floor = Math.floor;\n\n      module.exports = function (searchElement) {\n        var i, length, fromIndex, val;\n\n        if (!numberIsNaN(searchElement)) {\n          return indexOf.apply(this, arguments);\n        }\n\n        length = toPosInt(value(this).length);\n        fromIndex = arguments[1];\n\n        if (isNaN(fromIndex)) {\n          fromIndex = 0;\n        } else if (fromIndex >= 0) {\n          fromIndex = floor(fromIndex);\n        } else {\n          fromIndex = toPosInt(this.length) - floor(abs(fromIndex));\n        }\n\n        for (i = fromIndex; i < length; ++i) {\n          if (objHasOwnProperty.call(this, i)) {\n            val = this[i];\n\n            if (numberIsNaN(val)) {\n              return i;\n            }\n          }\n        }\n\n        return -1;\n      };\n    }, {\n      '../../number/is-nan': 172,\n      '../../number/to-pos-integer': 176,\n      '../../object/valid-value': 193\n    }],\n    160: [function (_dereq_, module, exports) {\n      'use strict';\n\n      module.exports = _dereq_('./is-implemented')() ? Array.from : _dereq_('./shim');\n    }, {\n      './is-implemented': 161,\n      './shim': 162\n    }],\n    161: [function (_dereq_, module, exports) {\n      'use strict';\n\n      module.exports = function () {\n        var from = Array.from,\n            arr,\n            result;\n\n        if (typeof from !== 'function') {\n          return false;\n        }\n\n        arr = ['raz', 'dwa'];\n        result = from(arr);\n        return Boolean(result && result !== arr && result[1] === 'dwa');\n      };\n    }, {}],\n    162: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var iteratorSymbol = _dereq_('es6-symbol').iterator,\n          isArguments = _dereq_('../../function/is-arguments'),\n          isFunction = _dereq_('../../function/is-function'),\n          toPosInt = _dereq_('../../number/to-pos-integer'),\n          callable = _dereq_('../../object/valid-callable'),\n          validValue = _dereq_('../../object/valid-value'),\n          isValue = _dereq_('../../object/is-value'),\n          isString = _dereq_('../../string/is-string'),\n          isArray = Array.isArray,\n          call = Function.prototype.call,\n          desc = {\n        configurable: true,\n        enumerable: true,\n        writable: true,\n        value: null\n      },\n          defineProperty = Object.defineProperty;\n\n      module.exports = function (arrayLike) {\n        var mapFn = arguments[1],\n            thisArg = arguments[2],\n            Context,\n            i,\n            j,\n            arr,\n            length,\n            code,\n            iterator,\n            result,\n            getIterator,\n            value;\n        arrayLike = Object(validValue(arrayLike));\n\n        if (isValue(mapFn)) {\n          callable(mapFn);\n        }\n\n        if (!this || this === Array || !isFunction(this)) {\n          if (!mapFn) {\n            if (isArguments(arrayLike)) {\n              length = arrayLike.length;\n\n              if (length !== 1) {\n                return Array.apply(null, arrayLike);\n              }\n\n              arr = new Array(1);\n              arr[0] = arrayLike[0];\n              return arr;\n            }\n\n            if (isArray(arrayLike)) {\n              arr = new Array(length = arrayLike.length);\n\n              for (i = 0; i < length; ++i) {\n                arr[i] = arrayLike[i];\n              }\n\n              return arr;\n            }\n          }\n\n          arr = [];\n        } else {\n          Context = this;\n        }\n\n        if (!isArray(arrayLike)) {\n          if ((getIterator = arrayLike[iteratorSymbol]) !== undefined) {\n            iterator = callable(getIterator).call(arrayLike);\n\n            if (Context) {\n              arr = new Context();\n            }\n\n            result = iterator.next();\n            i = 0;\n\n            while (!result.done) {\n              value = mapFn ? call.call(mapFn, thisArg, result.value, i) : result.value;\n\n              if (Context) {\n                desc.value = value;\n                defineProperty(arr, i, desc);\n              } else {\n                arr[i] = value;\n              }\n\n              result = iterator.next();\n              ++i;\n            }\n\n            length = i;\n          } else if (isString(arrayLike)) {\n            length = arrayLike.length;\n\n            if (Context) {\n              arr = new Context();\n            }\n\n            for (i = 0, j = 0; i < length; ++i) {\n              value = arrayLike[i];\n\n              if (i + 1 < length) {\n                code = value.charCodeAt(0);\n\n                if (code >= 55296 && code <= 56319) {\n                  value += arrayLike[++i];\n                }\n              }\n\n              value = mapFn ? call.call(mapFn, thisArg, value, j) : value;\n\n              if (Context) {\n                desc.value = value;\n                defineProperty(arr, j, desc);\n              } else {\n                arr[j] = value;\n              }\n\n              ++j;\n            }\n\n            length = j;\n          }\n        }\n\n        if (length === undefined) {\n          length = toPosInt(arrayLike.length);\n\n          if (Context) {\n            arr = new Context(length);\n          }\n\n          for (i = 0; i < length; ++i) {\n            value = mapFn ? call.call(mapFn, thisArg, arrayLike[i], i) : arrayLike[i];\n\n            if (Context) {\n              desc.value = value;\n              defineProperty(arr, i, desc);\n            } else {\n              arr[i] = value;\n            }\n          }\n        }\n\n        if (Context) {\n          desc.value = null;\n          arr.length = length;\n        }\n\n        return arr;\n      };\n    }, {\n      '../../function/is-arguments': 166,\n      '../../function/is-function': 167,\n      '../../number/to-pos-integer': 176,\n      '../../object/is-value': 184,\n      '../../object/valid-callable': 192,\n      '../../object/valid-value': 193,\n      '../../string/is-string': 200,\n      'es6-symbol': 203\n    }],\n    163: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var from = _dereq_('./from'),\n          isArray = Array.isArray;\n\n      module.exports = function (arrayLike) {\n        return isArray(arrayLike) ? arrayLike : from(arrayLike);\n      };\n    }, {\n      './from': 160\n    }],\n    164: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var assign = _dereq_('../object/assign'),\n          isObject = _dereq_('../object/is-object'),\n          isValue = _dereq_('../object/is-value'),\n          captureStackTrace = Error.captureStackTrace;\n\n      module.exports = function (message) {\n        var err = new Error(message),\n            code = arguments[1],\n            ext = arguments[2];\n\n        if (!isValue(ext)) {\n          if (isObject(code)) {\n            ext = code;\n            code = null;\n          }\n        }\n\n        if (isValue(ext)) {\n          assign(err, ext);\n        }\n\n        if (isValue(code)) {\n          err.code = code;\n        }\n\n        if (captureStackTrace) {\n          captureStackTrace(err, module.exports);\n        }\n\n        return err;\n      };\n    }, {\n      '../object/assign': 178,\n      '../object/is-object': 183,\n      '../object/is-value': 184\n    }],\n    165: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var toPosInt = _dereq_('../number/to-pos-integer');\n\n      var test = function test(arg1, arg2) {\n        return arg2;\n      };\n\n      var desc, defineProperty, generate, mixin;\n\n      try {\n        Object.defineProperty(test, 'length', {\n          configurable: true,\n          writable: false,\n          enumerable: false,\n          value: 1\n        });\n      } catch (ignore) {}\n\n      if (test.length === 1) {\n        desc = {\n          configurable: true,\n          writable: false,\n          enumerable: false\n        };\n        defineProperty = Object.defineProperty;\n\n        module.exports = function (fn, length) {\n          length = toPosInt(length);\n\n          if (fn.length === length) {\n            return fn;\n          }\n\n          desc.value = length;\n          return defineProperty(fn, 'length', desc);\n        };\n      } else {\n        mixin = _dereq_('../object/mixin');\n\n        generate = function () {\n          var cache = [];\n          return function (length) {\n            var args,\n                i = 0;\n\n            if (cache[length]) {\n              return cache[length];\n            }\n\n            args = [];\n\n            while (length--) {\n              args.push('a' + (++i).toString(36));\n            }\n\n            return new Function('fn', 'return function (' + args.join(', ') + ') { return fn.apply(this, arguments); };');\n          };\n        }();\n\n        module.exports = function (src, length) {\n          var target;\n          length = toPosInt(length);\n\n          if (src.length === length) {\n            return src;\n          }\n\n          target = generate(length)(src);\n\n          try {\n            mixin(target, src);\n          } catch (ignore) {}\n\n          return target;\n        };\n      }\n    }, {\n      '../number/to-pos-integer': 176,\n      '../object/mixin': 189\n    }],\n    166: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var objToString = Object.prototype.toString,\n          id = objToString.call(function () {\n        return arguments;\n      }());\n\n      module.exports = function (value) {\n        return objToString.call(value) === id;\n      };\n    }, {}],\n    167: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var objToString = Object.prototype.toString,\n          isFunctionStringTag = RegExp.prototype.test.bind(/^[object [A-Za-z0-9]*Function]$/);\n\n      module.exports = function (value) {\n        return typeof value === 'function' && isFunctionStringTag(objToString.call(value));\n      };\n    }, {}],\n    168: [function (_dereq_, module, exports) {\n      'use strict';\n\n      module.exports = function () {};\n    }, {}],\n    169: [function (_dereq_, module, exports) {\n      'use strict';\n\n      module.exports = _dereq_('./is-implemented')() ? Math.sign : _dereq_('./shim');\n    }, {\n      './is-implemented': 170,\n      './shim': 171\n    }],\n    170: [function (_dereq_, module, exports) {\n      'use strict';\n\n      module.exports = function () {\n        var sign = Math.sign;\n\n        if (typeof sign !== 'function') {\n          return false;\n        }\n\n        return sign(10) === 1 && sign(-20) === -1;\n      };\n    }, {}],\n    171: [function (_dereq_, module, exports) {\n      'use strict';\n\n      module.exports = function (value) {\n        value = Number(value);\n\n        if (isNaN(value) || value === 0) {\n          return value;\n        }\n\n        return value > 0 ? 1 : -1;\n      };\n    }, {}],\n    172: [function (_dereq_, module, exports) {\n      'use strict';\n\n      module.exports = _dereq_('./is-implemented')() ? Number.isNaN : _dereq_('./shim');\n    }, {\n      './is-implemented': 173,\n      './shim': 174\n    }],\n    173: [function (_dereq_, module, exports) {\n      'use strict';\n\n      module.exports = function () {\n        var numberIsNaN = Number.isNaN;\n\n        if (typeof numberIsNaN !== 'function') {\n          return false;\n        }\n\n        return !numberIsNaN({}) && numberIsNaN(NaN) && !numberIsNaN(34);\n      };\n    }, {}],\n    174: [function (_dereq_, module, exports) {\n      'use strict';\n\n      module.exports = function (value) {\n        return value !== value;\n      };\n    }, {}],\n    175: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var sign = _dereq_('../math/sign'),\n          abs = Math.abs,\n          floor = Math.floor;\n\n      module.exports = function (value) {\n        if (isNaN(value)) {\n          return 0;\n        }\n\n        value = Number(value);\n\n        if (value === 0 || !isFinite(value)) {\n          return value;\n        }\n\n        return sign(value) * floor(abs(value));\n      };\n    }, {\n      '../math/sign': 169\n    }],\n    176: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var toInteger = _dereq_('./to-integer'),\n          max = Math.max;\n\n      module.exports = function (value) {\n        return max(0, toInteger(value));\n      };\n    }, {\n      './to-integer': 175\n    }],\n    177: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var callable = _dereq_('./valid-callable'),\n          value = _dereq_('./valid-value'),\n          bind = Function.prototype.bind,\n          call = Function.prototype.call,\n          keys = Object.keys,\n          objPropertyIsEnumerable = Object.prototype.propertyIsEnumerable;\n\n      module.exports = function (method, defVal) {\n        return function (obj, cb) {\n          var list,\n              thisArg = arguments[2],\n              compareFn = arguments[3];\n          obj = Object(value(obj));\n          callable(cb);\n          list = keys(obj);\n\n          if (compareFn) {\n            list.sort(typeof compareFn === 'function' ? bind.call(compareFn, obj) : undefined);\n          }\n\n          if (typeof method !== 'function') {\n            method = list[method];\n          }\n\n          return call.call(method, list, function (key, index) {\n            if (!objPropertyIsEnumerable.call(obj, key)) {\n              return defVal;\n            }\n\n            return call.call(cb, thisArg, obj[key], key, obj, index);\n          });\n        };\n      };\n    }, {\n      './valid-callable': 192,\n      './valid-value': 193\n    }],\n    178: [function (_dereq_, module, exports) {\n      'use strict';\n\n      module.exports = _dereq_('./is-implemented')() ? Object.assign : _dereq_('./shim');\n    }, {\n      './is-implemented': 179,\n      './shim': 180\n    }],\n    179: [function (_dereq_, module, exports) {\n      'use strict';\n\n      module.exports = function () {\n        var assign = Object.assign,\n            obj;\n\n        if (typeof assign !== 'function') {\n          return false;\n        }\n\n        obj = {\n          foo: 'raz'\n        };\n        assign(obj, {\n          bar: 'dwa'\n        }, {\n          trzy: 'trzy'\n        });\n        return obj.foo + obj.bar + obj.trzy === 'razdwatrzy';\n      };\n    }, {}],\n    180: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var keys = _dereq_('../keys'),\n          value = _dereq_('../valid-value'),\n          max = Math.max;\n\n      module.exports = function (dest, src) {\n        var error,\n            i,\n            length = max(arguments.length, 2),\n            assign;\n        dest = Object(value(dest));\n\n        assign = function assign(key) {\n          try {\n            dest[key] = src[key];\n          } catch (e) {\n            if (!error) {\n              error = e;\n            }\n          }\n        };\n\n        for (i = 1; i < length; ++i) {\n          src = arguments[i];\n          keys(src).forEach(assign);\n        }\n\n        if (error !== undefined) {\n          throw error;\n        }\n\n        return dest;\n      };\n    }, {\n      '../keys': 185,\n      '../valid-value': 193\n    }],\n    181: [function (_dereq_, module, exports) {\n      'use strict';\n\n      module.exports = _dereq_('./_iterate')('forEach');\n    }, {\n      './_iterate': 177\n    }],\n    182: [function (_dereq_, module, exports) {\n      'use strict';\n\n      module.exports = function (obj) {\n        return typeof obj === 'function';\n      };\n    }, {}],\n    183: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var isValue = _dereq_('./is-value');\n\n      var map = {\n        function: true,\n        object: true\n      };\n\n      module.exports = function (value) {\n        return isValue(value) && map[typeof value] || false;\n      };\n    }, {\n      './is-value': 184\n    }],\n    184: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var _undefined = _dereq_('../function/noop')();\n\n      module.exports = function (val) {\n        return val !== _undefined && val !== null;\n      };\n    }, {\n      '../function/noop': 168\n    }],\n    185: [function (_dereq_, module, exports) {\n      'use strict';\n\n      module.exports = _dereq_('./is-implemented')() ? Object.keys : _dereq_('./shim');\n    }, {\n      './is-implemented': 186,\n      './shim': 187\n    }],\n    186: [function (_dereq_, module, exports) {\n      'use strict';\n\n      module.exports = function () {\n        try {\n          Object.keys('primitive');\n          return true;\n        } catch (e) {\n          return false;\n        }\n      };\n    }, {}],\n    187: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var isValue = _dereq_('../is-value');\n\n      var keys = Object.keys;\n\n      module.exports = function (object) {\n        return keys(isValue(object) ? Object(object) : object);\n      };\n    }, {\n      '../is-value': 184\n    }],\n    188: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var callable = _dereq_('./valid-callable'),\n          forEach = _dereq_('./for-each'),\n          call = Function.prototype.call;\n\n      module.exports = function (obj, cb) {\n        var result = {},\n            thisArg = arguments[2];\n        callable(cb);\n        forEach(obj, function (value, key, targetObj, index) {\n          result[key] = call.call(cb, thisArg, value, key, targetObj, index);\n        });\n        return result;\n      };\n    }, {\n      './for-each': 181,\n      './valid-callable': 192\n    }],\n    189: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var value = _dereq_('./valid-value'),\n          defineProperty = Object.defineProperty,\n          getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor,\n          getOwnPropertyNames = Object.getOwnPropertyNames,\n          getOwnPropertySymbols = Object.getOwnPropertySymbols;\n\n      module.exports = function (target, source) {\n        var error,\n            sourceObject = Object(value(source));\n        target = Object(value(target));\n        getOwnPropertyNames(sourceObject).forEach(function (name) {\n          try {\n            defineProperty(target, name, getOwnPropertyDescriptor(source, name));\n          } catch (e) {\n            error = e;\n          }\n        });\n\n        if (typeof getOwnPropertySymbols === 'function') {\n          getOwnPropertySymbols(sourceObject).forEach(function (symbol) {\n            try {\n              defineProperty(target, symbol, getOwnPropertyDescriptor(source, symbol));\n            } catch (e) {\n              error = e;\n            }\n          });\n        }\n\n        if (error !== undefined) {\n          throw error;\n        }\n\n        return target;\n      };\n    }, {\n      './valid-value': 193\n    }],\n    190: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var isValue = _dereq_('./is-value');\n\n      var forEach = Array.prototype.forEach,\n          create = Object.create;\n\n      var process = function process(src, obj) {\n        var key;\n\n        for (key in src) {\n          obj[key] = src[key];\n        }\n      };\n\n      module.exports = function (opts1) {\n        var result = create(null);\n        forEach.call(arguments, function (options) {\n          if (!isValue(options)) {\n            return;\n          }\n\n          process(Object(options), result);\n        });\n        return result;\n      };\n    }, {\n      './is-value': 184\n    }],\n    191: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var forEach = Array.prototype.forEach,\n          create = Object.create;\n\n      module.exports = function (arg) {\n        var set = create(null);\n        forEach.call(arguments, function (name) {\n          set[name] = true;\n        });\n        return set;\n      };\n    }, {}],\n    192: [function (_dereq_, module, exports) {\n      'use strict';\n\n      module.exports = function (fn) {\n        if (typeof fn !== 'function') {\n          throw new TypeError(fn + ' is not a function');\n        }\n\n        return fn;\n      };\n    }, {}],\n    193: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var isValue = _dereq_('./is-value');\n\n      module.exports = function (value) {\n        if (!isValue(value)) {\n          throw new TypeError('Cannot use null or undefined');\n        }\n\n        return value;\n      };\n    }, {\n      './is-value': 184\n    }],\n    194: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var ensureValue = _dereq_('./valid-value'),\n          stringifiable = _dereq_('./validate-stringifiable');\n\n      module.exports = function (value) {\n        return stringifiable(ensureValue(value));\n      };\n    }, {\n      './valid-value': 193,\n      './validate-stringifiable': 195\n    }],\n    195: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var isCallable = _dereq_('./is-callable');\n\n      module.exports = function (stringifiable) {\n        try {\n          if (stringifiable && isCallable(stringifiable.toString)) {\n            return stringifiable.toString();\n          }\n\n          return String(stringifiable);\n        } catch (e) {\n          throw new TypeError('Passed argument cannot be stringifed');\n        }\n      };\n    }, {\n      './is-callable': 182\n    }],\n    196: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var isCallable = _dereq_('./object/is-callable');\n\n      module.exports = function (value) {\n        try {\n          if (value && isCallable(value.toString)) {\n            return value.toString();\n          }\n\n          return String(value);\n        } catch (e) {\n          return '<Non-coercible to string value>';\n        }\n      };\n    }, {\n      './object/is-callable': 182\n    }],\n    197: [function (_dereq_, module, exports) {\n      'use strict';\n\n      module.exports = _dereq_('./is-implemented')() ? String.prototype.contains : _dereq_('./shim');\n    }, {\n      './is-implemented': 198,\n      './shim': 199\n    }],\n    198: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var str = 'razdwatrzy';\n\n      module.exports = function () {\n        if (typeof str.contains !== 'function') {\n          return false;\n        }\n\n        return str.contains('dwa') === true && str.contains('foo') === false;\n      };\n    }, {}],\n    199: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var indexOf = String.prototype.indexOf;\n\n      module.exports = function (searchString) {\n        return indexOf.call(this, searchString, arguments[1]) > -1;\n      };\n    }, {}],\n    200: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var objToString = Object.prototype.toString,\n          id = objToString.call('');\n\n      module.exports = function (value) {\n        return typeof value === 'string' || value && typeof value === 'object' && (value instanceof String || objToString.call(value) === id) || false;\n      };\n    }, {}],\n    201: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var safeToString = _dereq_('./safe-to-string');\n\n      var reNewLine = /[\\n\\r\\u2028\\u2029]/g;\n\n      module.exports = function (value) {\n        var string = safeToString(value);\n\n        if (string.length > 100) {\n          string = string.slice(0, 99) + \"\\u2026\";\n        }\n\n        string = string.replace(reNewLine, function (char) {\n          return JSON.stringify(char).slice(1, -1);\n        });\n        return string;\n      };\n    }, {\n      './safe-to-string': 196\n    }],\n    202: [function (_dereq_, module, exports) {\n      (function (process, global) {\n        (function (global, factory) {\n          typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : global.ES6Promise = factory();\n        })(this, function () {\n          'use strict';\n\n          function objectOrFunction(x) {\n            var type = typeof x;\n            return x !== null && (type === 'object' || type === 'function');\n          }\n\n          function isFunction(x) {\n            return typeof x === 'function';\n          }\n\n          var _isArray = void 0;\n\n          if (Array.isArray) {\n            _isArray = Array.isArray;\n          } else {\n            _isArray = function _isArray(x) {\n              return Object.prototype.toString.call(x) === '[object Array]';\n            };\n          }\n\n          var isArray = _isArray;\n          var len = 0;\n          var vertxNext = void 0;\n          var customSchedulerFn = void 0;\n\n          var asap = function asap(callback, arg) {\n            queue[len] = callback;\n            queue[len + 1] = arg;\n            len += 2;\n\n            if (len === 2) {\n              if (customSchedulerFn) {\n                customSchedulerFn(flush);\n              } else {\n                scheduleFlush();\n              }\n            }\n          };\n\n          function setScheduler(scheduleFn) {\n            customSchedulerFn = scheduleFn;\n          }\n\n          function setAsap(asapFn) {\n            asap = asapFn;\n          }\n\n          var browserWindow = typeof window !== 'undefined' ? window : undefined;\n          var browserGlobal = browserWindow || {};\n          var BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\n          var isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n          var isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n          function useNextTick() {\n            return function () {\n              return process.nextTick(flush);\n            };\n          }\n\n          function useVertxTimer() {\n            if (typeof vertxNext !== 'undefined') {\n              return function () {\n                vertxNext(flush);\n              };\n            }\n\n            return useSetTimeout();\n          }\n\n          function useMutationObserver() {\n            var iterations = 0;\n            var observer = new BrowserMutationObserver(flush);\n            var node = document.createTextNode('');\n            observer.observe(node, {\n              characterData: true\n            });\n            return function () {\n              node.data = iterations = ++iterations % 2;\n            };\n          }\n\n          function useMessageChannel() {\n            var channel = new MessageChannel();\n            channel.port1.onmessage = flush;\n            return function () {\n              return channel.port2.postMessage(0);\n            };\n          }\n\n          function useSetTimeout() {\n            var globalSetTimeout = setTimeout;\n            return function () {\n              return globalSetTimeout(flush, 1);\n            };\n          }\n\n          var queue = new Array(1e3);\n\n          function flush() {\n            for (var i = 0; i < len; i += 2) {\n              var callback = queue[i];\n              var arg = queue[i + 1];\n              callback(arg);\n              queue[i] = undefined;\n              queue[i + 1] = undefined;\n            }\n\n            len = 0;\n          }\n\n          function attemptVertx() {\n            try {\n              var vertx = Function('return this')().require('vertx');\n\n              vertxNext = vertx.runOnLoop || vertx.runOnContext;\n              return useVertxTimer();\n            } catch (e) {\n              return useSetTimeout();\n            }\n          }\n\n          var scheduleFlush = void 0;\n\n          if (isNode) {\n            scheduleFlush = useNextTick();\n          } else if (BrowserMutationObserver) {\n            scheduleFlush = useMutationObserver();\n          } else if (isWorker) {\n            scheduleFlush = useMessageChannel();\n          } else if (browserWindow === undefined && typeof _dereq_ === 'function') {\n            scheduleFlush = attemptVertx();\n          } else {\n            scheduleFlush = useSetTimeout();\n          }\n\n          function then(onFulfillment, onRejection) {\n            var parent = this;\n            var child = new this.constructor(noop);\n\n            if (child[PROMISE_ID] === undefined) {\n              makePromise(child);\n            }\n\n            var _state = parent._state;\n\n            if (_state) {\n              var callback = arguments[_state - 1];\n              asap(function () {\n                return invokeCallback(_state, child, callback, parent._result);\n              });\n            } else {\n              subscribe(parent, child, onFulfillment, onRejection);\n            }\n\n            return child;\n          }\n\n          function resolve$1(object) {\n            var Constructor = this;\n\n            if (object && typeof object === 'object' && object.constructor === Constructor) {\n              return object;\n            }\n\n            var promise = new Constructor(noop);\n            resolve(promise, object);\n            return promise;\n          }\n\n          var PROMISE_ID = Math.random().toString(36).substring(2);\n\n          function noop() {}\n\n          var PENDING = void 0;\n          var FULFILLED = 1;\n          var REJECTED = 2;\n\n          function selfFulfillment() {\n            return new TypeError('You cannot resolve a promise with itself');\n          }\n\n          function cannotReturnOwn() {\n            return new TypeError('A promises callback cannot return that same promise.');\n          }\n\n          function tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n            try {\n              then$$1.call(value, fulfillmentHandler, rejectionHandler);\n            } catch (e) {\n              return e;\n            }\n          }\n\n          function handleForeignThenable(promise, thenable, then$$1) {\n            asap(function (promise) {\n              var sealed = false;\n              var error = tryThen(then$$1, thenable, function (value) {\n                if (sealed) {\n                  return;\n                }\n\n                sealed = true;\n\n                if (thenable !== value) {\n                  resolve(promise, value);\n                } else {\n                  fulfill(promise, value);\n                }\n              }, function (reason) {\n                if (sealed) {\n                  return;\n                }\n\n                sealed = true;\n                reject(promise, reason);\n              }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n              if (!sealed && error) {\n                sealed = true;\n                reject(promise, error);\n              }\n            }, promise);\n          }\n\n          function handleOwnThenable(promise, thenable) {\n            if (thenable._state === FULFILLED) {\n              fulfill(promise, thenable._result);\n            } else if (thenable._state === REJECTED) {\n              reject(promise, thenable._result);\n            } else {\n              subscribe(thenable, undefined, function (value) {\n                return resolve(promise, value);\n              }, function (reason) {\n                return reject(promise, reason);\n              });\n            }\n          }\n\n          function handleMaybeThenable(promise, maybeThenable, then$$1) {\n            if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n              handleOwnThenable(promise, maybeThenable);\n            } else {\n              if (then$$1 === undefined) {\n                fulfill(promise, maybeThenable);\n              } else if (isFunction(then$$1)) {\n                handleForeignThenable(promise, maybeThenable, then$$1);\n              } else {\n                fulfill(promise, maybeThenable);\n              }\n            }\n          }\n\n          function resolve(promise, value) {\n            if (promise === value) {\n              reject(promise, selfFulfillment());\n            } else if (objectOrFunction(value)) {\n              var then$$1 = void 0;\n\n              try {\n                then$$1 = value.then;\n              } catch (error) {\n                reject(promise, error);\n                return;\n              }\n\n              handleMaybeThenable(promise, value, then$$1);\n            } else {\n              fulfill(promise, value);\n            }\n          }\n\n          function publishRejection(promise) {\n            if (promise._onerror) {\n              promise._onerror(promise._result);\n            }\n\n            publish(promise);\n          }\n\n          function fulfill(promise, value) {\n            if (promise._state !== PENDING) {\n              return;\n            }\n\n            promise._result = value;\n            promise._state = FULFILLED;\n\n            if (promise._subscribers.length !== 0) {\n              asap(publish, promise);\n            }\n          }\n\n          function reject(promise, reason) {\n            if (promise._state !== PENDING) {\n              return;\n            }\n\n            promise._state = REJECTED;\n            promise._result = reason;\n            asap(publishRejection, promise);\n          }\n\n          function subscribe(parent, child, onFulfillment, onRejection) {\n            var _subscribers = parent._subscribers;\n            var length = _subscribers.length;\n            parent._onerror = null;\n            _subscribers[length] = child;\n            _subscribers[length + FULFILLED] = onFulfillment;\n            _subscribers[length + REJECTED] = onRejection;\n\n            if (length === 0 && parent._state) {\n              asap(publish, parent);\n            }\n          }\n\n          function publish(promise) {\n            var subscribers = promise._subscribers;\n            var settled = promise._state;\n\n            if (subscribers.length === 0) {\n              return;\n            }\n\n            var child = void 0,\n                callback = void 0,\n                detail = promise._result;\n\n            for (var i = 0; i < subscribers.length; i += 3) {\n              child = subscribers[i];\n              callback = subscribers[i + settled];\n\n              if (child) {\n                invokeCallback(settled, child, callback, detail);\n              } else {\n                callback(detail);\n              }\n            }\n\n            promise._subscribers.length = 0;\n          }\n\n          function invokeCallback(settled, promise, callback, detail) {\n            var hasCallback = isFunction(callback),\n                value = void 0,\n                error = void 0,\n                succeeded = true;\n\n            if (hasCallback) {\n              try {\n                value = callback(detail);\n              } catch (e) {\n                succeeded = false;\n                error = e;\n              }\n\n              if (promise === value) {\n                reject(promise, cannotReturnOwn());\n                return;\n              }\n            } else {\n              value = detail;\n            }\n\n            if (promise._state !== PENDING) {} else if (hasCallback && succeeded) {\n              resolve(promise, value);\n            } else if (succeeded === false) {\n              reject(promise, error);\n            } else if (settled === FULFILLED) {\n              fulfill(promise, value);\n            } else if (settled === REJECTED) {\n              reject(promise, value);\n            }\n          }\n\n          function initializePromise(promise, resolver) {\n            try {\n              resolver(function resolvePromise(value) {\n                resolve(promise, value);\n              }, function rejectPromise(reason) {\n                reject(promise, reason);\n              });\n            } catch (e) {\n              reject(promise, e);\n            }\n          }\n\n          var id = 0;\n\n          function nextId() {\n            return id++;\n          }\n\n          function makePromise(promise) {\n            promise[PROMISE_ID] = id++;\n            promise._state = undefined;\n            promise._result = undefined;\n            promise._subscribers = [];\n          }\n\n          function validationError() {\n            return new Error('Array Methods must be provided an Array');\n          }\n\n          var Enumerator = function () {\n            function Enumerator(Constructor, input) {\n              this._instanceConstructor = Constructor;\n              this.promise = new Constructor(noop);\n\n              if (!this.promise[PROMISE_ID]) {\n                makePromise(this.promise);\n              }\n\n              if (isArray(input)) {\n                this.length = input.length;\n                this._remaining = input.length;\n                this._result = new Array(this.length);\n\n                if (this.length === 0) {\n                  fulfill(this.promise, this._result);\n                } else {\n                  this.length = this.length || 0;\n\n                  this._enumerate(input);\n\n                  if (this._remaining === 0) {\n                    fulfill(this.promise, this._result);\n                  }\n                }\n              } else {\n                reject(this.promise, validationError());\n              }\n            }\n\n            Enumerator.prototype._enumerate = function _enumerate(input) {\n              for (var i = 0; this._state === PENDING && i < input.length; i++) {\n                this._eachEntry(input[i], i);\n              }\n            };\n\n            Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n              var c = this._instanceConstructor;\n              var resolve$$1 = c.resolve;\n\n              if (resolve$$1 === resolve$1) {\n                var _then = void 0;\n\n                var error = void 0;\n                var didError = false;\n\n                try {\n                  _then = entry.then;\n                } catch (e) {\n                  didError = true;\n                  error = e;\n                }\n\n                if (_then === then && entry._state !== PENDING) {\n                  this._settledAt(entry._state, i, entry._result);\n                } else if (typeof _then !== 'function') {\n                  this._remaining--;\n                  this._result[i] = entry;\n                } else if (c === Promise$1) {\n                  var promise = new c(noop);\n\n                  if (didError) {\n                    reject(promise, error);\n                  } else {\n                    handleMaybeThenable(promise, entry, _then);\n                  }\n\n                  this._willSettleAt(promise, i);\n                } else {\n                  this._willSettleAt(new c(function (resolve$$1) {\n                    return resolve$$1(entry);\n                  }), i);\n                }\n              } else {\n                this._willSettleAt(resolve$$1(entry), i);\n              }\n            };\n\n            Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n              var promise = this.promise;\n\n              if (promise._state === PENDING) {\n                this._remaining--;\n\n                if (state === REJECTED) {\n                  reject(promise, value);\n                } else {\n                  this._result[i] = value;\n                }\n              }\n\n              if (this._remaining === 0) {\n                fulfill(promise, this._result);\n              }\n            };\n\n            Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n              var enumerator = this;\n              subscribe(promise, undefined, function (value) {\n                return enumerator._settledAt(FULFILLED, i, value);\n              }, function (reason) {\n                return enumerator._settledAt(REJECTED, i, reason);\n              });\n            };\n\n            return Enumerator;\n          }();\n\n          function all(entries) {\n            return new Enumerator(this, entries).promise;\n          }\n\n          function race(entries) {\n            var Constructor = this;\n\n            if (!isArray(entries)) {\n              return new Constructor(function (_, reject) {\n                return reject(new TypeError('You must pass an array to race.'));\n              });\n            } else {\n              return new Constructor(function (resolve, reject) {\n                var length = entries.length;\n\n                for (var i = 0; i < length; i++) {\n                  Constructor.resolve(entries[i]).then(resolve, reject);\n                }\n              });\n            }\n          }\n\n          function reject$1(reason) {\n            var Constructor = this;\n            var promise = new Constructor(noop);\n            reject(promise, reason);\n            return promise;\n          }\n\n          function needsResolver() {\n            throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n          }\n\n          function needsNew() {\n            throw new TypeError('Failed to construct \\'Promise\\': Please use the \\'new\\' operator, this object constructor cannot be called as a function.');\n          }\n\n          var Promise$1 = function () {\n            function Promise(resolver) {\n              this[PROMISE_ID] = nextId();\n              this._result = this._state = undefined;\n              this._subscribers = [];\n\n              if (noop !== resolver) {\n                typeof resolver !== 'function' && needsResolver();\n                this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n              }\n            }\n\n            Promise.prototype.catch = function _catch(onRejection) {\n              return this.then(null, onRejection);\n            };\n\n            Promise.prototype.finally = function _finally(callback) {\n              var promise = this;\n              var constructor = promise.constructor;\n\n              if (isFunction(callback)) {\n                return promise.then(function (value) {\n                  return constructor.resolve(callback()).then(function () {\n                    return value;\n                  });\n                }, function (reason) {\n                  return constructor.resolve(callback()).then(function () {\n                    throw reason;\n                  });\n                });\n              }\n\n              return promise.then(callback, callback);\n            };\n\n            return Promise;\n          }();\n\n          Promise$1.prototype.then = then;\n          Promise$1.all = all;\n          Promise$1.race = race;\n          Promise$1.resolve = resolve$1;\n          Promise$1.reject = reject$1;\n          Promise$1._setScheduler = setScheduler;\n          Promise$1._setAsap = setAsap;\n          Promise$1._asap = asap;\n\n          function polyfill() {\n            var local = void 0;\n\n            if (typeof global !== 'undefined') {\n              local = global;\n            } else if (typeof self !== 'undefined') {\n              local = self;\n            } else {\n              try {\n                local = Function('return this')();\n              } catch (e) {\n                throw new Error('polyfill failed because global object is unavailable in this environment');\n              }\n            }\n\n            var P = local.Promise;\n\n            if (P) {\n              var promiseToString = null;\n\n              try {\n                promiseToString = Object.prototype.toString.call(P.resolve());\n              } catch (e) {}\n\n              if (promiseToString === '[object Promise]' && !P.cast) {\n                return;\n              }\n            }\n\n            local.Promise = Promise$1;\n          }\n\n          Promise$1.polyfill = polyfill;\n          Promise$1.Promise = Promise$1;\n          return Promise$1;\n        });\n      }).call(this, _dereq_('_process'), typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : {});\n    }, {\n      _process: 236\n    }],\n    203: [function (_dereq_, module, exports) {\n      'use strict';\n\n      module.exports = _dereq_('./is-implemented')() ? _dereq_('ext/global-this').Symbol : _dereq_('./polyfill');\n    }, {\n      './is-implemented': 204,\n      './polyfill': 209,\n      'ext/global-this': 213\n    }],\n    204: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var global = _dereq_('ext/global-this'),\n          validTypes = {\n        object: true,\n        symbol: true\n      };\n\n      module.exports = function () {\n        var Symbol = global.Symbol;\n        var symbol;\n\n        if (typeof Symbol !== 'function') {\n          return false;\n        }\n\n        symbol = Symbol('test symbol');\n\n        try {\n          String(symbol);\n        } catch (e) {\n          return false;\n        }\n\n        if (!validTypes[typeof Symbol.iterator]) {\n          return false;\n        }\n\n        if (!validTypes[typeof Symbol.toPrimitive]) {\n          return false;\n        }\n\n        if (!validTypes[typeof Symbol.toStringTag]) {\n          return false;\n        }\n\n        return true;\n      };\n    }, {\n      'ext/global-this': 213\n    }],\n    205: [function (_dereq_, module, exports) {\n      'use strict';\n\n      module.exports = function (value) {\n        if (!value) {\n          return false;\n        }\n\n        if (typeof value === 'symbol') {\n          return true;\n        }\n\n        if (!value.constructor) {\n          return false;\n        }\n\n        if (value.constructor.name !== 'Symbol') {\n          return false;\n        }\n\n        return value[value.constructor.toStringTag] === 'Symbol';\n      };\n    }, {}],\n    206: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var d = _dereq_('d');\n\n      var create = Object.create,\n          defineProperty = Object.defineProperty,\n          objPrototype = Object.prototype;\n      var created = create(null);\n\n      module.exports = function (desc) {\n        var postfix = 0,\n            name,\n            ie11BugWorkaround;\n\n        while (created[desc + (postfix || '')]) {\n          ++postfix;\n        }\n\n        desc += postfix || '';\n        created[desc] = true;\n        name = '@@' + desc;\n        defineProperty(objPrototype, name, d.gs(null, function (value) {\n          if (ie11BugWorkaround) {\n            return;\n          }\n\n          ie11BugWorkaround = true;\n          defineProperty(this, name, d(value));\n          ie11BugWorkaround = false;\n        }));\n        return name;\n      };\n    }, {\n      d: 157\n    }],\n    207: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var d = _dereq_('d'),\n          NativeSymbol = _dereq_('ext/global-this').Symbol;\n\n      module.exports = function (SymbolPolyfill) {\n        return Object.defineProperties(SymbolPolyfill, {\n          hasInstance: d('', NativeSymbol && NativeSymbol.hasInstance || SymbolPolyfill('hasInstance')),\n          isConcatSpreadable: d('', NativeSymbol && NativeSymbol.isConcatSpreadable || SymbolPolyfill('isConcatSpreadable')),\n          iterator: d('', NativeSymbol && NativeSymbol.iterator || SymbolPolyfill('iterator')),\n          match: d('', NativeSymbol && NativeSymbol.match || SymbolPolyfill('match')),\n          replace: d('', NativeSymbol && NativeSymbol.replace || SymbolPolyfill('replace')),\n          search: d('', NativeSymbol && NativeSymbol.search || SymbolPolyfill('search')),\n          species: d('', NativeSymbol && NativeSymbol.species || SymbolPolyfill('species')),\n          split: d('', NativeSymbol && NativeSymbol.split || SymbolPolyfill('split')),\n          toPrimitive: d('', NativeSymbol && NativeSymbol.toPrimitive || SymbolPolyfill('toPrimitive')),\n          toStringTag: d('', NativeSymbol && NativeSymbol.toStringTag || SymbolPolyfill('toStringTag')),\n          unscopables: d('', NativeSymbol && NativeSymbol.unscopables || SymbolPolyfill('unscopables'))\n        });\n      };\n    }, {\n      d: 157,\n      'ext/global-this': 213\n    }],\n    208: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var d = _dereq_('d'),\n          validateSymbol = _dereq_('../../../validate-symbol');\n\n      var registry = Object.create(null);\n\n      module.exports = function (SymbolPolyfill) {\n        return Object.defineProperties(SymbolPolyfill, {\n          for: d(function (key) {\n            if (registry[key]) {\n              return registry[key];\n            }\n\n            return registry[key] = SymbolPolyfill(String(key));\n          }),\n          keyFor: d(function (symbol) {\n            var key;\n            validateSymbol(symbol);\n\n            for (key in registry) {\n              if (registry[key] === symbol) {\n                return key;\n              }\n            }\n\n            return undefined;\n          })\n        });\n      };\n    }, {\n      '../../../validate-symbol': 210,\n      d: 157\n    }],\n    209: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var d = _dereq_('d'),\n          validateSymbol = _dereq_('./validate-symbol'),\n          NativeSymbol = _dereq_('ext/global-this').Symbol,\n          generateName = _dereq_('./lib/private/generate-name'),\n          setupStandardSymbols = _dereq_('./lib/private/setup/standard-symbols'),\n          setupSymbolRegistry = _dereq_('./lib/private/setup/symbol-registry');\n\n      var create = Object.create,\n          defineProperties = Object.defineProperties,\n          defineProperty = Object.defineProperty;\n      var SymbolPolyfill, HiddenSymbol, isNativeSafe;\n\n      if (typeof NativeSymbol === 'function') {\n        try {\n          String(NativeSymbol());\n          isNativeSafe = true;\n        } catch (ignore) {}\n      } else {\n        NativeSymbol = null;\n      }\n\n      HiddenSymbol = function Symbol(description) {\n        if (this instanceof HiddenSymbol) {\n          throw new TypeError('Symbol is not a constructor');\n        }\n\n        return SymbolPolyfill(description);\n      };\n\n      module.exports = SymbolPolyfill = function Symbol(description) {\n        var symbol;\n\n        if (this instanceof Symbol) {\n          throw new TypeError('Symbol is not a constructor');\n        }\n\n        if (isNativeSafe) {\n          return NativeSymbol(description);\n        }\n\n        symbol = create(HiddenSymbol.prototype);\n        description = description === undefined ? '' : String(description);\n        return defineProperties(symbol, {\n          __description__: d('', description),\n          __name__: d('', generateName(description))\n        });\n      };\n\n      setupStandardSymbols(SymbolPolyfill);\n      setupSymbolRegistry(SymbolPolyfill);\n      defineProperties(HiddenSymbol.prototype, {\n        constructor: d(SymbolPolyfill),\n        toString: d('', function () {\n          return this.__name__;\n        })\n      });\n      defineProperties(SymbolPolyfill.prototype, {\n        toString: d(function () {\n          return 'Symbol (' + validateSymbol(this).__description__ + ')';\n        }),\n        valueOf: d(function () {\n          return validateSymbol(this);\n        })\n      });\n      defineProperty(SymbolPolyfill.prototype, SymbolPolyfill.toPrimitive, d('', function () {\n        var symbol = validateSymbol(this);\n\n        if (typeof symbol === 'symbol') {\n          return symbol;\n        }\n\n        return symbol.toString();\n      }));\n      defineProperty(SymbolPolyfill.prototype, SymbolPolyfill.toStringTag, d('c', 'Symbol'));\n      defineProperty(HiddenSymbol.prototype, SymbolPolyfill.toStringTag, d('c', SymbolPolyfill.prototype[SymbolPolyfill.toStringTag]));\n      defineProperty(HiddenSymbol.prototype, SymbolPolyfill.toPrimitive, d('c', SymbolPolyfill.prototype[SymbolPolyfill.toPrimitive]));\n    }, {\n      './lib/private/generate-name': 206,\n      './lib/private/setup/standard-symbols': 207,\n      './lib/private/setup/symbol-registry': 208,\n      './validate-symbol': 210,\n      d: 157,\n      'ext/global-this': 213\n    }],\n    210: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var isSymbol = _dereq_('./is-symbol');\n\n      module.exports = function (value) {\n        if (!isSymbol(value)) {\n          throw new TypeError(value + ' is not a symbol');\n        }\n\n        return value;\n      };\n    }, {\n      './is-symbol': 205\n    }],\n    211: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var d = _dereq_('d'),\n          callable = _dereq_('es5-ext/object/valid-callable'),\n          apply = Function.prototype.apply,\n          call = Function.prototype.call,\n          create = Object.create,\n          defineProperty = Object.defineProperty,\n          defineProperties = Object.defineProperties,\n          hasOwnProperty = Object.prototype.hasOwnProperty,\n          descriptor = {\n        configurable: true,\n        enumerable: false,\n        writable: true\n      },\n          on,\n          _once2,\n          off,\n          emit,\n          methods,\n          descriptors,\n          base;\n\n      on = function on(type, listener) {\n        var data;\n        callable(listener);\n\n        if (!hasOwnProperty.call(this, '__ee__')) {\n          data = descriptor.value = create(null);\n          defineProperty(this, '__ee__', descriptor);\n          descriptor.value = null;\n        } else {\n          data = this.__ee__;\n        }\n\n        if (!data[type]) {\n          data[type] = listener;\n        } else if (typeof data[type] === 'object') {\n          data[type].push(listener);\n        } else {\n          data[type] = [data[type], listener];\n        }\n\n        return this;\n      };\n\n      _once2 = function once(type, listener) {\n        var _once, self;\n\n        callable(listener);\n        self = this;\n        on.call(this, type, _once = function once() {\n          off.call(self, type, _once);\n          apply.call(listener, this, arguments);\n        });\n        _once.__eeOnceListener__ = listener;\n        return this;\n      };\n\n      off = function off(type, listener) {\n        var data, listeners, candidate, i;\n        callable(listener);\n\n        if (!hasOwnProperty.call(this, '__ee__')) {\n          return this;\n        }\n\n        data = this.__ee__;\n\n        if (!data[type]) {\n          return this;\n        }\n\n        listeners = data[type];\n\n        if (typeof listeners === 'object') {\n          for (i = 0; candidate = listeners[i]; ++i) {\n            if (candidate === listener || candidate.__eeOnceListener__ === listener) {\n              if (listeners.length === 2) {\n                data[type] = listeners[i ? 0 : 1];\n              } else {\n                listeners.splice(i, 1);\n              }\n            }\n          }\n        } else {\n          if (listeners === listener || listeners.__eeOnceListener__ === listener) {\n            delete data[type];\n          }\n        }\n\n        return this;\n      };\n\n      emit = function emit(type) {\n        var i, l, listener, listeners, args;\n\n        if (!hasOwnProperty.call(this, '__ee__')) {\n          return;\n        }\n\n        listeners = this.__ee__[type];\n\n        if (!listeners) {\n          return;\n        }\n\n        if (typeof listeners === 'object') {\n          l = arguments.length;\n          args = new Array(l - 1);\n\n          for (i = 1; i < l; ++i) {\n            args[i - 1] = arguments[i];\n          }\n\n          listeners = listeners.slice();\n\n          for (i = 0; listener = listeners[i]; ++i) {\n            apply.call(listener, this, args);\n          }\n        } else {\n          switch (arguments.length) {\n            case 1:\n              call.call(listeners, this);\n              break;\n\n            case 2:\n              call.call(listeners, this, arguments[1]);\n              break;\n\n            case 3:\n              call.call(listeners, this, arguments[1], arguments[2]);\n              break;\n\n            default:\n              l = arguments.length;\n              args = new Array(l - 1);\n\n              for (i = 1; i < l; ++i) {\n                args[i - 1] = arguments[i];\n              }\n\n              apply.call(listeners, this, args);\n          }\n        }\n      };\n\n      methods = {\n        on: on,\n        once: _once2,\n        off: off,\n        emit: emit\n      };\n      descriptors = {\n        on: d(on),\n        once: d(_once2),\n        off: d(off),\n        emit: d(emit)\n      };\n      base = defineProperties({}, descriptors);\n\n      module.exports = exports = function exports(o) {\n        return o == null ? create(base) : defineProperties(Object(o), descriptors);\n      };\n\n      exports.methods = methods;\n    }, {\n      d: 157,\n      'es5-ext/object/valid-callable': 192\n    }],\n    212: [function (_dereq_, module, exports) {\n      var naiveFallback = function naiveFallback() {\n        if (typeof self === 'object' && self) {\n          return self;\n        }\n\n        if (typeof window === 'object' && window) {\n          return window;\n        }\n\n        throw new Error('Unable to resolve global `this`');\n      };\n\n      module.exports = function () {\n        if (this) {\n          return this;\n        }\n\n        try {\n          Object.defineProperty(Object.prototype, '__global__', {\n            get: function get() {\n              return this;\n            },\n            configurable: true\n          });\n        } catch (error) {\n          return naiveFallback();\n        }\n\n        try {\n          if (!__global__) {\n            return naiveFallback();\n          }\n\n          return __global__;\n        } finally {\n          delete Object.prototype.__global__;\n        }\n      }();\n    }, {}],\n    213: [function (_dereq_, module, exports) {\n      'use strict';\n\n      module.exports = _dereq_('./is-implemented')() ? globalThis : _dereq_('./implementation');\n    }, {\n      './implementation': 212,\n      './is-implemented': 214\n    }],\n    214: [function (_dereq_, module, exports) {\n      'use strict';\n\n      module.exports = function () {\n        if (typeof globalThis !== 'object') {\n          return false;\n        }\n\n        if (!globalThis) {\n          return false;\n        }\n\n        return globalThis.Array === Array;\n      };\n    }, {}],\n    215: [function (_dereq_, module, exports) {\n      module.exports = isPromise;\n\n      function isPromise(obj) {\n        return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';\n      }\n    }, {}],\n    216: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var toPosInt = _dereq_('es5-ext/number/to-pos-integer'),\n          create = Object.create,\n          hasOwnProperty = Object.prototype.hasOwnProperty;\n\n      module.exports = function (limit) {\n        var size = 0,\n            base = 1,\n            queue = create(null),\n            map = create(null),\n            index = 0,\n            del;\n        limit = toPosInt(limit);\n        return {\n          hit: function hit(id) {\n            var oldIndex = map[id],\n                nuIndex = ++index;\n            queue[nuIndex] = id;\n            map[id] = nuIndex;\n\n            if (!oldIndex) {\n              ++size;\n\n              if (size <= limit) {\n                return;\n              }\n\n              id = queue[base];\n              del(id);\n              return id;\n            }\n\n            delete queue[oldIndex];\n\n            if (base !== oldIndex) {\n              return;\n            }\n\n            while (!hasOwnProperty.call(queue, ++base)) {\n              continue;\n            }\n          },\n          delete: del = function del(id) {\n            var oldIndex = map[id];\n\n            if (!oldIndex) {\n              return;\n            }\n\n            delete queue[oldIndex];\n            delete map[id];\n            --size;\n\n            if (base !== oldIndex) {\n              return;\n            }\n\n            if (!size) {\n              index = 0;\n              base = 1;\n              return;\n            }\n\n            while (!hasOwnProperty.call(queue, ++base)) {\n              continue;\n            }\n          },\n          clear: function clear() {\n            size = 0;\n            base = 1;\n            queue = create(null);\n            map = create(null);\n            index = 0;\n          }\n        };\n      };\n    }, {\n      'es5-ext/number/to-pos-integer': 176\n    }],\n    217: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var aFrom = _dereq_('es5-ext/array/from'),\n          objectMap = _dereq_('es5-ext/object/map'),\n          mixin = _dereq_('es5-ext/object/mixin'),\n          defineLength = _dereq_('es5-ext/function/_define-length'),\n          nextTick = _dereq_('next-tick');\n\n      var slice = Array.prototype.slice,\n          apply = Function.prototype.apply,\n          create = Object.create;\n\n      _dereq_('../lib/registered-extensions').async = function (tbi, conf) {\n        var waiting = create(null),\n            cache = create(null),\n            base = conf.memoized,\n            original = conf.original,\n            currentCallback,\n            currentContext,\n            currentArgs;\n        conf.memoized = defineLength(function (arg) {\n          var args = arguments,\n              last = args[args.length - 1];\n\n          if (typeof last === 'function') {\n            currentCallback = last;\n            args = slice.call(args, 0, -1);\n          }\n\n          return base.apply(currentContext = this, currentArgs = args);\n        }, base);\n\n        try {\n          mixin(conf.memoized, base);\n        } catch (ignore) {}\n\n        conf.on('get', function (id) {\n          var cb, context, args;\n\n          if (!currentCallback) {\n            return;\n          }\n\n          if (waiting[id]) {\n            if (typeof waiting[id] === 'function') {\n              waiting[id] = [waiting[id], currentCallback];\n            } else {\n              waiting[id].push(currentCallback);\n            }\n\n            currentCallback = null;\n            return;\n          }\n\n          cb = currentCallback;\n          context = currentContext;\n          args = currentArgs;\n          currentCallback = currentContext = currentArgs = null;\n          nextTick(function () {\n            var data;\n\n            if (hasOwnProperty.call(cache, id)) {\n              data = cache[id];\n              conf.emit('getasync', id, args, context);\n              apply.call(cb, data.context, data.args);\n            } else {\n              currentCallback = cb;\n              currentContext = context;\n              currentArgs = args;\n              base.apply(context, args);\n            }\n          });\n        });\n\n        conf.original = function () {\n          var args, cb, origCb, result;\n\n          if (!currentCallback) {\n            return apply.call(original, this, arguments);\n          }\n\n          args = aFrom(arguments);\n\n          cb = function self(err) {\n            var cb,\n                args,\n                id = self.id;\n\n            if (id == null) {\n              nextTick(apply.bind(self, this, arguments));\n              return undefined;\n            }\n\n            delete self.id;\n            cb = waiting[id];\n            delete waiting[id];\n\n            if (!cb) {\n              return undefined;\n            }\n\n            args = aFrom(arguments);\n\n            if (conf.has(id)) {\n              if (err) {\n                conf.delete(id);\n              } else {\n                cache[id] = {\n                  context: this,\n                  args: args\n                };\n                conf.emit('setasync', id, typeof cb === 'function' ? 1 : cb.length);\n              }\n            }\n\n            if (typeof cb === 'function') {\n              result = apply.call(cb, this, args);\n            } else {\n              cb.forEach(function (cb) {\n                result = apply.call(cb, this, args);\n              }, this);\n            }\n\n            return result;\n          };\n\n          origCb = currentCallback;\n          currentCallback = currentContext = currentArgs = null;\n          args.push(cb);\n          result = apply.call(original, this, args);\n          cb.cb = origCb;\n          currentCallback = cb;\n          return result;\n        };\n\n        conf.on('set', function (id) {\n          if (!currentCallback) {\n            conf.delete(id);\n            return;\n          }\n\n          if (waiting[id]) {\n            if (typeof waiting[id] === 'function') {\n              waiting[id] = [waiting[id], currentCallback.cb];\n            } else {\n              waiting[id].push(currentCallback.cb);\n            }\n          } else {\n            waiting[id] = currentCallback.cb;\n          }\n\n          delete currentCallback.cb;\n          currentCallback.id = id;\n          currentCallback = null;\n        });\n        conf.on('delete', function (id) {\n          var result;\n\n          if (hasOwnProperty.call(waiting, id)) {\n            return;\n          }\n\n          if (!cache[id]) {\n            return;\n          }\n\n          result = cache[id];\n          delete cache[id];\n          conf.emit('deleteasync', id, slice.call(result.args, 1));\n        });\n        conf.on('clear', function () {\n          var oldCache = cache;\n          cache = create(null);\n          conf.emit('clearasync', objectMap(oldCache, function (data) {\n            return slice.call(data.args, 1);\n          }));\n        });\n      };\n    }, {\n      '../lib/registered-extensions': 225,\n      'es5-ext/array/from': 160,\n      'es5-ext/function/_define-length': 165,\n      'es5-ext/object/map': 188,\n      'es5-ext/object/mixin': 189,\n      'next-tick': 235\n    }],\n    218: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var callable = _dereq_('es5-ext/object/valid-callable'),\n          forEach = _dereq_('es5-ext/object/for-each'),\n          extensions = _dereq_('../lib/registered-extensions'),\n          apply = Function.prototype.apply;\n\n      extensions.dispose = function (dispose, conf, options) {\n        var del;\n        callable(dispose);\n\n        if (options.async && extensions.async || options.promise && extensions.promise) {\n          conf.on('deleteasync', del = function del(id, resultArray) {\n            apply.call(dispose, null, resultArray);\n          });\n          conf.on('clearasync', function (cache) {\n            forEach(cache, function (result, id) {\n              del(id, result);\n            });\n          });\n          return;\n        }\n\n        conf.on('delete', del = function del(id, result) {\n          dispose(result);\n        });\n        conf.on('clear', function (cache) {\n          forEach(cache, function (result, id) {\n            del(id, result);\n          });\n        });\n      };\n    }, {\n      '../lib/registered-extensions': 225,\n      'es5-ext/object/for-each': 181,\n      'es5-ext/object/valid-callable': 192\n    }],\n    219: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var aFrom = _dereq_('es5-ext/array/from'),\n          forEach = _dereq_('es5-ext/object/for-each'),\n          nextTick = _dereq_('next-tick'),\n          isPromise = _dereq_('is-promise'),\n          timeout = _dereq_('timers-ext/valid-timeout'),\n          extensions = _dereq_('../lib/registered-extensions');\n\n      var noop = Function.prototype,\n          max = Math.max,\n          min = Math.min,\n          create = Object.create;\n\n      extensions.maxAge = function (maxAge, conf, options) {\n        var timeouts, postfix, preFetchAge, preFetchTimeouts;\n        maxAge = timeout(maxAge);\n\n        if (!maxAge) {\n          return;\n        }\n\n        timeouts = create(null);\n        postfix = options.async && extensions.async || options.promise && extensions.promise ? 'async' : '';\n        conf.on('set' + postfix, function (id) {\n          timeouts[id] = setTimeout(function () {\n            conf.delete(id);\n          }, maxAge);\n\n          if (typeof timeouts[id].unref === 'function') {\n            timeouts[id].unref();\n          }\n\n          if (!preFetchTimeouts) {\n            return;\n          }\n\n          if (preFetchTimeouts[id]) {\n            if (preFetchTimeouts[id] !== 'nextTick') {\n              clearTimeout(preFetchTimeouts[id]);\n            }\n          }\n\n          preFetchTimeouts[id] = setTimeout(function () {\n            delete preFetchTimeouts[id];\n          }, preFetchAge);\n\n          if (typeof preFetchTimeouts[id].unref === 'function') {\n            preFetchTimeouts[id].unref();\n          }\n        });\n        conf.on('delete' + postfix, function (id) {\n          clearTimeout(timeouts[id]);\n          delete timeouts[id];\n\n          if (!preFetchTimeouts) {\n            return;\n          }\n\n          if (preFetchTimeouts[id] !== 'nextTick') {\n            clearTimeout(preFetchTimeouts[id]);\n          }\n\n          delete preFetchTimeouts[id];\n        });\n\n        if (options.preFetch) {\n          if (options.preFetch === true || isNaN(options.preFetch)) {\n            preFetchAge = .333;\n          } else {\n            preFetchAge = max(min(Number(options.preFetch), 1), 0);\n          }\n\n          if (preFetchAge) {\n            preFetchTimeouts = {};\n            preFetchAge = (1 - preFetchAge) * maxAge;\n            conf.on('get' + postfix, function (id, args, context) {\n              if (!preFetchTimeouts[id]) {\n                preFetchTimeouts[id] = 'nextTick';\n                nextTick(function () {\n                  var result;\n\n                  if (preFetchTimeouts[id] !== 'nextTick') {\n                    return;\n                  }\n\n                  delete preFetchTimeouts[id];\n                  conf.delete(id);\n\n                  if (options.async) {\n                    args = aFrom(args);\n                    args.push(noop);\n                  }\n\n                  result = conf.memoized.apply(context, args);\n\n                  if (options.promise) {\n                    if (isPromise(result)) {\n                      if (typeof result.done === 'function') {\n                        result.done(noop, noop);\n                      } else {\n                        result.then(noop, noop);\n                      }\n                    }\n                  }\n                });\n              }\n            });\n          }\n        }\n\n        conf.on('clear' + postfix, function () {\n          forEach(timeouts, function (id) {\n            clearTimeout(id);\n          });\n          timeouts = {};\n\n          if (preFetchTimeouts) {\n            forEach(preFetchTimeouts, function (id) {\n              if (id !== 'nextTick') {\n                clearTimeout(id);\n              }\n            });\n            preFetchTimeouts = {};\n          }\n        });\n      };\n    }, {\n      '../lib/registered-extensions': 225,\n      'es5-ext/array/from': 160,\n      'es5-ext/object/for-each': 181,\n      'is-promise': 215,\n      'next-tick': 235,\n      'timers-ext/valid-timeout': 239\n    }],\n    220: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var toPosInteger = _dereq_('es5-ext/number/to-pos-integer'),\n          lruQueue = _dereq_('lru-queue'),\n          extensions = _dereq_('../lib/registered-extensions');\n\n      extensions.max = function (max, conf, options) {\n        var postfix, queue, hit;\n        max = toPosInteger(max);\n\n        if (!max) {\n          return;\n        }\n\n        queue = lruQueue(max);\n        postfix = options.async && extensions.async || options.promise && extensions.promise ? 'async' : '';\n        conf.on('set' + postfix, hit = function hit(id) {\n          id = queue.hit(id);\n\n          if (id === undefined) {\n            return;\n          }\n\n          conf.delete(id);\n        });\n        conf.on('get' + postfix, hit);\n        conf.on('delete' + postfix, queue.delete);\n        conf.on('clear' + postfix, queue.clear);\n      };\n    }, {\n      '../lib/registered-extensions': 225,\n      'es5-ext/number/to-pos-integer': 176,\n      'lru-queue': 216\n    }],\n    221: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var objectMap = _dereq_('es5-ext/object/map'),\n          primitiveSet = _dereq_('es5-ext/object/primitive-set'),\n          ensureString = _dereq_('es5-ext/object/validate-stringifiable-value'),\n          toShortString = _dereq_('es5-ext/to-short-string-representation'),\n          isPromise = _dereq_('is-promise'),\n          nextTick = _dereq_('next-tick');\n\n      var create = Object.create,\n          supportedModes = primitiveSet('then', 'then:finally', 'done', 'done:finally');\n\n      _dereq_('../lib/registered-extensions').promise = function (mode, conf) {\n        var waiting = create(null),\n            cache = create(null),\n            promises = create(null);\n\n        if (mode === true) {\n          mode = null;\n        } else {\n          mode = ensureString(mode);\n\n          if (!supportedModes[mode]) {\n            throw new TypeError('\\'' + toShortString(mode) + '\\' is not valid promise mode');\n          }\n        }\n\n        conf.on('set', function (id, ignore, promise) {\n          var isFailed = false;\n\n          if (!isPromise(promise)) {\n            cache[id] = promise;\n            conf.emit('setasync', id, 1);\n            return;\n          }\n\n          waiting[id] = 1;\n          promises[id] = promise;\n\n          var onSuccess = function onSuccess(result) {\n            var count = waiting[id];\n\n            if (isFailed) {\n              throw new Error('Memoizee error: Detected unordered then|done & finally resolution, which ' + 'in turn makes proper detection of success/failure impossible (when in ' + '\\'done:finally\\' mode)\\n' + 'Consider to rely on \\'then\\' or \\'done\\' mode instead.');\n            }\n\n            if (!count) {\n              return;\n            }\n\n            delete waiting[id];\n            cache[id] = result;\n            conf.emit('setasync', id, count);\n          };\n\n          var onFailure = function onFailure() {\n            isFailed = true;\n\n            if (!waiting[id]) {\n              return;\n            }\n\n            delete waiting[id];\n            delete promises[id];\n            conf.delete(id);\n          };\n\n          var resolvedMode = mode;\n\n          if (!resolvedMode) {\n            resolvedMode = 'then';\n          }\n\n          if (resolvedMode === 'then') {\n            var nextTickFailure = function nextTickFailure() {\n              nextTick(onFailure);\n            };\n\n            promise = promise.then(function (result) {\n              nextTick(onSuccess.bind(this, result));\n            }, nextTickFailure);\n\n            if (typeof promise.finally === 'function') {\n              promise.finally(nextTickFailure);\n            }\n          } else if (resolvedMode === 'done') {\n            if (typeof promise.done !== 'function') {\n              throw new Error('Memoizee error: Retrieved promise does not implement \\'done\\' ' + 'in \\'done\\' mode');\n            }\n\n            promise.done(onSuccess, onFailure);\n          } else if (resolvedMode === 'done:finally') {\n            if (typeof promise.done !== 'function') {\n              throw new Error('Memoizee error: Retrieved promise does not implement \\'done\\' ' + 'in \\'done:finally\\' mode');\n            }\n\n            if (typeof promise.finally !== 'function') {\n              throw new Error('Memoizee error: Retrieved promise does not implement \\'finally\\' ' + 'in \\'done:finally\\' mode');\n            }\n\n            promise.done(onSuccess);\n            promise.finally(onFailure);\n          }\n        });\n        conf.on('get', function (id, args, context) {\n          var promise;\n\n          if (waiting[id]) {\n            ++waiting[id];\n            return;\n          }\n\n          promise = promises[id];\n\n          var emit = function emit() {\n            conf.emit('getasync', id, args, context);\n          };\n\n          if (isPromise(promise)) {\n            if (typeof promise.done === 'function') {\n              promise.done(emit);\n            } else {\n              promise.then(function () {\n                nextTick(emit);\n              });\n            }\n          } else {\n            emit();\n          }\n        });\n        conf.on('delete', function (id) {\n          delete promises[id];\n\n          if (waiting[id]) {\n            delete waiting[id];\n            return;\n          }\n\n          if (!hasOwnProperty.call(cache, id)) {\n            return;\n          }\n\n          var result = cache[id];\n          delete cache[id];\n          conf.emit('deleteasync', id, [result]);\n        });\n        conf.on('clear', function () {\n          var oldCache = cache;\n          cache = create(null);\n          waiting = create(null);\n          promises = create(null);\n          conf.emit('clearasync', objectMap(oldCache, function (data) {\n            return [data];\n          }));\n        });\n      };\n    }, {\n      '../lib/registered-extensions': 225,\n      'es5-ext/object/map': 188,\n      'es5-ext/object/primitive-set': 191,\n      'es5-ext/object/validate-stringifiable-value': 194,\n      'es5-ext/to-short-string-representation': 201,\n      'is-promise': 215,\n      'next-tick': 235\n    }],\n    222: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var d = _dereq_('d'),\n          extensions = _dereq_('../lib/registered-extensions'),\n          create = Object.create,\n          defineProperties = Object.defineProperties;\n\n      extensions.refCounter = function (ignore, conf, options) {\n        var cache, postfix;\n        cache = create(null);\n        postfix = options.async && extensions.async || options.promise && extensions.promise ? 'async' : '';\n        conf.on('set' + postfix, function (id, length) {\n          cache[id] = length || 1;\n        });\n        conf.on('get' + postfix, function (id) {\n          ++cache[id];\n        });\n        conf.on('delete' + postfix, function (id) {\n          delete cache[id];\n        });\n        conf.on('clear' + postfix, function () {\n          cache = {};\n        });\n        defineProperties(conf.memoized, {\n          deleteRef: d(function () {\n            var id = conf.get(arguments);\n\n            if (id === null) {\n              return null;\n            }\n\n            if (!cache[id]) {\n              return null;\n            }\n\n            if (! --cache[id]) {\n              conf.delete(id);\n              return true;\n            }\n\n            return false;\n          }),\n          getRefCount: d(function () {\n            var id = conf.get(arguments);\n\n            if (id === null) {\n              return 0;\n            }\n\n            if (!cache[id]) {\n              return 0;\n            }\n\n            return cache[id];\n          })\n        });\n      };\n    }, {\n      '../lib/registered-extensions': 225,\n      d: 157\n    }],\n    223: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var normalizeOpts = _dereq_('es5-ext/object/normalize-options'),\n          resolveLength = _dereq_('./lib/resolve-length'),\n          plain = _dereq_('./plain');\n\n      module.exports = function (fn) {\n        var options = normalizeOpts(arguments[1]),\n            length;\n\n        if (!options.normalizer) {\n          length = options.length = resolveLength(options.length, fn.length, options.async);\n\n          if (length !== 0) {\n            if (options.primitive) {\n              if (length === false) {\n                options.normalizer = _dereq_('./normalizers/primitive');\n              } else if (length > 1) {\n                options.normalizer = _dereq_('./normalizers/get-primitive-fixed')(length);\n              }\n            } else if (length === false) {\n              options.normalizer = _dereq_('./normalizers/get')();\n            } else if (length === 1) {\n              options.normalizer = _dereq_('./normalizers/get-1')();\n            } else {\n              options.normalizer = _dereq_('./normalizers/get-fixed')(length);\n            }\n          }\n        }\n\n        if (options.async) {\n          _dereq_('./ext/async');\n        }\n\n        if (options.promise) {\n          _dereq_('./ext/promise');\n        }\n\n        if (options.dispose) {\n          _dereq_('./ext/dispose');\n        }\n\n        if (options.maxAge) {\n          _dereq_('./ext/max-age');\n        }\n\n        if (options.max) {\n          _dereq_('./ext/max');\n        }\n\n        if (options.refCounter) {\n          _dereq_('./ext/ref-counter');\n        }\n\n        return plain(fn, options);\n      };\n    }, {\n      './ext/async': 217,\n      './ext/dispose': 218,\n      './ext/max': 220,\n      './ext/max-age': 219,\n      './ext/promise': 221,\n      './ext/ref-counter': 222,\n      './lib/resolve-length': 226,\n      './normalizers/get': 232,\n      './normalizers/get-1': 229,\n      './normalizers/get-fixed': 230,\n      './normalizers/get-primitive-fixed': 231,\n      './normalizers/primitive': 233,\n      './plain': 234,\n      'es5-ext/object/normalize-options': 190\n    }],\n    224: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var customError = _dereq_('es5-ext/error/custom'),\n          defineLength = _dereq_('es5-ext/function/_define-length'),\n          d = _dereq_('d'),\n          ee = _dereq_('event-emitter').methods,\n          resolveResolve = _dereq_('./resolve-resolve'),\n          resolveNormalize = _dereq_('./resolve-normalize');\n\n      var apply = Function.prototype.apply,\n          call = Function.prototype.call,\n          create = Object.create,\n          defineProperties = Object.defineProperties,\n          _on = ee.on,\n          emit = ee.emit;\n\n      module.exports = function (original, length, options) {\n        var cache = create(null),\n            conf,\n            memLength,\n            _get,\n            set,\n            del,\n            _clear,\n            extDel,\n            extGet,\n            extHas,\n            normalizer,\n            getListeners,\n            setListeners,\n            deleteListeners,\n            memoized,\n            resolve;\n\n        if (length !== false) {\n          memLength = length;\n        } else if (isNaN(original.length)) {\n          memLength = 1;\n        } else {\n          memLength = original.length;\n        }\n\n        if (options.normalizer) {\n          normalizer = resolveNormalize(options.normalizer);\n          _get = normalizer.get;\n          set = normalizer.set;\n          del = normalizer.delete;\n          _clear = normalizer.clear;\n        }\n\n        if (options.resolvers != null) {\n          resolve = resolveResolve(options.resolvers);\n        }\n\n        if (_get) {\n          memoized = defineLength(function (arg) {\n            var id,\n                result,\n                args = arguments;\n\n            if (resolve) {\n              args = resolve(args);\n            }\n\n            id = _get(args);\n\n            if (id !== null) {\n              if (hasOwnProperty.call(cache, id)) {\n                if (getListeners) {\n                  conf.emit('get', id, args, this);\n                }\n\n                return cache[id];\n              }\n            }\n\n            if (args.length === 1) {\n              result = call.call(original, this, args[0]);\n            } else {\n              result = apply.call(original, this, args);\n            }\n\n            if (id === null) {\n              id = _get(args);\n\n              if (id !== null) {\n                throw customError('Circular invocation', 'CIRCULAR_INVOCATION');\n              }\n\n              id = set(args);\n            } else if (hasOwnProperty.call(cache, id)) {\n              throw customError('Circular invocation', 'CIRCULAR_INVOCATION');\n            }\n\n            cache[id] = result;\n\n            if (setListeners) {\n              conf.emit('set', id, null, result);\n            }\n\n            return result;\n          }, memLength);\n        } else if (length === 0) {\n          memoized = function memoized() {\n            var result;\n\n            if (hasOwnProperty.call(cache, 'data')) {\n              if (getListeners) {\n                conf.emit('get', 'data', arguments, this);\n              }\n\n              return cache.data;\n            }\n\n            if (arguments.length) {\n              result = apply.call(original, this, arguments);\n            } else {\n              result = call.call(original, this);\n            }\n\n            if (hasOwnProperty.call(cache, 'data')) {\n              throw customError('Circular invocation', 'CIRCULAR_INVOCATION');\n            }\n\n            cache.data = result;\n\n            if (setListeners) {\n              conf.emit('set', 'data', null, result);\n            }\n\n            return result;\n          };\n        } else {\n          memoized = function memoized(arg) {\n            var result,\n                args = arguments,\n                id;\n\n            if (resolve) {\n              args = resolve(arguments);\n            }\n\n            id = String(args[0]);\n\n            if (hasOwnProperty.call(cache, id)) {\n              if (getListeners) {\n                conf.emit('get', id, args, this);\n              }\n\n              return cache[id];\n            }\n\n            if (args.length === 1) {\n              result = call.call(original, this, args[0]);\n            } else {\n              result = apply.call(original, this, args);\n            }\n\n            if (hasOwnProperty.call(cache, id)) {\n              throw customError('Circular invocation', 'CIRCULAR_INVOCATION');\n            }\n\n            cache[id] = result;\n\n            if (setListeners) {\n              conf.emit('set', id, null, result);\n            }\n\n            return result;\n          };\n        }\n\n        conf = {\n          original: original,\n          memoized: memoized,\n          profileName: options.profileName,\n          get: function get(args) {\n            if (resolve) {\n              args = resolve(args);\n            }\n\n            if (_get) {\n              return _get(args);\n            }\n\n            return String(args[0]);\n          },\n          has: function has(id) {\n            return hasOwnProperty.call(cache, id);\n          },\n          delete: function _delete(id) {\n            var result;\n\n            if (!hasOwnProperty.call(cache, id)) {\n              return;\n            }\n\n            if (del) {\n              del(id);\n            }\n\n            result = cache[id];\n            delete cache[id];\n\n            if (deleteListeners) {\n              conf.emit('delete', id, result);\n            }\n          },\n          clear: function clear() {\n            var oldCache = cache;\n\n            if (_clear) {\n              _clear();\n            }\n\n            cache = create(null);\n            conf.emit('clear', oldCache);\n          },\n          on: function on(type, listener) {\n            if (type === 'get') {\n              getListeners = true;\n            } else if (type === 'set') {\n              setListeners = true;\n            } else if (type === 'delete') {\n              deleteListeners = true;\n            }\n\n            return _on.call(this, type, listener);\n          },\n          emit: emit,\n          updateEnv: function updateEnv() {\n            original = conf.original;\n          }\n        };\n\n        if (_get) {\n          extDel = defineLength(function (arg) {\n            var id,\n                args = arguments;\n\n            if (resolve) {\n              args = resolve(args);\n            }\n\n            id = _get(args);\n\n            if (id === null) {\n              return;\n            }\n\n            conf.delete(id);\n          }, memLength);\n        } else if (length === 0) {\n          extDel = function extDel() {\n            return conf.delete('data');\n          };\n        } else {\n          extDel = function extDel(arg) {\n            if (resolve) {\n              arg = resolve(arguments)[0];\n            }\n\n            return conf.delete(arg);\n          };\n        }\n\n        extGet = defineLength(function () {\n          var id,\n              args = arguments;\n\n          if (length === 0) {\n            return cache.data;\n          }\n\n          if (resolve) {\n            args = resolve(args);\n          }\n\n          if (_get) {\n            id = _get(args);\n          } else {\n            id = String(args[0]);\n          }\n\n          return cache[id];\n        });\n        extHas = defineLength(function () {\n          var id,\n              args = arguments;\n\n          if (length === 0) {\n            return conf.has('data');\n          }\n\n          if (resolve) {\n            args = resolve(args);\n          }\n\n          if (_get) {\n            id = _get(args);\n          } else {\n            id = String(args[0]);\n          }\n\n          if (id === null) {\n            return false;\n          }\n\n          return conf.has(id);\n        });\n        defineProperties(memoized, {\n          __memoized__: d(true),\n          delete: d(extDel),\n          clear: d(conf.clear),\n          _get: d(extGet),\n          _has: d(extHas)\n        });\n        return conf;\n      };\n    }, {\n      './resolve-normalize': 227,\n      './resolve-resolve': 228,\n      d: 157,\n      'es5-ext/error/custom': 164,\n      'es5-ext/function/_define-length': 165,\n      'event-emitter': 211\n    }],\n    225: [function (_dereq_, module, exports) {\n      'use strict';\n    }, {}],\n    226: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var toPosInt = _dereq_('es5-ext/number/to-pos-integer');\n\n      module.exports = function (optsLength, fnLength, isAsync) {\n        var length;\n\n        if (isNaN(optsLength)) {\n          length = fnLength;\n\n          if (!(length >= 0)) {\n            return 1;\n          }\n\n          if (isAsync && length) {\n            return length - 1;\n          }\n\n          return length;\n        }\n\n        if (optsLength === false) {\n          return false;\n        }\n\n        return toPosInt(optsLength);\n      };\n    }, {\n      'es5-ext/number/to-pos-integer': 176\n    }],\n    227: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var callable = _dereq_('es5-ext/object/valid-callable');\n\n      module.exports = function (userNormalizer) {\n        var normalizer;\n\n        if (typeof userNormalizer === 'function') {\n          return {\n            set: userNormalizer,\n            get: userNormalizer\n          };\n        }\n\n        normalizer = {\n          get: callable(userNormalizer.get)\n        };\n\n        if (userNormalizer.set !== undefined) {\n          normalizer.set = callable(userNormalizer.set);\n\n          if (userNormalizer.delete) {\n            normalizer.delete = callable(userNormalizer.delete);\n          }\n\n          if (userNormalizer.clear) {\n            normalizer.clear = callable(userNormalizer.clear);\n          }\n\n          return normalizer;\n        }\n\n        normalizer.set = normalizer.get;\n        return normalizer;\n      };\n    }, {\n      'es5-ext/object/valid-callable': 192\n    }],\n    228: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var toArray = _dereq_('es5-ext/array/to-array'),\n          isValue = _dereq_('es5-ext/object/is-value'),\n          callable = _dereq_('es5-ext/object/valid-callable');\n\n      var slice = Array.prototype.slice,\n          resolveArgs;\n\n      resolveArgs = function resolveArgs(args) {\n        return this.map(function (resolve, i) {\n          return resolve ? resolve(args[i]) : args[i];\n        }).concat(slice.call(args, this.length));\n      };\n\n      module.exports = function (resolvers) {\n        resolvers = toArray(resolvers);\n        resolvers.forEach(function (resolve) {\n          if (isValue(resolve)) {\n            callable(resolve);\n          }\n        });\n        return resolveArgs.bind(resolvers);\n      };\n    }, {\n      'es5-ext/array/to-array': 163,\n      'es5-ext/object/is-value': 184,\n      'es5-ext/object/valid-callable': 192\n    }],\n    229: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var indexOf = _dereq_('es5-ext/array/#/e-index-of');\n\n      module.exports = function () {\n        var lastId = 0,\n            argsMap = [],\n            cache = [];\n        return {\n          get: function get(args) {\n            var index = indexOf.call(argsMap, args[0]);\n            return index === -1 ? null : cache[index];\n          },\n          set: function set(args) {\n            argsMap.push(args[0]);\n            cache.push(++lastId);\n            return lastId;\n          },\n          delete: function _delete(id) {\n            var index = indexOf.call(cache, id);\n\n            if (index !== -1) {\n              argsMap.splice(index, 1);\n              cache.splice(index, 1);\n            }\n          },\n          clear: function clear() {\n            argsMap = [];\n            cache = [];\n          }\n        };\n      };\n    }, {\n      'es5-ext/array/#/e-index-of': 159\n    }],\n    230: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var indexOf = _dereq_('es5-ext/array/#/e-index-of'),\n          create = Object.create;\n\n      module.exports = function (length) {\n        var lastId = 0,\n            map = [[], []],\n            cache = create(null);\n        return {\n          get: function get(args) {\n            var index = 0,\n                set = map,\n                i;\n\n            while (index < length - 1) {\n              i = indexOf.call(set[0], args[index]);\n\n              if (i === -1) {\n                return null;\n              }\n\n              set = set[1][i];\n              ++index;\n            }\n\n            i = indexOf.call(set[0], args[index]);\n\n            if (i === -1) {\n              return null;\n            }\n\n            return set[1][i] || null;\n          },\n          set: function set(args) {\n            var index = 0,\n                set = map,\n                i;\n\n            while (index < length - 1) {\n              i = indexOf.call(set[0], args[index]);\n\n              if (i === -1) {\n                i = set[0].push(args[index]) - 1;\n                set[1].push([[], []]);\n              }\n\n              set = set[1][i];\n              ++index;\n            }\n\n            i = indexOf.call(set[0], args[index]);\n\n            if (i === -1) {\n              i = set[0].push(args[index]) - 1;\n            }\n\n            set[1][i] = ++lastId;\n            cache[lastId] = args;\n            return lastId;\n          },\n          delete: function _delete(id) {\n            var index = 0,\n                set = map,\n                i,\n                path = [],\n                args = cache[id];\n\n            while (index < length - 1) {\n              i = indexOf.call(set[0], args[index]);\n\n              if (i === -1) {\n                return;\n              }\n\n              path.push(set, i);\n              set = set[1][i];\n              ++index;\n            }\n\n            i = indexOf.call(set[0], args[index]);\n\n            if (i === -1) {\n              return;\n            }\n\n            id = set[1][i];\n            set[0].splice(i, 1);\n            set[1].splice(i, 1);\n\n            while (!set[0].length && path.length) {\n              i = path.pop();\n              set = path.pop();\n              set[0].splice(i, 1);\n              set[1].splice(i, 1);\n            }\n\n            delete cache[id];\n          },\n          clear: function clear() {\n            map = [[], []];\n            cache = create(null);\n          }\n        };\n      };\n    }, {\n      'es5-ext/array/#/e-index-of': 159\n    }],\n    231: [function (_dereq_, module, exports) {\n      'use strict';\n\n      module.exports = function (length) {\n        if (!length) {\n          return function () {\n            return '';\n          };\n        }\n\n        return function (args) {\n          var id = String(args[0]),\n              i = 0,\n              currentLength = length;\n\n          while (--currentLength) {\n            id += '\\x01' + args[++i];\n          }\n\n          return id;\n        };\n      };\n    }, {}],\n    232: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var indexOf = _dereq_('es5-ext/array/#/e-index-of');\n\n      var create = Object.create;\n\n      module.exports = function () {\n        var lastId = 0,\n            map = [],\n            cache = create(null);\n        return {\n          get: function get(args) {\n            var index = 0,\n                set = map,\n                i,\n                length = args.length;\n\n            if (length === 0) {\n              return set[length] || null;\n            }\n\n            if (set = set[length]) {\n              while (index < length - 1) {\n                i = indexOf.call(set[0], args[index]);\n\n                if (i === -1) {\n                  return null;\n                }\n\n                set = set[1][i];\n                ++index;\n              }\n\n              i = indexOf.call(set[0], args[index]);\n\n              if (i === -1) {\n                return null;\n              }\n\n              return set[1][i] || null;\n            }\n\n            return null;\n          },\n          set: function set(args) {\n            var index = 0,\n                set = map,\n                i,\n                length = args.length;\n\n            if (length === 0) {\n              set[length] = ++lastId;\n            } else {\n              if (!set[length]) {\n                set[length] = [[], []];\n              }\n\n              set = set[length];\n\n              while (index < length - 1) {\n                i = indexOf.call(set[0], args[index]);\n\n                if (i === -1) {\n                  i = set[0].push(args[index]) - 1;\n                  set[1].push([[], []]);\n                }\n\n                set = set[1][i];\n                ++index;\n              }\n\n              i = indexOf.call(set[0], args[index]);\n\n              if (i === -1) {\n                i = set[0].push(args[index]) - 1;\n              }\n\n              set[1][i] = ++lastId;\n            }\n\n            cache[lastId] = args;\n            return lastId;\n          },\n          delete: function _delete(id) {\n            var index = 0,\n                set = map,\n                i,\n                args = cache[id],\n                length = args.length,\n                path = [];\n\n            if (length === 0) {\n              delete set[length];\n            } else if (set = set[length]) {\n              while (index < length - 1) {\n                i = indexOf.call(set[0], args[index]);\n\n                if (i === -1) {\n                  return;\n                }\n\n                path.push(set, i);\n                set = set[1][i];\n                ++index;\n              }\n\n              i = indexOf.call(set[0], args[index]);\n\n              if (i === -1) {\n                return;\n              }\n\n              id = set[1][i];\n              set[0].splice(i, 1);\n              set[1].splice(i, 1);\n\n              while (!set[0].length && path.length) {\n                i = path.pop();\n                set = path.pop();\n                set[0].splice(i, 1);\n                set[1].splice(i, 1);\n              }\n            }\n\n            delete cache[id];\n          },\n          clear: function clear() {\n            map = [];\n            cache = create(null);\n          }\n        };\n      };\n    }, {\n      'es5-ext/array/#/e-index-of': 159\n    }],\n    233: [function (_dereq_, module, exports) {\n      'use strict';\n\n      module.exports = function (args) {\n        var id,\n            i,\n            length = args.length;\n\n        if (!length) {\n          return '\\x02';\n        }\n\n        id = String(args[i = 0]);\n\n        while (--length) {\n          id += '\\x01' + args[++i];\n        }\n\n        return id;\n      };\n    }, {}],\n    234: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var callable = _dereq_('es5-ext/object/valid-callable'),\n          forEach = _dereq_('es5-ext/object/for-each'),\n          extensions = _dereq_('./lib/registered-extensions'),\n          configure = _dereq_('./lib/configure-map'),\n          resolveLength = _dereq_('./lib/resolve-length');\n\n      module.exports = function self(fn) {\n        var options, length, conf;\n        callable(fn);\n        options = Object(arguments[1]);\n\n        if (options.async && options.promise) {\n          throw new Error('Options \\'async\\' and \\'promise\\' cannot be used together');\n        }\n\n        if (hasOwnProperty.call(fn, '__memoized__') && !options.force) {\n          return fn;\n        }\n\n        length = resolveLength(options.length, fn.length, options.async && extensions.async);\n        conf = configure(fn, length, options);\n        forEach(extensions, function (extFn, name) {\n          if (options[name]) {\n            extFn(options[name], conf, options);\n          }\n        });\n\n        if (self.__profiler__) {\n          self.__profiler__(conf);\n        }\n\n        conf.updateEnv();\n        return conf.memoized;\n      };\n    }, {\n      './lib/configure-map': 224,\n      './lib/registered-extensions': 225,\n      './lib/resolve-length': 226,\n      'es5-ext/object/for-each': 181,\n      'es5-ext/object/valid-callable': 192\n    }],\n    235: [function (_dereq_, module, exports) {\n      (function (process, setImmediate) {\n        'use strict';\n\n        var callable, byObserver;\n\n        callable = function callable(fn) {\n          if (typeof fn !== 'function') {\n            throw new TypeError(fn + ' is not a function');\n          }\n\n          return fn;\n        };\n\n        byObserver = function byObserver(Observer) {\n          var node = document.createTextNode(''),\n              queue,\n              currentQueue,\n              i = 0;\n          new Observer(function () {\n            var callback;\n\n            if (!queue) {\n              if (!currentQueue) {\n                return;\n              }\n\n              queue = currentQueue;\n            } else if (currentQueue) {\n              queue = currentQueue.concat(queue);\n            }\n\n            currentQueue = queue;\n            queue = null;\n\n            if (typeof currentQueue === 'function') {\n              callback = currentQueue;\n              currentQueue = null;\n              callback();\n              return;\n            }\n\n            node.data = i = ++i % 2;\n\n            while (currentQueue) {\n              callback = currentQueue.shift();\n\n              if (!currentQueue.length) {\n                currentQueue = null;\n              }\n\n              callback();\n            }\n          }).observe(node, {\n            characterData: true\n          });\n          return function (fn) {\n            callable(fn);\n\n            if (queue) {\n              if (typeof queue === 'function') {\n                queue = [queue, fn];\n              } else {\n                queue.push(fn);\n              }\n\n              return;\n            }\n\n            queue = fn;\n            node.data = i = ++i % 2;\n          };\n        };\n\n        module.exports = function () {\n          if (typeof process === 'object' && process && typeof process.nextTick === 'function') {\n            return process.nextTick;\n          }\n\n          if (typeof document === 'object' && document) {\n            if (typeof MutationObserver === 'function') {\n              return byObserver(MutationObserver);\n            }\n\n            if (typeof WebKitMutationObserver === 'function') {\n              return byObserver(WebKitMutationObserver);\n            }\n          }\n\n          if (typeof setImmediate === 'function') {\n            return function (cb) {\n              setImmediate(callable(cb));\n            };\n          }\n\n          if (typeof setTimeout === 'function' || typeof setTimeout === 'object') {\n            return function (cb) {\n              setTimeout(callable(cb), 0);\n            };\n          }\n\n          return null;\n        }();\n      }).call(this, _dereq_('_process'), _dereq_('timers').setImmediate);\n    }, {\n      _process: 236,\n      timers: 237\n    }],\n    236: [function (_dereq_, module, exports) {\n      var process = module.exports = {};\n      var cachedSetTimeout;\n      var cachedClearTimeout;\n\n      function defaultSetTimout() {\n        throw new Error('setTimeout has not been defined');\n      }\n\n      function defaultClearTimeout() {\n        throw new Error('clearTimeout has not been defined');\n      }\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\n        try {\n          if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n          } else {\n            cachedClearTimeout = defaultClearTimeout;\n          }\n        } catch (e) {\n          cachedClearTimeout = defaultClearTimeout;\n        }\n      })();\n\n      function runTimeout(fun) {\n        if (cachedSetTimeout === setTimeout) {\n          return setTimeout(fun, 0);\n        }\n\n        if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n          cachedSetTimeout = setTimeout;\n          return setTimeout(fun, 0);\n        }\n\n        try {\n          return cachedSetTimeout(fun, 0);\n        } catch (e) {\n          try {\n            return cachedSetTimeout.call(null, fun, 0);\n          } catch (e) {\n            return cachedSetTimeout.call(this, fun, 0);\n          }\n        }\n      }\n\n      function runClearTimeout(marker) {\n        if (cachedClearTimeout === clearTimeout) {\n          return clearTimeout(marker);\n        }\n\n        if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n          cachedClearTimeout = clearTimeout;\n          return clearTimeout(marker);\n        }\n\n        try {\n          return cachedClearTimeout(marker);\n        } catch (e) {\n          try {\n            return cachedClearTimeout.call(null, marker);\n          } catch (e) {\n            return cachedClearTimeout.call(this, marker);\n          }\n        }\n      }\n\n      var queue = [];\n      var draining = false;\n      var currentQueue;\n      var queueIndex = -1;\n\n      function cleanUpNextTick() {\n        if (!draining || !currentQueue) {\n          return;\n        }\n\n        draining = false;\n\n        if (currentQueue.length) {\n          queue = currentQueue.concat(queue);\n        } else {\n          queueIndex = -1;\n        }\n\n        if (queue.length) {\n          drainQueue();\n        }\n      }\n\n      function drainQueue() {\n        if (draining) {\n          return;\n        }\n\n        var timeout = runTimeout(cleanUpNextTick);\n        draining = true;\n        var len = queue.length;\n\n        while (len) {\n          currentQueue = queue;\n          queue = [];\n\n          while (++queueIndex < len) {\n            if (currentQueue) {\n              currentQueue[queueIndex].run();\n            }\n          }\n\n          queueIndex = -1;\n          len = queue.length;\n        }\n\n        currentQueue = null;\n        draining = false;\n        runClearTimeout(timeout);\n      }\n\n      process.nextTick = function (fun) {\n        var args = new Array(arguments.length - 1);\n\n        if (arguments.length > 1) {\n          for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n          }\n        }\n\n        queue.push(new Item(fun, args));\n\n        if (queue.length === 1 && !draining) {\n          runTimeout(drainQueue);\n        }\n      };\n\n      function Item(fun, array) {\n        this.fun = fun;\n        this.array = array;\n      }\n\n      Item.prototype.run = function () {\n        this.fun.apply(null, this.array);\n      };\n\n      process.title = 'browser';\n      process.browser = true;\n      process.env = {};\n      process.argv = [];\n      process.version = '';\n      process.versions = {};\n\n      function noop() {}\n\n      process.on = noop;\n      process.addListener = noop;\n      process.once = noop;\n      process.off = noop;\n      process.removeListener = noop;\n      process.removeAllListeners = noop;\n      process.emit = noop;\n      process.prependListener = noop;\n      process.prependOnceListener = noop;\n\n      process.listeners = function (name) {\n        return [];\n      };\n\n      process.binding = function (name) {\n        throw new Error('process.binding is not supported');\n      };\n\n      process.cwd = function () {\n        return '/';\n      };\n\n      process.chdir = function (dir) {\n        throw new Error('process.chdir is not supported');\n      };\n\n      process.umask = function () {\n        return 0;\n      };\n    }, {}],\n    237: [function (_dereq_, module, exports) {\n      (function (setImmediate, clearImmediate) {\n        var nextTick = _dereq_('process/browser.js').nextTick;\n\n        var apply = Function.prototype.apply;\n        var slice = Array.prototype.slice;\n        var immediateIds = {};\n        var nextImmediateId = 0;\n\n        exports.setTimeout = function () {\n          return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);\n        };\n\n        exports.setInterval = function () {\n          return new Timeout(apply.call(setInterval, window, arguments), clearInterval);\n        };\n\n        exports.clearTimeout = exports.clearInterval = function (timeout) {\n          timeout.close();\n        };\n\n        function Timeout(id, clearFn) {\n          this._id = id;\n          this._clearFn = clearFn;\n        }\n\n        Timeout.prototype.unref = Timeout.prototype.ref = function () {};\n\n        Timeout.prototype.close = function () {\n          this._clearFn.call(window, this._id);\n        };\n\n        exports.enroll = function (item, msecs) {\n          clearTimeout(item._idleTimeoutId);\n          item._idleTimeout = msecs;\n        };\n\n        exports.unenroll = function (item) {\n          clearTimeout(item._idleTimeoutId);\n          item._idleTimeout = -1;\n        };\n\n        exports._unrefActive = exports.active = function (item) {\n          clearTimeout(item._idleTimeoutId);\n          var msecs = item._idleTimeout;\n\n          if (msecs >= 0) {\n            item._idleTimeoutId = setTimeout(function onTimeout() {\n              if (item._onTimeout) {\n                item._onTimeout();\n              }\n            }, msecs);\n          }\n        };\n\n        exports.setImmediate = typeof setImmediate === 'function' ? setImmediate : function (fn) {\n          var id = nextImmediateId++;\n          var args = arguments.length < 2 ? false : slice.call(arguments, 1);\n          immediateIds[id] = true;\n          nextTick(function onNextTick() {\n            if (immediateIds[id]) {\n              if (args) {\n                fn.apply(null, args);\n              } else {\n                fn.call(null);\n              }\n\n              exports.clearImmediate(id);\n            }\n          });\n          return id;\n        };\n        exports.clearImmediate = typeof clearImmediate === 'function' ? clearImmediate : function (id) {\n          delete immediateIds[id];\n        };\n      }).call(this, _dereq_('timers').setImmediate, _dereq_('timers').clearImmediate);\n    }, {\n      'process/browser.js': 236,\n      timers: 237\n    }],\n    238: [function (_dereq_, module, exports) {\n      'use strict';\n\n      module.exports = 2147483647;\n    }, {}],\n    239: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var toPosInt = _dereq_('es5-ext/number/to-pos-integer'),\n          maxTimeout = _dereq_('./max-timeout');\n\n      module.exports = function (value) {\n        value = toPosInt(value);\n\n        if (value > maxTimeout) {\n          throw new TypeError(value + ' exceeds maximum possible timeout');\n        }\n\n        return value;\n      };\n    }, {\n      './max-timeout': 238,\n      'es5-ext/number/to-pos-integer': 176\n    }],\n    240: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var isPrototype = _dereq_('../prototype/is');\n\n      module.exports = function (value) {\n        if (typeof value !== 'function') {\n          return false;\n        }\n\n        if (!hasOwnProperty.call(value, 'length')) {\n          return false;\n        }\n\n        try {\n          if (typeof value.length !== 'number') {\n            return false;\n          }\n\n          if (typeof value.call !== 'function') {\n            return false;\n          }\n\n          if (typeof value.apply !== 'function') {\n            return false;\n          }\n        } catch (error) {\n          return false;\n        }\n\n        return !isPrototype(value);\n      };\n    }, {\n      '../prototype/is': 243\n    }],\n    241: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var isValue = _dereq_('../value/is');\n\n      var possibleTypes = {\n        object: true,\n        function: true,\n        undefined: true\n      };\n\n      module.exports = function (value) {\n        if (!isValue(value)) {\n          return false;\n        }\n\n        return hasOwnProperty.call(possibleTypes, typeof value);\n      };\n    }, {\n      '../value/is': 244\n    }],\n    242: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var isFunction = _dereq_('../function/is');\n\n      var classRe = /^\\s*class[\\s{/}]/,\n          functionToString = Function.prototype.toString;\n\n      module.exports = function (value) {\n        if (!isFunction(value)) {\n          return false;\n        }\n\n        if (classRe.test(functionToString.call(value))) {\n          return false;\n        }\n\n        return true;\n      };\n    }, {\n      '../function/is': 240\n    }],\n    243: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var isObject = _dereq_('../object/is');\n\n      module.exports = function (value) {\n        if (!isObject(value)) {\n          return false;\n        }\n\n        try {\n          if (!value.constructor) {\n            return false;\n          }\n\n          return value.constructor.prototype === value;\n        } catch (error) {\n          return false;\n        }\n      };\n    }, {\n      '../object/is': 241\n    }],\n    244: [function (_dereq_, module, exports) {\n      'use strict';\n\n      var _undefined = void 0;\n\n      module.exports = function (value) {\n        return value !== _undefined && value !== null;\n      };\n    }, {}],\n    245: [function (_dereq_, module, exports) {\n      (function (global) {\n        (function (self) {\n          'use strict';\n\n          if (self.WeakMap) {\n            return;\n          }\n\n          var hasOwnProperty = Object.prototype.hasOwnProperty;\n\n          var defineProperty = function defineProperty(object, name, value) {\n            if (Object.defineProperty) {\n              Object.defineProperty(object, name, {\n                configurable: true,\n                writable: true,\n                value: value\n              });\n            } else {\n              object[name] = value;\n            }\n          };\n\n          self.WeakMap = function () {\n            function WeakMap() {\n              if (this === void 0) {\n                throw new TypeError('Constructor WeakMap requires \\'new\\'');\n              }\n\n              defineProperty(this, '_id', genId('_WeakMap'));\n\n              if (arguments.length > 0) {\n                throw new TypeError('WeakMap iterable is not supported');\n              }\n            }\n\n            defineProperty(WeakMap.prototype, 'delete', function (key) {\n              checkInstance(this, 'delete');\n\n              if (!isObject(key)) {\n                return false;\n              }\n\n              var entry = key[this._id];\n\n              if (entry && entry[0] === key) {\n                delete key[this._id];\n                return true;\n              }\n\n              return false;\n            });\n            defineProperty(WeakMap.prototype, 'get', function (key) {\n              checkInstance(this, 'get');\n\n              if (!isObject(key)) {\n                return void 0;\n              }\n\n              var entry = key[this._id];\n\n              if (entry && entry[0] === key) {\n                return entry[1];\n              }\n\n              return void 0;\n            });\n            defineProperty(WeakMap.prototype, 'has', function (key) {\n              checkInstance(this, 'has');\n\n              if (!isObject(key)) {\n                return false;\n              }\n\n              var entry = key[this._id];\n\n              if (entry && entry[0] === key) {\n                return true;\n              }\n\n              return false;\n            });\n            defineProperty(WeakMap.prototype, 'set', function (key, value) {\n              checkInstance(this, 'set');\n\n              if (!isObject(key)) {\n                throw new TypeError('Invalid value used as weak map key');\n              }\n\n              var entry = key[this._id];\n\n              if (entry && entry[0] === key) {\n                entry[1] = value;\n                return this;\n              }\n\n              defineProperty(key, this._id, [key, value]);\n              return this;\n            });\n\n            function checkInstance(x, methodName) {\n              if (!isObject(x) || !hasOwnProperty.call(x, '_id')) {\n                throw new TypeError(methodName + ' method called on incompatible receiver ' + typeof x);\n              }\n            }\n\n            function genId(prefix) {\n              return prefix + '_' + rand() + '.' + rand();\n            }\n\n            function rand() {\n              return Math.random().toString().substring(2);\n            }\n\n            defineProperty(WeakMap, '_polyfill', true);\n            return WeakMap;\n          }();\n\n          function isObject(x) {\n            return Object(x) === x;\n          }\n        })(typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : this);\n      }).call(this, typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : {});\n    }, {}]\n  }, {}, [1]);\n  'use strict';\n\n  var utils = axe.utils = {};\n  'use strict';\n\n  var helpers = {};\n  'use strict';\n\n  function _typeof(obj) {\n    '@babel/helpers - typeof';\n\n    if (typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol') {\n      _typeof = function _typeof(obj) {\n        return typeof obj;\n      };\n    } else {\n      _typeof = function _typeof(obj) {\n        return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj;\n      };\n    }\n\n    return _typeof(obj);\n  }\n\n  function _extends() {\n    _extends = Object.assign || function (target) {\n      for (var i = 1; i < arguments.length; i++) {\n        var source = arguments[i];\n\n        for (var key in source) {\n          if (Object.prototype.hasOwnProperty.call(source, key)) {\n            target[key] = source[key];\n          }\n        }\n      }\n\n      return target;\n    };\n\n    return _extends.apply(this, arguments);\n  }\n\n  var dotRegex = /\\{\\{.+?\\}\\}/g;\n\n  function getDefaultConfiguration(audit) {\n    'use strict';\n\n    var config;\n\n    if (audit) {\n      config = axe.utils.clone(audit);\n      config.commons = audit.commons;\n    } else {\n      config = {};\n    }\n\n    config.reporter = config.reporter || null;\n    config.rules = config.rules || [];\n    config.checks = config.checks || [];\n    config.data = _extends({\n      checks: {},\n      rules: {}\n    }, config.data);\n    return config;\n  }\n\n  function unpackToObject(collection, audit, method) {\n    'use strict';\n\n    var i, l;\n\n    for (i = 0, l = collection.length; i < l; i++) {\n      audit[method](collection[i]);\n    }\n  }\n\n  function Audit(audit) {\n    this.brand = 'axe';\n    this.application = 'axeAPI';\n    this.tagExclude = ['experimental'];\n    this.lang = 'en';\n    this.defaultConfig = audit;\n\n    this._init();\n\n    this._defaultLocale = null;\n  }\n\n  Audit.prototype._setDefaultLocale = function () {\n    if (this._defaultLocale) {\n      return;\n    }\n\n    var locale = {\n      checks: {},\n      rules: {},\n      failureSummaries: {},\n      incompleteFallbackMessage: '',\n      lang: this.lang\n    };\n    var checkIDs = Object.keys(this.data.checks);\n\n    for (var i = 0; i < checkIDs.length; i++) {\n      var id = checkIDs[i];\n      var check = this.data.checks[id];\n      var _check$messages = check.messages,\n          pass = _check$messages.pass,\n          fail = _check$messages.fail,\n          incomplete = _check$messages.incomplete;\n      locale.checks[id] = {\n        pass: pass,\n        fail: fail,\n        incomplete: incomplete\n      };\n    }\n\n    var ruleIDs = Object.keys(this.data.rules);\n\n    for (var _i = 0; _i < ruleIDs.length; _i++) {\n      var _id = ruleIDs[_i];\n      var rule = this.data.rules[_id];\n      var description = rule.description,\n          help = rule.help;\n      locale.rules[_id] = {\n        description: description,\n        help: help\n      };\n    }\n\n    var failureSummaries = Object.keys(this.data.failureSummaries);\n\n    for (var _i2 = 0; _i2 < failureSummaries.length; _i2++) {\n      var type = failureSummaries[_i2];\n      var failureSummary = this.data.failureSummaries[type];\n      var failureMessage = failureSummary.failureMessage;\n      locale.failureSummaries[type] = {\n        failureMessage: failureMessage\n      };\n    }\n\n    locale.incompleteFallbackMessage = this.data.incompleteFallbackMessage;\n    this._defaultLocale = locale;\n  };\n\n  Audit.prototype._resetLocale = function () {\n    var defaultLocale = this._defaultLocale;\n\n    if (!defaultLocale) {\n      return;\n    }\n\n    this.applyLocale(defaultLocale);\n  };\n\n  var mergeCheckLocale = function mergeCheckLocale(a, b) {\n    var pass = b.pass,\n        fail = b.fail;\n\n    if (typeof pass === 'string' && dotRegex.test(pass)) {\n      pass = axe.imports.doT.compile(pass);\n    }\n\n    if (typeof fail === 'string' && dotRegex.test(fail)) {\n      fail = axe.imports.doT.compile(fail);\n    }\n\n    return _extends({}, a, {\n      messages: {\n        pass: pass || a.messages.pass,\n        fail: fail || a.messages.fail,\n        incomplete: _typeof(a.messages.incomplete) === 'object' ? _extends({}, a.messages.incomplete, {}, b.incomplete) : b.incomplete\n      }\n    });\n  };\n\n  var mergeRuleLocale = function mergeRuleLocale(a, b) {\n    var help = b.help,\n        description = b.description;\n\n    if (typeof help === 'string' && dotRegex.test(help)) {\n      help = axe.imports.doT.compile(help);\n    }\n\n    if (typeof description === 'string' && dotRegex.test(description)) {\n      description = axe.imports.doT.compile(description);\n    }\n\n    return _extends({}, a, {\n      help: help || a.help,\n      description: description || a.description\n    });\n  };\n\n  var mergeFailureMessage = function mergeFailureMessage(a, b) {\n    var failureMessage = b.failureMessage;\n\n    if (typeof failureMessage === 'string' && dotRegex.test(failureMessage)) {\n      failureMessage = axe.imports.doT.compile(failureMessage);\n    }\n\n    return _extends({}, a, {\n      failureMessage: failureMessage || a.failureMessage\n    });\n  };\n\n  var mergeFallbackMessage = function mergeFallbackMessage(a, b) {\n    if (typeof b === 'string' && dotRegex.test(b)) {\n      b = axe.imports.doT.compile(b);\n    }\n\n    return b || a;\n  };\n\n  Audit.prototype._applyCheckLocale = function (checks) {\n    var keys = Object.keys(checks);\n\n    for (var i = 0; i < keys.length; i++) {\n      var id = keys[i];\n\n      if (!this.data.checks[id]) {\n        throw new Error('Locale provided for unknown check: \"'.concat(id, '\"'));\n      }\n\n      this.data.checks[id] = mergeCheckLocale(this.data.checks[id], checks[id]);\n    }\n  };\n\n  Audit.prototype._applyRuleLocale = function (rules) {\n    var keys = Object.keys(rules);\n\n    for (var i = 0; i < keys.length; i++) {\n      var id = keys[i];\n\n      if (!this.data.rules[id]) {\n        throw new Error('Locale provided for unknown rule: \"'.concat(id, '\"'));\n      }\n\n      this.data.rules[id] = mergeRuleLocale(this.data.rules[id], rules[id]);\n    }\n  };\n\n  Audit.prototype._applyFailureSummaries = function (messages) {\n    var keys = Object.keys(messages);\n\n    for (var i = 0; i < keys.length; i++) {\n      var key = keys[i];\n\n      if (!this.data.failureSummaries[key]) {\n        throw new Error('Locale provided for unknown failureMessage: \"'.concat(key, '\"'));\n      }\n\n      this.data.failureSummaries[key] = mergeFailureMessage(this.data.failureSummaries[key], messages[key]);\n    }\n  };\n\n  Audit.prototype.applyLocale = function (locale) {\n    this._setDefaultLocale();\n\n    if (locale.checks) {\n      this._applyCheckLocale(locale.checks);\n    }\n\n    if (locale.rules) {\n      this._applyRuleLocale(locale.rules);\n    }\n\n    if (locale.failureSummaries) {\n      this._applyFailureSummaries(locale.failureSummaries, 'failureSummaries');\n    }\n\n    if (locale.incompleteFallbackMessage) {\n      this.data.incompleteFallbackMessage = mergeFallbackMessage(this.data.incompleteFallbackMessage, locale.incompleteFallbackMessage);\n    }\n\n    if (locale.lang) {\n      this.lang = locale.lang;\n    }\n  };\n\n  Audit.prototype._init = function () {\n    var audit = getDefaultConfiguration(this.defaultConfig);\n    axe.commons = commons = audit.commons;\n    this.lang = audit.lang || 'en';\n    this.reporter = audit.reporter;\n    this.commands = {};\n    this.rules = [];\n    this.checks = {};\n    unpackToObject(audit.rules, this, 'addRule');\n    unpackToObject(audit.checks, this, 'addCheck');\n    this.data = {};\n    this.data.checks = audit.data && audit.data.checks || {};\n    this.data.rules = audit.data && audit.data.rules || {};\n    this.data.failureSummaries = audit.data && audit.data.failureSummaries || {};\n    this.data.incompleteFallbackMessage = audit.data && audit.data.incompleteFallbackMessage || '';\n\n    this._constructHelpUrls();\n  };\n\n  Audit.prototype.registerCommand = function (command) {\n    'use strict';\n\n    this.commands[command.id] = command.callback;\n  };\n\n  Audit.prototype.addRule = function (spec) {\n    'use strict';\n\n    if (spec.metadata) {\n      this.data.rules[spec.id] = spec.metadata;\n    }\n\n    var rule = this.getRule(spec.id);\n\n    if (rule) {\n      rule.configure(spec);\n    } else {\n      this.rules.push(new Rule(spec, this));\n    }\n  };\n\n  Audit.prototype.addCheck = function (spec) {\n    'use strict';\n\n    var metadata = spec.metadata;\n\n    if (_typeof(metadata) === 'object') {\n      this.data.checks[spec.id] = metadata;\n\n      if (_typeof(metadata.messages) === 'object') {\n        Object.keys(metadata.messages).filter(function (prop) {\n          return metadata.messages.hasOwnProperty(prop) && typeof metadata.messages[prop] === 'string';\n        }).forEach(function (prop) {\n          if (metadata.messages[prop].indexOf('function') === 0) {\n            metadata.messages[prop] = new Function('return ' + metadata.messages[prop] + ';')();\n          }\n        });\n      }\n    }\n\n    if (this.checks[spec.id]) {\n      this.checks[spec.id].configure(spec);\n    } else {\n      this.checks[spec.id] = new Check(spec);\n    }\n  };\n\n  function getRulesToRun(rules, context, options) {\n    var base = {\n      now: [],\n      later: []\n    };\n    var splitRules = rules.reduce(function (out, rule) {\n      if (!axe.utils.ruleShouldRun(rule, context, options)) {\n        return out;\n      }\n\n      if (rule.preload) {\n        out.later.push(rule);\n        return out;\n      }\n\n      out.now.push(rule);\n      return out;\n    }, base);\n    return splitRules;\n  }\n\n  function getDefferedRule(rule, context, options) {\n    if (options.performanceTimer) {\n      axe.utils.performanceTimer.mark('mark_rule_start_' + rule.id);\n    }\n\n    return function (resolve, reject) {\n      rule.run(context, options, function (ruleResult) {\n        resolve(ruleResult);\n      }, function (err) {\n        if (!options.debug) {\n          var errResult = Object.assign(new RuleResult(rule), {\n            result: axe.constants.CANTTELL,\n            description: 'An error occured while running this rule',\n            message: err.message,\n            stack: err.stack,\n            error: err,\n            errorNode: err.errorNode\n          });\n          resolve(errResult);\n        } else {\n          reject(err);\n        }\n      });\n    };\n  }\n\n  Audit.prototype.run = function (context, options, resolve, reject) {\n    'use strict';\n\n    this.normalizeOptions(options);\n    axe._selectCache = [];\n    var allRulesToRun = getRulesToRun(this.rules, context, options);\n    var runNowRules = allRulesToRun.now;\n    var runLaterRules = allRulesToRun.later;\n    var nowRulesQueue = axe.utils.queue();\n    runNowRules.forEach(function (rule) {\n      nowRulesQueue.defer(getDefferedRule(rule, context, options));\n    });\n    var preloaderQueue = axe.utils.queue();\n\n    if (runLaterRules.length) {\n      preloaderQueue.defer(function (resolve) {\n        axe.utils.preload(options).then(function (assets) {\n          return resolve(assets);\n        })['catch'](function (err) {\n          console.warn('Couldn\\'t load preload assets: ', err);\n          resolve(undefined);\n        });\n      });\n    }\n\n    var queueForNowRulesAndPreloader = axe.utils.queue();\n    queueForNowRulesAndPreloader.defer(nowRulesQueue);\n    queueForNowRulesAndPreloader.defer(preloaderQueue);\n    queueForNowRulesAndPreloader.then(function (nowRulesAndPreloaderResults) {\n      var assetsFromQueue = nowRulesAndPreloaderResults.pop();\n\n      if (assetsFromQueue && assetsFromQueue.length) {\n        var assets = assetsFromQueue[0];\n\n        if (assets) {\n          context = _extends({}, context, {}, assets);\n        }\n      }\n\n      var nowRulesResults = nowRulesAndPreloaderResults[0];\n\n      if (!runLaterRules.length) {\n        axe._selectCache = undefined;\n        resolve(nowRulesResults.filter(function (result) {\n          return !!result;\n        }));\n        return;\n      }\n\n      var laterRulesQueue = axe.utils.queue();\n      runLaterRules.forEach(function (rule) {\n        var deferredRule = getDefferedRule(rule, context, options);\n        laterRulesQueue.defer(deferredRule);\n      });\n      laterRulesQueue.then(function (laterRuleResults) {\n        axe._selectCache = undefined;\n        resolve(nowRulesResults.concat(laterRuleResults).filter(function (result) {\n          return !!result;\n        }));\n      })['catch'](reject);\n    })['catch'](reject);\n  };\n\n  Audit.prototype.after = function (results, options) {\n    'use strict';\n\n    var rules = this.rules;\n    return results.map(function (ruleResult) {\n      var rule = axe.utils.findBy(rules, 'id', ruleResult.id);\n\n      if (!rule) {\n        throw new Error('Result for unknown rule. You may be running mismatch axe-core versions');\n      }\n\n      return rule.after(ruleResult, options);\n    });\n  };\n\n  Audit.prototype.getRule = function (ruleId) {\n    return this.rules.find(function (rule) {\n      return rule.id === ruleId;\n    });\n  };\n\n  Audit.prototype.normalizeOptions = function (options) {\n    'use strict';\n\n    var audit = this;\n    var tags = [];\n    var ruleIds = [];\n    audit.rules.forEach(function (rule) {\n      ruleIds.push(rule.id);\n      rule.tags.forEach(function (tag) {\n        if (!tags.includes(tag)) {\n          tags.push(tag);\n        }\n      });\n    });\n\n    if (_typeof(options.runOnly) === 'object') {\n      if (Array.isArray(options.runOnly)) {\n        var hasTag = options.runOnly.find(function (value) {\n          return tags.includes(value);\n        });\n        var hasRule = options.runOnly.find(function (value) {\n          return ruleIds.includes(value);\n        });\n\n        if (hasTag && hasRule) {\n          throw new Error('runOnly cannot be both rules and tags');\n        }\n\n        if (hasRule) {\n          options.runOnly = {\n            type: 'rule',\n            values: options.runOnly\n          };\n        } else {\n          options.runOnly = {\n            type: 'tag',\n            values: options.runOnly\n          };\n        }\n      }\n\n      var only = options.runOnly;\n\n      if (only.value && !only.values) {\n        only.values = only.value;\n        delete only.value;\n      }\n\n      if (!Array.isArray(only.values) || only.values.length === 0) {\n        throw new Error('runOnly.values must be a non-empty array');\n      }\n\n      if (['rule', 'rules'].includes(only.type)) {\n        only.type = 'rule';\n        only.values.forEach(function (ruleId) {\n          if (!ruleIds.includes(ruleId)) {\n            throw new Error('unknown rule `' + ruleId + '` in options.runOnly');\n          }\n        });\n      } else if (['tag', 'tags', undefined].includes(only.type)) {\n        only.type = 'tag';\n        var unmatchedTags = only.values.filter(function (tag) {\n          return !tags.includes(tag);\n        });\n\n        if (unmatchedTags.length !== 0) {\n          axe.log('Could not find tags `' + unmatchedTags.join('`, `') + '`');\n        }\n      } else {\n        throw new Error('Unknown runOnly type \\''.concat(only.type, '\\''));\n      }\n    }\n\n    if (_typeof(options.rules) === 'object') {\n      Object.keys(options.rules).forEach(function (ruleId) {\n        if (!ruleIds.includes(ruleId)) {\n          throw new Error('unknown rule `' + ruleId + '` in options.rules');\n        }\n      });\n    }\n\n    return options;\n  };\n\n  Audit.prototype.setBranding = function (branding) {\n    'use strict';\n\n    var previous = {\n      brand: this.brand,\n      application: this.application\n    };\n\n    if (branding && branding.hasOwnProperty('brand') && branding.brand && typeof branding.brand === 'string') {\n      this.brand = branding.brand;\n    }\n\n    if (branding && branding.hasOwnProperty('application') && branding.application && typeof branding.application === 'string') {\n      this.application = branding.application;\n    }\n\n    this._constructHelpUrls(previous);\n  };\n\n  function getHelpUrl(_ref, ruleId, version) {\n    var brand = _ref.brand,\n        application = _ref.application,\n        lang = _ref.lang;\n    return axe.constants.helpUrlBase + brand + '/' + (version || axe.version.substring(0, axe.version.lastIndexOf('.'))) + '/' + ruleId + '?application=' + encodeURIComponent(application) + (lang && lang !== 'en' ? '&lang=' + encodeURIComponent(lang) : '');\n  }\n\n  Audit.prototype._constructHelpUrls = function () {\n    var _this = this;\n\n    var previous = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n    var version = (axe.version.match(/^[1-9][0-9]*\\.[0-9]+/) || ['x.y'])[0];\n    this.rules.forEach(function (rule) {\n      if (!_this.data.rules[rule.id]) {\n        _this.data.rules[rule.id] = {};\n      }\n\n      var metaData = _this.data.rules[rule.id];\n\n      if (typeof metaData.helpUrl !== 'string' || previous && metaData.helpUrl === getHelpUrl(previous, rule.id, version)) {\n        metaData.helpUrl = getHelpUrl(_this, rule.id, version);\n      }\n    });\n  };\n\n  Audit.prototype.resetRulesAndChecks = function () {\n    'use strict';\n\n    this._init();\n\n    this._resetLocale();\n  };\n\n  'use strict';\n\n  (function () {\n    'use strict';\n\n    var _cache = {};\n    var cache = {\n      set: function set(key, value) {\n        _cache[key] = value;\n      },\n      get: function get(key) {\n        return _cache[key];\n      },\n      clear: function clear() {\n        _cache = {};\n      }\n    };\n    axe._cache = cache;\n  })();\n\n  'use strict';\n\n  function CheckResult(check) {\n    'use strict';\n\n    this.id = check.id;\n    this.data = null;\n    this.relatedNodes = [];\n    this.result = null;\n  }\n\n  'use strict';\n\n  function createExecutionContext(spec) {\n    'use strict';\n\n    if (typeof spec === 'string') {\n      return new Function('return ' + spec + ';')();\n    }\n\n    return spec;\n  }\n\n  function Check(spec) {\n    if (spec) {\n      this.id = spec.id;\n      this.configure(spec);\n    }\n  }\n\n  Check.prototype.enabled = true;\n\n  Check.prototype.run = function (node, options, context, resolve, reject) {\n    'use strict';\n\n    options = options || {};\n    var enabled = options.hasOwnProperty('enabled') ? options.enabled : this.enabled,\n        checkOptions = options.options || this.options;\n\n    if (enabled) {\n      var checkResult = new CheckResult(this);\n      var checkHelper = axe.utils.checkHelper(checkResult, options, resolve, reject);\n      var result;\n\n      try {\n        result = this.evaluate.call(checkHelper, node.actualNode, checkOptions, node, context);\n      } catch (e) {\n        if (node && node.actualNode) {\n          e.errorNode = new DqElement(node.actualNode).toJSON();\n        }\n\n        reject(e);\n        return;\n      }\n\n      if (!checkHelper.isAsync) {\n        checkResult.result = result;\n        resolve(checkResult);\n      }\n    } else {\n      resolve(null);\n    }\n  };\n\n  Check.prototype.runSync = function (node, options, context) {\n    options = options || {};\n    var _options = options,\n        _options$enabled = _options.enabled,\n        enabled = _options$enabled === void 0 ? this.enabled : _options$enabled;\n\n    if (!enabled) {\n      return null;\n    }\n\n    var checkOptions = options.options || this.options;\n    var checkResult = new CheckResult(this);\n    var checkHelper = axe.utils.checkHelper(checkResult, options);\n\n    checkHelper.async = function () {\n      throw new Error('Cannot run async check while in a synchronous run');\n    };\n\n    var result;\n\n    try {\n      result = this.evaluate.call(checkHelper, node.actualNode, checkOptions, node, context);\n    } catch (e) {\n      if (node && node.actualNode) {\n        e.errorNode = new DqElement(node.actualNode).toJSON();\n      }\n\n      throw e;\n    }\n\n    checkResult.result = result;\n    return checkResult;\n  };\n\n  Check.prototype.configure = function (spec) {\n    var _this = this;\n\n    ['options', 'enabled'].filter(function (prop) {\n      return spec.hasOwnProperty(prop);\n    }).forEach(function (prop) {\n      return _this[prop] = spec[prop];\n    });\n    ['evaluate', 'after'].filter(function (prop) {\n      return spec.hasOwnProperty(prop);\n    }).forEach(function (prop) {\n      return _this[prop] = createExecutionContext(spec[prop]);\n    });\n  };\n\n  'use strict';\n\n  function _typeof(obj) {\n    '@babel/helpers - typeof';\n\n    if (typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol') {\n      _typeof = function _typeof(obj) {\n        return typeof obj;\n      };\n    } else {\n      _typeof = function _typeof(obj) {\n        return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj;\n      };\n    }\n\n    return _typeof(obj);\n  }\n\n  function pushUniqueFrame(collection, frame) {\n    'use strict';\n\n    if (axe.utils.isHidden(frame)) {\n      return;\n    }\n\n    var fr = axe.utils.findBy(collection, 'node', frame);\n\n    if (!fr) {\n      collection.push({\n        node: frame,\n        include: [],\n        exclude: []\n      });\n    }\n  }\n\n  function pushUniqueFrameSelector(context, type, selectorArray) {\n    'use strict';\n\n    context.frames = context.frames || [];\n    var result, frame;\n    var frames = document.querySelectorAll(selectorArray.shift());\n\n    frameloop: for (var i = 0, l = frames.length; i < l; i++) {\n      frame = frames[i];\n\n      for (var j = 0, l2 = context.frames.length; j < l2; j++) {\n        if (context.frames[j].node === frame) {\n          context.frames[j][type].push(selectorArray);\n          break frameloop;\n        }\n      }\n\n      result = {\n        node: frame,\n        include: [],\n        exclude: []\n      };\n\n      if (selectorArray) {\n        result[type].push(selectorArray);\n      }\n\n      context.frames.push(result);\n    }\n  }\n\n  function normalizeContext(context) {\n    'use strict';\n\n    if (context && _typeof(context) === 'object' || context instanceof NodeList) {\n      if (context instanceof Node) {\n        return {\n          include: [context],\n          exclude: []\n        };\n      }\n\n      if (context.hasOwnProperty('include') || context.hasOwnProperty('exclude')) {\n        return {\n          include: context.include && +context.include.length ? context.include : [document],\n          exclude: context.exclude || []\n        };\n      }\n\n      if (context.length === +context.length) {\n        return {\n          include: context,\n          exclude: []\n        };\n      }\n    }\n\n    if (typeof context === 'string') {\n      return {\n        include: [context],\n        exclude: []\n      };\n    }\n\n    return {\n      include: [document],\n      exclude: []\n    };\n  }\n\n  function parseSelectorArray(context, type) {\n    'use strict';\n\n    var item,\n        result = [],\n        nodeList;\n\n    for (var i = 0, l = context[type].length; i < l; i++) {\n      item = context[type][i];\n\n      if (typeof item === 'string') {\n        nodeList = Array.from(document.querySelectorAll(item));\n        result = result.concat(nodeList.map(function (node) {\n          return axe.utils.getNodeFromTree(node);\n        }));\n        break;\n      } else if (item && item.length && !(item instanceof Node)) {\n        if (item.length > 1) {\n          pushUniqueFrameSelector(context, type, item);\n        } else {\n          nodeList = Array.from(document.querySelectorAll(item[0]));\n          result = result.concat(nodeList.map(function (node) {\n            return axe.utils.getNodeFromTree(node);\n          }));\n        }\n      } else if (item instanceof Node) {\n        if (item.documentElement instanceof Node) {\n          result.push(context.flatTree[0]);\n        } else {\n          result.push(axe.utils.getNodeFromTree(item));\n        }\n      }\n    }\n\n    return result.filter(function (r) {\n      return r;\n    });\n  }\n\n  function validateContext(context) {\n    'use strict';\n\n    if (context.include.length === 0) {\n      if (context.frames.length === 0) {\n        var env = axe.utils.respondable.isInFrame() ? 'frame' : 'page';\n        return new Error('No elements found for include in ' + env + ' Context');\n      }\n\n      context.frames.forEach(function (frame, i) {\n        if (frame.include.length === 0) {\n          return new Error('No elements found for include in Context of frame ' + i);\n        }\n      });\n    }\n  }\n\n  function getRootNode(_ref) {\n    var include = _ref.include,\n        exclude = _ref.exclude;\n    var selectors = Array.from(include).concat(Array.from(exclude));\n\n    for (var i = 0; i < selectors.length; ++i) {\n      var item = selectors[i];\n\n      if (item instanceof Element) {\n        return item.ownerDocument.documentElement;\n      }\n\n      if (item instanceof Document) {\n        return item.documentElement;\n      }\n    }\n\n    return document.documentElement;\n  }\n\n  function Context(spec) {\n    'use strict';\n\n    var _this = this;\n\n    this.frames = [];\n    this.initiator = spec && typeof spec.initiator === 'boolean' ? spec.initiator : true;\n    this.page = false;\n    spec = normalizeContext(spec);\n    this.flatTree = axe.utils.getFlattenedTree(getRootNode(spec));\n    this.exclude = spec.exclude;\n    this.include = spec.include;\n    this.include = parseSelectorArray(this, 'include');\n    this.exclude = parseSelectorArray(this, 'exclude');\n    axe.utils.select('frame, iframe', this).forEach(function (frame) {\n      if (isNodeInContext(frame, _this)) {\n        pushUniqueFrame(_this.frames, frame.actualNode);\n      }\n    });\n\n    if (this.include.length === 1 && this.include[0].actualNode === document.documentElement) {\n      this.page = true;\n    }\n\n    var err = validateContext(this);\n\n    if (err instanceof Error) {\n      throw err;\n    }\n\n    if (!Array.isArray(this.include)) {\n      this.include = Array.from(this.include);\n    }\n\n    this.include.sort(axe.utils.nodeSorter);\n  }\n\n  'use strict';\n\n  function RuleResult(rule) {\n    'use strict';\n\n    this.id = rule.id;\n    this.result = axe.constants.NA;\n    this.pageLevel = rule.pageLevel;\n    this.impact = null;\n    this.nodes = [];\n  }\n\n  'use strict';\n\n  function Rule(spec, parentAudit) {\n    'use strict';\n\n    this._audit = parentAudit;\n    this.id = spec.id;\n    this.selector = spec.selector || '*';\n    this.excludeHidden = typeof spec.excludeHidden === 'boolean' ? spec.excludeHidden : true;\n    this.enabled = typeof spec.enabled === 'boolean' ? spec.enabled : true;\n    this.pageLevel = typeof spec.pageLevel === 'boolean' ? spec.pageLevel : false;\n    this.any = spec.any || [];\n    this.all = spec.all || [];\n    this.none = spec.none || [];\n    this.tags = spec.tags || [];\n    this.preload = spec.preload ? true : false;\n\n    if (spec.matches) {\n      this.matches = createExecutionContext(spec.matches);\n    }\n  }\n\n  Rule.prototype.matches = function () {\n    'use strict';\n\n    return true;\n  };\n\n  Rule.prototype.gather = function (context) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var markStart = 'mark_gather_start_' + this.id;\n    var markEnd = 'mark_gather_end_' + this.id;\n    var markHiddenStart = 'mark_isHidden_start_' + this.id;\n    var markHiddenEnd = 'mark_isHidden_end_' + this.id;\n\n    if (options.performanceTimer) {\n      axe.utils.performanceTimer.mark(markStart);\n    }\n\n    var elements = axe.utils.select(this.selector, context);\n\n    if (this.excludeHidden) {\n      if (options.performanceTimer) {\n        axe.utils.performanceTimer.mark(markHiddenStart);\n      }\n\n      elements = elements.filter(function (element) {\n        return !axe.utils.isHidden(element.actualNode);\n      });\n\n      if (options.performanceTimer) {\n        axe.utils.performanceTimer.mark(markHiddenEnd);\n        axe.utils.performanceTimer.measure('rule_' + this.id + '#gather_axe.utils.isHidden', markHiddenStart, markHiddenEnd);\n      }\n    }\n\n    if (options.performanceTimer) {\n      axe.utils.performanceTimer.mark(markEnd);\n      axe.utils.performanceTimer.measure('rule_' + this.id + '#gather', markStart, markEnd);\n    }\n\n    return elements;\n  };\n\n  Rule.prototype.runChecks = function (type, node, options, context, resolve, reject) {\n    'use strict';\n\n    var self = this;\n    var checkQueue = axe.utils.queue();\n    this[type].forEach(function (c) {\n      var check = self._audit.checks[c.id || c];\n      var option = axe.utils.getCheckOption(check, self.id, options);\n      checkQueue.defer(function (res, rej) {\n        check.run(node, option, context, res, rej);\n      });\n    });\n    checkQueue.then(function (results) {\n      results = results.filter(function (check) {\n        return check;\n      });\n      resolve({\n        type: type,\n        results: results\n      });\n    })['catch'](reject);\n  };\n\n  Rule.prototype.runChecksSync = function (type, node, options, context) {\n    'use strict';\n\n    var self = this;\n    var results = [];\n    this[type].forEach(function (c) {\n      var check = self._audit.checks[c.id || c];\n      var option = axe.utils.getCheckOption(check, self.id, options);\n      results.push(check.runSync(node, option, context));\n    });\n    results = results.filter(function (check) {\n      return check;\n    });\n    return {\n      type: type,\n      results: results\n    };\n  };\n\n  Rule.prototype.run = function (context) {\n    var _this = this;\n\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var resolve = arguments.length > 2 ? arguments[2] : undefined;\n    var reject = arguments.length > 3 ? arguments[3] : undefined;\n\n    if (options.performanceTimer) {\n      this._trackPerformance();\n    }\n\n    var q = axe.utils.queue();\n    var ruleResult = new RuleResult(this);\n    var nodes;\n\n    try {\n      nodes = this.gatherAndMatchNodes(context, options);\n    } catch (error) {\n      reject(new SupportError({\n        cause: error,\n        ruleId: this.id\n      }));\n      return;\n    }\n\n    if (options.performanceTimer) {\n      this._logGatherPerformance(nodes);\n    }\n\n    nodes.forEach(function (node) {\n      q.defer(function (resolveNode, rejectNode) {\n        var checkQueue = axe.utils.queue();\n        ['any', 'all', 'none'].forEach(function (type) {\n          checkQueue.defer(function (res, rej) {\n            _this.runChecks(type, node, options, context, res, rej);\n          });\n        });\n        checkQueue.then(function (results) {\n          var result = getResult(results);\n\n          if (result) {\n            result.node = new axe.utils.DqElement(node.actualNode, options);\n            ruleResult.nodes.push(result);\n          }\n\n          resolveNode();\n        })['catch'](function (err) {\n          return rejectNode(err);\n        });\n      });\n    });\n    q.defer(function (resolve) {\n      return setTimeout(resolve, 0);\n    });\n\n    if (options.performanceTimer) {\n      this._logRulePerformance();\n    }\n\n    q.then(function () {\n      return resolve(ruleResult);\n    })['catch'](function (error) {\n      return reject(error);\n    });\n  };\n\n  Rule.prototype.runSync = function (context) {\n    var _this2 = this;\n\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    if (options.performanceTimer) {\n      this._trackPerformance();\n    }\n\n    var ruleResult = new RuleResult(this);\n    var nodes;\n\n    try {\n      nodes = this.gatherAndMatchNodes(context, options);\n    } catch (error) {\n      throw new SupportError({\n        cause: error,\n        ruleId: this.id\n      });\n    }\n\n    if (options.performanceTimer) {\n      this._logGatherPerformance(nodes);\n    }\n\n    nodes.forEach(function (node) {\n      var results = [];\n      ['any', 'all', 'none'].forEach(function (type) {\n        results.push(_this2.runChecksSync(type, node, options, context));\n      });\n      var result = getResult(results);\n\n      if (result) {\n        result.node = node.actualNode ? new axe.utils.DqElement(node.actualNode, options) : null;\n        ruleResult.nodes.push(result);\n      }\n    });\n\n    if (options.performanceTimer) {\n      this._logRulePerformance();\n    }\n\n    return ruleResult;\n  };\n\n  Rule.prototype._trackPerformance = function () {\n    this._markStart = 'mark_rule_start_' + this.id;\n    this._markEnd = 'mark_rule_end_' + this.id;\n    this._markChecksStart = 'mark_runchecks_start_' + this.id;\n    this._markChecksEnd = 'mark_runchecks_end_' + this.id;\n  };\n\n  Rule.prototype._logGatherPerformance = function (nodes) {\n    axe.log('gather (', nodes.length, '):', axe.utils.performanceTimer.timeElapsed() + 'ms');\n    axe.utils.performanceTimer.mark(this._markChecksStart);\n  };\n\n  Rule.prototype._logRulePerformance = function () {\n    axe.utils.performanceTimer.mark(this._markChecksEnd);\n    axe.utils.performanceTimer.mark(this._markEnd);\n    axe.utils.performanceTimer.measure('runchecks_' + this.id, this._markChecksStart, this._markChecksEnd);\n    axe.utils.performanceTimer.measure('rule_' + this.id, this._markStart, this._markEnd);\n  };\n\n  function getResult(results) {\n    if (results.length) {\n      var hasResults = false,\n          result = {};\n      results.forEach(function (r) {\n        var res = r.results.filter(function (result) {\n          return result;\n        });\n        result[r.type] = res;\n\n        if (res.length) {\n          hasResults = true;\n        }\n      });\n\n      if (hasResults) {\n        return result;\n      }\n\n      return null;\n    }\n  }\n\n  Rule.prototype.gatherAndMatchNodes = function (context, options) {\n    var _this3 = this;\n\n    var markMatchesStart = 'mark_matches_start_' + this.id;\n    var markMatchesEnd = 'mark_matches_end_' + this.id;\n    var nodes = this.gather(context, options);\n\n    if (options.performanceTimer) {\n      axe.utils.performanceTimer.mark(markMatchesStart);\n    }\n\n    nodes = nodes.filter(function (node) {\n      return _this3.matches(node.actualNode, node, context);\n    });\n\n    if (options.performanceTimer) {\n      axe.utils.performanceTimer.mark(markMatchesEnd);\n      axe.utils.performanceTimer.measure('rule_' + this.id + '#matches', markMatchesStart, markMatchesEnd);\n    }\n\n    return nodes;\n  };\n\n  function findAfterChecks(rule) {\n    'use strict';\n\n    return axe.utils.getAllChecks(rule).map(function (c) {\n      var check = rule._audit.checks[c.id || c];\n      return check && typeof check.after === 'function' ? check : null;\n    }).filter(Boolean);\n  }\n\n  function findCheckResults(nodes, checkID) {\n    'use strict';\n\n    var checkResults = [];\n    nodes.forEach(function (nodeResult) {\n      var checks = axe.utils.getAllChecks(nodeResult);\n      checks.forEach(function (checkResult) {\n        if (checkResult.id === checkID) {\n          checkResults.push(checkResult);\n        }\n      });\n    });\n    return checkResults;\n  }\n\n  function filterChecks(checks) {\n    'use strict';\n\n    return checks.filter(function (check) {\n      return check.filtered !== true;\n    });\n  }\n\n  function sanitizeNodes(result) {\n    'use strict';\n\n    var checkTypes = ['any', 'all', 'none'];\n    var nodes = result.nodes.filter(function (detail) {\n      var length = 0;\n      checkTypes.forEach(function (type) {\n        detail[type] = filterChecks(detail[type]);\n        length += detail[type].length;\n      });\n      return length > 0;\n    });\n\n    if (result.pageLevel && nodes.length) {\n      nodes = [nodes.reduce(function (a, b) {\n        if (a) {\n          checkTypes.forEach(function (type) {\n            a[type].push.apply(a[type], b[type]);\n          });\n          return a;\n        }\n      })];\n    }\n\n    return nodes;\n  }\n\n  Rule.prototype.after = function (result, options) {\n    'use strict';\n\n    var afterChecks = findAfterChecks(this);\n    var ruleID = this.id;\n    afterChecks.forEach(function (check) {\n      var beforeResults = findCheckResults(result.nodes, check.id);\n      var option = axe.utils.getCheckOption(check, ruleID, options);\n      var afterResults = check.after(beforeResults, option);\n      beforeResults.forEach(function (item) {\n        if (afterResults.indexOf(item) === -1) {\n          item.filtered = true;\n        }\n      });\n    });\n    result.nodes = sanitizeNodes(result);\n    return result;\n  };\n\n  Rule.prototype.configure = function (spec) {\n    'use strict';\n\n    if (spec.hasOwnProperty('selector')) {\n      this.selector = spec.selector;\n    }\n\n    if (spec.hasOwnProperty('excludeHidden')) {\n      this.excludeHidden = typeof spec.excludeHidden === 'boolean' ? spec.excludeHidden : true;\n    }\n\n    if (spec.hasOwnProperty('enabled')) {\n      this.enabled = typeof spec.enabled === 'boolean' ? spec.enabled : true;\n    }\n\n    if (spec.hasOwnProperty('pageLevel')) {\n      this.pageLevel = typeof spec.pageLevel === 'boolean' ? spec.pageLevel : false;\n    }\n\n    if (spec.hasOwnProperty('any')) {\n      this.any = spec.any;\n    }\n\n    if (spec.hasOwnProperty('all')) {\n      this.all = spec.all;\n    }\n\n    if (spec.hasOwnProperty('none')) {\n      this.none = spec.none;\n    }\n\n    if (spec.hasOwnProperty('tags')) {\n      this.tags = spec.tags;\n    }\n\n    if (spec.hasOwnProperty('matches')) {\n      if (typeof spec.matches === 'string') {\n        this.matches = new Function('return ' + spec.matches + ';')();\n      } else {\n        this.matches = spec.matches;\n      }\n    }\n  };\n\n  'use strict';\n\n  function _classCallCheck(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError('Cannot call a class as a function');\n    }\n  }\n\n  function _defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n\n      if ('value' in descriptor) {\n        descriptor.writable = true;\n      }\n\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  function _createClass(Constructor, protoProps, staticProps) {\n    if (protoProps) {\n      _defineProperties(Constructor.prototype, protoProps);\n    }\n\n    if (staticProps) {\n      _defineProperties(Constructor, staticProps);\n    }\n\n    return Constructor;\n  }\n\n  var whitespaceRegex = /[\\t\\r\\n\\f]/g;\n\n  var AbstractVirtualNode = function () {\n    function AbstractVirtualNode() {\n      _classCallCheck(this, AbstractVirtualNode);\n\n      this.children = [];\n      this.parent = null;\n    }\n\n    _createClass(AbstractVirtualNode, [{\n      key: 'attr',\n      value: function attr() {\n        throw new Error('VirtualNode class must have a \"attr\" function');\n      }\n    }, {\n      key: 'hasAttr',\n      value: function hasAttr() {\n        throw new Error('VirtualNode class must have a \"hasAttr\" function');\n      }\n    }, {\n      key: 'hasClass',\n      value: function hasClass(className) {\n        var classAttr = this.attr('class');\n\n        if (!classAttr) {\n          return false;\n        }\n\n        var selector = ' ' + className + ' ';\n        return (' ' + classAttr + ' ').replace(whitespaceRegex, ' ').indexOf(selector) >= 0;\n      }\n    }, {\n      key: 'props',\n      get: function get() {\n        throw new Error('VirtualNode class must have a \"props\" object consisting ' + 'of \"nodeType\" and \"nodeName\" properties');\n      }\n    }]);\n\n    return AbstractVirtualNode;\n  }();\n\n  axe.AbstractVirtualNode = AbstractVirtualNode;\n  'use strict';\n\n  function _extends() {\n    _extends = Object.assign || function (target) {\n      for (var i = 1; i < arguments.length; i++) {\n        var source = arguments[i];\n\n        for (var key in source) {\n          if (Object.prototype.hasOwnProperty.call(source, key)) {\n            target[key] = source[key];\n          }\n        }\n      }\n\n      return target;\n    };\n\n    return _extends.apply(this, arguments);\n  }\n\n  function _typeof(obj) {\n    '@babel/helpers - typeof';\n\n    if (typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol') {\n      _typeof = function _typeof(obj) {\n        return typeof obj;\n      };\n    } else {\n      _typeof = function _typeof(obj) {\n        return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj;\n      };\n    }\n\n    return _typeof(obj);\n  }\n\n  function _classCallCheck(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError('Cannot call a class as a function');\n    }\n  }\n\n  function _defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n\n      if ('value' in descriptor) {\n        descriptor.writable = true;\n      }\n\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  function _createClass(Constructor, protoProps, staticProps) {\n    if (protoProps) {\n      _defineProperties(Constructor.prototype, protoProps);\n    }\n\n    if (staticProps) {\n      _defineProperties(Constructor, staticProps);\n    }\n\n    return Constructor;\n  }\n\n  function _possibleConstructorReturn(self, call) {\n    if (call && (_typeof(call) === 'object' || typeof call === 'function')) {\n      return call;\n    }\n\n    return _assertThisInitialized(self);\n  }\n\n  function _assertThisInitialized(self) {\n    if (self === void 0) {\n      throw new ReferenceError('this hasn\\'t been initialised - super() hasn\\'t been called');\n    }\n\n    return self;\n  }\n\n  function _getPrototypeOf(o) {\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n      return o.__proto__ || Object.getPrototypeOf(o);\n    };\n    return _getPrototypeOf(o);\n  }\n\n  function _inherits(subClass, superClass) {\n    if (typeof superClass !== 'function' && superClass !== null) {\n      throw new TypeError('Super expression must either be null or a function');\n    }\n\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\n      constructor: {\n        value: subClass,\n        writable: true,\n        configurable: true\n      }\n    });\n\n    if (superClass) {\n      _setPrototypeOf(subClass, superClass);\n    }\n  }\n\n  function _setPrototypeOf(o, p) {\n    _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n      o.__proto__ = p;\n      return o;\n    };\n\n    return _setPrototypeOf(o, p);\n  }\n\n  var SerialVirtualNode = function (_axe$AbstractVirtualN) {\n    _inherits(SerialVirtualNode, _axe$AbstractVirtualN);\n\n    function SerialVirtualNode(serialNode) {\n      var _this;\n\n      _classCallCheck(this, SerialVirtualNode);\n\n      _this = _possibleConstructorReturn(this, _getPrototypeOf(SerialVirtualNode).call(this));\n      _this._props = normaliseProps(serialNode);\n      _this._attrs = normaliseAttrs(serialNode);\n      return _this;\n    }\n\n    _createClass(SerialVirtualNode, [{\n      key: 'attr',\n      value: function attr(attrName) {\n        return this._attrs[attrName] || null;\n      }\n    }, {\n      key: 'hasAttr',\n      value: function hasAttr(attrName) {\n        return this._attrs[attrName] !== undefined;\n      }\n    }, {\n      key: 'props',\n      get: function get() {\n        return this._props;\n      }\n    }]);\n\n    return SerialVirtualNode;\n  }(axe.AbstractVirtualNode);\n\n  function normaliseProps(serialNode) {\n    var nodeName = serialNode.nodeName,\n        _serialNode$nodeType = serialNode.nodeType,\n        nodeType = _serialNode$nodeType === void 0 ? 1 : _serialNode$nodeType;\n    axe.utils.assert(nodeType === 1, 'nodeType has to be undefined or 1, got \\''.concat(nodeType, '\\''));\n    axe.utils.assert(typeof nodeName === 'string', 'nodeName has to be a string, got \\''.concat(nodeName, '\\''));\n\n    var props = _extends({}, serialNode, {\n      nodeType: nodeType,\n      nodeName: nodeName.toLowerCase()\n    });\n\n    delete props.attributes;\n    return Object.freeze(props);\n  }\n\n  function normaliseAttrs(_ref) {\n    var _ref$attributes = _ref.attributes,\n        attributes = _ref$attributes === void 0 ? {} : _ref$attributes;\n    var attrMap = {\n      htmlFor: 'for',\n      className: 'class'\n    };\n    return Object.keys(attributes).reduce(function (attrs, attrName) {\n      var value = attributes[attrName];\n      axe.utils.assert(_typeof(value) !== 'object' || value === null, 'expects attributes not to be an object, \\''.concat(attrName, '\\' was'));\n\n      if (value !== undefined) {\n        var mappedName = attrMap[attrName] || attrName;\n        attrs[mappedName] = value !== null ? String(value) : null;\n      }\n\n      return attrs;\n    }, {});\n  }\n\n  axe.SerialVirtualNode = SerialVirtualNode;\n  'use strict';\n\n  function _typeof(obj) {\n    '@babel/helpers - typeof';\n\n    if (typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol') {\n      _typeof = function _typeof(obj) {\n        return typeof obj;\n      };\n    } else {\n      _typeof = function _typeof(obj) {\n        return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj;\n      };\n    }\n\n    return _typeof(obj);\n  }\n\n  function _classCallCheck(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError('Cannot call a class as a function');\n    }\n  }\n\n  function _defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n\n      if ('value' in descriptor) {\n        descriptor.writable = true;\n      }\n\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  function _createClass(Constructor, protoProps, staticProps) {\n    if (protoProps) {\n      _defineProperties(Constructor.prototype, protoProps);\n    }\n\n    if (staticProps) {\n      _defineProperties(Constructor, staticProps);\n    }\n\n    return Constructor;\n  }\n\n  function _possibleConstructorReturn(self, call) {\n    if (call && (_typeof(call) === 'object' || typeof call === 'function')) {\n      return call;\n    }\n\n    return _assertThisInitialized(self);\n  }\n\n  function _getPrototypeOf(o) {\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n      return o.__proto__ || Object.getPrototypeOf(o);\n    };\n    return _getPrototypeOf(o);\n  }\n\n  function _assertThisInitialized(self) {\n    if (self === void 0) {\n      throw new ReferenceError('this hasn\\'t been initialised - super() hasn\\'t been called');\n    }\n\n    return self;\n  }\n\n  function _inherits(subClass, superClass) {\n    if (typeof superClass !== 'function' && superClass !== null) {\n      throw new TypeError('Super expression must either be null or a function');\n    }\n\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\n      constructor: {\n        value: subClass,\n        writable: true,\n        configurable: true\n      }\n    });\n\n    if (superClass) {\n      _setPrototypeOf(subClass, superClass);\n    }\n  }\n\n  function _setPrototypeOf(o, p) {\n    _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n      o.__proto__ = p;\n      return o;\n    };\n\n    return _setPrototypeOf(o, p);\n  }\n\n  var isXHTMLGlobal;\n\n  var VirtualNode = function (_axe$AbstractVirtualN) {\n    _inherits(VirtualNode, _axe$AbstractVirtualN);\n\n    function VirtualNode(node, parent, shadowId) {\n      var _this;\n\n      _classCallCheck(this, VirtualNode);\n\n      _this = _possibleConstructorReturn(this, _getPrototypeOf(VirtualNode).call(this));\n      _this.shadowId = shadowId;\n      _this.children = [];\n      _this.actualNode = node;\n      _this.parent = parent;\n      _this._isHidden = null;\n      _this._cache = {};\n\n      if (typeof isXHTMLGlobal === 'undefined') {\n        isXHTMLGlobal = axe.utils.isXHTML(node.ownerDocument);\n      }\n\n      _this._isXHTML = isXHTMLGlobal;\n\n      if (axe._cache.get('nodeMap')) {\n        axe._cache.get('nodeMap').set(node, _assertThisInitialized(_this));\n      }\n\n      return _this;\n    }\n\n    _createClass(VirtualNode, [{\n      key: 'attr',\n      value: function attr(attrName) {\n        if (typeof this.actualNode.getAttribute !== 'function') {\n          return null;\n        }\n\n        return this.actualNode.getAttribute(attrName);\n      }\n    }, {\n      key: 'hasAttr',\n      value: function hasAttr(attrName) {\n        if (typeof this.actualNode.hasAttribute !== 'function') {\n          return false;\n        }\n\n        return this.actualNode.hasAttribute(attrName);\n      }\n    }, {\n      key: 'getComputedStylePropertyValue',\n      value: function getComputedStylePropertyValue(property) {\n        var key = 'computedStyle_' + property;\n\n        if (!this._cache.hasOwnProperty(key)) {\n          if (!this._cache.hasOwnProperty('computedStyle')) {\n            this._cache.computedStyle = window.getComputedStyle(this.actualNode);\n          }\n\n          this._cache[key] = this._cache.computedStyle.getPropertyValue(property);\n        }\n\n        return this._cache[key];\n      }\n    }, {\n      key: 'props',\n      get: function get() {\n        var _this$actualNode = this.actualNode,\n            nodeType = _this$actualNode.nodeType,\n            nodeName = _this$actualNode.nodeName,\n            id = _this$actualNode.id,\n            type = _this$actualNode.type,\n            multiple = _this$actualNode.multiple;\n        return {\n          nodeType: nodeType,\n          nodeName: this._isXHTML ? nodeName : nodeName.toLowerCase(),\n          id: id,\n          type: type,\n          multiple: multiple\n        };\n      }\n    }, {\n      key: 'isFocusable',\n      get: function get() {\n        if (!this._cache.hasOwnProperty('isFocusable')) {\n          this._cache.isFocusable = axe.commons.dom.isFocusable(this.actualNode);\n        }\n\n        return this._cache.isFocusable;\n      }\n    }, {\n      key: 'tabbableElements',\n      get: function get() {\n        if (!this._cache.hasOwnProperty('tabbableElements')) {\n          this._cache.tabbableElements = axe.commons.dom.getTabbableElements(this);\n        }\n\n        return this._cache.tabbableElements;\n      }\n    }, {\n      key: 'clientRects',\n      get: function get() {\n        if (!this._cache.hasOwnProperty('clientRects')) {\n          this._cache.clientRects = Array.from(this.actualNode.getClientRects()).filter(function (rect) {\n            return rect.width > 0;\n          });\n        }\n\n        return this._cache.clientRects;\n      }\n    }, {\n      key: 'boundingClientRect',\n      get: function get() {\n        if (!this._cache.hasOwnProperty('boundingClientRect')) {\n          this._cache.boundingClientRect = this.actualNode.getBoundingClientRect();\n        }\n\n        return this._cache.boundingClientRect;\n      }\n    }]);\n\n    return VirtualNode;\n  }(axe.AbstractVirtualNode);\n\n  axe.VirtualNode = VirtualNode;\n  'use strict';\n\n  (function (axe) {\n    var definitions = [{\n      name: 'NA',\n      value: 'inapplicable',\n      priority: 0,\n      group: 'inapplicable'\n    }, {\n      name: 'PASS',\n      value: 'passed',\n      priority: 1,\n      group: 'passes'\n    }, {\n      name: 'CANTTELL',\n      value: 'cantTell',\n      priority: 2,\n      group: 'incomplete'\n    }, {\n      name: 'FAIL',\n      value: 'failed',\n      priority: 3,\n      group: 'violations'\n    }];\n    var constants = {\n      helpUrlBase: 'https://dequeuniversity.com/rules/',\n      results: [],\n      resultGroups: [],\n      resultGroupMap: {},\n      impact: Object.freeze(['minor', 'moderate', 'serious', 'critical']),\n      preload: Object.freeze({\n        assets: ['cssom', 'media'],\n        timeout: 1e4\n      })\n    };\n    definitions.forEach(function (definition) {\n      var name = definition.name;\n      var value = definition.value;\n      var priority = definition.priority;\n      var group = definition.group;\n      constants[name] = value;\n      constants[name + '_PRIO'] = priority;\n      constants[name + '_GROUP'] = group;\n      constants.results[priority] = value;\n      constants.resultGroups[priority] = group;\n      constants.resultGroupMap[value] = group;\n    });\n    Object.freeze(constants.results);\n    Object.freeze(constants.resultGroups);\n    Object.freeze(constants.resultGroupMap);\n    Object.freeze(constants);\n    Object.defineProperty(axe, 'constants', {\n      value: constants,\n      enumerable: true,\n      configurable: false,\n      writable: false\n    });\n  })(axe);\n\n  'use strict';\n\n  function _typeof(obj) {\n    '@babel/helpers - typeof';\n\n    if (typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol') {\n      _typeof = function _typeof(obj) {\n        return typeof obj;\n      };\n    } else {\n      _typeof = function _typeof(obj) {\n        return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj;\n      };\n    }\n\n    return _typeof(obj);\n  }\n\n  axe.log = function () {\n    'use strict';\n\n    if ((typeof console === 'undefined' ? 'undefined' : _typeof(console)) === 'object' && console.log) {\n      Function.prototype.apply.call(console.log, console, arguments);\n    }\n  };\n\n  'use strict';\n\n  function cleanupPlugins(resolve, reject) {\n    'use strict';\n\n    resolve = resolve || function () {};\n\n    reject = reject || axe.log;\n\n    if (!axe._audit) {\n      throw new Error('No audit configured');\n    }\n\n    var q = axe.utils.queue();\n    var cleanupErrors = [];\n    Object.keys(axe.plugins).forEach(function (key) {\n      q.defer(function (res) {\n        var rej = function rej(err) {\n          cleanupErrors.push(err);\n          res();\n        };\n\n        try {\n          axe.plugins[key].cleanup(res, rej);\n        } catch (err) {\n          rej(err);\n        }\n      });\n    });\n    var flattenedTree = axe.utils.getFlattenedTree(document.body);\n    axe.utils.querySelectorAll(flattenedTree, 'iframe, frame').forEach(function (node) {\n      q.defer(function (res, rej) {\n        return axe.utils.sendCommandToFrame(node.actualNode, {\n          command: 'cleanup-plugin'\n        }, res, rej);\n      });\n    });\n    q.then(function (results) {\n      if (cleanupErrors.length === 0) {\n        resolve(results);\n      } else {\n        reject(cleanupErrors);\n      }\n    })['catch'](reject);\n  }\n\n  axe.cleanup = cleanupPlugins;\n  'use strict';\n\n  function _slicedToArray(arr, i) {\n    return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n  }\n\n  function _nonIterableRest() {\n    throw new TypeError('Invalid attempt to destructure non-iterable instance');\n  }\n\n  function _iterableToArrayLimit(arr, i) {\n    if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === '[object Arguments]')) {\n      return;\n    }\n\n    var _arr = [];\n    var _n = true;\n    var _d = false;\n    var _e = undefined;\n\n    try {\n      for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n        _arr.push(_s.value);\n\n        if (i && _arr.length === i) {\n          break;\n        }\n      }\n    } catch (err) {\n      _d = true;\n      _e = err;\n    } finally {\n      try {\n        if (!_n && _i['return'] != null) {\n          _i['return']();\n        }\n      } finally {\n        if (_d) {\n          throw _e;\n        }\n      }\n    }\n\n    return _arr;\n  }\n\n  function _arrayWithHoles(arr) {\n    if (Array.isArray(arr)) {\n      return arr;\n    }\n  }\n\n  function configureChecksRulesAndBranding(spec) {\n    'use strict';\n\n    var audit;\n    audit = axe._audit;\n\n    if (!audit) {\n      throw new Error('No audit configured');\n    }\n\n    if (spec.axeVersion || spec.ver) {\n      var specVersion = spec.axeVersion || spec.ver;\n\n      if (!/^\\d+\\.\\d+\\.\\d+(-canary)?/.test(specVersion)) {\n        throw new Error('Invalid configured version '.concat(specVersion));\n      }\n\n      var _specVersion$split = specVersion.split('-'),\n          _specVersion$split2 = _slicedToArray(_specVersion$split, 2),\n          version = _specVersion$split2[0],\n          canary = _specVersion$split2[1];\n\n      var _version$split$map = version.split('.').map(Number),\n          _version$split$map2 = _slicedToArray(_version$split$map, 3),\n          major = _version$split$map2[0],\n          minor = _version$split$map2[1],\n          patch = _version$split$map2[2];\n\n      var _axe$version$split = axe.version.split('-'),\n          _axe$version$split2 = _slicedToArray(_axe$version$split, 2),\n          axeVersion = _axe$version$split2[0],\n          axeCanary = _axe$version$split2[1];\n\n      var _axeVersion$split$map = axeVersion.split('.').map(Number),\n          _axeVersion$split$map2 = _slicedToArray(_axeVersion$split$map, 3),\n          axeMajor = _axeVersion$split$map2[0],\n          axeMinor = _axeVersion$split$map2[1],\n          axePatch = _axeVersion$split$map2[2];\n\n      if (major !== axeMajor || axeMinor < minor || axeMinor === minor && axePatch < patch || major === axeMajor && minor === axeMinor && patch === axePatch && canary && canary !== axeCanary) {\n        throw new Error('Configured version '.concat(specVersion, ' is not compatible with current axe version ').concat(axe.version));\n      }\n    }\n\n    if (spec.reporter && (typeof spec.reporter === 'function' || reporters[spec.reporter])) {\n      audit.reporter = spec.reporter;\n    }\n\n    if (spec.checks) {\n      if (!Array.isArray(spec.checks)) {\n        throw new TypeError('Checks property must be an array');\n      }\n\n      spec.checks.forEach(function (check) {\n        if (!check.id) {\n          throw new TypeError('Configured check '.concat(JSON.stringify(check), ' is invalid. Checks must be an object with at least an id property'));\n        }\n\n        audit.addCheck(check);\n      });\n    }\n\n    var modifiedRules = [];\n\n    if (spec.rules) {\n      if (!Array.isArray(spec.rules)) {\n        throw new TypeError('Rules property must be an array');\n      }\n\n      spec.rules.forEach(function (rule) {\n        if (!rule.id) {\n          throw new TypeError('Configured rule '.concat(JSON.stringify(rule), ' is invalid. Rules must be an object with at least an id property'));\n        }\n\n        modifiedRules.push(rule.id);\n        audit.addRule(rule);\n      });\n    }\n\n    if (spec.disableOtherRules) {\n      audit.rules.forEach(function (rule) {\n        if (modifiedRules.includes(rule.id) === false) {\n          rule.enabled = false;\n        }\n      });\n    }\n\n    if (typeof spec.branding !== 'undefined') {\n      audit.setBranding(spec.branding);\n    } else {\n      audit._constructHelpUrls();\n    }\n\n    if (spec.tagExclude) {\n      audit.tagExclude = spec.tagExclude;\n    }\n\n    if (spec.locale) {\n      audit.applyLocale(spec.locale);\n    }\n  }\n\n  axe.configure = configureChecksRulesAndBranding;\n  'use strict';\n\n  axe.getRules = function (tags) {\n    'use strict';\n\n    tags = tags || [];\n    var matchingRules = !tags.length ? axe._audit.rules : axe._audit.rules.filter(function (item) {\n      return !!tags.filter(function (tag) {\n        return item.tags.indexOf(tag) !== -1;\n      }).length;\n    });\n    var ruleData = axe._audit.data.rules || {};\n    return matchingRules.map(function (matchingRule) {\n      var rd = ruleData[matchingRule.id] || {};\n      return {\n        ruleId: matchingRule.id,\n        description: rd.description,\n        help: rd.help,\n        helpUrl: rd.helpUrl,\n        tags: matchingRule.tags\n      };\n    });\n  };\n\n  'use strict';\n\n  function runCommand(data, keepalive, callback) {\n    'use strict';\n\n    var resolve = callback;\n\n    var reject = function reject(err) {\n      if (err instanceof Error === false) {\n        err = new Error(err);\n      }\n\n      callback(err);\n    };\n\n    var context = data && data.context || {};\n\n    if (context.hasOwnProperty('include') && !context.include.length) {\n      context.include = [document];\n    }\n\n    var options = data && data.options || {};\n\n    switch (data.command) {\n      case 'rules':\n        return runRules(context, options, function (results, cleanup) {\n          resolve(results);\n          cleanup();\n        }, reject);\n\n      case 'cleanup-plugin':\n        return cleanupPlugins(resolve, reject);\n\n      default:\n        if (axe._audit && axe._audit.commands && axe._audit.commands[data.command]) {\n          return axe._audit.commands[data.command](data, callback);\n        }\n\n    }\n  }\n\n  axe._load = function (audit) {\n    'use strict';\n\n    axe.utils.respondable.subscribe('axe.ping', function (data, keepalive, respond) {\n      respond({\n        axe: true\n      });\n    });\n    axe.utils.respondable.subscribe('axe.start', runCommand);\n    axe._audit = new Audit(audit);\n  };\n\n  'use strict';\n\n  var axe = axe || {};\n  axe.plugins = {};\n\n  function Plugin(spec) {\n    'use strict';\n\n    this._run = spec.run;\n    this._collect = spec.collect;\n    this._registry = {};\n    spec.commands.forEach(function (command) {\n      axe._audit.registerCommand(command);\n    });\n  }\n\n  Plugin.prototype.run = function () {\n    'use strict';\n\n    return this._run.apply(this, arguments);\n  };\n\n  Plugin.prototype.collect = function () {\n    'use strict';\n\n    return this._collect.apply(this, arguments);\n  };\n\n  Plugin.prototype.cleanup = function (done) {\n    'use strict';\n\n    var q = axe.utils.queue();\n    var that = this;\n    Object.keys(this._registry).forEach(function (key) {\n      q.defer(function (done) {\n        that._registry[key].cleanup(done);\n      });\n    });\n    q.then(function () {\n      done();\n    });\n  };\n\n  Plugin.prototype.add = function (impl) {\n    'use strict';\n\n    this._registry[impl.id] = impl;\n  };\n\n  axe.registerPlugin = function (plugin) {\n    'use strict';\n\n    axe.plugins[plugin.id] = new Plugin(plugin);\n  };\n\n  'use strict';\n\n  var reporters = {};\n  var defaultReporter;\n\n  axe.getReporter = function (reporter) {\n    'use strict';\n\n    if (typeof reporter === 'string' && reporters[reporter]) {\n      return reporters[reporter];\n    }\n\n    if (typeof reporter === 'function') {\n      return reporter;\n    }\n\n    return defaultReporter;\n  };\n\n  axe.addReporter = function registerReporter(name, cb, isDefault) {\n    'use strict';\n\n    reporters[name] = cb;\n\n    if (isDefault) {\n      defaultReporter = cb;\n    }\n  };\n\n  'use strict';\n\n  function resetConfiguration() {\n    'use strict';\n\n    var audit = axe._audit;\n\n    if (!audit) {\n      throw new Error('No audit configured');\n    }\n\n    audit.resetRulesAndChecks();\n  }\n\n  axe.reset = resetConfiguration;\n  'use strict';\n\n  function cleanup() {\n    axe._memoizedFns.forEach(function (fn) {\n      return fn.clear();\n    });\n\n    axe._cache.clear();\n\n    axe._tree = undefined;\n    axe._selectorData = undefined;\n  }\n\n  function runRules(context, options, resolve, reject) {\n    'use strict';\n\n    try {\n      context = new Context(context);\n      axe._tree = context.flatTree;\n      axe._selectorData = axe.utils.getSelectorData(context.flatTree);\n    } catch (e) {\n      cleanup();\n      return reject(e);\n    }\n\n    var q = axe.utils.queue();\n    var audit = axe._audit;\n\n    if (options.performanceTimer) {\n      axe.utils.performanceTimer.auditStart();\n    }\n\n    if (context.frames.length && options.iframes !== false) {\n      q.defer(function (res, rej) {\n        axe.utils.collectResultsFromFrames(context, options, 'rules', null, res, rej);\n      });\n    }\n\n    var scrollState;\n    q.defer(function (res, rej) {\n      if (options.restoreScroll) {\n        scrollState = axe.utils.getScrollState();\n      }\n\n      audit.run(context, options, res, rej);\n    });\n    q.then(function (data) {\n      try {\n        if (scrollState) {\n          axe.utils.setScrollState(scrollState);\n        }\n\n        if (options.performanceTimer) {\n          axe.utils.performanceTimer.auditEnd();\n        }\n\n        var results = axe.utils.mergeResults(data.map(function (results) {\n          return {\n            results: results\n          };\n        }));\n\n        if (context.initiator) {\n          results = audit.after(results, options);\n          results.forEach(axe.utils.publishMetaData);\n          results = results.map(axe.utils.finalizeRuleResult);\n        }\n\n        try {\n          resolve(results, cleanup);\n        } catch (e) {\n          cleanup();\n          axe.log(e);\n        }\n      } catch (e) {\n        cleanup();\n        reject(e);\n      }\n    })['catch'](function (e) {\n      cleanup();\n      reject(e);\n    });\n  }\n\n  axe._runRules = runRules;\n  'use strict';\n\n  function _extends() {\n    _extends = Object.assign || function (target) {\n      for (var i = 1; i < arguments.length; i++) {\n        var source = arguments[i];\n\n        for (var key in source) {\n          if (Object.prototype.hasOwnProperty.call(source, key)) {\n            target[key] = source[key];\n          }\n        }\n      }\n\n      return target;\n    };\n\n    return _extends.apply(this, arguments);\n  }\n\n  axe.runVirtualRule = function (ruleId, vNode) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    options.reporter = options.reporter || axe._audit.reporter || 'v1';\n    axe._selectorData = {};\n\n    if (vNode instanceof axe.AbstractVirtualNode === false) {\n      vNode = new SerialVirtualNode(vNode);\n    }\n\n    var rule = axe._audit.rules.find(function (rule) {\n      return rule.id === ruleId;\n    });\n\n    if (!rule) {\n      throw new Error('unknown rule `' + ruleId + '`');\n    }\n\n    rule = Object.create(rule, {\n      excludeHidden: {\n        value: false\n      }\n    });\n    var context = {\n      include: [vNode]\n    };\n    var rawResults = rule.runSync(context, options);\n    axe.utils.publishMetaData(rawResults);\n    axe.utils.finalizeRuleResult(rawResults);\n    var results = axe.utils.aggregateResult([rawResults]);\n    results.violations.forEach(function (result) {\n      return result.nodes.forEach(function (nodeResult) {\n        nodeResult.failureSummary = helpers.failureSummary(nodeResult);\n      });\n    });\n    return _extends({}, helpers.getEnvironmentData(), {}, results, {\n      toolOptions: options\n    });\n  };\n\n  'use strict';\n\n  function _typeof(obj) {\n    '@babel/helpers - typeof';\n\n    if (typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol') {\n      _typeof = function _typeof(obj) {\n        return typeof obj;\n      };\n    } else {\n      _typeof = function _typeof(obj) {\n        return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj;\n      };\n    }\n\n    return _typeof(obj);\n  }\n\n  function isContext(potential) {\n    'use strict';\n\n    switch (true) {\n      case typeof potential === 'string':\n      case Array.isArray(potential):\n      case Node && potential instanceof Node:\n      case NodeList && potential instanceof NodeList:\n        return true;\n\n      case _typeof(potential) !== 'object':\n        return false;\n\n      case potential.include !== undefined:\n      case potential.exclude !== undefined:\n      case typeof potential.length === 'number':\n        return true;\n\n      default:\n        return false;\n    }\n  }\n\n  var noop = function noop() {};\n\n  function normalizeRunParams(context, options, callback) {\n    'use strict';\n\n    var typeErr = new TypeError('axe.run arguments are invalid');\n\n    if (!isContext(context)) {\n      if (callback !== undefined) {\n        throw typeErr;\n      }\n\n      callback = options;\n      options = context;\n      context = document;\n    }\n\n    if (_typeof(options) !== 'object') {\n      if (callback !== undefined) {\n        throw typeErr;\n      }\n\n      callback = options;\n      options = {};\n    }\n\n    if (typeof callback !== 'function' && callback !== undefined) {\n      throw typeErr;\n    }\n\n    return {\n      context: context,\n      options: options,\n      callback: callback || noop\n    };\n  }\n\n  axe.run = function (context, options, callback) {\n    'use strict';\n\n    if (!axe._audit) {\n      throw new Error('No audit configured');\n    }\n\n    var args = normalizeRunParams(context, options, callback);\n    context = args.context;\n    options = args.options;\n    callback = args.callback;\n    options.reporter = options.reporter || axe._audit.reporter || 'v1';\n\n    if (options.performanceTimer) {\n      axe.utils.performanceTimer.start();\n    }\n\n    var p;\n    var reject = noop;\n    var resolve = noop;\n\n    if (typeof Promise === 'function' && callback === noop) {\n      p = new Promise(function (_resolve, _reject) {\n        reject = _reject;\n        resolve = _resolve;\n      });\n    }\n\n    if (axe._running) {\n      var err = 'Axe is already running. Use `await axe.run()` to wait ' + 'for the previous run to finish before starting a new run.';\n      callback(err);\n      reject(err);\n      return p;\n    }\n\n    axe._running = true;\n\n    axe._runRules(context, options, function (rawResults, cleanup) {\n      var respond = function respond(results) {\n        axe._running = false;\n        cleanup();\n\n        try {\n          callback(null, results);\n        } catch (e) {\n          axe.log(e);\n        }\n\n        resolve(results);\n      };\n\n      if (options.performanceTimer) {\n        axe.utils.performanceTimer.end();\n      }\n\n      try {\n        var reporter = axe.getReporter(options.reporter);\n        var results = reporter(rawResults, options, respond);\n\n        if (results !== undefined) {\n          respond(results);\n        }\n      } catch (err) {\n        axe._running = false;\n        cleanup();\n        callback(err);\n        reject(err);\n      }\n    }, function (err) {\n      axe._running = false;\n      callback(err);\n      reject(err);\n    });\n\n    return p;\n  };\n\n  'use strict';\n\n  helpers.failureSummary = function failureSummary(nodeData) {\n    'use strict';\n\n    var failingChecks = {};\n    failingChecks.none = nodeData.none.concat(nodeData.all);\n    failingChecks.any = nodeData.any;\n    return Object.keys(failingChecks).map(function (key) {\n      if (!failingChecks[key].length) {\n        return;\n      }\n\n      var sum = axe._audit.data.failureSummaries[key];\n\n      if (sum && typeof sum.failureMessage === 'function') {\n        return sum.failureMessage(failingChecks[key].map(function (check) {\n          return check.message || '';\n        }));\n      }\n    }).filter(function (i) {\n      return i !== undefined;\n    }).join('\\n\\n');\n  };\n\n  'use strict';\n\n  helpers.getEnvironmentData = function getEnvironmentData() {\n    var win = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window;\n    var _win$screen = win.screen,\n        screen = _win$screen === void 0 ? {} : _win$screen,\n        _win$navigator = win.navigator,\n        navigator = _win$navigator === void 0 ? {} : _win$navigator,\n        _win$location = win.location,\n        location = _win$location === void 0 ? {} : _win$location,\n        innerHeight = win.innerHeight,\n        innerWidth = win.innerWidth;\n    var orientation = screen.msOrientation || screen.orientation || screen.mozOrientation || {};\n    return {\n      testEngine: {\n        name: 'axe-core',\n        version: axe.version\n      },\n      testRunner: {\n        name: axe._audit.brand\n      },\n      testEnvironment: {\n        userAgent: navigator.userAgent,\n        windowWidth: innerWidth,\n        windowHeight: innerHeight,\n        orientationAngle: orientation.angle,\n        orientationType: orientation.type\n      },\n      timestamp: new Date().toISOString(),\n      url: location.href\n    };\n  };\n\n  'use strict';\n\n  helpers.incompleteFallbackMessage = function incompleteFallbackMessage() {\n    'use strict';\n\n    return typeof axe._audit.data.incompleteFallbackMessage === 'function' ? axe._audit.data.incompleteFallbackMessage() : axe._audit.data.incompleteFallbackMessage;\n  };\n\n  'use strict';\n\n  function _typeof(obj) {\n    '@babel/helpers - typeof';\n\n    if (typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol') {\n      _typeof = function _typeof(obj) {\n        return typeof obj;\n      };\n    } else {\n      _typeof = function _typeof(obj) {\n        return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj;\n      };\n    }\n\n    return _typeof(obj);\n  }\n\n  function normalizeRelatedNodes(node, options) {\n    'use strict';\n\n    ['any', 'all', 'none'].forEach(function (type) {\n      if (!Array.isArray(node[type])) {\n        return;\n      }\n\n      node[type].filter(function (checkRes) {\n        return Array.isArray(checkRes.relatedNodes);\n      }).forEach(function (checkRes) {\n        checkRes.relatedNodes = checkRes.relatedNodes.map(function (relatedNode) {\n          var res = {\n            html: relatedNode.source\n          };\n\n          if (options.elementRef && !relatedNode.fromFrame) {\n            res.element = relatedNode.element;\n          }\n\n          if (options.selectors !== false || relatedNode.fromFrame) {\n            res.target = relatedNode.selector;\n          }\n\n          if (options.xpath) {\n            res.xpath = relatedNode.xpath;\n          }\n\n          return res;\n        });\n      });\n    });\n  }\n\n  var resultKeys = axe.constants.resultGroups;\n\n  helpers.processAggregate = function (results, options) {\n    var resultObject = axe.utils.aggregateResult(results);\n    resultKeys.forEach(function (key) {\n      if (options.resultTypes && !options.resultTypes.includes(key)) {\n        (resultObject[key] || []).forEach(function (ruleResult) {\n          if (Array.isArray(ruleResult.nodes) && ruleResult.nodes.length > 0) {\n            ruleResult.nodes = [ruleResult.nodes[0]];\n          }\n        });\n      }\n\n      resultObject[key] = (resultObject[key] || []).map(function (ruleResult) {\n        ruleResult = Object.assign({}, ruleResult);\n\n        if (Array.isArray(ruleResult.nodes) && ruleResult.nodes.length > 0) {\n          ruleResult.nodes = ruleResult.nodes.map(function (subResult) {\n            if (_typeof(subResult.node) === 'object') {\n              subResult.html = subResult.node.source;\n\n              if (options.elementRef && !subResult.node.fromFrame) {\n                subResult.element = subResult.node.element;\n              }\n\n              if (options.selectors !== false || subResult.node.fromFrame) {\n                subResult.target = subResult.node.selector;\n              }\n\n              if (options.xpath) {\n                subResult.xpath = subResult.node.xpath;\n              }\n            }\n\n            delete subResult.result;\n            delete subResult.node;\n            normalizeRelatedNodes(subResult, options);\n            return subResult;\n          });\n        }\n\n        resultKeys.forEach(function (key) {\n          return delete ruleResult[key];\n        });\n        delete ruleResult.pageLevel;\n        delete ruleResult.result;\n        return ruleResult;\n      });\n    });\n    return resultObject;\n  };\n\n  'use strict';\n\n  function _extends() {\n    _extends = Object.assign || function (target) {\n      for (var i = 1; i < arguments.length; i++) {\n        var source = arguments[i];\n\n        for (var key in source) {\n          if (Object.prototype.hasOwnProperty.call(source, key)) {\n            target[key] = source[key];\n          }\n        }\n      }\n\n      return target;\n    };\n\n    return _extends.apply(this, arguments);\n  }\n\n  axe.addReporter('na', function (results, options, callback) {\n    'use strict';\n\n    console.warn('\"na\" reporter will be deprecated in axe v4.0. Use the \"v2\" reporter instead.');\n\n    if (typeof options === 'function') {\n      callback = options;\n      options = {};\n    }\n\n    var out = helpers.processAggregate(results, options);\n    callback(_extends({}, helpers.getEnvironmentData(), {\n      toolOptions: options,\n      violations: out.violations,\n      passes: out.passes,\n      incomplete: out.incomplete,\n      inapplicable: out.inapplicable\n    }));\n  });\n  'use strict';\n\n  function _extends() {\n    _extends = Object.assign || function (target) {\n      for (var i = 1; i < arguments.length; i++) {\n        var source = arguments[i];\n\n        for (var key in source) {\n          if (Object.prototype.hasOwnProperty.call(source, key)) {\n            target[key] = source[key];\n          }\n        }\n      }\n\n      return target;\n    };\n\n    return _extends.apply(this, arguments);\n  }\n\n  axe.addReporter('no-passes', function (results, options, callback) {\n    'use strict';\n\n    if (typeof options === 'function') {\n      callback = options;\n      options = {};\n    }\n\n    options.resultTypes = ['violations'];\n    var out = helpers.processAggregate(results, options);\n    callback(_extends({}, helpers.getEnvironmentData(), {\n      toolOptions: options,\n      violations: out.violations\n    }));\n  });\n  'use strict';\n\n  axe.addReporter('rawEnv', function (results, options, callback) {\n    if (typeof options === 'function') {\n      callback = options;\n      options = {};\n    }\n\n    function rawCallback(raw) {\n      var env = helpers.getEnvironmentData();\n      callback({\n        raw: raw,\n        env: env\n      });\n    }\n\n    axe.getReporter('raw')(results, options, rawCallback);\n  });\n  'use strict';\n\n  function _extends() {\n    _extends = Object.assign || function (target) {\n      for (var i = 1; i < arguments.length; i++) {\n        var source = arguments[i];\n\n        for (var key in source) {\n          if (Object.prototype.hasOwnProperty.call(source, key)) {\n            target[key] = source[key];\n          }\n        }\n      }\n\n      return target;\n    };\n\n    return _extends.apply(this, arguments);\n  }\n\n  axe.addReporter('raw', function (results, options, callback) {\n    'use strict';\n\n    if (typeof options === 'function') {\n      callback = options;\n      options = {};\n    }\n\n    if (!results || !Array.isArray(results)) {\n      return callback(results);\n    }\n\n    var transformedResults = results.map(function (result) {\n      var transformedResult = _extends({}, result);\n\n      var types = ['passes', 'violations', 'incomplete', 'inapplicable'];\n\n      for (var _i = 0, _types = types; _i < _types.length; _i++) {\n        var type = _types[_i];\n\n        if (transformedResult[type] && Array.isArray(transformedResult[type])) {\n          transformedResult[type] = transformedResult[type].map(function (typeResult) {\n            return _extends({}, typeResult, {\n              node: typeResult.node.toJSON()\n            });\n          });\n        }\n      }\n\n      return transformedResult;\n    });\n    callback(transformedResults);\n  });\n  'use strict';\n\n  function _extends() {\n    _extends = Object.assign || function (target) {\n      for (var i = 1; i < arguments.length; i++) {\n        var source = arguments[i];\n\n        for (var key in source) {\n          if (Object.prototype.hasOwnProperty.call(source, key)) {\n            target[key] = source[key];\n          }\n        }\n      }\n\n      return target;\n    };\n\n    return _extends.apply(this, arguments);\n  }\n\n  axe.addReporter('v1', function (results, options, callback) {\n    'use strict';\n\n    if (typeof options === 'function') {\n      callback = options;\n      options = {};\n    }\n\n    var out = helpers.processAggregate(results, options);\n\n    var addFailureSummaries = function addFailureSummaries(result) {\n      result.nodes.forEach(function (nodeResult) {\n        nodeResult.failureSummary = helpers.failureSummary(nodeResult);\n      });\n    };\n\n    out.incomplete.forEach(addFailureSummaries);\n    out.violations.forEach(addFailureSummaries);\n    callback(_extends({}, helpers.getEnvironmentData(), {\n      toolOptions: options,\n      violations: out.violations,\n      passes: out.passes,\n      incomplete: out.incomplete,\n      inapplicable: out.inapplicable\n    }));\n  });\n  'use strict';\n\n  function _extends() {\n    _extends = Object.assign || function (target) {\n      for (var i = 1; i < arguments.length; i++) {\n        var source = arguments[i];\n\n        for (var key in source) {\n          if (Object.prototype.hasOwnProperty.call(source, key)) {\n            target[key] = source[key];\n          }\n        }\n      }\n\n      return target;\n    };\n\n    return _extends.apply(this, arguments);\n  }\n\n  axe.addReporter('v2', function (results, options, callback) {\n    'use strict';\n\n    if (typeof options === 'function') {\n      callback = options;\n      options = {};\n    }\n\n    var out = helpers.processAggregate(results, options);\n    callback(_extends({}, helpers.getEnvironmentData(), {\n      toolOptions: options,\n      violations: out.violations,\n      passes: out.passes,\n      incomplete: out.incomplete,\n      inapplicable: out.inapplicable\n    }));\n  }, true);\n  'use strict';\n\n  axe.utils.aggregate = function (map, values, initial) {\n    values = values.slice();\n\n    if (initial) {\n      values.push(initial);\n    }\n\n    var sorting = values.map(function (val) {\n      return map.indexOf(val);\n    }).sort();\n    return map[sorting.pop()];\n  };\n\n  'use strict';\n\n  var _axe$constants = axe.constants,\n      CANTTELL_PRIO = _axe$constants.CANTTELL_PRIO,\n      FAIL_PRIO = _axe$constants.FAIL_PRIO;\n  var checkMap = [];\n  checkMap[axe.constants.PASS_PRIO] = true;\n  checkMap[axe.constants.CANTTELL_PRIO] = null;\n  checkMap[axe.constants.FAIL_PRIO] = false;\n  var checkTypes = ['any', 'all', 'none'];\n\n  function anyAllNone(obj, functor) {\n    return checkTypes.reduce(function (out, type) {\n      out[type] = (obj[type] || []).map(function (val) {\n        return functor(val, type);\n      });\n      return out;\n    }, {});\n  }\n\n  axe.utils.aggregateChecks = function (nodeResOriginal) {\n    var nodeResult = Object.assign({}, nodeResOriginal);\n    anyAllNone(nodeResult, function (check, type) {\n      var i = typeof check.result === 'undefined' ? -1 : checkMap.indexOf(check.result);\n      check.priority = i !== -1 ? i : axe.constants.CANTTELL_PRIO;\n\n      if (type === 'none') {\n        if (check.priority === axe.constants.PASS_PRIO) {\n          check.priority = axe.constants.FAIL_PRIO;\n        } else if (check.priority === axe.constants.FAIL_PRIO) {\n          check.priority = axe.constants.PASS_PRIO;\n        }\n      }\n    });\n    var priorities = {\n      all: nodeResult.all.reduce(function (a, b) {\n        return Math.max(a, b.priority);\n      }, 0),\n      none: nodeResult.none.reduce(function (a, b) {\n        return Math.max(a, b.priority);\n      }, 0),\n      any: nodeResult.any.reduce(function (a, b) {\n        return Math.min(a, b.priority);\n      }, 4) % 4\n    };\n    nodeResult.priority = Math.max(priorities.all, priorities.none, priorities.any);\n    var impacts = [];\n    checkTypes.forEach(function (type) {\n      nodeResult[type] = nodeResult[type].filter(function (check) {\n        return check.priority === nodeResult.priority && check.priority === priorities[type];\n      });\n      nodeResult[type].forEach(function (check) {\n        return impacts.push(check.impact);\n      });\n    });\n\n    if ([CANTTELL_PRIO, FAIL_PRIO].includes(nodeResult.priority)) {\n      nodeResult.impact = axe.utils.aggregate(axe.constants.impact, impacts);\n    } else {\n      nodeResult.impact = null;\n    }\n\n    anyAllNone(nodeResult, function (c) {\n      delete c.result;\n      delete c.priority;\n    });\n    nodeResult.result = axe.constants.results[nodeResult.priority];\n    delete nodeResult.priority;\n    return nodeResult;\n  };\n\n  'use strict';\n\n  (function () {\n    axe.utils.aggregateNodeResults = function (nodeResults) {\n      var ruleResult = {};\n      nodeResults = nodeResults.map(function (nodeResult) {\n        if (nodeResult.any && nodeResult.all && nodeResult.none) {\n          return axe.utils.aggregateChecks(nodeResult);\n        } else if (Array.isArray(nodeResult.node)) {\n          return axe.utils.finalizeRuleResult(nodeResult);\n        } else {\n          throw new TypeError('Invalid Result type');\n        }\n      });\n\n      if (nodeResults && nodeResults.length) {\n        var resultList = nodeResults.map(function (node) {\n          return node.result;\n        });\n        ruleResult.result = axe.utils.aggregate(axe.constants.results, resultList, ruleResult.result);\n      } else {\n        ruleResult.result = 'inapplicable';\n      }\n\n      axe.constants.resultGroups.forEach(function (group) {\n        return ruleResult[group] = [];\n      });\n      nodeResults.forEach(function (nodeResult) {\n        var groupName = axe.constants.resultGroupMap[nodeResult.result];\n        ruleResult[groupName].push(nodeResult);\n      });\n      var impactGroup = axe.constants.FAIL_GROUP;\n\n      if (ruleResult[impactGroup].length === 0) {\n        impactGroup = axe.constants.CANTTELL_GROUP;\n      }\n\n      if (ruleResult[impactGroup].length > 0) {\n        var impactList = ruleResult[impactGroup].map(function (failure) {\n          return failure.impact;\n        });\n        ruleResult.impact = axe.utils.aggregate(axe.constants.impact, impactList) || null;\n      } else {\n        ruleResult.impact = null;\n      }\n\n      return ruleResult;\n    };\n  })();\n\n  'use strict';\n\n  function copyToGroup(resultObject, subResult, group) {\n    var resultCopy = Object.assign({}, subResult);\n    resultCopy.nodes = (resultCopy[group] || []).concat();\n    axe.constants.resultGroups.forEach(function (group) {\n      delete resultCopy[group];\n    });\n    resultObject[group].push(resultCopy);\n  }\n\n  axe.utils.aggregateResult = function (results) {\n    var resultObject = {};\n    axe.constants.resultGroups.forEach(function (groupName) {\n      return resultObject[groupName] = [];\n    });\n    results.forEach(function (subResult) {\n      if (subResult.error) {\n        copyToGroup(resultObject, subResult, axe.constants.CANTTELL_GROUP);\n      } else if (subResult.result === axe.constants.NA) {\n        copyToGroup(resultObject, subResult, axe.constants.NA_GROUP);\n      } else {\n        axe.constants.resultGroups.forEach(function (group) {\n          if (Array.isArray(subResult[group]) && subResult[group].length > 0) {\n            copyToGroup(resultObject, subResult, group);\n          }\n        });\n      }\n    });\n    return resultObject;\n  };\n\n  'use strict';\n\n  function areStylesSet(el, styles, stopAt) {\n    'use strict';\n\n    var styl = window.getComputedStyle(el, null);\n\n    if (!styl) {\n      return false;\n    }\n\n    for (var i = 0; i < styles.length; ++i) {\n      var att = styles[i];\n\n      if (styl.getPropertyValue(att.property) === att.value) {\n        return true;\n      }\n    }\n\n    if (!el.parentNode || el.nodeName.toUpperCase() === stopAt.toUpperCase()) {\n      return false;\n    }\n\n    return areStylesSet(el.parentNode, styles, stopAt);\n  }\n\n  axe.utils.areStylesSet = areStylesSet;\n  'use strict';\n\n  axe.utils.assert = function assert(bool, message) {\n    if (!bool) {\n      throw new Error(message);\n    }\n  };\n\n  'use strict';\n\n  axe.utils.checkHelper = function checkHelper(checkResult, options, resolve, reject) {\n    'use strict';\n\n    return {\n      isAsync: false,\n      async: function async() {\n        this.isAsync = true;\n        return function (result) {\n          if (result instanceof Error === false) {\n            checkResult.result = result;\n            resolve(checkResult);\n          } else {\n            reject(result);\n          }\n        };\n      },\n      data: function data(_data) {\n        checkResult.data = _data;\n      },\n      relatedNodes: function relatedNodes(nodes) {\n        nodes = nodes instanceof Node ? [nodes] : axe.utils.toArray(nodes);\n        checkResult.relatedNodes = nodes.map(function (element) {\n          return new axe.utils.DqElement(element, options);\n        });\n      }\n    };\n  };\n\n  'use strict';\n\n  function _typeof(obj) {\n    '@babel/helpers - typeof';\n\n    if (typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol') {\n      _typeof = function _typeof(obj) {\n        return typeof obj;\n      };\n    } else {\n      _typeof = function _typeof(obj) {\n        return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj;\n      };\n    }\n\n    return _typeof(obj);\n  }\n\n  axe.utils.clone = function (obj) {\n    'use strict';\n\n    var index,\n        length,\n        out = obj;\n\n    if (obj !== null && _typeof(obj) === 'object') {\n      if (Array.isArray(obj)) {\n        out = [];\n\n        for (index = 0, length = obj.length; index < length; index++) {\n          out[index] = axe.utils.clone(obj[index]);\n        }\n      } else {\n        out = {};\n\n        for (index in obj) {\n          out[index] = axe.utils.clone(obj[index]);\n        }\n      }\n    }\n\n    return out;\n  };\n\n  'use strict';\n\n  function err(message, node) {\n    'use strict';\n\n    var selector;\n\n    if (axe._tree) {\n      selector = axe.utils.getSelector(node);\n    }\n\n    return new Error(message + ': ' + (selector || node));\n  }\n\n  axe.utils.sendCommandToFrame = function (node, parameters, resolve, reject) {\n    'use strict';\n\n    var win = node.contentWindow;\n\n    if (!win) {\n      axe.log('Frame does not have a content window', node);\n      resolve(null);\n      return;\n    }\n\n    var timeout = setTimeout(function () {\n      timeout = setTimeout(function () {\n        if (!parameters.debug) {\n          resolve(null);\n        } else {\n          reject(err('No response from frame', node));\n        }\n      }, 0);\n    }, 500);\n    axe.utils.respondable(win, 'axe.ping', null, undefined, function () {\n      clearTimeout(timeout);\n      var frameWaitTime = parameters.options && parameters.options.frameWaitTime || 6e4;\n      timeout = setTimeout(function collectResultFramesTimeout() {\n        reject(err('Axe in frame timed out', node));\n      }, frameWaitTime);\n      axe.utils.respondable(win, 'axe.start', parameters, undefined, function (data) {\n        clearTimeout(timeout);\n\n        if (data instanceof Error === false) {\n          resolve(data);\n        } else {\n          reject(data);\n        }\n      });\n    });\n  };\n\n  function collectResultsFromFrames(context, options, command, parameter, resolve, reject) {\n    'use strict';\n\n    var q = axe.utils.queue();\n    var frames = context.frames;\n    frames.forEach(function (frame) {\n      var params = {\n        options: options,\n        command: command,\n        parameter: parameter,\n        context: {\n          initiator: false,\n          page: context.page,\n          include: frame.include || [],\n          exclude: frame.exclude || []\n        }\n      };\n      q.defer(function (res, rej) {\n        var node = frame.node;\n        axe.utils.sendCommandToFrame(node, params, function (data) {\n          if (data) {\n            return res({\n              results: data,\n              frameElement: node,\n              frame: axe.utils.getSelector(node)\n            });\n          }\n\n          res(null);\n        }, rej);\n      });\n    });\n    q.then(function (data) {\n      resolve(axe.utils.mergeResults(data, options));\n    })['catch'](reject);\n  }\n\n  axe.utils.collectResultsFromFrames = collectResultsFromFrames;\n  'use strict';\n\n  axe.utils.contains = function (vNode, otherVNode) {\n    'use strict';\n\n    function containsShadowChild(vNode, otherVNode) {\n      if (vNode.shadowId === otherVNode.shadowId) {\n        return true;\n      }\n\n      return !!vNode.children.find(function (child) {\n        return containsShadowChild(child, otherVNode);\n      });\n    }\n\n    if (vNode.shadowId || otherVNode.shadowId) {\n      return containsShadowChild(vNode, otherVNode);\n    }\n\n    if (vNode.actualNode) {\n      if (typeof vNode.actualNode.contains === 'function') {\n        return vNode.actualNode.contains(otherVNode.actualNode);\n      }\n\n      return !!(vNode.actualNode.compareDocumentPosition(otherVNode.actualNode) & 16);\n    } else {\n      do {\n        if (otherVNode === vNode) {\n          return true;\n        }\n      } while (otherVNode = otherVNode && otherVNode.parent);\n    }\n\n    return false;\n  };\n\n  'use strict';\n\n  (function (axe) {\n    var parser = new axe.imports.CssSelectorParser();\n    parser.registerSelectorPseudos('not');\n    parser.registerNestingOperators('>');\n    parser.registerAttrEqualityMods('^', '$', '*');\n    axe.utils.cssParser = parser;\n  })(axe);\n\n  'use strict';\n\n  function truncate(str, maxLength) {\n    maxLength = maxLength || 300;\n\n    if (str.length > maxLength) {\n      var index = str.indexOf('>');\n      str = str.substring(0, index + 1);\n    }\n\n    return str;\n  }\n\n  function getSource(element) {\n    var source = element.outerHTML;\n\n    if (!source && typeof XMLSerializer === 'function') {\n      source = new XMLSerializer().serializeToString(element);\n    }\n\n    return truncate(source || '');\n  }\n\n  function DqElement(element, options, spec) {\n    this._fromFrame = !!spec;\n    this.spec = spec || {};\n\n    if (options && options.absolutePaths) {\n      this._options = {\n        toRoot: true\n      };\n    }\n\n    this.source = this.spec.source !== undefined ? this.spec.source : getSource(element);\n    this._element = element;\n  }\n\n  DqElement.prototype = {\n    get selector() {\n      return this.spec.selector || [axe.utils.getSelector(this.element, this._options)];\n    },\n\n    get xpath() {\n      return this.spec.xpath || [axe.utils.getXpath(this.element)];\n    },\n\n    get element() {\n      return this._element;\n    },\n\n    get fromFrame() {\n      return this._fromFrame;\n    },\n\n    toJSON: function toJSON() {\n      'use strict';\n\n      return {\n        selector: this.selector,\n        source: this.source,\n        xpath: this.xpath\n      };\n    }\n  };\n\n  DqElement.fromFrame = function (node, options, frame) {\n    node.selector.unshift(frame.selector);\n    node.xpath.unshift(frame.xpath);\n    return new axe.utils.DqElement(frame.element, options, node);\n  };\n\n  axe.utils.DqElement = DqElement;\n  'use strict';\n\n  axe.utils.matchesSelector = function () {\n    'use strict';\n\n    var method;\n\n    function getMethod(node) {\n      var index,\n          candidate,\n          candidates = ['matches', 'matchesSelector', 'mozMatchesSelector', 'webkitMatchesSelector', 'msMatchesSelector'],\n          length = candidates.length;\n\n      for (index = 0; index < length; index++) {\n        candidate = candidates[index];\n\n        if (node[candidate]) {\n          return candidate;\n        }\n      }\n    }\n\n    return function (node, selector) {\n      if (!method || !node[method]) {\n        method = getMethod(node);\n      }\n\n      if (node[method]) {\n        return node[method](selector);\n      }\n\n      return false;\n    };\n  }();\n\n  'use strict';\n\n  axe.utils.escapeSelector = function (value) {\n    'use strict';\n\n    var string = String(value);\n    var length = string.length;\n    var index = -1;\n    var codeUnit;\n    var result = '';\n    var firstCodeUnit = string.charCodeAt(0);\n\n    while (++index < length) {\n      codeUnit = string.charCodeAt(index);\n\n      if (codeUnit == 0) {\n        result += \"\\uFFFD\";\n        continue;\n      }\n\n      if (codeUnit >= 1 && codeUnit <= 31 || codeUnit == 127 || index == 0 && codeUnit >= 48 && codeUnit <= 57 || index == 1 && codeUnit >= 48 && codeUnit <= 57 && firstCodeUnit == 45) {\n        result += '\\\\' + codeUnit.toString(16) + ' ';\n        continue;\n      }\n\n      if (index == 0 && length == 1 && codeUnit == 45) {\n        result += '\\\\' + string.charAt(index);\n        continue;\n      }\n\n      if (codeUnit >= 128 || codeUnit == 45 || codeUnit == 95 || codeUnit >= 48 && codeUnit <= 57 || codeUnit >= 65 && codeUnit <= 90 || codeUnit >= 97 && codeUnit <= 122) {\n        result += string.charAt(index);\n        continue;\n      }\n\n      result += '\\\\' + string.charAt(index);\n    }\n\n    return result;\n  };\n\n  'use strict';\n\n  axe.utils.extendMetaData = function (to, from) {\n    Object.assign(to, from);\n    Object.keys(from).filter(function (prop) {\n      return typeof from[prop] === 'function';\n    }).forEach(function (prop) {\n      to[prop] = null;\n\n      try {\n        to[prop] = from[prop](to);\n      } catch (e) {}\n    });\n  };\n\n  'use strict';\n\n  axe.utils.finalizeRuleResult = function (ruleResult) {\n    Object.assign(ruleResult, axe.utils.aggregateNodeResults(ruleResult.nodes));\n    delete ruleResult.nodes;\n    return ruleResult;\n  };\n\n  'use strict';\n\n  function _typeof(obj) {\n    '@babel/helpers - typeof';\n\n    if (typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol') {\n      _typeof = function _typeof(obj) {\n        return typeof obj;\n      };\n    } else {\n      _typeof = function _typeof(obj) {\n        return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj;\n      };\n    }\n\n    return _typeof(obj);\n  }\n\n  axe.utils.findBy = function (array, key, value) {\n    if (Array.isArray(array)) {\n      return array.find(function (obj) {\n        return _typeof(obj) === 'object' && obj[key] === value;\n      });\n    }\n  };\n\n  'use strict';\n\n  var axe = axe || {\n    utils: {}\n  };\n\n  function getSlotChildren(node) {\n    var retVal = [];\n    node = node.firstChild;\n\n    while (node) {\n      retVal.push(node);\n      node = node.nextSibling;\n    }\n\n    return retVal;\n  }\n\n  function flattenTree(node, shadowId, parent) {\n    var retVal, realArray, nodeName;\n\n    function reduceShadowDOM(res, child, parent) {\n      var replacements = flattenTree(child, shadowId, parent);\n\n      if (replacements) {\n        res = res.concat(replacements);\n      }\n\n      return res;\n    }\n\n    if (node.documentElement) {\n      node = node.documentElement;\n    }\n\n    nodeName = node.nodeName.toLowerCase();\n\n    if (axe.utils.isShadowRoot(node)) {\n      retVal = new VirtualNode(node, parent, shadowId);\n      shadowId = 'a' + Math.random().toString().substring(2);\n      realArray = Array.from(node.shadowRoot.childNodes);\n      retVal.children = realArray.reduce(function (res, child) {\n        return reduceShadowDOM(res, child, retVal);\n      }, []);\n      return [retVal];\n    } else {\n      if (nodeName === 'content' && typeof node.getDistributedNodes === 'function') {\n        realArray = Array.from(node.getDistributedNodes());\n        return realArray.reduce(function (res, child) {\n          return reduceShadowDOM(res, child, parent);\n        }, []);\n      } else if (nodeName === 'slot' && typeof node.assignedNodes === 'function') {\n        realArray = Array.from(node.assignedNodes());\n\n        if (!realArray.length) {\n          realArray = getSlotChildren(node);\n        }\n\n        var styl = window.getComputedStyle(node);\n\n        if (false && styl.display !== 'contents') {\n          retVal = new VirtualNode(node, parent, shadowId);\n          retVal.children = realArray.reduce(function (res, child) {\n            return reduceShadowDOM(res, child, retVal);\n          }, []);\n          return [retVal];\n        } else {\n          return realArray.reduce(function (res, child) {\n            return reduceShadowDOM(res, child, parent);\n          }, []);\n        }\n      } else {\n        if (node.nodeType === 1) {\n          retVal = new VirtualNode(node, parent, shadowId);\n          realArray = Array.from(node.childNodes);\n          retVal.children = realArray.reduce(function (res, child) {\n            return reduceShadowDOM(res, child, retVal);\n          }, []);\n          return [retVal];\n        } else if (node.nodeType === 3) {\n          return [new VirtualNode(node, parent)];\n        }\n\n        return undefined;\n      }\n    }\n  }\n\n  axe.utils.getFlattenedTree = function (node, shadowId) {\n    axe._cache.set('nodeMap', new WeakMap());\n\n    return flattenTree(node, shadowId);\n  };\n\n  axe.utils.getNodeFromTree = function (vNode, node) {\n    var el = node || vNode;\n    return axe._cache.get('nodeMap') ? axe._cache.get('nodeMap').get(el) : null;\n  };\n\n  'use strict';\n\n  axe.utils.getAllChecks = function getAllChecks(object) {\n    'use strict';\n\n    var result = [];\n    return result.concat(object.any || []).concat(object.all || []).concat(object.none || []);\n  };\n\n  'use strict';\n\n  axe.utils.getBaseLang = function getBaseLang(lang) {\n    if (!lang) {\n      return '';\n    }\n\n    return lang.trim().split('-')[0].toLowerCase();\n  };\n\n  'use strict';\n\n  axe.utils.getCheckMessage = function getCheckMessage(checkId, type, data) {\n    var check = axe._audit.data.checks[checkId];\n\n    if (!check) {\n      throw new Error('Cannot get message for unknown check: '.concat(checkId, '.'));\n    }\n\n    if (!check.messages[type]) {\n      throw new Error('Check \"'.concat(checkId, '\"\" does not have a \"').concat(type, '\" message.'));\n    }\n\n    return axe.utils.processMessage(check.messages[type], data);\n  };\n\n  'use strict';\n\n  axe.utils.getCheckOption = function (check, ruleID, options) {\n    var ruleCheckOption = ((options.rules && options.rules[ruleID] || {}).checks || {})[check.id];\n    var checkOption = (options.checks || {})[check.id];\n    var enabled = check.enabled;\n    var opts = check.options;\n\n    if (checkOption) {\n      if (checkOption.hasOwnProperty('enabled')) {\n        enabled = checkOption.enabled;\n      }\n\n      if (checkOption.hasOwnProperty('options')) {\n        opts = checkOption.options;\n      }\n    }\n\n    if (ruleCheckOption) {\n      if (ruleCheckOption.hasOwnProperty('enabled')) {\n        enabled = ruleCheckOption.enabled;\n      }\n\n      if (ruleCheckOption.hasOwnProperty('options')) {\n        opts = ruleCheckOption.options;\n      }\n    }\n\n    return {\n      enabled: enabled,\n      options: opts,\n      absolutePaths: options.absolutePaths\n    };\n  };\n\n  'use strict';\n\n  function _slicedToArray(arr, i) {\n    return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n  }\n\n  function _nonIterableRest() {\n    throw new TypeError('Invalid attempt to destructure non-iterable instance');\n  }\n\n  function _iterableToArrayLimit(arr, i) {\n    if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === '[object Arguments]')) {\n      return;\n    }\n\n    var _arr = [];\n    var _n = true;\n    var _d = false;\n    var _e = undefined;\n\n    try {\n      for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n        _arr.push(_s.value);\n\n        if (i && _arr.length === i) {\n          break;\n        }\n      }\n    } catch (err) {\n      _d = true;\n      _e = err;\n    } finally {\n      try {\n        if (!_n && _i['return'] != null) {\n          _i['return']();\n        }\n      } finally {\n        if (_d) {\n          throw _e;\n        }\n      }\n    }\n\n    return _arr;\n  }\n\n  function _arrayWithHoles(arr) {\n    if (Array.isArray(arr)) {\n      return arr;\n    }\n  }\n\n  function isMostlyNumbers() {\n    var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n    return str.length !== 0 && (str.match(/[0-9]/g) || '').length >= str.length / 2;\n  }\n\n  function splitString(str, splitIndex) {\n    return [str.substring(0, splitIndex), str.substring(splitIndex)];\n  }\n\n  function trimRight(str) {\n    return str.replace(/\\s+$/, '');\n  }\n\n  function uriParser(url) {\n    var original = url;\n    var protocol = '',\n        domain = '',\n        port = '',\n        path = '',\n        query = '',\n        hash = '';\n\n    if (url.includes('#')) {\n      var _splitString = splitString(url, url.indexOf('#'));\n\n      var _splitString2 = _slicedToArray(_splitString, 2);\n\n      url = _splitString2[0];\n      hash = _splitString2[1];\n    }\n\n    if (url.includes('?')) {\n      var _splitString3 = splitString(url, url.indexOf('?'));\n\n      var _splitString4 = _slicedToArray(_splitString3, 2);\n\n      url = _splitString4[0];\n      query = _splitString4[1];\n    }\n\n    if (url.includes('://')) {\n      var _url$split = url.split('://');\n\n      var _url$split2 = _slicedToArray(_url$split, 2);\n\n      protocol = _url$split2[0];\n      url = _url$split2[1];\n\n      var _splitString5 = splitString(url, url.indexOf('/'));\n\n      var _splitString6 = _slicedToArray(_splitString5, 2);\n\n      domain = _splitString6[0];\n      url = _splitString6[1];\n    } else if (url.substr(0, 2) === '//') {\n      url = url.substr(2);\n\n      var _splitString7 = splitString(url, url.indexOf('/'));\n\n      var _splitString8 = _slicedToArray(_splitString7, 2);\n\n      domain = _splitString8[0];\n      url = _splitString8[1];\n    }\n\n    if (domain.substr(0, 4) === 'www.') {\n      domain = domain.substr(4);\n    }\n\n    if (domain && domain.includes(':')) {\n      var _splitString9 = splitString(domain, domain.indexOf(':'));\n\n      var _splitString10 = _slicedToArray(_splitString9, 2);\n\n      domain = _splitString10[0];\n      port = _splitString10[1];\n    }\n\n    path = url;\n    return {\n      original: original,\n      protocol: protocol,\n      domain: domain,\n      port: port,\n      path: path,\n      query: query,\n      hash: hash\n    };\n  }\n\n  axe.utils.getFriendlyUriEnd = function getFriendlyUriEnd() {\n    var uri = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    if (uri.length <= 1 || uri.substr(0, 5) === 'data:' || uri.substr(0, 11) === 'javascript:' || uri.includes('?')) {\n      return;\n    }\n\n    var currentDomain = options.currentDomain,\n        _options$maxLength = options.maxLength,\n        maxLength = _options$maxLength === void 0 ? 25 : _options$maxLength;\n\n    var _uriParser = uriParser(uri),\n        path = _uriParser.path,\n        domain = _uriParser.domain,\n        hash = _uriParser.hash;\n\n    var pathEnd = path.substr(path.substr(0, path.length - 2).lastIndexOf('/') + 1);\n\n    if (hash) {\n      if (pathEnd && (pathEnd + hash).length <= maxLength) {\n        return trimRight(pathEnd + hash);\n      } else if (pathEnd.length < 2 && hash.length > 2 && hash.length <= maxLength) {\n        return trimRight(hash);\n      } else {\n        return;\n      }\n    } else if (domain && domain.length < maxLength && path.length <= 1) {\n      return trimRight(domain + path);\n    }\n\n    if (path === '/' + pathEnd && domain && currentDomain && domain !== currentDomain && (domain + path).length <= maxLength) {\n      return trimRight(domain + path);\n    }\n\n    var lastDotIndex = pathEnd.lastIndexOf('.');\n\n    if ((lastDotIndex === -1 || lastDotIndex > 1) && (lastDotIndex !== -1 || pathEnd.length > 2) && pathEnd.length <= maxLength && !pathEnd.match(/index(\\.[a-zA-Z]{2-4})?/) && !isMostlyNumbers(pathEnd)) {\n      return trimRight(pathEnd);\n    }\n  };\n\n  'use strict';\n\n  axe.utils.getNodeAttributes = function getNodeAttributes(node) {\n    if (node.attributes instanceof window.NamedNodeMap) {\n      return node.attributes;\n    }\n\n    return node.cloneNode(false).attributes;\n  };\n\n  'use strict';\n\n  axe.utils.getRootNode = function getRootNode(node) {\n    var doc = node.getRootNode && node.getRootNode() || document;\n\n    if (doc === node) {\n      doc = document;\n    }\n\n    return doc;\n  };\n\n  'use strict';\n\n  axe.utils.getScroll = function getScroll(elm) {\n    var buffer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n    var overflowX = elm.scrollWidth > elm.clientWidth + buffer;\n    var overflowY = elm.scrollHeight > elm.clientHeight + buffer;\n\n    if (!(overflowX || overflowY)) {\n      return;\n    }\n\n    var style = window.getComputedStyle(elm);\n    var overflowXStyle = style.getPropertyValue('overflow-x');\n    var overflowYStyle = style.getPropertyValue('overflow-y');\n    var scrollableX = overflowXStyle !== 'visible' && overflowXStyle !== 'hidden';\n    var scrollableY = overflowYStyle !== 'visible' && overflowYStyle !== 'hidden';\n\n    if (overflowX && scrollableX || overflowY && scrollableY) {\n      return {\n        elm: elm,\n        top: elm.scrollTop,\n        left: elm.scrollLeft\n      };\n    }\n  };\n\n  'use strict';\n\n  var escapeSelector = axe.utils.escapeSelector;\n  var isXHTML;\n  var ignoredAttributes = ['class', 'style', 'id', 'selected', 'checked', 'disabled', 'tabindex', 'aria-checked', 'aria-selected', 'aria-invalid', 'aria-activedescendant', 'aria-busy', 'aria-disabled', 'aria-expanded', 'aria-grabbed', 'aria-pressed', 'aria-valuenow'];\n  var MAXATTRIBUTELENGTH = 31;\n\n  function getAttributeNameValue(node, at) {\n    var name = at.name;\n    var atnv;\n\n    if (name.indexOf('href') !== -1 || name.indexOf('src') !== -1) {\n      var friendly = axe.utils.getFriendlyUriEnd(node.getAttribute(name));\n\n      if (friendly) {\n        var value = encodeURI(friendly);\n\n        if (value) {\n          atnv = escapeSelector(at.name) + '$=\"' + escapeSelector(value) + '\"';\n        } else {\n          return;\n        }\n      } else {\n        atnv = escapeSelector(at.name) + '=\"' + escapeSelector(node.getAttribute(name)) + '\"';\n      }\n    } else {\n      atnv = escapeSelector(name) + '=\"' + escapeSelector(at.value) + '\"';\n    }\n\n    return atnv;\n  }\n\n  function countSort(a, b) {\n    return a.count < b.count ? -1 : a.count === b.count ? 0 : 1;\n  }\n\n  function filterAttributes(at) {\n    return !ignoredAttributes.includes(at.name) && at.name.indexOf(':') === -1 && (!at.value || at.value.length < MAXATTRIBUTELENGTH);\n  }\n\n  axe.utils.getSelectorData = function (domTree) {\n    var data = {\n      classes: {},\n      tags: {},\n      attributes: {}\n    };\n    domTree = Array.isArray(domTree) ? domTree : [domTree];\n    var currentLevel = domTree.slice();\n    var stack = [];\n\n    var _loop = function _loop() {\n      var current = currentLevel.pop();\n      var node = current.actualNode;\n\n      if (!!node.querySelectorAll) {\n        var tag = node.nodeName;\n\n        if (data.tags[tag]) {\n          data.tags[tag]++;\n        } else {\n          data.tags[tag] = 1;\n        }\n\n        if (node.classList) {\n          Array.from(node.classList).forEach(function (cl) {\n            var ind = escapeSelector(cl);\n\n            if (data.classes[ind]) {\n              data.classes[ind]++;\n            } else {\n              data.classes[ind] = 1;\n            }\n          });\n        }\n\n        if (node.hasAttributes()) {\n          Array.from(axe.utils.getNodeAttributes(node)).filter(filterAttributes).forEach(function (at) {\n            var atnv = getAttributeNameValue(node, at);\n\n            if (atnv) {\n              if (data.attributes[atnv]) {\n                data.attributes[atnv]++;\n              } else {\n                data.attributes[atnv] = 1;\n              }\n            }\n          });\n        }\n      }\n\n      if (current.children.length) {\n        stack.push(currentLevel);\n        currentLevel = current.children.slice();\n      }\n\n      while (!currentLevel.length && stack.length) {\n        currentLevel = stack.pop();\n      }\n    };\n\n    while (currentLevel.length) {\n      _loop();\n    }\n\n    return data;\n  };\n\n  function uncommonClasses(node, selectorData) {\n    var retVal = [];\n    var classData = selectorData.classes;\n    var tagData = selectorData.tags;\n\n    if (node.classList) {\n      Array.from(node.classList).forEach(function (cl) {\n        var ind = escapeSelector(cl);\n\n        if (classData[ind] < tagData[node.nodeName]) {\n          retVal.push({\n            name: ind,\n            count: classData[ind],\n            species: 'class'\n          });\n        }\n      });\n    }\n\n    return retVal.sort(countSort);\n  }\n\n  function getNthChildString(elm, selector) {\n    var siblings = elm.parentNode && Array.from(elm.parentNode.children || '') || [];\n    var hasMatchingSiblings = siblings.find(function (sibling) {\n      return sibling !== elm && axe.utils.matchesSelector(sibling, selector);\n    });\n\n    if (hasMatchingSiblings) {\n      var nthChild = 1 + siblings.indexOf(elm);\n      return ':nth-child(' + nthChild + ')';\n    } else {\n      return '';\n    }\n  }\n\n  function getElmId(elm) {\n    if (!elm.getAttribute('id')) {\n      return;\n    }\n\n    var doc = elm.getRootNode && elm.getRootNode() || document;\n    var id = '#' + escapeSelector(elm.getAttribute('id') || '');\n\n    if (!id.match(/player_uid_/) && doc.querySelectorAll(id).length === 1) {\n      return id;\n    }\n  }\n\n  function getBaseSelector(elm) {\n    if (typeof isXHTML === 'undefined') {\n      isXHTML = axe.utils.isXHTML(document);\n    }\n\n    return escapeSelector(isXHTML ? elm.localName : elm.nodeName.toLowerCase());\n  }\n\n  function uncommonAttributes(node, selectorData) {\n    var retVal = [];\n    var attData = selectorData.attributes;\n    var tagData = selectorData.tags;\n\n    if (node.hasAttributes()) {\n      Array.from(axe.utils.getNodeAttributes(node)).filter(filterAttributes).forEach(function (at) {\n        var atnv = getAttributeNameValue(node, at);\n\n        if (atnv && attData[atnv] < tagData[node.nodeName]) {\n          retVal.push({\n            name: atnv,\n            count: attData[atnv],\n            species: 'attribute'\n          });\n        }\n      });\n    }\n\n    return retVal.sort(countSort);\n  }\n\n  function getThreeLeastCommonFeatures(elm, selectorData) {\n    var selector = '';\n    var features;\n    var clss = uncommonClasses(elm, selectorData);\n    var atts = uncommonAttributes(elm, selectorData);\n\n    if (clss.length && clss[0].count === 1) {\n      features = [clss[0]];\n    } else if (atts.length && atts[0].count === 1) {\n      features = [atts[0]];\n      selector = getBaseSelector(elm);\n    } else {\n      features = clss.concat(atts);\n      features.sort(countSort);\n      features = features.slice(0, 3);\n\n      if (!features.some(function (feat) {\n        return feat.species === 'class';\n      })) {\n        selector = getBaseSelector(elm);\n      } else {\n        features.sort(function (a, b) {\n          return a.species !== b.species && a.species === 'class' ? -1 : a.species === b.species ? 0 : 1;\n        });\n      }\n    }\n\n    return selector += features.reduce(function (val, feat) {\n      switch (feat.species) {\n        case 'class':\n          return val + '.' + feat.name;\n\n        case 'attribute':\n          return val + '[' + feat.name + ']';\n      }\n\n      return val;\n    }, '');\n  }\n\n  function generateSelector(elm, options, doc) {\n    if (!axe._selectorData) {\n      throw new Error('Expect axe._selectorData to be set up');\n    }\n\n    var _options$toRoot = options.toRoot,\n        toRoot = _options$toRoot === void 0 ? false : _options$toRoot;\n    var selector;\n    var similar;\n\n    do {\n      var features = getElmId(elm);\n\n      if (!features) {\n        features = getThreeLeastCommonFeatures(elm, axe._selectorData);\n        features += getNthChildString(elm, features);\n      }\n\n      if (selector) {\n        selector = features + ' > ' + selector;\n      } else {\n        selector = features;\n      }\n\n      if (!similar) {\n        similar = Array.from(doc.querySelectorAll(selector));\n      } else {\n        similar = similar.filter(function (item) {\n          return axe.utils.matchesSelector(item, selector);\n        });\n      }\n\n      elm = elm.parentElement;\n    } while ((similar.length > 1 || toRoot) && elm && elm.nodeType !== 11);\n\n    if (similar.length === 1) {\n      return selector;\n    } else if (selector.indexOf(' > ') !== -1) {\n      return ':root' + selector.substring(selector.indexOf(' > '));\n    }\n\n    return ':root';\n  }\n\n  axe.utils.getSelector = function createUniqueSelector(elm) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    if (!elm) {\n      return '';\n    }\n\n    var doc = elm.getRootNode && elm.getRootNode() || document;\n\n    if (doc.nodeType === 11) {\n      var stack = [];\n\n      while (doc.nodeType === 11) {\n        if (!doc.host) {\n          return '';\n        }\n\n        stack.push({\n          elm: elm,\n          doc: doc\n        });\n        elm = doc.host;\n        doc = elm.getRootNode();\n      }\n\n      stack.push({\n        elm: elm,\n        doc: doc\n      });\n      return stack.reverse().map(function (comp) {\n        return generateSelector(comp.elm, options, comp.doc);\n      });\n    } else {\n      return generateSelector(elm, options, doc);\n    }\n  };\n\n  'use strict';\n\n  axe.utils.getStyleSheetFactory = function getStyleSheetFactory(dynamicDoc) {\n    if (!dynamicDoc) {\n      throw new Error('axe.utils.getStyleSheetFactory should be invoked with an argument');\n    }\n\n    return function (options) {\n      var data = options.data,\n          _options$isCrossOrigi = options.isCrossOrigin,\n          isCrossOrigin = _options$isCrossOrigi === void 0 ? false : _options$isCrossOrigi,\n          shadowId = options.shadowId,\n          root = options.root,\n          priority = options.priority,\n          _options$isLink = options.isLink,\n          isLink = _options$isLink === void 0 ? false : _options$isLink;\n      var style = dynamicDoc.createElement('style');\n\n      if (isLink) {\n        var text = dynamicDoc.createTextNode('@import \"'.concat(data.href, '\"'));\n        style.appendChild(text);\n      } else {\n        style.appendChild(dynamicDoc.createTextNode(data));\n      }\n\n      dynamicDoc.head.appendChild(style);\n      return {\n        sheet: style.sheet,\n        isCrossOrigin: isCrossOrigin,\n        shadowId: shadowId,\n        root: root,\n        priority: priority\n      };\n    };\n  };\n\n  'use strict';\n\n  function getXPathArray(node, path) {\n    var sibling, count;\n\n    if (!node) {\n      return [];\n    }\n\n    if (!path && node.nodeType === 9) {\n      path = [{\n        str: 'html'\n      }];\n      return path;\n    }\n\n    path = path || [];\n\n    if (node.parentNode && node.parentNode !== node) {\n      path = getXPathArray(node.parentNode, path);\n    }\n\n    if (node.previousSibling) {\n      count = 1;\n      sibling = node.previousSibling;\n\n      do {\n        if (sibling.nodeType === 1 && sibling.nodeName === node.nodeName) {\n          count++;\n        }\n\n        sibling = sibling.previousSibling;\n      } while (sibling);\n\n      if (count === 1) {\n        count = null;\n      }\n    } else if (node.nextSibling) {\n      sibling = node.nextSibling;\n\n      do {\n        if (sibling.nodeType === 1 && sibling.nodeName === node.nodeName) {\n          count = 1;\n          sibling = null;\n        } else {\n          count = null;\n          sibling = sibling.previousSibling;\n        }\n      } while (sibling);\n    }\n\n    if (node.nodeType === 1) {\n      var element = {};\n      element.str = node.nodeName.toLowerCase();\n      var id = node.getAttribute && axe.utils.escapeSelector(node.getAttribute('id'));\n\n      if (id && node.ownerDocument.querySelectorAll('#' + id).length === 1) {\n        element.id = node.getAttribute('id');\n      }\n\n      if (count > 1) {\n        element.count = count;\n      }\n\n      path.push(element);\n    }\n\n    return path;\n  }\n\n  function xpathToString(xpathArray) {\n    return xpathArray.reduce(function (str, elm) {\n      if (elm.id) {\n        return '/'.concat(elm.str, '[@id=\\'').concat(elm.id, '\\']');\n      } else {\n        return str + '/'.concat(elm.str) + (elm.count > 0 ? '['.concat(elm.count, ']') : '');\n      }\n    }, '');\n  }\n\n  axe.utils.getXpath = function getXpath(node) {\n    var xpathArray = getXPathArray(node);\n    return xpathToString(xpathArray);\n  };\n\n  'use strict';\n\n  var styleSheet;\n\n  function injectStyle(style) {\n    'use strict';\n\n    if (styleSheet && styleSheet.parentNode) {\n      if (styleSheet.styleSheet === undefined) {\n        styleSheet.appendChild(document.createTextNode(style));\n      } else {\n        styleSheet.styleSheet.cssText += style;\n      }\n\n      return styleSheet;\n    }\n\n    if (!style) {\n      return;\n    }\n\n    var head = document.head || document.getElementsByTagName('head')[0];\n    styleSheet = document.createElement('style');\n    styleSheet.type = 'text/css';\n\n    if (styleSheet.styleSheet === undefined) {\n      styleSheet.appendChild(document.createTextNode(style));\n    } else {\n      styleSheet.styleSheet.cssText = style;\n    }\n\n    head.appendChild(styleSheet);\n    return styleSheet;\n  }\n\n  axe.utils.injectStyle = injectStyle;\n  'use strict';\n\n  axe.utils.isHidden = function isHidden(el, recursed) {\n    'use strict';\n\n    var node = axe.utils.getNodeFromTree(el);\n\n    if (el.nodeType === 9) {\n      return false;\n    }\n\n    if (el.nodeType === 11) {\n      el = el.host;\n    }\n\n    if (node && node._isHidden !== null) {\n      return node._isHidden;\n    }\n\n    var style = window.getComputedStyle(el, null);\n\n    if (!style || !el.parentNode || style.getPropertyValue('display') === 'none' || !recursed && style.getPropertyValue('visibility') === 'hidden' || el.getAttribute('aria-hidden') === 'true') {\n      return true;\n    }\n\n    var parent = el.assignedSlot ? el.assignedSlot : el.parentNode;\n    var isHidden = axe.utils.isHidden(parent, true);\n\n    if (node) {\n      node._isHidden = isHidden;\n    }\n\n    return isHidden;\n  };\n\n  'use strict';\n\n  var htmlTags = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'math', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rb', 'rp', 'rt', 'rtc', 'ruby', 's', 'samp', 'script', 'section', 'select', 'slot', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'svg', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr'];\n\n  axe.utils.isHtmlElement = function isHtmlElement(node) {\n    if (node.namespaceURI === 'http://www.w3.org/2000/svg') {\n      return false;\n    }\n\n    return htmlTags.includes(node.nodeName.toLowerCase());\n  };\n\n  'use strict';\n\n  var possibleShadowRoots = ['article', 'aside', 'blockquote', 'body', 'div', 'footer', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'main', 'nav', 'p', 'section', 'span'];\n\n  axe.utils.isShadowRoot = function isShadowRoot(node) {\n    if (node.shadowRoot) {\n      var nodeName = node.nodeName.toLowerCase();\n\n      if (possibleShadowRoots.includes(nodeName) || /^[a-z][a-z0-9_.-]*-[a-z0-9_.-]*$/.test(nodeName)) {\n        return true;\n      }\n    }\n\n    return false;\n  };\n\n  'use strict';\n\n  axe.utils.isXHTML = function (doc) {\n    'use strict';\n\n    if (!doc.createElement) {\n      return false;\n    }\n\n    return doc.createElement('A').localName === 'A';\n  };\n\n  'use strict';\n\n  function matchesTag(vNode, exp) {\n    return vNode.props.nodeType === 1 && (exp.tag === '*' || vNode.props.nodeName === exp.tag);\n  }\n\n  function matchesClasses(vNode, exp) {\n    return !exp.classes || exp.classes.every(function (cl) {\n      return vNode.hasClass(cl.value);\n    });\n  }\n\n  function matchesAttributes(vNode, exp) {\n    return !exp.attributes || exp.attributes.every(function (att) {\n      var nodeAtt = vNode.attr(att.key);\n      return nodeAtt !== null && (!att.value || att.test(nodeAtt));\n    });\n  }\n\n  function matchesId(vNode, exp) {\n    return !exp.id || vNode.props.id === exp.id;\n  }\n\n  function matchesPseudos(target, exp) {\n    if (!exp.pseudos || exp.pseudos.every(function (pseudo) {\n      if (pseudo.name === 'not') {\n        return !axe.utils.matchesExpression(target, pseudo.expressions[0]);\n      }\n\n      throw new Error('the pseudo selector ' + pseudo.name + ' has not yet been implemented');\n    })) {\n      return true;\n    }\n\n    return false;\n  }\n\n  function matchExpression(vNode, expression) {\n    return matchesTag(vNode, expression) && matchesClasses(vNode, expression) && matchesAttributes(vNode, expression) && matchesId(vNode, expression) && matchesPseudos(vNode, expression);\n  }\n\n  var escapeRegExp = function () {\n    var from = /(?=[\\-\\[\\]{}()*+?.\\\\\\^$|,#\\s])/g;\n    var to = '\\\\';\n    return function (string) {\n      return string.replace(from, to);\n    };\n  }();\n\n  var reUnescape = /\\\\/g;\n\n  function convertAttributes(atts) {\n    if (!atts) {\n      return;\n    }\n\n    return atts.map(function (att) {\n      var attributeKey = att.name.replace(reUnescape, '');\n      var attributeValue = (att.value || '').replace(reUnescape, '');\n      var test, regexp;\n\n      switch (att.operator) {\n        case '^=':\n          regexp = new RegExp('^' + escapeRegExp(attributeValue));\n          break;\n\n        case '$=':\n          regexp = new RegExp(escapeRegExp(attributeValue) + '$');\n          break;\n\n        case '~=':\n          regexp = new RegExp('(^|\\\\s)' + escapeRegExp(attributeValue) + '(\\\\s|$)');\n          break;\n\n        case '|=':\n          regexp = new RegExp('^' + escapeRegExp(attributeValue) + '(-|$)');\n          break;\n\n        case '=':\n          test = function test(value) {\n            return attributeValue === value;\n          };\n\n          break;\n\n        case '*=':\n          test = function test(value) {\n            return value && value.includes(attributeValue);\n          };\n\n          break;\n\n        case '!=':\n          test = function test(value) {\n            return attributeValue !== value;\n          };\n\n          break;\n\n        default:\n          test = function test(value) {\n            return !!value;\n          };\n\n      }\n\n      if (attributeValue === '' && /^[*$^]=$/.test(att.operator)) {\n        test = function test() {\n          return false;\n        };\n      }\n\n      if (!test) {\n        test = function test(value) {\n          return value && regexp.test(value);\n        };\n      }\n\n      return {\n        key: attributeKey,\n        value: attributeValue,\n        test: test\n      };\n    });\n  }\n\n  function convertClasses(classes) {\n    if (!classes) {\n      return;\n    }\n\n    return classes.map(function (className) {\n      className = className.replace(reUnescape, '');\n      return {\n        value: className,\n        regexp: new RegExp('(^|\\\\s)' + escapeRegExp(className) + '(\\\\s|$)')\n      };\n    });\n  }\n\n  function convertPseudos(pseudos) {\n    if (!pseudos) {\n      return;\n    }\n\n    return pseudos.map(function (p) {\n      var expressions;\n\n      if (p.name === 'not') {\n        expressions = p.value;\n        expressions = expressions.selectors ? expressions.selectors : [expressions];\n        expressions = convertExpressions(expressions);\n      }\n\n      return {\n        name: p.name,\n        expressions: expressions,\n        value: p.value\n      };\n    });\n  }\n\n  function convertExpressions(expressions) {\n    return expressions.map(function (exp) {\n      var newExp = [];\n      var rule = exp.rule;\n\n      while (rule) {\n        newExp.push({\n          tag: rule.tagName ? rule.tagName.toLowerCase() : '*',\n          combinator: rule.nestingOperator ? rule.nestingOperator : ' ',\n          id: rule.id,\n          attributes: convertAttributes(rule.attrs),\n          classes: convertClasses(rule.classNames),\n          pseudos: convertPseudos(rule.pseudos)\n        });\n        rule = rule.rule;\n      }\n\n      return newExp;\n    });\n  }\n\n  axe.utils.convertSelector = function convertSelector(selector) {\n    var expressions = axe.utils.cssParser.parse(selector);\n    expressions = expressions.selectors ? expressions.selectors : [expressions];\n    return convertExpressions(expressions);\n  };\n\n  axe.utils.matchesExpression = function matchesExpression(vNode, expressions, matchAnyParent) {\n    var exps = [].concat(expressions);\n    var expression = exps.pop();\n    var matches = matchExpression(vNode, expression);\n\n    while (!matches && matchAnyParent && vNode.parent) {\n      vNode = vNode.parent;\n      matches = matchExpression(vNode, expression);\n    }\n\n    if (exps.length) {\n      if ([' ', '>'].includes(expression.combinator) === false) {\n        throw new Error('axe.utils.matchesExpression does not support the combinator: ' + expression.combinator);\n      }\n\n      matches = matches && axe.utils.matchesExpression(vNode.parent, exps, expression.combinator === ' ');\n    }\n\n    return matches;\n  };\n\n  axe.utils.matches = function matches(vNode, selector) {\n    var expressions = axe.utils.convertSelector(selector);\n    return expressions.some(function (expression) {\n      return axe.utils.matchesExpression(vNode, expression);\n    });\n  };\n\n  'use strict';\n\n  axe._memoizedFns = [];\n\n  axe.utils.memoize = function (fn) {\n    var memoized = axe.imports.memoize(fn);\n\n    axe._memoizedFns.push(memoized);\n\n    return memoized;\n  };\n\n  'use strict';\n\n  function pushFrame(resultSet, options, frameElement, frameSelector) {\n    'use strict';\n\n    var frameXpath = axe.utils.getXpath(frameElement);\n    var frameSpec = {\n      element: frameElement,\n      selector: frameSelector,\n      xpath: frameXpath\n    };\n    resultSet.forEach(function (res) {\n      res.node = axe.utils.DqElement.fromFrame(res.node, options, frameSpec);\n      var checks = axe.utils.getAllChecks(res);\n\n      if (checks.length) {\n        checks.forEach(function (check) {\n          check.relatedNodes = check.relatedNodes.map(function (node) {\n            return axe.utils.DqElement.fromFrame(node, options, frameSpec);\n          });\n        });\n      }\n    });\n  }\n\n  function spliceNodes(target, to) {\n    'use strict';\n\n    var firstFromFrame = to[0].node,\n        sorterResult,\n        t;\n\n    for (var i = 0, l = target.length; i < l; i++) {\n      t = target[i].node;\n      sorterResult = axe.utils.nodeSorter({\n        actualNode: t.element\n      }, {\n        actualNode: firstFromFrame.element\n      });\n\n      if (sorterResult > 0 || sorterResult === 0 && firstFromFrame.selector.length < t.selector.length) {\n        target.splice.apply(target, [i, 0].concat(to));\n        return;\n      }\n    }\n\n    target.push.apply(target, to);\n  }\n\n  function normalizeResult(result) {\n    'use strict';\n\n    if (!result || !result.results) {\n      return null;\n    }\n\n    if (!Array.isArray(result.results)) {\n      return [result.results];\n    }\n\n    if (!result.results.length) {\n      return null;\n    }\n\n    return result.results;\n  }\n\n  axe.utils.mergeResults = function mergeResults(frameResults, options) {\n    'use strict';\n\n    var result = [];\n    frameResults.forEach(function (frameResult) {\n      var results = normalizeResult(frameResult);\n\n      if (!results || !results.length) {\n        return;\n      }\n\n      results.forEach(function (ruleResult) {\n        if (ruleResult.nodes && frameResult.frame) {\n          pushFrame(ruleResult.nodes, options, frameResult.frameElement, frameResult.frame);\n        }\n\n        var res = axe.utils.findBy(result, 'id', ruleResult.id);\n\n        if (!res) {\n          result.push(ruleResult);\n        } else {\n          if (ruleResult.nodes.length) {\n            spliceNodes(res.nodes, ruleResult.nodes);\n          }\n        }\n      });\n    });\n    return result;\n  };\n\n  'use strict';\n\n  axe.utils.nodeSorter = function nodeSorter(nodeA, nodeB) {\n    nodeA = nodeA.actualNode || nodeA;\n    nodeB = nodeB.actualNode || nodeB;\n\n    if (nodeA === nodeB) {\n      return 0;\n    }\n\n    if (nodeA.compareDocumentPosition(nodeB) & 4) {\n      return -1;\n    } else {\n      return 1;\n    }\n  };\n\n  'use strict';\n\n  axe.utils.parseCrossOriginStylesheet = function parseCrossOriginStylesheet(url, options, priority, importedUrls, isCrossOrigin) {\n    var axiosOptions = {\n      method: 'get',\n      timeout: axe.constants.preload.timeout,\n      url: url\n    };\n    importedUrls.push(url);\n    return axe.imports.axios(axiosOptions).then(function (_ref) {\n      var data = _ref.data;\n      var result = options.convertDataToStylesheet({\n        data: data,\n        isCrossOrigin: isCrossOrigin,\n        priority: priority,\n        root: options.rootNode,\n        shadowId: options.shadowId\n      });\n      return axe.utils.parseStylesheet(result.sheet, options, priority, importedUrls, result.isCrossOrigin);\n    });\n  };\n\n  'use strict';\n\n  function _toConsumableArray(arr) {\n    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n  }\n\n  function _nonIterableSpread() {\n    throw new TypeError('Invalid attempt to spread non-iterable instance');\n  }\n\n  function _iterableToArray(iter) {\n    if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === '[object Arguments]') {\n      return Array.from(iter);\n    }\n  }\n\n  function _arrayWithoutHoles(arr) {\n    if (Array.isArray(arr)) {\n      for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n        arr2[i] = arr[i];\n      }\n\n      return arr2;\n    }\n  }\n\n  axe.utils.parseSameOriginStylesheet = function parseSameOriginStylesheet(sheet, options, priority, importedUrls) {\n    var isCrossOrigin = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n    var rules = Array.from(sheet.cssRules);\n\n    if (!rules) {\n      return Promise.resolve();\n    }\n\n    var cssImportRules = rules.filter(function (r) {\n      return r.type === 3;\n    });\n\n    if (!cssImportRules.length) {\n      return Promise.resolve({\n        isCrossOrigin: isCrossOrigin,\n        priority: priority,\n        root: options.rootNode,\n        shadowId: options.shadowId,\n        sheet: sheet\n      });\n    }\n\n    var cssImportUrlsNotAlreadyImported = cssImportRules.filter(function (rule) {\n      return rule.href;\n    }).map(function (rule) {\n      return rule.href;\n    }).filter(function (url) {\n      return !importedUrls.includes(url);\n    });\n    var promises = cssImportUrlsNotAlreadyImported.map(function (importUrl, cssRuleIndex) {\n      var newPriority = [].concat(_toConsumableArray(priority), [cssRuleIndex]);\n      var isCrossOriginRequest = /^https?:\\/\\/|^\\/\\//i.test(importUrl);\n      return axe.utils.parseCrossOriginStylesheet(importUrl, options, newPriority, importedUrls, isCrossOriginRequest);\n    });\n    var nonImportCSSRules = rules.filter(function (r) {\n      return r.type !== 3;\n    });\n\n    if (!nonImportCSSRules.length) {\n      return Promise.all(promises);\n    }\n\n    promises.push(Promise.resolve(options.convertDataToStylesheet({\n      data: nonImportCSSRules.map(function (rule) {\n        return rule.cssText;\n      }).join(),\n      isCrossOrigin: isCrossOrigin,\n      priority: priority,\n      root: options.rootNode,\n      shadowId: options.shadowId\n    })));\n    return Promise.all(promises);\n  };\n\n  'use strict';\n\n  axe.utils.parseStylesheet = function parseStylesheet(sheet, options, priority, importedUrls) {\n    var isCrossOrigin = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n    var isSameOrigin = isSameOriginStylesheet(sheet);\n\n    if (isSameOrigin) {\n      return axe.utils.parseSameOriginStylesheet(sheet, options, priority, importedUrls, isCrossOrigin);\n    }\n\n    return axe.utils.parseCrossOriginStylesheet(sheet.href, options, priority, importedUrls, true);\n  };\n\n  function isSameOriginStylesheet(sheet) {\n    try {\n      var rules = sheet.cssRules;\n\n      if (!rules && sheet.href) {\n        return false;\n      }\n\n      return true;\n    } catch (e) {\n      return false;\n    }\n  }\n\n  'use strict';\n\n  utils.performanceTimer = function () {\n    'use strict';\n\n    function now() {\n      if (window.performance && window.performance) {\n        return window.performance.now();\n      }\n    }\n\n    var originalTime = null;\n    var lastRecordedTime = now();\n    return {\n      start: function start() {\n        this.mark('mark_axe_start');\n      },\n      end: function end() {\n        this.mark('mark_axe_end');\n        this.measure('axe', 'mark_axe_start', 'mark_axe_end');\n        this.logMeasures('axe');\n      },\n      auditStart: function auditStart() {\n        this.mark('mark_audit_start');\n      },\n      auditEnd: function auditEnd() {\n        this.mark('mark_audit_end');\n        this.measure('audit_start_to_end', 'mark_audit_start', 'mark_audit_end');\n        this.logMeasures();\n      },\n      mark: function mark(markName) {\n        if (window.performance && window.performance.mark !== undefined) {\n          window.performance.mark(markName);\n        }\n      },\n      measure: function measure(measureName, startMark, endMark) {\n        if (window.performance && window.performance.measure !== undefined) {\n          window.performance.measure(measureName, startMark, endMark);\n        }\n      },\n      logMeasures: function logMeasures(measureName) {\n        function log(req) {\n          axe.log('Measure ' + req.name + ' took ' + req.duration + 'ms');\n        }\n\n        if (window.performance && window.performance.getEntriesByType !== undefined) {\n          var axeStart = window.performance.getEntriesByName('mark_axe_start')[0];\n          var measures = window.performance.getEntriesByType('measure').filter(function (measure) {\n            return measure.startTime >= axeStart.startTime;\n          });\n\n          for (var i = 0; i < measures.length; ++i) {\n            var req = measures[i];\n\n            if (req.name === measureName) {\n              log(req);\n              return;\n            }\n\n            log(req);\n          }\n        }\n      },\n      timeElapsed: function timeElapsed() {\n        return now() - lastRecordedTime;\n      },\n      reset: function reset() {\n        if (!originalTime) {\n          originalTime = now();\n        }\n\n        lastRecordedTime = now();\n      }\n    };\n  }();\n\n  'use strict';\n\n  if (typeof Object.assign !== 'function') {\n    (function () {\n      Object.assign = function (target) {\n        'use strict';\n\n        if (target === undefined || target === null) {\n          throw new TypeError('Cannot convert undefined or null to object');\n        }\n\n        var output = Object(target);\n\n        for (var index = 1; index < arguments.length; index++) {\n          var source = arguments[index];\n\n          if (source !== undefined && source !== null) {\n            for (var nextKey in source) {\n              if (source.hasOwnProperty(nextKey)) {\n                output[nextKey] = source[nextKey];\n              }\n            }\n          }\n        }\n\n        return output;\n      };\n    })();\n  }\n\n  if (!Array.prototype.find) {\n    Object.defineProperty(Array.prototype, 'find', {\n      value: function value(predicate) {\n        if (this === null) {\n          throw new TypeError('Array.prototype.find called on null or undefined');\n        }\n\n        if (typeof predicate !== 'function') {\n          throw new TypeError('predicate must be a function');\n        }\n\n        var list = Object(this);\n        var length = list.length >>> 0;\n        var thisArg = arguments[1];\n        var value;\n\n        for (var i = 0; i < length; i++) {\n          value = list[i];\n\n          if (predicate.call(thisArg, value, i, list)) {\n            return value;\n          }\n        }\n\n        return undefined;\n      }\n    });\n  }\n\n  axe.utils.pollyfillElementsFromPoint = function () {\n    if (document.elementsFromPoint) {\n      return document.elementsFromPoint;\n    }\n\n    if (document.msElementsFromPoint) {\n      return document.msElementsFromPoint;\n    }\n\n    var usePointer = function () {\n      var element = document.createElement('x');\n      element.style.cssText = 'pointer-events:auto';\n      return element.style.pointerEvents === 'auto';\n    }();\n\n    var cssProp = usePointer ? 'pointer-events' : 'visibility';\n    var cssDisableVal = usePointer ? 'none' : 'hidden';\n    var style = document.createElement('style');\n    style.innerHTML = usePointer ? '* { pointer-events: all }' : '* { visibility: visible }';\n    return function (x, y) {\n      var current, i, d;\n      var elements = [];\n      var previousPointerEvents = [];\n      document.head.appendChild(style);\n\n      while ((current = document.elementFromPoint(x, y)) && elements.indexOf(current) === -1) {\n        elements.push(current);\n        previousPointerEvents.push({\n          value: current.style.getPropertyValue(cssProp),\n          priority: current.style.getPropertyPriority(cssProp)\n        });\n        current.style.setProperty(cssProp, cssDisableVal, 'important');\n      }\n\n      if (elements.indexOf(document.documentElement) < elements.length - 1) {\n        elements.splice(elements.indexOf(document.documentElement), 1);\n        elements.push(document.documentElement);\n      }\n\n      for (i = previousPointerEvents.length; !!(d = previousPointerEvents[--i]);) {\n        elements[i].style.setProperty(cssProp, d.value ? d.value : '', d.priority);\n      }\n\n      document.head.removeChild(style);\n      return elements;\n    };\n  };\n\n  if (typeof window.addEventListener === 'function') {\n    document.elementsFromPoint = axe.utils.pollyfillElementsFromPoint();\n  }\n\n  if (!Array.prototype.includes) {\n    Object.defineProperty(Array.prototype, 'includes', {\n      value: function value(searchElement) {\n        'use strict';\n\n        var O = Object(this);\n        var len = parseInt(O.length, 10) || 0;\n\n        if (len === 0) {\n          return false;\n        }\n\n        var n = parseInt(arguments[1], 10) || 0;\n        var k;\n\n        if (n >= 0) {\n          k = n;\n        } else {\n          k = len + n;\n\n          if (k < 0) {\n            k = 0;\n          }\n        }\n\n        var currentElement;\n\n        while (k < len) {\n          currentElement = O[k];\n\n          if (searchElement === currentElement || searchElement !== searchElement && currentElement !== currentElement) {\n            return true;\n          }\n\n          k++;\n        }\n\n        return false;\n      }\n    });\n  }\n\n  if (!Array.prototype.some) {\n    Object.defineProperty(Array.prototype, 'some', {\n      value: function value(fun) {\n        'use strict';\n\n        if (this == null) {\n          throw new TypeError('Array.prototype.some called on null or undefined');\n        }\n\n        if (typeof fun !== 'function') {\n          throw new TypeError();\n        }\n\n        var t = Object(this);\n        var len = t.length >>> 0;\n        var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\n\n        for (var i = 0; i < len; i++) {\n          if (i in t && fun.call(thisArg, t[i], i, t)) {\n            return true;\n          }\n        }\n\n        return false;\n      }\n    });\n  }\n\n  if (!Array.from) {\n    Object.defineProperty(Array, 'from', {\n      value: function () {\n        var toStr = Object.prototype.toString;\n\n        var isCallable = function isCallable(fn) {\n          return typeof fn === 'function' || toStr.call(fn) === '[object Function]';\n        };\n\n        var toInteger = function toInteger(value) {\n          var number = Number(value);\n\n          if (isNaN(number)) {\n            return 0;\n          }\n\n          if (number === 0 || !isFinite(number)) {\n            return number;\n          }\n\n          return (number > 0 ? 1 : -1) * Math.floor(Math.abs(number));\n        };\n\n        var maxSafeInteger = Math.pow(2, 53) - 1;\n\n        var toLength = function toLength(value) {\n          var len = toInteger(value);\n          return Math.min(Math.max(len, 0), maxSafeInteger);\n        };\n\n        return function from(arrayLike) {\n          var C = this;\n          var items = Object(arrayLike);\n\n          if (arrayLike == null) {\n            throw new TypeError('Array.from requires an array-like object - not null or undefined');\n          }\n\n          var mapFn = arguments.length > 1 ? arguments[1] : void undefined;\n          var T;\n\n          if (typeof mapFn !== 'undefined') {\n            if (!isCallable(mapFn)) {\n              throw new TypeError('Array.from: when provided, the second argument must be a function');\n            }\n\n            if (arguments.length > 2) {\n              T = arguments[2];\n            }\n          }\n\n          var len = toLength(items.length);\n          var A = isCallable(C) ? Object(new C(len)) : new Array(len);\n          var k = 0;\n          var kValue;\n\n          while (k < len) {\n            kValue = items[k];\n\n            if (mapFn) {\n              A[k] = typeof T === 'undefined' ? mapFn(kValue, k) : mapFn.call(T, kValue, k);\n            } else {\n              A[k] = kValue;\n            }\n\n            k += 1;\n          }\n\n          A.length = len;\n          return A;\n        };\n      }()\n    });\n  }\n\n  if (!String.prototype.includes) {\n    String.prototype.includes = function (search, start) {\n      if (typeof start !== 'number') {\n        start = 0;\n      }\n\n      if (start + search.length > this.length) {\n        return false;\n      } else {\n        return this.indexOf(search, start) !== -1;\n      }\n    };\n  }\n\n  'use strict';\n\n  axe.utils.preloadCssom = function preloadCssom(_ref) {\n    var _ref$treeRoot = _ref.treeRoot,\n        treeRoot = _ref$treeRoot === void 0 ? axe._tree[0] : _ref$treeRoot;\n    var rootNodes = getAllRootNodesInTree(treeRoot);\n\n    if (!rootNodes.length) {\n      return Promise.resolve();\n    }\n\n    var dynamicDoc = document.implementation.createHTMLDocument('Dynamic document for loading cssom');\n    var convertDataToStylesheet = axe.utils.getStyleSheetFactory(dynamicDoc);\n    return getCssomForAllRootNodes(rootNodes, convertDataToStylesheet).then(function (assets) {\n      return flattenAssets(assets);\n    });\n  };\n\n  function getAllRootNodesInTree(tree) {\n    var ids = [];\n    var rootNodes = axe.utils.querySelectorAllFilter(tree, '*', function (node) {\n      if (ids.includes(node.shadowId)) {\n        return false;\n      }\n\n      ids.push(node.shadowId);\n      return true;\n    }).map(function (node) {\n      return {\n        shadowId: node.shadowId,\n        rootNode: axe.utils.getRootNode(node.actualNode)\n      };\n    });\n    return axe.utils.uniqueArray(rootNodes, []);\n  }\n\n  function getCssomForAllRootNodes(rootNodes, convertDataToStylesheet) {\n    var promises = [];\n    rootNodes.forEach(function (_ref2, index) {\n      var rootNode = _ref2.rootNode,\n          shadowId = _ref2.shadowId;\n      var sheets = getStylesheetsOfRootNode(rootNode, shadowId, convertDataToStylesheet);\n\n      if (!sheets) {\n        return Promise.all(promises);\n      }\n\n      var rootIndex = index + 1;\n      var parseOptions = {\n        rootNode: rootNode,\n        shadowId: shadowId,\n        convertDataToStylesheet: convertDataToStylesheet,\n        rootIndex: rootIndex\n      };\n      var importedUrls = [];\n      var p = Promise.all(sheets.map(function (sheet, sheetIndex) {\n        var priority = [rootIndex, sheetIndex];\n        return axe.utils.parseStylesheet(sheet, parseOptions, priority, importedUrls);\n      }));\n      promises.push(p);\n    });\n    return Promise.all(promises);\n  }\n\n  function flattenAssets(assets) {\n    return assets.reduce(function (acc, val) {\n      return Array.isArray(val) ? acc.concat(flattenAssets(val)) : acc.concat(val);\n    }, []);\n  }\n\n  function getStylesheetsOfRootNode(rootNode, shadowId, convertDataToStylesheet) {\n    var sheets;\n\n    if (rootNode.nodeType === 11 && shadowId) {\n      sheets = getStylesheetsFromDocumentFragment(rootNode, convertDataToStylesheet);\n    } else {\n      sheets = getStylesheetsFromDocument(rootNode);\n    }\n\n    return filterStylesheetsWithSameHref(sheets);\n  }\n\n  function getStylesheetsFromDocumentFragment(rootNode, convertDataToStylesheet) {\n    return Array.from(rootNode.children).filter(filerStyleAndLinkAttributesInDocumentFragment).reduce(function (out, node) {\n      var nodeName = node.nodeName.toUpperCase();\n      var data = nodeName === 'STYLE' ? node.textContent : node;\n      var isLink = nodeName === 'LINK';\n      var stylesheet = convertDataToStylesheet({\n        data: data,\n        isLink: isLink,\n        root: rootNode\n      });\n      out.push(stylesheet.sheet);\n      return out;\n    }, []);\n  }\n\n  function getStylesheetsFromDocument(rootNode) {\n    return Array.from(rootNode.styleSheets).filter(function (sheet) {\n      return filterMediaIsPrint(sheet.media.mediaText);\n    });\n  }\n\n  function filerStyleAndLinkAttributesInDocumentFragment(node) {\n    var nodeName = node.nodeName.toUpperCase();\n    var linkHref = node.getAttribute('href');\n    var linkRel = node.getAttribute('rel');\n    var isLink = nodeName === 'LINK' && linkHref && linkRel && node.rel.toUpperCase().includes('STYLESHEET');\n    var isStyle = nodeName === 'STYLE';\n    return isStyle || isLink && filterMediaIsPrint(node.media);\n  }\n\n  function filterMediaIsPrint(media) {\n    if (!media) {\n      return true;\n    }\n\n    return !media.toUpperCase().includes('PRINT');\n  }\n\n  function filterStylesheetsWithSameHref(sheets) {\n    var hrefs = [];\n    return sheets.filter(function (sheet) {\n      if (!sheet.href) {\n        return true;\n      }\n\n      if (hrefs.includes(sheet.href)) {\n        return false;\n      }\n\n      hrefs.push(sheet.href);\n      return true;\n    });\n  }\n\n  'use strict';\n\n  axe.utils.preloadMedia = function preloadMedia(_ref) {\n    var _ref$treeRoot = _ref.treeRoot,\n        treeRoot = _ref$treeRoot === void 0 ? axe._tree[0] : _ref$treeRoot;\n    var mediaVirtualNodes = axe.utils.querySelectorAllFilter(treeRoot, 'video, audio', function (_ref2) {\n      var actualNode = _ref2.actualNode;\n\n      if (actualNode.hasAttribute('src')) {\n        return !!actualNode.getAttribute('src');\n      }\n\n      var sourceWithSrc = Array.from(actualNode.getElementsByTagName('source')).filter(function (source) {\n        return !!source.getAttribute('src');\n      });\n\n      if (sourceWithSrc.length <= 0) {\n        return false;\n      }\n\n      return true;\n    });\n    return Promise.all(mediaVirtualNodes.map(function (_ref3) {\n      var actualNode = _ref3.actualNode;\n      return isMediaElementReady(actualNode);\n    }));\n  };\n\n  function isMediaElementReady(elm) {\n    return new Promise(function (resolve) {\n      if (elm.readyState > 0) {\n        resolve(elm);\n      }\n\n      function onMediaReady() {\n        elm.removeEventListener('loadedmetadata', onMediaReady);\n        resolve(elm);\n      }\n\n      elm.addEventListener('loadedmetadata', onMediaReady);\n    });\n  }\n\n  'use strict';\n\n  function _extends() {\n    _extends = Object.assign || function (target) {\n      for (var i = 1; i < arguments.length; i++) {\n        var source = arguments[i];\n\n        for (var key in source) {\n          if (Object.prototype.hasOwnProperty.call(source, key)) {\n            target[key] = source[key];\n          }\n        }\n      }\n\n      return target;\n    };\n\n    return _extends.apply(this, arguments);\n  }\n\n  function _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\n    return obj;\n  }\n\n  function _typeof(obj) {\n    '@babel/helpers - typeof';\n\n    if (typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol') {\n      _typeof = function _typeof(obj) {\n        return typeof obj;\n      };\n    } else {\n      _typeof = function _typeof(obj) {\n        return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj;\n      };\n    }\n\n    return _typeof(obj);\n  }\n\n  function isValidPreloadObject(preload) {\n    return _typeof(preload) === 'object' && Array.isArray(preload.assets);\n  }\n\n  axe.utils.shouldPreload = function shouldPreload(options) {\n    if (!options || options.preload === undefined || options.preload === null) {\n      return true;\n    }\n\n    if (typeof options.preload === 'boolean') {\n      return options.preload;\n    }\n\n    return isValidPreloadObject(options.preload);\n  };\n\n  axe.utils.getPreloadConfig = function getPreloadConfig(options) {\n    var _axe$constants$preloa = axe.constants.preload,\n        assets = _axe$constants$preloa.assets,\n        timeout = _axe$constants$preloa.timeout;\n    var config = {\n      assets: assets,\n      timeout: timeout\n    };\n\n    if (!options.preload) {\n      return config;\n    }\n\n    if (typeof options.preload === 'boolean') {\n      return config;\n    }\n\n    var areRequestedAssetsValid = options.preload.assets.every(function (a) {\n      return assets.includes(a.toLowerCase());\n    });\n\n    if (!areRequestedAssetsValid) {\n      throw new Error('Requested assets, not supported. ' + 'Supported assets are: '.concat(assets.join(', '), '.'));\n    }\n\n    config.assets = axe.utils.uniqueArray(options.preload.assets.map(function (a) {\n      return a.toLowerCase();\n    }), []);\n\n    if (options.preload.timeout && typeof options.preload.timeout === 'number' && !isNaN(options.preload.timeout)) {\n      config.timeout = options.preload.timeout;\n    }\n\n    return config;\n  };\n\n  axe.utils.preload = function preload(options) {\n    var preloadFunctionsMap = {\n      cssom: axe.utils.preloadCssom,\n      media: axe.utils.preloadMedia\n    };\n    var shouldPreload = axe.utils.shouldPreload(options);\n\n    if (!shouldPreload) {\n      return Promise.resolve();\n    }\n\n    return new Promise(function (resolve, reject) {\n      var _axe$utils$getPreload = axe.utils.getPreloadConfig(options),\n          assets = _axe$utils$getPreload.assets,\n          timeout = _axe$utils$getPreload.timeout;\n\n      var preloadTimeout = setTimeout(function () {\n        return reject(new Error('Preload assets timed out.'));\n      }, timeout);\n      Promise.all(assets.map(function (asset) {\n        return preloadFunctionsMap[asset](options).then(function (results) {\n          return _defineProperty({}, asset, results);\n        });\n      })).then(function (results) {\n        var preloadAssets = results.reduce(function (out, result) {\n          return _extends({}, out, {}, result);\n        }, {});\n        clearTimeout(preloadTimeout);\n        resolve(preloadAssets);\n      })['catch'](function (err) {\n        clearTimeout(preloadTimeout);\n        reject(err);\n      });\n    });\n  };\n\n  'use strict';\n\n  var dataRegex = /\\$\\{\\s?data\\s?\\}/g;\n\n  function substitute(str, data) {\n    if (typeof data === 'string') {\n      return str.replace(dataRegex, data);\n    }\n\n    for (var prop in data) {\n      if (data.hasOwnProperty(prop)) {\n        var regex = new RegExp('\\\\${\\\\s?data\\\\.' + prop + '\\\\s?}', 'g');\n        str = str.replace(regex, data[prop]);\n      }\n    }\n\n    return str;\n  }\n\n  axe.utils.processMessage = function processMessage(message, data) {\n    if (!message) {\n      return;\n    }\n\n    if (Array.isArray(data)) {\n      data.values = data.join(', ');\n\n      if (typeof message.singular === 'string' && typeof message.plural === 'string') {\n        var _str = data.length === 1 ? message.singular : message.plural;\n\n        return substitute(_str, data);\n      }\n\n      return substitute(message, data);\n    }\n\n    if (typeof message === 'string') {\n      return substitute(message, data);\n    }\n\n    if (typeof data === 'string') {\n      var _str2 = message[data];\n      return substitute(_str2, data);\n    }\n\n    var str = message['default'] || helpers.incompleteFallbackMessage();\n\n    if (data && data.messageKey && message[data.messageKey]) {\n      str = message[data.messageKey];\n    }\n\n    return processMessage(str, data);\n  };\n\n  'use strict';\n\n  function _typeof(obj) {\n    '@babel/helpers - typeof';\n\n    if (typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol') {\n      _typeof = function _typeof(obj) {\n        return typeof obj;\n      };\n    } else {\n      _typeof = function _typeof(obj) {\n        return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj;\n      };\n    }\n\n    return _typeof(obj);\n  }\n\n  function getIncompleteReason(checkData, messages) {\n    function getDefaultMsg(messages) {\n      if (messages.incomplete && messages.incomplete['default']) {\n        return messages.incomplete['default'];\n      } else {\n        return helpers.incompleteFallbackMessage();\n      }\n    }\n\n    if (checkData && checkData.missingData) {\n      try {\n        var msg = messages.incomplete[checkData.missingData[0].reason];\n\n        if (!msg) {\n          throw new Error();\n        }\n\n        return msg;\n      } catch (e) {\n        if (typeof checkData.missingData === 'string') {\n          return messages.incomplete[checkData.missingData];\n        } else {\n          return getDefaultMsg(messages);\n        }\n      }\n    } else if (checkData && checkData.messageKey) {\n      return messages.incomplete[checkData.messageKey];\n    } else {\n      return getDefaultMsg(messages);\n    }\n  }\n\n  function extender(checksData, shouldBeTrue) {\n    'use strict';\n\n    return function (check) {\n      var sourceData = checksData[check.id] || {};\n      var messages = sourceData.messages || {};\n      var data = Object.assign({}, sourceData);\n      delete data.messages;\n\n      if (check.result === undefined) {\n        if (_typeof(messages.incomplete) === 'object' && !Array.isArray(check.data)) {\n          data.message = getIncompleteReason(check.data, messages);\n        }\n\n        if (!data.message) {\n          data.message = messages.incomplete;\n        }\n      } else {\n        data.message = check.result === shouldBeTrue ? messages.pass : messages.fail;\n      }\n\n      if (typeof data.message !== 'function') {\n        data.message = axe.utils.processMessage(data.message, check.data);\n      }\n\n      axe.utils.extendMetaData(check, data);\n    };\n  }\n\n  axe.utils.publishMetaData = function (ruleResult) {\n    'use strict';\n\n    var checksData = axe._audit.data.checks || {};\n    var rulesData = axe._audit.data.rules || {};\n    var rule = axe.utils.findBy(axe._audit.rules, 'id', ruleResult.id) || {};\n    ruleResult.tags = axe.utils.clone(rule.tags || []);\n    var shouldBeTrue = extender(checksData, true);\n    var shouldBeFalse = extender(checksData, false);\n    ruleResult.nodes.forEach(function (detail) {\n      detail.any.forEach(shouldBeTrue);\n      detail.all.forEach(shouldBeTrue);\n      detail.none.forEach(shouldBeFalse);\n    });\n    axe.utils.extendMetaData(ruleResult, axe.utils.clone(rulesData[ruleResult.id] || {}));\n  };\n\n  'use strict';\n\n  function createLocalVariables(vNodes, anyLevel, thisLevel, parentShadowId) {\n    var retVal = {\n      vNodes: vNodes.slice(),\n      anyLevel: anyLevel,\n      thisLevel: thisLevel,\n      parentShadowId: parentShadowId\n    };\n    retVal.vNodes.reverse();\n    return retVal;\n  }\n\n  function matchExpressions(domTree, expressions, filter) {\n    var stack = [];\n    var vNodes = Array.isArray(domTree) ? domTree : [domTree];\n    var currentLevel = createLocalVariables(vNodes, expressions, [], domTree[0].shadowId);\n    var result = [];\n\n    while (currentLevel.vNodes.length) {\n      var vNode = currentLevel.vNodes.pop();\n      var childOnly = [];\n      var childAny = [];\n      var combined = currentLevel.anyLevel.slice().concat(currentLevel.thisLevel);\n      var added = false;\n\n      for (var i = 0; i < combined.length; i++) {\n        var exp = combined[i];\n\n        if ((!exp[0].id || vNode.shadowId === currentLevel.parentShadowId) && axe.utils.matchesExpression(vNode, exp[0])) {\n          if (exp.length === 1) {\n            if (!added && (!filter || filter(vNode))) {\n              result.push(vNode);\n              added = true;\n            }\n          } else {\n            var rest = exp.slice(1);\n\n            if ([' ', '>'].includes(rest[0].combinator) === false) {\n              throw new Error('axe.utils.querySelectorAll does not support the combinator: ' + exp[1].combinator);\n            }\n\n            if (rest[0].combinator === '>') {\n              childOnly.push(rest);\n            } else {\n              childAny.push(rest);\n            }\n          }\n        }\n\n        if ((!exp[0].id || vNode.shadowId === currentLevel.parentShadowId) && currentLevel.anyLevel.includes(exp)) {\n          childAny.push(exp);\n        }\n      }\n\n      if (vNode.children && vNode.children.length) {\n        stack.push(currentLevel);\n        currentLevel = createLocalVariables(vNode.children, childAny, childOnly, vNode.shadowId);\n      }\n\n      while (!currentLevel.vNodes.length && stack.length) {\n        currentLevel = stack.pop();\n      }\n    }\n\n    return result;\n  }\n\n  axe.utils.querySelectorAll = function (domTree, selector) {\n    return axe.utils.querySelectorAllFilter(domTree, selector);\n  };\n\n  axe.utils.querySelectorAllFilter = function (domTree, selector, filter) {\n    domTree = Array.isArray(domTree) ? domTree : [domTree];\n    var expressions = axe.utils.convertSelector(selector);\n    return matchExpressions(domTree, expressions, filter);\n  };\n\n  'use strict';\n\n  function _typeof(obj) {\n    '@babel/helpers - typeof';\n\n    if (typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol') {\n      _typeof = function _typeof(obj) {\n        return typeof obj;\n      };\n    } else {\n      _typeof = function _typeof(obj) {\n        return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj;\n      };\n    }\n\n    return _typeof(obj);\n  }\n\n  (function () {\n    'use strict';\n\n    function noop() {}\n\n    function funcGuard(f) {\n      if (typeof f !== 'function') {\n        throw new TypeError('Queue methods require functions as arguments');\n      }\n    }\n\n    function queue() {\n      var tasks = [];\n      var started = 0;\n      var remaining = 0;\n      var completeQueue = noop;\n      var complete = false;\n      var err;\n\n      var defaultFail = function defaultFail(e) {\n        err = e;\n        setTimeout(function () {\n          if (err !== undefined && err !== null) {\n            axe.log('Uncaught error (of queue)', err);\n          }\n        }, 1);\n      };\n\n      var failed = defaultFail;\n\n      function createResolve(i) {\n        return function (r) {\n          tasks[i] = r;\n          remaining -= 1;\n\n          if (!remaining && completeQueue !== noop) {\n            complete = true;\n            completeQueue(tasks);\n          }\n        };\n      }\n\n      function abort(msg) {\n        completeQueue = noop;\n        failed(msg);\n        return tasks;\n      }\n\n      function pop() {\n        var length = tasks.length;\n\n        for (; started < length; started++) {\n          var task = tasks[started];\n\n          try {\n            task.call(null, createResolve(started), abort);\n          } catch (e) {\n            abort(e);\n          }\n        }\n      }\n\n      var q = {\n        defer: function defer(fn) {\n          if (_typeof(fn) === 'object' && fn.then && fn['catch']) {\n            var defer = fn;\n\n            fn = function fn(resolve, reject) {\n              defer.then(resolve)['catch'](reject);\n            };\n          }\n\n          funcGuard(fn);\n\n          if (err !== undefined) {\n            return;\n          } else if (complete) {\n            throw new Error('Queue already completed');\n          }\n\n          tasks.push(fn);\n          ++remaining;\n          pop();\n          return q;\n        },\n        then: function then(fn) {\n          funcGuard(fn);\n\n          if (completeQueue !== noop) {\n            throw new Error('queue `then` already set');\n          }\n\n          if (!err) {\n            completeQueue = fn;\n\n            if (!remaining) {\n              complete = true;\n              completeQueue(tasks);\n            }\n          }\n\n          return q;\n        },\n        catch: function _catch(fn) {\n          funcGuard(fn);\n\n          if (failed !== defaultFail) {\n            throw new Error('queue `catch` already set');\n          }\n\n          if (!err) {\n            failed = fn;\n          } else {\n            fn(err);\n            err = null;\n          }\n\n          return q;\n        },\n        abort: abort\n      };\n      return q;\n    }\n\n    axe.utils.queue = queue;\n  })();\n\n  'use strict';\n\n  function _typeof(obj) {\n    '@babel/helpers - typeof';\n\n    if (typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol') {\n      _typeof = function _typeof(obj) {\n        return typeof obj;\n      };\n    } else {\n      _typeof = function _typeof(obj) {\n        return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj;\n      };\n    }\n\n    return _typeof(obj);\n  }\n\n  (function (exports) {\n    'use strict';\n\n    var messages = {},\n        subscribers = {},\n        errorTypes = Object.freeze(['EvalError', 'RangeError', 'ReferenceError', 'SyntaxError', 'TypeError', 'URIError']);\n\n    function _getSource() {\n      var application = 'axeAPI',\n          version = '',\n          src;\n\n      if (typeof axe !== 'undefined' && axe._audit && axe._audit.application) {\n        application = axe._audit.application;\n      }\n\n      if (typeof axe !== 'undefined') {\n        version = axe.version;\n      }\n\n      src = application + '.' + version;\n      return src;\n    }\n\n    function verify(postedMessage) {\n      if (_typeof(postedMessage) === 'object' && typeof postedMessage.uuid === 'string' && postedMessage._respondable === true) {\n        var messageSource = _getSource();\n\n        return postedMessage._source === messageSource || postedMessage._source === 'axeAPI.x.y.z' || messageSource === 'axeAPI.x.y.z';\n      }\n\n      return false;\n    }\n\n    function post(win, topic, message, uuid, keepalive, callback) {\n      var error;\n\n      if (message instanceof Error) {\n        error = {\n          name: message.name,\n          message: message.message,\n          stack: message.stack\n        };\n        message = undefined;\n      }\n\n      var data = {\n        uuid: uuid,\n        topic: topic,\n        message: message,\n        error: error,\n        _respondable: true,\n        _source: _getSource(),\n        _axeuuid: axe._uuid,\n        _keepalive: keepalive\n      };\n\n      var axeRespondables = axe._cache.get('axeRespondables');\n\n      if (!axeRespondables) {\n        axeRespondables = {};\n\n        axe._cache.set('axeRespondables', axeRespondables);\n      }\n\n      axeRespondables[uuid] = true;\n\n      if (typeof callback === 'function') {\n        messages[uuid] = callback;\n      }\n\n      win.postMessage(JSON.stringify(data), '*');\n    }\n\n    function respondable(win, topic, message, keepalive, callback) {\n      var id = uuid.v1();\n      post(win, topic, message, id, keepalive, callback);\n    }\n\n    respondable.subscribe = function (topic, callback) {\n      subscribers[topic] = callback;\n    };\n\n    respondable.isInFrame = function (win) {\n      win = win || window;\n      return !!win.frameElement;\n    };\n\n    function createResponder(source, topic, uuid) {\n      return function (message, keepalive, callback) {\n        post(source, topic, message, uuid, keepalive, callback);\n      };\n    }\n\n    function publish(source, data, keepalive) {\n      var topic = data.topic;\n      var subscriber = subscribers[topic];\n\n      if (subscriber) {\n        var responder = createResponder(source, null, data.uuid);\n        subscriber(data.message, keepalive, responder);\n      }\n    }\n\n    function buildErrorObject(error) {\n      var msg = error.message || 'Unknown error occurred';\n      var errorName = errorTypes.includes(error.name) ? error.name : 'Error';\n      var ErrConstructor = window[errorName] || Error;\n\n      if (error.stack) {\n        msg += '\\n' + error.stack.replace(error.message, '');\n      }\n\n      return new ErrConstructor(msg);\n    }\n\n    function parseMessage(dataString) {\n      var data;\n\n      if (typeof dataString !== 'string') {\n        return;\n      }\n\n      try {\n        data = JSON.parse(dataString);\n      } catch (ex) {}\n\n      if (!verify(data)) {\n        return;\n      }\n\n      if (_typeof(data.error) === 'object') {\n        data.error = buildErrorObject(data.error);\n      } else {\n        data.error = undefined;\n      }\n\n      return data;\n    }\n\n    if (typeof window.addEventListener === 'function') {\n      window.addEventListener('message', function (e) {\n        var data = parseMessage(e.data);\n\n        if (!data || !data._axeuuid) {\n          return;\n        }\n\n        var uuid = data.uuid;\n        var axeRespondables = axe._cache.get('axeRespondables') || {};\n\n        if (axeRespondables[uuid] && data._axeuuid === axe._uuid) {\n          return;\n        }\n\n        var keepalive = data._keepalive;\n        var callback = messages[uuid];\n\n        if (callback) {\n          var result = data.error || data.message;\n          var responder = createResponder(e.source, data.topic, uuid);\n          callback(result, keepalive, responder);\n\n          if (!keepalive) {\n            delete messages[uuid];\n          }\n        }\n\n        if (!data.error) {\n          try {\n            publish(e.source, data, keepalive);\n          } catch (err) {\n            post(e.source, null, err, uuid, false);\n          }\n        }\n      }, false);\n    }\n\n    exports.respondable = respondable;\n  })(utils);\n\n  'use strict';\n\n  function matchTags(rule, runOnly) {\n    'use strict';\n\n    var include, exclude, matching;\n    var defaultExclude = axe._audit && axe._audit.tagExclude ? axe._audit.tagExclude : [];\n\n    if (runOnly.hasOwnProperty('include') || runOnly.hasOwnProperty('exclude')) {\n      include = runOnly.include || [];\n      include = Array.isArray(include) ? include : [include];\n      exclude = runOnly.exclude || [];\n      exclude = Array.isArray(exclude) ? exclude : [exclude];\n      exclude = exclude.concat(defaultExclude.filter(function (tag) {\n        return include.indexOf(tag) === -1;\n      }));\n    } else {\n      include = Array.isArray(runOnly) ? runOnly : [runOnly];\n      exclude = defaultExclude.filter(function (tag) {\n        return include.indexOf(tag) === -1;\n      });\n    }\n\n    matching = include.some(function (tag) {\n      return rule.tags.indexOf(tag) !== -1;\n    });\n\n    if (matching || include.length === 0 && rule.enabled !== false) {\n      return exclude.every(function (tag) {\n        return rule.tags.indexOf(tag) === -1;\n      });\n    } else {\n      return false;\n    }\n  }\n\n  axe.utils.ruleShouldRun = function (rule, context, options) {\n    'use strict';\n\n    var runOnly = options.runOnly || {};\n    var ruleOptions = (options.rules || {})[rule.id];\n\n    if (rule.pageLevel && !context.page) {\n      return false;\n    } else if (runOnly.type === 'rule') {\n      return runOnly.values.indexOf(rule.id) !== -1;\n    } else if (ruleOptions && typeof ruleOptions.enabled === 'boolean') {\n      return ruleOptions.enabled;\n    } else if (runOnly.type === 'tag' && runOnly.values) {\n      return matchTags(rule, runOnly.values);\n    } else {\n      return matchTags(rule, []);\n    }\n  };\n\n  'use strict';\n\n  function setScroll(elm, top, left) {\n    if (elm === window) {\n      return elm.scroll(left, top);\n    } else {\n      elm.scrollTop = top;\n      elm.scrollLeft = left;\n    }\n  }\n\n  function getElmScrollRecursive(root) {\n    return Array.from(root.children || root.childNodes || []).reduce(function (scrolls, elm) {\n      var scroll = axe.utils.getScroll(elm);\n\n      if (scroll) {\n        scrolls.push(scroll);\n      }\n\n      return scrolls.concat(getElmScrollRecursive(elm));\n    }, []);\n  }\n\n  axe.utils.getScrollState = function getScrollState() {\n    var win = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window;\n    var root = win.document.documentElement;\n    var windowScroll = [win.pageXOffset !== undefined ? {\n      elm: win,\n      top: win.pageYOffset,\n      left: win.pageXOffset\n    } : {\n      elm: root,\n      top: root.scrollTop,\n      left: root.scrollLeft\n    }];\n    return windowScroll.concat(getElmScrollRecursive(document.body));\n  };\n\n  axe.utils.setScrollState = function setScrollState(scrollState) {\n    scrollState.forEach(function (_ref) {\n      var elm = _ref.elm,\n          top = _ref.top,\n          left = _ref.left;\n      return setScroll(elm, top, left);\n    });\n  };\n\n  'use strict';\n\n  function getDeepest(collection) {\n    'use strict';\n\n    return collection.sort(function (a, b) {\n      if (axe.utils.contains(a, b)) {\n        return 1;\n      }\n\n      return -1;\n    })[0];\n  }\n\n  function isNodeInContext(node, context) {\n    'use strict';\n\n    var include = context.include && getDeepest(context.include.filter(function (candidate) {\n      return axe.utils.contains(candidate, node);\n    }));\n    var exclude = context.exclude && getDeepest(context.exclude.filter(function (candidate) {\n      return axe.utils.contains(candidate, node);\n    }));\n\n    if (!exclude && include || exclude && axe.utils.contains(exclude, include)) {\n      return true;\n    }\n\n    return false;\n  }\n\n  function pushNode(result, nodes) {\n    'use strict';\n\n    var temp;\n\n    if (result.length === 0) {\n      return nodes;\n    }\n\n    if (result.length < nodes.length) {\n      temp = result;\n      result = nodes;\n      nodes = temp;\n    }\n\n    for (var i = 0, l = nodes.length; i < l; i++) {\n      if (!result.includes(nodes[i])) {\n        result.push(nodes[i]);\n      }\n    }\n\n    return result;\n  }\n\n  function reduceIncludes(includes) {\n    return includes.reduce(function (res, el) {\n      if (!res.length || !axe.utils.contains(res[res.length - 1], el)) {\n        res.push(el);\n      }\n\n      return res;\n    }, []);\n  }\n\n  axe.utils.select = function select(selector, context) {\n    'use strict';\n\n    var result = [];\n    var candidate;\n\n    if (axe._selectCache) {\n      for (var j = 0, l = axe._selectCache.length; j < l; j++) {\n        var item = axe._selectCache[j];\n\n        if (item.selector === selector) {\n          return item.result;\n        }\n      }\n    }\n\n    var curried = function (context) {\n      return function (node) {\n        return isNodeInContext(node, context);\n      };\n    }(context);\n\n    var reducedIncludes = reduceIncludes(context.include);\n\n    for (var i = 0; i < reducedIncludes.length; i++) {\n      candidate = reducedIncludes[i];\n      result = pushNode(result, axe.utils.querySelectorAllFilter(candidate, selector, curried));\n    }\n\n    if (axe._selectCache) {\n      axe._selectCache.push({\n        selector: selector,\n        result: result\n      });\n    }\n\n    return result;\n  };\n\n  'use strict';\n\n  axe.utils.toArray = function (thing) {\n    'use strict';\n\n    return Array.prototype.slice.call(thing);\n  };\n\n  axe.utils.uniqueArray = function (arr1, arr2) {\n    return arr1.concat(arr2).filter(function (elem, pos, arr) {\n      return arr.indexOf(elem) === pos;\n    });\n  };\n\n  'use strict';\n\n  axe.utils.tokenList = function (str) {\n    'use strict';\n\n    return str.trim().replace(/\\s{2,}/g, ' ').split(' ');\n  };\n\n  'use strict';\n\n  var uuid;\n\n  (function (_global) {\n    var _rng;\n\n    var _crypto = _global.crypto || _global.msCrypto;\n\n    if (!_rng && _crypto && _crypto.getRandomValues) {\n      var _rnds8 = new Uint8Array(16);\n\n      _rng = function whatwgRNG() {\n        _crypto.getRandomValues(_rnds8);\n\n        return _rnds8;\n      };\n    }\n\n    if (!_rng) {\n      var _rnds = new Array(16);\n\n      _rng = function _rng() {\n        for (var i = 0, r; i < 16; i++) {\n          if ((i & 3) === 0) {\n            r = Math.random() * 4294967296;\n          }\n\n          _rnds[i] = r >>> ((i & 3) << 3) & 255;\n        }\n\n        return _rnds;\n      };\n    }\n\n    var BufferClass = typeof _global.Buffer == 'function' ? _global.Buffer : Array;\n    var _byteToHex = [];\n    var _hexToByte = {};\n\n    for (var i = 0; i < 256; i++) {\n      _byteToHex[i] = (i + 256).toString(16).substr(1);\n      _hexToByte[_byteToHex[i]] = i;\n    }\n\n    function parse(s, buf, offset) {\n      var i = buf && offset || 0,\n          ii = 0;\n      buf = buf || [];\n      s.toLowerCase().replace(/[0-9a-f]{2}/g, function (oct) {\n        if (ii < 16) {\n          buf[i + ii++] = _hexToByte[oct];\n        }\n      });\n\n      while (ii < 16) {\n        buf[i + ii++] = 0;\n      }\n\n      return buf;\n    }\n\n    function unparse(buf, offset) {\n      var i = offset || 0,\n          bth = _byteToHex;\n      return bth[buf[i++]] + bth[buf[i++]] + bth[buf[i++]] + bth[buf[i++]] + '-' + bth[buf[i++]] + bth[buf[i++]] + '-' + bth[buf[i++]] + bth[buf[i++]] + '-' + bth[buf[i++]] + bth[buf[i++]] + '-' + bth[buf[i++]] + bth[buf[i++]] + bth[buf[i++]] + bth[buf[i++]] + bth[buf[i++]] + bth[buf[i++]];\n    }\n\n    var _seedBytes = _rng();\n\n    var _nodeId = [_seedBytes[0] | 1, _seedBytes[1], _seedBytes[2], _seedBytes[3], _seedBytes[4], _seedBytes[5]];\n\n    var _clockseq = (_seedBytes[6] << 8 | _seedBytes[7]) & 16383;\n\n    var _lastMSecs = 0,\n        _lastNSecs = 0;\n\n    function v1(options, buf, offset) {\n      var i = buf && offset || 0;\n      var b = buf || [];\n      options = options || {};\n      var clockseq = options.clockseq != null ? options.clockseq : _clockseq;\n      var msecs = options.msecs != null ? options.msecs : new Date().getTime();\n      var nsecs = options.nsecs != null ? options.nsecs : _lastNSecs + 1;\n      var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 1e4;\n\n      if (dt < 0 && options.clockseq == null) {\n        clockseq = clockseq + 1 & 16383;\n      }\n\n      if ((dt < 0 || msecs > _lastMSecs) && options.nsecs == null) {\n        nsecs = 0;\n      }\n\n      if (nsecs >= 1e4) {\n        throw new Error('uuid.v1(): Can\\'t create more than 10M uuids/sec');\n      }\n\n      _lastMSecs = msecs;\n      _lastNSecs = nsecs;\n      _clockseq = clockseq;\n      msecs += 122192928e5;\n      var tl = ((msecs & 268435455) * 1e4 + nsecs) % 4294967296;\n      b[i++] = tl >>> 24 & 255;\n      b[i++] = tl >>> 16 & 255;\n      b[i++] = tl >>> 8 & 255;\n      b[i++] = tl & 255;\n      var tmh = msecs / 4294967296 * 1e4 & 268435455;\n      b[i++] = tmh >>> 8 & 255;\n      b[i++] = tmh & 255;\n      b[i++] = tmh >>> 24 & 15 | 16;\n      b[i++] = tmh >>> 16 & 255;\n      b[i++] = clockseq >>> 8 | 128;\n      b[i++] = clockseq & 255;\n      var node = options.node || _nodeId;\n\n      for (var n = 0; n < 6; n++) {\n        b[i + n] = node[n];\n      }\n\n      return buf ? buf : unparse(b);\n    }\n\n    function v4(options, buf, offset) {\n      var i = buf && offset || 0;\n\n      if (typeof options == 'string') {\n        buf = options == 'binary' ? new BufferClass(16) : null;\n        options = null;\n      }\n\n      options = options || {};\n\n      var rnds = options.random || (options.rng || _rng)();\n\n      rnds[6] = rnds[6] & 15 | 64;\n      rnds[8] = rnds[8] & 63 | 128;\n\n      if (buf) {\n        for (var ii = 0; ii < 16; ii++) {\n          buf[i + ii] = rnds[ii];\n        }\n      }\n\n      return buf || unparse(rnds);\n    }\n\n    uuid = v4;\n    uuid.v1 = v1;\n    uuid.v4 = v4;\n    uuid.parse = parse;\n    uuid.unparse = unparse;\n    uuid.BufferClass = BufferClass;\n    axe._uuid = v1();\n  })(window);\n\n  'use strict';\n\n  axe.utils.validInputTypes = function validInputTypes() {\n    'use strict';\n\n    return ['hidden', 'text', 'search', 'tel', 'url', 'email', 'password', 'date', 'month', 'week', 'time', 'datetime-local', 'number', 'range', 'color', 'checkbox', 'radio', 'file', 'submit', 'image', 'reset', 'button'];\n  };\n\n  'use strict';\n\n  var langs = ['aa', 'ab', 'ae', 'af', 'ak', 'am', 'an', 'ar', 'as', 'av', 'ay', 'az', 'ba', 'be', 'bg', 'bh', 'bi', 'bm', 'bn', 'bo', 'br', 'bs', 'ca', 'ce', 'ch', 'co', 'cr', 'cs', 'cu', 'cv', 'cy', 'da', 'de', 'dv', 'dz', 'ee', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fa', 'ff', 'fi', 'fj', 'fo', 'fr', 'fy', 'ga', 'gd', 'gl', 'gn', 'gu', 'gv', 'ha', 'he', 'hi', 'ho', 'hr', 'ht', 'hu', 'hy', 'hz', 'ia', 'id', 'ie', 'ig', 'ii', 'ik', 'in', 'io', 'is', 'it', 'iu', 'iw', 'ja', 'ji', 'jv', 'jw', 'ka', 'kg', 'ki', 'kj', 'kk', 'kl', 'km', 'kn', 'ko', 'kr', 'ks', 'ku', 'kv', 'kw', 'ky', 'la', 'lb', 'lg', 'li', 'ln', 'lo', 'lt', 'lu', 'lv', 'mg', 'mh', 'mi', 'mk', 'ml', 'mn', 'mo', 'mr', 'ms', 'mt', 'my', 'na', 'nb', 'nd', 'ne', 'ng', 'nl', 'nn', 'no', 'nr', 'nv', 'ny', 'oc', 'oj', 'om', 'or', 'os', 'pa', 'pi', 'pl', 'ps', 'pt', 'qu', 'rm', 'rn', 'ro', 'ru', 'rw', 'sa', 'sc', 'sd', 'se', 'sg', 'sh', 'si', 'sk', 'sl', 'sm', 'sn', 'so', 'sq', 'sr', 'ss', 'st', 'su', 'sv', 'sw', 'ta', 'te', 'tg', 'th', 'ti', 'tk', 'tl', 'tn', 'to', 'tr', 'ts', 'tt', 'tw', 'ty', 'ug', 'uk', 'ur', 'uz', 've', 'vi', 'vo', 'wa', 'wo', 'xh', 'yi', 'yo', 'za', 'zh', 'zu', 'aaa', 'aab', 'aac', 'aad', 'aae', 'aaf', 'aag', 'aah', 'aai', 'aak', 'aal', 'aam', 'aan', 'aao', 'aap', 'aaq', 'aas', 'aat', 'aau', 'aav', 'aaw', 'aax', 'aaz', 'aba', 'abb', 'abc', 'abd', 'abe', 'abf', 'abg', 'abh', 'abi', 'abj', 'abl', 'abm', 'abn', 'abo', 'abp', 'abq', 'abr', 'abs', 'abt', 'abu', 'abv', 'abw', 'abx', 'aby', 'abz', 'aca', 'acb', 'acd', 'ace', 'acf', 'ach', 'aci', 'ack', 'acl', 'acm', 'acn', 'acp', 'acq', 'acr', 'acs', 'act', 'acu', 'acv', 'acw', 'acx', 'acy', 'acz', 'ada', 'adb', 'add', 'ade', 'adf', 'adg', 'adh', 'adi', 'adj', 'adl', 'adn', 'ado', 'adp', 'adq', 'adr', 'ads', 'adt', 'adu', 'adw', 'adx', 'ady', 'adz', 'aea', 'aeb', 'aec', 'aed', 'aee', 'aek', 'ael', 'aem', 'aen', 'aeq', 'aer', 'aes', 'aeu', 'aew', 'aey', 'aez', 'afa', 'afb', 'afd', 'afe', 'afg', 'afh', 'afi', 'afk', 'afn', 'afo', 'afp', 'afs', 'aft', 'afu', 'afz', 'aga', 'agb', 'agc', 'agd', 'age', 'agf', 'agg', 'agh', 'agi', 'agj', 'agk', 'agl', 'agm', 'agn', 'ago', 'agp', 'agq', 'agr', 'ags', 'agt', 'agu', 'agv', 'agw', 'agx', 'agy', 'agz', 'aha', 'ahb', 'ahg', 'ahh', 'ahi', 'ahk', 'ahl', 'ahm', 'ahn', 'aho', 'ahp', 'ahr', 'ahs', 'aht', 'aia', 'aib', 'aic', 'aid', 'aie', 'aif', 'aig', 'aih', 'aii', 'aij', 'aik', 'ail', 'aim', 'ain', 'aio', 'aip', 'aiq', 'air', 'ais', 'ait', 'aiw', 'aix', 'aiy', 'aja', 'ajg', 'aji', 'ajn', 'ajp', 'ajt', 'aju', 'ajw', 'ajz', 'akb', 'akc', 'akd', 'ake', 'akf', 'akg', 'akh', 'aki', 'akj', 'akk', 'akl', 'akm', 'ako', 'akp', 'akq', 'akr', 'aks', 'akt', 'aku', 'akv', 'akw', 'akx', 'aky', 'akz', 'ala', 'alc', 'ald', 'ale', 'alf', 'alg', 'alh', 'ali', 'alj', 'alk', 'all', 'alm', 'aln', 'alo', 'alp', 'alq', 'alr', 'als', 'alt', 'alu', 'alv', 'alw', 'alx', 'aly', 'alz', 'ama', 'amb', 'amc', 'ame', 'amf', 'amg', 'ami', 'amj', 'amk', 'aml', 'amm', 'amn', 'amo', 'amp', 'amq', 'amr', 'ams', 'amt', 'amu', 'amv', 'amw', 'amx', 'amy', 'amz', 'ana', 'anb', 'anc', 'and', 'ane', 'anf', 'ang', 'anh', 'ani', 'anj', 'ank', 'anl', 'anm', 'ann', 'ano', 'anp', 'anq', 'anr', 'ans', 'ant', 'anu', 'anv', 'anw', 'anx', 'any', 'anz', 'aoa', 'aob', 'aoc', 'aod', 'aoe', 'aof', 'aog', 'aoh', 'aoi', 'aoj', 'aok', 'aol', 'aom', 'aon', 'aor', 'aos', 'aot', 'aou', 'aox', 'aoz', 'apa', 'apb', 'apc', 'apd', 'ape', 'apf', 'apg', 'aph', 'api', 'apj', 'apk', 'apl', 'apm', 'apn', 'apo', 'app', 'apq', 'apr', 'aps', 'apt', 'apu', 'apv', 'apw', 'apx', 'apy', 'apz', 'aqa', 'aqc', 'aqd', 'aqg', 'aql', 'aqm', 'aqn', 'aqp', 'aqr', 'aqt', 'aqz', 'arb', 'arc', 'ard', 'are', 'arh', 'ari', 'arj', 'ark', 'arl', 'arn', 'aro', 'arp', 'arq', 'arr', 'ars', 'art', 'aru', 'arv', 'arw', 'arx', 'ary', 'arz', 'asa', 'asb', 'asc', 'asd', 'ase', 'asf', 'asg', 'ash', 'asi', 'asj', 'ask', 'asl', 'asn', 'aso', 'asp', 'asq', 'asr', 'ass', 'ast', 'asu', 'asv', 'asw', 'asx', 'asy', 'asz', 'ata', 'atb', 'atc', 'atd', 'ate', 'atg', 'ath', 'ati', 'atj', 'atk', 'atl', 'atm', 'atn', 'ato', 'atp', 'atq', 'atr', 'ats', 'att', 'atu', 'atv', 'atw', 'atx', 'aty', 'atz', 'aua', 'aub', 'auc', 'aud', 'aue', 'auf', 'aug', 'auh', 'aui', 'auj', 'auk', 'aul', 'aum', 'aun', 'auo', 'aup', 'auq', 'aur', 'aus', 'aut', 'auu', 'auw', 'aux', 'auy', 'auz', 'avb', 'avd', 'avi', 'avk', 'avl', 'avm', 'avn', 'avo', 'avs', 'avt', 'avu', 'avv', 'awa', 'awb', 'awc', 'awd', 'awe', 'awg', 'awh', 'awi', 'awk', 'awm', 'awn', 'awo', 'awr', 'aws', 'awt', 'awu', 'awv', 'aww', 'awx', 'awy', 'axb', 'axe', 'axg', 'axk', 'axl', 'axm', 'axx', 'aya', 'ayb', 'ayc', 'ayd', 'aye', 'ayg', 'ayh', 'ayi', 'ayk', 'ayl', 'ayn', 'ayo', 'ayp', 'ayq', 'ayr', 'ays', 'ayt', 'ayu', 'ayx', 'ayy', 'ayz', 'aza', 'azb', 'azc', 'azd', 'azg', 'azj', 'azm', 'azn', 'azo', 'azt', 'azz', 'baa', 'bab', 'bac', 'bad', 'bae', 'baf', 'bag', 'bah', 'bai', 'baj', 'bal', 'ban', 'bao', 'bap', 'bar', 'bas', 'bat', 'bau', 'bav', 'baw', 'bax', 'bay', 'baz', 'bba', 'bbb', 'bbc', 'bbd', 'bbe', 'bbf', 'bbg', 'bbh', 'bbi', 'bbj', 'bbk', 'bbl', 'bbm', 'bbn', 'bbo', 'bbp', 'bbq', 'bbr', 'bbs', 'bbt', 'bbu', 'bbv', 'bbw', 'bbx', 'bby', 'bbz', 'bca', 'bcb', 'bcc', 'bcd', 'bce', 'bcf', 'bcg', 'bch', 'bci', 'bcj', 'bck', 'bcl', 'bcm', 'bcn', 'bco', 'bcp', 'bcq', 'bcr', 'bcs', 'bct', 'bcu', 'bcv', 'bcw', 'bcy', 'bcz', 'bda', 'bdb', 'bdc', 'bdd', 'bde', 'bdf', 'bdg', 'bdh', 'bdi', 'bdj', 'bdk', 'bdl', 'bdm', 'bdn', 'bdo', 'bdp', 'bdq', 'bdr', 'bds', 'bdt', 'bdu', 'bdv', 'bdw', 'bdx', 'bdy', 'bdz', 'bea', 'beb', 'bec', 'bed', 'bee', 'bef', 'beg', 'beh', 'bei', 'bej', 'bek', 'bem', 'beo', 'bep', 'beq', 'ber', 'bes', 'bet', 'beu', 'bev', 'bew', 'bex', 'bey', 'bez', 'bfa', 'bfb', 'bfc', 'bfd', 'bfe', 'bff', 'bfg', 'bfh', 'bfi', 'bfj', 'bfk', 'bfl', 'bfm', 'bfn', 'bfo', 'bfp', 'bfq', 'bfr', 'bfs', 'bft', 'bfu', 'bfw', 'bfx', 'bfy', 'bfz', 'bga', 'bgb', 'bgc', 'bgd', 'bge', 'bgf', 'bgg', 'bgi', 'bgj', 'bgk', 'bgl', 'bgm', 'bgn', 'bgo', 'bgp', 'bgq', 'bgr', 'bgs', 'bgt', 'bgu', 'bgv', 'bgw', 'bgx', 'bgy', 'bgz', 'bha', 'bhb', 'bhc', 'bhd', 'bhe', 'bhf', 'bhg', 'bhh', 'bhi', 'bhj', 'bhk', 'bhl', 'bhm', 'bhn', 'bho', 'bhp', 'bhq', 'bhr', 'bhs', 'bht', 'bhu', 'bhv', 'bhw', 'bhx', 'bhy', 'bhz', 'bia', 'bib', 'bic', 'bid', 'bie', 'bif', 'big', 'bij', 'bik', 'bil', 'bim', 'bin', 'bio', 'bip', 'biq', 'bir', 'bit', 'biu', 'biv', 'biw', 'bix', 'biy', 'biz', 'bja', 'bjb', 'bjc', 'bjd', 'bje', 'bjf', 'bjg', 'bjh', 'bji', 'bjj', 'bjk', 'bjl', 'bjm', 'bjn', 'bjo', 'bjp', 'bjq', 'bjr', 'bjs', 'bjt', 'bju', 'bjv', 'bjw', 'bjx', 'bjy', 'bjz', 'bka', 'bkb', 'bkc', 'bkd', 'bkf', 'bkg', 'bkh', 'bki', 'bkj', 'bkk', 'bkl', 'bkm', 'bkn', 'bko', 'bkp', 'bkq', 'bkr', 'bks', 'bkt', 'bku', 'bkv', 'bkw', 'bkx', 'bky', 'bkz', 'bla', 'blb', 'blc', 'bld', 'ble', 'blf', 'blg', 'blh', 'bli', 'blj', 'blk', 'bll', 'blm', 'bln', 'blo', 'blp', 'blq', 'blr', 'bls', 'blt', 'blv', 'blw', 'blx', 'bly', 'blz', 'bma', 'bmb', 'bmc', 'bmd', 'bme', 'bmf', 'bmg', 'bmh', 'bmi', 'bmj', 'bmk', 'bml', 'bmm', 'bmn', 'bmo', 'bmp', 'bmq', 'bmr', 'bms', 'bmt', 'bmu', 'bmv', 'bmw', 'bmx', 'bmy', 'bmz', 'bna', 'bnb', 'bnc', 'bnd', 'bne', 'bnf', 'bng', 'bni', 'bnj', 'bnk', 'bnl', 'bnm', 'bnn', 'bno', 'bnp', 'bnq', 'bnr', 'bns', 'bnt', 'bnu', 'bnv', 'bnw', 'bnx', 'bny', 'bnz', 'boa', 'bob', 'boe', 'bof', 'bog', 'boh', 'boi', 'boj', 'bok', 'bol', 'bom', 'bon', 'boo', 'bop', 'boq', 'bor', 'bot', 'bou', 'bov', 'bow', 'box', 'boy', 'boz', 'bpa', 'bpb', 'bpd', 'bpg', 'bph', 'bpi', 'bpj', 'bpk', 'bpl', 'bpm', 'bpn', 'bpo', 'bpp', 'bpq', 'bpr', 'bps', 'bpt', 'bpu', 'bpv', 'bpw', 'bpx', 'bpy', 'bpz', 'bqa', 'bqb', 'bqc', 'bqd', 'bqf', 'bqg', 'bqh', 'bqi', 'bqj', 'bqk', 'bql', 'bqm', 'bqn', 'bqo', 'bqp', 'bqq', 'bqr', 'bqs', 'bqt', 'bqu', 'bqv', 'bqw', 'bqx', 'bqy', 'bqz', 'bra', 'brb', 'brc', 'brd', 'brf', 'brg', 'brh', 'bri', 'brj', 'brk', 'brl', 'brm', 'brn', 'bro', 'brp', 'brq', 'brr', 'brs', 'brt', 'bru', 'brv', 'brw', 'brx', 'bry', 'brz', 'bsa', 'bsb', 'bsc', 'bse', 'bsf', 'bsg', 'bsh', 'bsi', 'bsj', 'bsk', 'bsl', 'bsm', 'bsn', 'bso', 'bsp', 'bsq', 'bsr', 'bss', 'bst', 'bsu', 'bsv', 'bsw', 'bsx', 'bsy', 'bta', 'btb', 'btc', 'btd', 'bte', 'btf', 'btg', 'bth', 'bti', 'btj', 'btk', 'btl', 'btm', 'btn', 'bto', 'btp', 'btq', 'btr', 'bts', 'btt', 'btu', 'btv', 'btw', 'btx', 'bty', 'btz', 'bua', 'bub', 'buc', 'bud', 'bue', 'buf', 'bug', 'buh', 'bui', 'buj', 'buk', 'bum', 'bun', 'buo', 'bup', 'buq', 'bus', 'but', 'buu', 'buv', 'buw', 'bux', 'buy', 'buz', 'bva', 'bvb', 'bvc', 'bvd', 'bve', 'bvf', 'bvg', 'bvh', 'bvi', 'bvj', 'bvk', 'bvl', 'bvm', 'bvn', 'bvo', 'bvp', 'bvq', 'bvr', 'bvt', 'bvu', 'bvv', 'bvw', 'bvx', 'bvy', 'bvz', 'bwa', 'bwb', 'bwc', 'bwd', 'bwe', 'bwf', 'bwg', 'bwh', 'bwi', 'bwj', 'bwk', 'bwl', 'bwm', 'bwn', 'bwo', 'bwp', 'bwq', 'bwr', 'bws', 'bwt', 'bwu', 'bww', 'bwx', 'bwy', 'bwz', 'bxa', 'bxb', 'bxc', 'bxd', 'bxe', 'bxf', 'bxg', 'bxh', 'bxi', 'bxj', 'bxk', 'bxl', 'bxm', 'bxn', 'bxo', 'bxp', 'bxq', 'bxr', 'bxs', 'bxu', 'bxv', 'bxw', 'bxx', 'bxz', 'bya', 'byb', 'byc', 'byd', 'bye', 'byf', 'byg', 'byh', 'byi', 'byj', 'byk', 'byl', 'bym', 'byn', 'byo', 'byp', 'byq', 'byr', 'bys', 'byt', 'byv', 'byw', 'byx', 'byy', 'byz', 'bza', 'bzb', 'bzc', 'bzd', 'bze', 'bzf', 'bzg', 'bzh', 'bzi', 'bzj', 'bzk', 'bzl', 'bzm', 'bzn', 'bzo', 'bzp', 'bzq', 'bzr', 'bzs', 'bzt', 'bzu', 'bzv', 'bzw', 'bzx', 'bzy', 'bzz', 'caa', 'cab', 'cac', 'cad', 'cae', 'caf', 'cag', 'cah', 'cai', 'caj', 'cak', 'cal', 'cam', 'can', 'cao', 'cap', 'caq', 'car', 'cas', 'cau', 'cav', 'caw', 'cax', 'cay', 'caz', 'cba', 'cbb', 'cbc', 'cbd', 'cbe', 'cbg', 'cbh', 'cbi', 'cbj', 'cbk', 'cbl', 'cbn', 'cbo', 'cbq', 'cbr', 'cbs', 'cbt', 'cbu', 'cbv', 'cbw', 'cby', 'cca', 'ccc', 'ccd', 'cce', 'ccg', 'cch', 'ccj', 'ccl', 'ccm', 'ccn', 'cco', 'ccp', 'ccq', 'ccr', 'ccs', 'cda', 'cdc', 'cdd', 'cde', 'cdf', 'cdg', 'cdh', 'cdi', 'cdj', 'cdm', 'cdn', 'cdo', 'cdr', 'cds', 'cdy', 'cdz', 'cea', 'ceb', 'ceg', 'cek', 'cel', 'cen', 'cet', 'cfa', 'cfd', 'cfg', 'cfm', 'cga', 'cgc', 'cgg', 'cgk', 'chb', 'chc', 'chd', 'chf', 'chg', 'chh', 'chj', 'chk', 'chl', 'chm', 'chn', 'cho', 'chp', 'chq', 'chr', 'cht', 'chw', 'chx', 'chy', 'chz', 'cia', 'cib', 'cic', 'cid', 'cie', 'cih', 'cik', 'cim', 'cin', 'cip', 'cir', 'ciw', 'ciy', 'cja', 'cje', 'cjh', 'cji', 'cjk', 'cjm', 'cjn', 'cjo', 'cjp', 'cjr', 'cjs', 'cjv', 'cjy', 'cka', 'ckb', 'ckh', 'ckl', 'ckn', 'cko', 'ckq', 'ckr', 'cks', 'ckt', 'cku', 'ckv', 'ckx', 'cky', 'ckz', 'cla', 'clc', 'cld', 'cle', 'clh', 'cli', 'clj', 'clk', 'cll', 'clm', 'clo', 'clt', 'clu', 'clw', 'cly', 'cma', 'cmc', 'cme', 'cmg', 'cmi', 'cmk', 'cml', 'cmm', 'cmn', 'cmo', 'cmr', 'cms', 'cmt', 'cna', 'cnb', 'cnc', 'cng', 'cnh', 'cni', 'cnk', 'cnl', 'cno', 'cnr', 'cns', 'cnt', 'cnu', 'cnw', 'cnx', 'coa', 'cob', 'coc', 'cod', 'coe', 'cof', 'cog', 'coh', 'coj', 'cok', 'col', 'com', 'con', 'coo', 'cop', 'coq', 'cot', 'cou', 'cov', 'cow', 'cox', 'coy', 'coz', 'cpa', 'cpb', 'cpc', 'cpe', 'cpf', 'cpg', 'cpi', 'cpn', 'cpo', 'cpp', 'cps', 'cpu', 'cpx', 'cpy', 'cqd', 'cqu', 'cra', 'crb', 'crc', 'crd', 'crf', 'crg', 'crh', 'cri', 'crj', 'crk', 'crl', 'crm', 'crn', 'cro', 'crp', 'crq', 'crr', 'crs', 'crt', 'crv', 'crw', 'crx', 'cry', 'crz', 'csa', 'csb', 'csc', 'csd', 'cse', 'csf', 'csg', 'csh', 'csi', 'csj', 'csk', 'csl', 'csm', 'csn', 'cso', 'csq', 'csr', 'css', 'cst', 'csu', 'csv', 'csw', 'csy', 'csz', 'cta', 'ctc', 'ctd', 'cte', 'ctg', 'cth', 'ctl', 'ctm', 'ctn', 'cto', 'ctp', 'cts', 'ctt', 'ctu', 'ctz', 'cua', 'cub', 'cuc', 'cug', 'cuh', 'cui', 'cuj', 'cuk', 'cul', 'cum', 'cuo', 'cup', 'cuq', 'cur', 'cus', 'cut', 'cuu', 'cuv', 'cuw', 'cux', 'cuy', 'cvg', 'cvn', 'cwa', 'cwb', 'cwd', 'cwe', 'cwg', 'cwt', 'cya', 'cyb', 'cyo', 'czh', 'czk', 'czn', 'czo', 'czt', 'daa', 'dac', 'dad', 'dae', 'daf', 'dag', 'dah', 'dai', 'daj', 'dak', 'dal', 'dam', 'dao', 'dap', 'daq', 'dar', 'das', 'dau', 'dav', 'daw', 'dax', 'day', 'daz', 'dba', 'dbb', 'dbd', 'dbe', 'dbf', 'dbg', 'dbi', 'dbj', 'dbl', 'dbm', 'dbn', 'dbo', 'dbp', 'dbq', 'dbr', 'dbt', 'dbu', 'dbv', 'dbw', 'dby', 'dcc', 'dcr', 'dda', 'ddd', 'dde', 'ddg', 'ddi', 'ddj', 'ddn', 'ddo', 'ddr', 'dds', 'ddw', 'dec', 'ded', 'dee', 'def', 'deg', 'deh', 'dei', 'dek', 'del', 'dem', 'den', 'dep', 'deq', 'der', 'des', 'dev', 'dez', 'dga', 'dgb', 'dgc', 'dgd', 'dge', 'dgg', 'dgh', 'dgi', 'dgk', 'dgl', 'dgn', 'dgo', 'dgr', 'dgs', 'dgt', 'dgu', 'dgw', 'dgx', 'dgz', 'dha', 'dhd', 'dhg', 'dhi', 'dhl', 'dhm', 'dhn', 'dho', 'dhr', 'dhs', 'dhu', 'dhv', 'dhw', 'dhx', 'dia', 'dib', 'dic', 'did', 'dif', 'dig', 'dih', 'dii', 'dij', 'dik', 'dil', 'dim', 'din', 'dio', 'dip', 'diq', 'dir', 'dis', 'dit', 'diu', 'diw', 'dix', 'diy', 'diz', 'dja', 'djb', 'djc', 'djd', 'dje', 'djf', 'dji', 'djj', 'djk', 'djl', 'djm', 'djn', 'djo', 'djr', 'dju', 'djw', 'dka', 'dkk', 'dkl', 'dkr', 'dks', 'dkx', 'dlg', 'dlk', 'dlm', 'dln', 'dma', 'dmb', 'dmc', 'dmd', 'dme', 'dmg', 'dmk', 'dml', 'dmm', 'dmn', 'dmo', 'dmr', 'dms', 'dmu', 'dmv', 'dmw', 'dmx', 'dmy', 'dna', 'dnd', 'dne', 'dng', 'dni', 'dnj', 'dnk', 'dnn', 'dnr', 'dnt', 'dnu', 'dnv', 'dnw', 'dny', 'doa', 'dob', 'doc', 'doe', 'dof', 'doh', 'doi', 'dok', 'dol', 'don', 'doo', 'dop', 'doq', 'dor', 'dos', 'dot', 'dov', 'dow', 'dox', 'doy', 'doz', 'dpp', 'dra', 'drb', 'drc', 'drd', 'dre', 'drg', 'drh', 'dri', 'drl', 'drn', 'dro', 'drq', 'drr', 'drs', 'drt', 'dru', 'drw', 'dry', 'dsb', 'dse', 'dsh', 'dsi', 'dsl', 'dsn', 'dso', 'dsq', 'dta', 'dtb', 'dtd', 'dth', 'dti', 'dtk', 'dtm', 'dtn', 'dto', 'dtp', 'dtr', 'dts', 'dtt', 'dtu', 'dty', 'dua', 'dub', 'duc', 'dud', 'due', 'duf', 'dug', 'duh', 'dui', 'duj', 'duk', 'dul', 'dum', 'dun', 'duo', 'dup', 'duq', 'dur', 'dus', 'duu', 'duv', 'duw', 'dux', 'duy', 'duz', 'dva', 'dwa', 'dwl', 'dwr', 'dws', 'dwu', 'dww', 'dwy', 'dya', 'dyb', 'dyd', 'dyg', 'dyi', 'dym', 'dyn', 'dyo', 'dyu', 'dyy', 'dza', 'dzd', 'dze', 'dzg', 'dzl', 'dzn', 'eaa', 'ebg', 'ebk', 'ebo', 'ebr', 'ebu', 'ecr', 'ecs', 'ecy', 'eee', 'efa', 'efe', 'efi', 'ega', 'egl', 'ego', 'egx', 'egy', 'ehu', 'eip', 'eit', 'eiv', 'eja', 'eka', 'ekc', 'eke', 'ekg', 'eki', 'ekk', 'ekl', 'ekm', 'eko', 'ekp', 'ekr', 'eky', 'ele', 'elh', 'eli', 'elk', 'elm', 'elo', 'elp', 'elu', 'elx', 'ema', 'emb', 'eme', 'emg', 'emi', 'emk', 'emm', 'emn', 'emo', 'emp', 'ems', 'emu', 'emw', 'emx', 'emy', 'ena', 'enb', 'enc', 'end', 'enf', 'enh', 'enl', 'enm', 'enn', 'eno', 'enq', 'enr', 'enu', 'env', 'enw', 'enx', 'eot', 'epi', 'era', 'erg', 'erh', 'eri', 'erk', 'ero', 'err', 'ers', 'ert', 'erw', 'ese', 'esg', 'esh', 'esi', 'esk', 'esl', 'esm', 'esn', 'eso', 'esq', 'ess', 'esu', 'esx', 'esy', 'etb', 'etc', 'eth', 'etn', 'eto', 'etr', 'ets', 'ett', 'etu', 'etx', 'etz', 'euq', 'eve', 'evh', 'evn', 'ewo', 'ext', 'eya', 'eyo', 'eza', 'eze', 'faa', 'fab', 'fad', 'faf', 'fag', 'fah', 'fai', 'faj', 'fak', 'fal', 'fam', 'fan', 'fap', 'far', 'fat', 'fau', 'fax', 'fay', 'faz', 'fbl', 'fcs', 'fer', 'ffi', 'ffm', 'fgr', 'fia', 'fie', 'fil', 'fip', 'fir', 'fit', 'fiu', 'fiw', 'fkk', 'fkv', 'fla', 'flh', 'fli', 'fll', 'fln', 'flr', 'fly', 'fmp', 'fmu', 'fnb', 'fng', 'fni', 'fod', 'foi', 'fom', 'fon', 'for', 'fos', 'fox', 'fpe', 'fqs', 'frc', 'frd', 'frk', 'frm', 'fro', 'frp', 'frq', 'frr', 'frs', 'frt', 'fse', 'fsl', 'fss', 'fub', 'fuc', 'fud', 'fue', 'fuf', 'fuh', 'fui', 'fuj', 'fum', 'fun', 'fuq', 'fur', 'fut', 'fuu', 'fuv', 'fuy', 'fvr', 'fwa', 'fwe', 'gaa', 'gab', 'gac', 'gad', 'gae', 'gaf', 'gag', 'gah', 'gai', 'gaj', 'gak', 'gal', 'gam', 'gan', 'gao', 'gap', 'gaq', 'gar', 'gas', 'gat', 'gau', 'gav', 'gaw', 'gax', 'gay', 'gaz', 'gba', 'gbb', 'gbc', 'gbd', 'gbe', 'gbf', 'gbg', 'gbh', 'gbi', 'gbj', 'gbk', 'gbl', 'gbm', 'gbn', 'gbo', 'gbp', 'gbq', 'gbr', 'gbs', 'gbu', 'gbv', 'gbw', 'gbx', 'gby', 'gbz', 'gcc', 'gcd', 'gce', 'gcf', 'gcl', 'gcn', 'gcr', 'gct', 'gda', 'gdb', 'gdc', 'gdd', 'gde', 'gdf', 'gdg', 'gdh', 'gdi', 'gdj', 'gdk', 'gdl', 'gdm', 'gdn', 'gdo', 'gdq', 'gdr', 'gds', 'gdt', 'gdu', 'gdx', 'gea', 'geb', 'gec', 'ged', 'geg', 'geh', 'gei', 'gej', 'gek', 'gel', 'gem', 'geq', 'ges', 'gev', 'gew', 'gex', 'gey', 'gez', 'gfk', 'gft', 'gfx', 'gga', 'ggb', 'ggd', 'gge', 'ggg', 'ggk', 'ggl', 'ggn', 'ggo', 'ggr', 'ggt', 'ggu', 'ggw', 'gha', 'ghc', 'ghe', 'ghh', 'ghk', 'ghl', 'ghn', 'gho', 'ghr', 'ghs', 'ght', 'gia', 'gib', 'gic', 'gid', 'gie', 'gig', 'gih', 'gil', 'gim', 'gin', 'gio', 'gip', 'giq', 'gir', 'gis', 'git', 'giu', 'giw', 'gix', 'giy', 'giz', 'gji', 'gjk', 'gjm', 'gjn', 'gjr', 'gju', 'gka', 'gkd', 'gke', 'gkn', 'gko', 'gkp', 'gku', 'glc', 'gld', 'glh', 'gli', 'glj', 'glk', 'gll', 'glo', 'glr', 'glu', 'glw', 'gly', 'gma', 'gmb', 'gmd', 'gme', 'gmg', 'gmh', 'gml', 'gmm', 'gmn', 'gmq', 'gmu', 'gmv', 'gmw', 'gmx', 'gmy', 'gmz', 'gna', 'gnb', 'gnc', 'gnd', 'gne', 'gng', 'gnh', 'gni', 'gnj', 'gnk', 'gnl', 'gnm', 'gnn', 'gno', 'gnq', 'gnr', 'gnt', 'gnu', 'gnw', 'gnz', 'goa', 'gob', 'goc', 'god', 'goe', 'gof', 'gog', 'goh', 'goi', 'goj', 'gok', 'gol', 'gom', 'gon', 'goo', 'gop', 'goq', 'gor', 'gos', 'got', 'gou', 'gow', 'gox', 'goy', 'goz', 'gpa', 'gpe', 'gpn', 'gqa', 'gqi', 'gqn', 'gqr', 'gqu', 'gra', 'grb', 'grc', 'grd', 'grg', 'grh', 'gri', 'grj', 'grk', 'grm', 'gro', 'grq', 'grr', 'grs', 'grt', 'gru', 'grv', 'grw', 'grx', 'gry', 'grz', 'gse', 'gsg', 'gsl', 'gsm', 'gsn', 'gso', 'gsp', 'gss', 'gsw', 'gta', 'gti', 'gtu', 'gua', 'gub', 'guc', 'gud', 'gue', 'guf', 'gug', 'guh', 'gui', 'guk', 'gul', 'gum', 'gun', 'guo', 'gup', 'guq', 'gur', 'gus', 'gut', 'guu', 'guv', 'guw', 'gux', 'guz', 'gva', 'gvc', 'gve', 'gvf', 'gvj', 'gvl', 'gvm', 'gvn', 'gvo', 'gvp', 'gvr', 'gvs', 'gvy', 'gwa', 'gwb', 'gwc', 'gwd', 'gwe', 'gwf', 'gwg', 'gwi', 'gwj', 'gwm', 'gwn', 'gwr', 'gwt', 'gwu', 'gww', 'gwx', 'gxx', 'gya', 'gyb', 'gyd', 'gye', 'gyf', 'gyg', 'gyi', 'gyl', 'gym', 'gyn', 'gyo', 'gyr', 'gyy', 'gza', 'gzi', 'gzn', 'haa', 'hab', 'hac', 'had', 'hae', 'haf', 'hag', 'hah', 'hai', 'haj', 'hak', 'hal', 'ham', 'han', 'hao', 'hap', 'haq', 'har', 'has', 'hav', 'haw', 'hax', 'hay', 'haz', 'hba', 'hbb', 'hbn', 'hbo', 'hbu', 'hca', 'hch', 'hdn', 'hds', 'hdy', 'hea', 'hed', 'heg', 'heh', 'hei', 'hem', 'hgm', 'hgw', 'hhi', 'hhr', 'hhy', 'hia', 'hib', 'hid', 'hif', 'hig', 'hih', 'hii', 'hij', 'hik', 'hil', 'him', 'hio', 'hir', 'hit', 'hiw', 'hix', 'hji', 'hka', 'hke', 'hkk', 'hkn', 'hks', 'hla', 'hlb', 'hld', 'hle', 'hlt', 'hlu', 'hma', 'hmb', 'hmc', 'hmd', 'hme', 'hmf', 'hmg', 'hmh', 'hmi', 'hmj', 'hmk', 'hml', 'hmm', 'hmn', 'hmp', 'hmq', 'hmr', 'hms', 'hmt', 'hmu', 'hmv', 'hmw', 'hmx', 'hmy', 'hmz', 'hna', 'hnd', 'hne', 'hnh', 'hni', 'hnj', 'hnn', 'hno', 'hns', 'hnu', 'hoa', 'hob', 'hoc', 'hod', 'hoe', 'hoh', 'hoi', 'hoj', 'hok', 'hol', 'hom', 'hoo', 'hop', 'hor', 'hos', 'hot', 'hov', 'how', 'hoy', 'hoz', 'hpo', 'hps', 'hra', 'hrc', 'hre', 'hrk', 'hrm', 'hro', 'hrp', 'hrr', 'hrt', 'hru', 'hrw', 'hrx', 'hrz', 'hsb', 'hsh', 'hsl', 'hsn', 'hss', 'hti', 'hto', 'hts', 'htu', 'htx', 'hub', 'huc', 'hud', 'hue', 'huf', 'hug', 'huh', 'hui', 'huj', 'huk', 'hul', 'hum', 'huo', 'hup', 'huq', 'hur', 'hus', 'hut', 'huu', 'huv', 'huw', 'hux', 'huy', 'huz', 'hvc', 'hve', 'hvk', 'hvn', 'hvv', 'hwa', 'hwc', 'hwo', 'hya', 'hyw', 'hyx', 'iai', 'ian', 'iap', 'iar', 'iba', 'ibb', 'ibd', 'ibe', 'ibg', 'ibh', 'ibi', 'ibl', 'ibm', 'ibn', 'ibr', 'ibu', 'iby', 'ica', 'ich', 'icl', 'icr', 'ida', 'idb', 'idc', 'idd', 'ide', 'idi', 'idr', 'ids', 'idt', 'idu', 'ifa', 'ifb', 'ife', 'iff', 'ifk', 'ifm', 'ifu', 'ify', 'igb', 'ige', 'igg', 'igl', 'igm', 'ign', 'igo', 'igs', 'igw', 'ihb', 'ihi', 'ihp', 'ihw', 'iin', 'iir', 'ijc', 'ije', 'ijj', 'ijn', 'ijo', 'ijs', 'ike', 'iki', 'ikk', 'ikl', 'iko', 'ikp', 'ikr', 'iks', 'ikt', 'ikv', 'ikw', 'ikx', 'ikz', 'ila', 'ilb', 'ilg', 'ili', 'ilk', 'ill', 'ilm', 'ilo', 'ilp', 'ils', 'ilu', 'ilv', 'ilw', 'ima', 'ime', 'imi', 'iml', 'imn', 'imo', 'imr', 'ims', 'imy', 'inb', 'inc', 'ine', 'ing', 'inh', 'inj', 'inl', 'inm', 'inn', 'ino', 'inp', 'ins', 'int', 'inz', 'ior', 'iou', 'iow', 'ipi', 'ipo', 'iqu', 'iqw', 'ira', 'ire', 'irh', 'iri', 'irk', 'irn', 'iro', 'irr', 'iru', 'irx', 'iry', 'isa', 'isc', 'isd', 'ise', 'isg', 'ish', 'isi', 'isk', 'ism', 'isn', 'iso', 'isr', 'ist', 'isu', 'itb', 'itc', 'itd', 'ite', 'iti', 'itk', 'itl', 'itm', 'ito', 'itr', 'its', 'itt', 'itv', 'itw', 'itx', 'ity', 'itz', 'ium', 'ivb', 'ivv', 'iwk', 'iwm', 'iwo', 'iws', 'ixc', 'ixl', 'iya', 'iyo', 'iyx', 'izh', 'izi', 'izr', 'izz', 'jaa', 'jab', 'jac', 'jad', 'jae', 'jaf', 'jah', 'jaj', 'jak', 'jal', 'jam', 'jan', 'jao', 'jaq', 'jar', 'jas', 'jat', 'jau', 'jax', 'jay', 'jaz', 'jbe', 'jbi', 'jbj', 'jbk', 'jbn', 'jbo', 'jbr', 'jbt', 'jbu', 'jbw', 'jcs', 'jct', 'jda', 'jdg', 'jdt', 'jeb', 'jee', 'jeg', 'jeh', 'jei', 'jek', 'jel', 'jen', 'jer', 'jet', 'jeu', 'jgb', 'jge', 'jgk', 'jgo', 'jhi', 'jhs', 'jia', 'jib', 'jic', 'jid', 'jie', 'jig', 'jih', 'jii', 'jil', 'jim', 'jio', 'jiq', 'jit', 'jiu', 'jiv', 'jiy', 'jje', 'jjr', 'jka', 'jkm', 'jko', 'jkp', 'jkr', 'jku', 'jle', 'jls', 'jma', 'jmb', 'jmc', 'jmd', 'jmi', 'jml', 'jmn', 'jmr', 'jms', 'jmw', 'jmx', 'jna', 'jnd', 'jng', 'jni', 'jnj', 'jnl', 'jns', 'job', 'jod', 'jog', 'jor', 'jos', 'jow', 'jpa', 'jpr', 'jpx', 'jqr', 'jra', 'jrb', 'jrr', 'jrt', 'jru', 'jsl', 'jua', 'jub', 'juc', 'jud', 'juh', 'jui', 'juk', 'jul', 'jum', 'jun', 'juo', 'jup', 'jur', 'jus', 'jut', 'juu', 'juw', 'juy', 'jvd', 'jvn', 'jwi', 'jya', 'jye', 'jyy', 'kaa', 'kab', 'kac', 'kad', 'kae', 'kaf', 'kag', 'kah', 'kai', 'kaj', 'kak', 'kam', 'kao', 'kap', 'kaq', 'kar', 'kav', 'kaw', 'kax', 'kay', 'kba', 'kbb', 'kbc', 'kbd', 'kbe', 'kbf', 'kbg', 'kbh', 'kbi', 'kbj', 'kbk', 'kbl', 'kbm', 'kbn', 'kbo', 'kbp', 'kbq', 'kbr', 'kbs', 'kbt', 'kbu', 'kbv', 'kbw', 'kbx', 'kby', 'kbz', 'kca', 'kcb', 'kcc', 'kcd', 'kce', 'kcf', 'kcg', 'kch', 'kci', 'kcj', 'kck', 'kcl', 'kcm', 'kcn', 'kco', 'kcp', 'kcq', 'kcr', 'kcs', 'kct', 'kcu', 'kcv', 'kcw', 'kcx', 'kcy', 'kcz', 'kda', 'kdc', 'kdd', 'kde', 'kdf', 'kdg', 'kdh', 'kdi', 'kdj', 'kdk', 'kdl', 'kdm', 'kdn', 'kdo', 'kdp', 'kdq', 'kdr', 'kdt', 'kdu', 'kdv', 'kdw', 'kdx', 'kdy', 'kdz', 'kea', 'keb', 'kec', 'ked', 'kee', 'kef', 'keg', 'keh', 'kei', 'kej', 'kek', 'kel', 'kem', 'ken', 'keo', 'kep', 'keq', 'ker', 'kes', 'ket', 'keu', 'kev', 'kew', 'kex', 'key', 'kez', 'kfa', 'kfb', 'kfc', 'kfd', 'kfe', 'kff', 'kfg', 'kfh', 'kfi', 'kfj', 'kfk', 'kfl', 'kfm', 'kfn', 'kfo', 'kfp', 'kfq', 'kfr', 'kfs', 'kft', 'kfu', 'kfv', 'kfw', 'kfx', 'kfy', 'kfz', 'kga', 'kgb', 'kgc', 'kgd', 'kge', 'kgf', 'kgg', 'kgh', 'kgi', 'kgj', 'kgk', 'kgl', 'kgm', 'kgn', 'kgo', 'kgp', 'kgq', 'kgr', 'kgs', 'kgt', 'kgu', 'kgv', 'kgw', 'kgx', 'kgy', 'kha', 'khb', 'khc', 'khd', 'khe', 'khf', 'khg', 'khh', 'khi', 'khj', 'khk', 'khl', 'khn', 'kho', 'khp', 'khq', 'khr', 'khs', 'kht', 'khu', 'khv', 'khw', 'khx', 'khy', 'khz', 'kia', 'kib', 'kic', 'kid', 'kie', 'kif', 'kig', 'kih', 'kii', 'kij', 'kil', 'kim', 'kio', 'kip', 'kiq', 'kis', 'kit', 'kiu', 'kiv', 'kiw', 'kix', 'kiy', 'kiz', 'kja', 'kjb', 'kjc', 'kjd', 'kje', 'kjf', 'kjg', 'kjh', 'kji', 'kjj', 'kjk', 'kjl', 'kjm', 'kjn', 'kjo', 'kjp', 'kjq', 'kjr', 'kjs', 'kjt', 'kju', 'kjv', 'kjx', 'kjy', 'kjz', 'kka', 'kkb', 'kkc', 'kkd', 'kke', 'kkf', 'kkg', 'kkh', 'kki', 'kkj', 'kkk', 'kkl', 'kkm', 'kkn', 'kko', 'kkp', 'kkq', 'kkr', 'kks', 'kkt', 'kku', 'kkv', 'kkw', 'kkx', 'kky', 'kkz', 'kla', 'klb', 'klc', 'kld', 'kle', 'klf', 'klg', 'klh', 'kli', 'klj', 'klk', 'kll', 'klm', 'kln', 'klo', 'klp', 'klq', 'klr', 'kls', 'klt', 'klu', 'klv', 'klw', 'klx', 'kly', 'klz', 'kma', 'kmb', 'kmc', 'kmd', 'kme', 'kmf', 'kmg', 'kmh', 'kmi', 'kmj', 'kmk', 'kml', 'kmm', 'kmn', 'kmo', 'kmp', 'kmq', 'kmr', 'kms', 'kmt', 'kmu', 'kmv', 'kmw', 'kmx', 'kmy', 'kmz', 'kna', 'knb', 'knc', 'knd', 'kne', 'knf', 'kng', 'kni', 'knj', 'knk', 'knl', 'knm', 'knn', 'kno', 'knp', 'knq', 'knr', 'kns', 'knt', 'knu', 'knv', 'knw', 'knx', 'kny', 'knz', 'koa', 'koc', 'kod', 'koe', 'kof', 'kog', 'koh', 'koi', 'koj', 'kok', 'kol', 'koo', 'kop', 'koq', 'kos', 'kot', 'kou', 'kov', 'kow', 'kox', 'koy', 'koz', 'kpa', 'kpb', 'kpc', 'kpd', 'kpe', 'kpf', 'kpg', 'kph', 'kpi', 'kpj', 'kpk', 'kpl', 'kpm', 'kpn', 'kpo', 'kpp', 'kpq', 'kpr', 'kps', 'kpt', 'kpu', 'kpv', 'kpw', 'kpx', 'kpy', 'kpz', 'kqa', 'kqb', 'kqc', 'kqd', 'kqe', 'kqf', 'kqg', 'kqh', 'kqi', 'kqj', 'kqk', 'kql', 'kqm', 'kqn', 'kqo', 'kqp', 'kqq', 'kqr', 'kqs', 'kqt', 'kqu', 'kqv', 'kqw', 'kqx', 'kqy', 'kqz', 'kra', 'krb', 'krc', 'krd', 'kre', 'krf', 'krh', 'kri', 'krj', 'krk', 'krl', 'krm', 'krn', 'kro', 'krp', 'krr', 'krs', 'krt', 'kru', 'krv', 'krw', 'krx', 'kry', 'krz', 'ksa', 'ksb', 'ksc', 'ksd', 'kse', 'ksf', 'ksg', 'ksh', 'ksi', 'ksj', 'ksk', 'ksl', 'ksm', 'ksn', 'kso', 'ksp', 'ksq', 'ksr', 'kss', 'kst', 'ksu', 'ksv', 'ksw', 'ksx', 'ksy', 'ksz', 'kta', 'ktb', 'ktc', 'ktd', 'kte', 'ktf', 'ktg', 'kth', 'kti', 'ktj', 'ktk', 'ktl', 'ktm', 'ktn', 'kto', 'ktp', 'ktq', 'ktr', 'kts', 'ktt', 'ktu', 'ktv', 'ktw', 'ktx', 'kty', 'ktz', 'kub', 'kuc', 'kud', 'kue', 'kuf', 'kug', 'kuh', 'kui', 'kuj', 'kuk', 'kul', 'kum', 'kun', 'kuo', 'kup', 'kuq', 'kus', 'kut', 'kuu', 'kuv', 'kuw', 'kux', 'kuy', 'kuz', 'kva', 'kvb', 'kvc', 'kvd', 'kve', 'kvf', 'kvg', 'kvh', 'kvi', 'kvj', 'kvk', 'kvl', 'kvm', 'kvn', 'kvo', 'kvp', 'kvq', 'kvr', 'kvs', 'kvt', 'kvu', 'kvv', 'kvw', 'kvx', 'kvy', 'kvz', 'kwa', 'kwb', 'kwc', 'kwd', 'kwe', 'kwf', 'kwg', 'kwh', 'kwi', 'kwj', 'kwk', 'kwl', 'kwm', 'kwn', 'kwo', 'kwp', 'kwq', 'kwr', 'kws', 'kwt', 'kwu', 'kwv', 'kww', 'kwx', 'kwy', 'kwz', 'kxa', 'kxb', 'kxc', 'kxd', 'kxe', 'kxf', 'kxh', 'kxi', 'kxj', 'kxk', 'kxl', 'kxm', 'kxn', 'kxo', 'kxp', 'kxq', 'kxr', 'kxs', 'kxt', 'kxu', 'kxv', 'kxw', 'kxx', 'kxy', 'kxz', 'kya', 'kyb', 'kyc', 'kyd', 'kye', 'kyf', 'kyg', 'kyh', 'kyi', 'kyj', 'kyk', 'kyl', 'kym', 'kyn', 'kyo', 'kyp', 'kyq', 'kyr', 'kys', 'kyt', 'kyu', 'kyv', 'kyw', 'kyx', 'kyy', 'kyz', 'kza', 'kzb', 'kzc', 'kzd', 'kze', 'kzf', 'kzg', 'kzh', 'kzi', 'kzj', 'kzk', 'kzl', 'kzm', 'kzn', 'kzo', 'kzp', 'kzq', 'kzr', 'kzs', 'kzt', 'kzu', 'kzv', 'kzw', 'kzx', 'kzy', 'kzz', 'laa', 'lab', 'lac', 'lad', 'lae', 'laf', 'lag', 'lah', 'lai', 'laj', 'lak', 'lal', 'lam', 'lan', 'lap', 'laq', 'lar', 'las', 'lau', 'law', 'lax', 'lay', 'laz', 'lba', 'lbb', 'lbc', 'lbe', 'lbf', 'lbg', 'lbi', 'lbj', 'lbk', 'lbl', 'lbm', 'lbn', 'lbo', 'lbq', 'lbr', 'lbs', 'lbt', 'lbu', 'lbv', 'lbw', 'lbx', 'lby', 'lbz', 'lcc', 'lcd', 'lce', 'lcf', 'lch', 'lcl', 'lcm', 'lcp', 'lcq', 'lcs', 'lda', 'ldb', 'ldd', 'ldg', 'ldh', 'ldi', 'ldj', 'ldk', 'ldl', 'ldm', 'ldn', 'ldo', 'ldp', 'ldq', 'lea', 'leb', 'lec', 'led', 'lee', 'lef', 'leg', 'leh', 'lei', 'lej', 'lek', 'lel', 'lem', 'len', 'leo', 'lep', 'leq', 'ler', 'les', 'let', 'leu', 'lev', 'lew', 'lex', 'ley', 'lez', 'lfa', 'lfn', 'lga', 'lgb', 'lgg', 'lgh', 'lgi', 'lgk', 'lgl', 'lgm', 'lgn', 'lgq', 'lgr', 'lgt', 'lgu', 'lgz', 'lha', 'lhh', 'lhi', 'lhl', 'lhm', 'lhn', 'lhp', 'lhs', 'lht', 'lhu', 'lia', 'lib', 'lic', 'lid', 'lie', 'lif', 'lig', 'lih', 'lii', 'lij', 'lik', 'lil', 'lio', 'lip', 'liq', 'lir', 'lis', 'liu', 'liv', 'liw', 'lix', 'liy', 'liz', 'lja', 'lje', 'lji', 'ljl', 'ljp', 'ljw', 'ljx', 'lka', 'lkb', 'lkc', 'lkd', 'lke', 'lkh', 'lki', 'lkj', 'lkl', 'lkm', 'lkn', 'lko', 'lkr', 'lks', 'lkt', 'lku', 'lky', 'lla', 'llb', 'llc', 'lld', 'lle', 'llf', 'llg', 'llh', 'lli', 'llj', 'llk', 'lll', 'llm', 'lln', 'llo', 'llp', 'llq', 'lls', 'llu', 'llx', 'lma', 'lmb', 'lmc', 'lmd', 'lme', 'lmf', 'lmg', 'lmh', 'lmi', 'lmj', 'lmk', 'lml', 'lmm', 'lmn', 'lmo', 'lmp', 'lmq', 'lmr', 'lmu', 'lmv', 'lmw', 'lmx', 'lmy', 'lmz', 'lna', 'lnb', 'lnd', 'lng', 'lnh', 'lni', 'lnj', 'lnl', 'lnm', 'lnn', 'lno', 'lns', 'lnu', 'lnw', 'lnz', 'loa', 'lob', 'loc', 'loe', 'lof', 'log', 'loh', 'loi', 'loj', 'lok', 'lol', 'lom', 'lon', 'loo', 'lop', 'loq', 'lor', 'los', 'lot', 'lou', 'lov', 'low', 'lox', 'loy', 'loz', 'lpa', 'lpe', 'lpn', 'lpo', 'lpx', 'lra', 'lrc', 'lre', 'lrg', 'lri', 'lrk', 'lrl', 'lrm', 'lrn', 'lro', 'lrr', 'lrt', 'lrv', 'lrz', 'lsa', 'lsd', 'lse', 'lsg', 'lsh', 'lsi', 'lsl', 'lsm', 'lso', 'lsp', 'lsr', 'lss', 'lst', 'lsy', 'ltc', 'ltg', 'lth', 'lti', 'ltn', 'lto', 'lts', 'ltu', 'lua', 'luc', 'lud', 'lue', 'luf', 'lui', 'luj', 'luk', 'lul', 'lum', 'lun', 'luo', 'lup', 'luq', 'lur', 'lus', 'lut', 'luu', 'luv', 'luw', 'luy', 'luz', 'lva', 'lvk', 'lvs', 'lvu', 'lwa', 'lwe', 'lwg', 'lwh', 'lwl', 'lwm', 'lwo', 'lws', 'lwt', 'lwu', 'lww', 'lya', 'lyg', 'lyn', 'lzh', 'lzl', 'lzn', 'lzz', 'maa', 'mab', 'mad', 'mae', 'maf', 'mag', 'mai', 'maj', 'mak', 'mam', 'man', 'map', 'maq', 'mas', 'mat', 'mau', 'mav', 'maw', 'max', 'maz', 'mba', 'mbb', 'mbc', 'mbd', 'mbe', 'mbf', 'mbh', 'mbi', 'mbj', 'mbk', 'mbl', 'mbm', 'mbn', 'mbo', 'mbp', 'mbq', 'mbr', 'mbs', 'mbt', 'mbu', 'mbv', 'mbw', 'mbx', 'mby', 'mbz', 'mca', 'mcb', 'mcc', 'mcd', 'mce', 'mcf', 'mcg', 'mch', 'mci', 'mcj', 'mck', 'mcl', 'mcm', 'mcn', 'mco', 'mcp', 'mcq', 'mcr', 'mcs', 'mct', 'mcu', 'mcv', 'mcw', 'mcx', 'mcy', 'mcz', 'mda', 'mdb', 'mdc', 'mdd', 'mde', 'mdf', 'mdg', 'mdh', 'mdi', 'mdj', 'mdk', 'mdl', 'mdm', 'mdn', 'mdp', 'mdq', 'mdr', 'mds', 'mdt', 'mdu', 'mdv', 'mdw', 'mdx', 'mdy', 'mdz', 'mea', 'meb', 'mec', 'med', 'mee', 'mef', 'meg', 'meh', 'mei', 'mej', 'mek', 'mel', 'mem', 'men', 'meo', 'mep', 'meq', 'mer', 'mes', 'met', 'meu', 'mev', 'mew', 'mey', 'mez', 'mfa', 'mfb', 'mfc', 'mfd', 'mfe', 'mff', 'mfg', 'mfh', 'mfi', 'mfj', 'mfk', 'mfl', 'mfm', 'mfn', 'mfo', 'mfp', 'mfq', 'mfr', 'mfs', 'mft', 'mfu', 'mfv', 'mfw', 'mfx', 'mfy', 'mfz', 'mga', 'mgb', 'mgc', 'mgd', 'mge', 'mgf', 'mgg', 'mgh', 'mgi', 'mgj', 'mgk', 'mgl', 'mgm', 'mgn', 'mgo', 'mgp', 'mgq', 'mgr', 'mgs', 'mgt', 'mgu', 'mgv', 'mgw', 'mgx', 'mgy', 'mgz', 'mha', 'mhb', 'mhc', 'mhd', 'mhe', 'mhf', 'mhg', 'mhh', 'mhi', 'mhj', 'mhk', 'mhl', 'mhm', 'mhn', 'mho', 'mhp', 'mhq', 'mhr', 'mhs', 'mht', 'mhu', 'mhw', 'mhx', 'mhy', 'mhz', 'mia', 'mib', 'mic', 'mid', 'mie', 'mif', 'mig', 'mih', 'mii', 'mij', 'mik', 'mil', 'mim', 'min', 'mio', 'mip', 'miq', 'mir', 'mis', 'mit', 'miu', 'miw', 'mix', 'miy', 'miz', 'mja', 'mjb', 'mjc', 'mjd', 'mje', 'mjg', 'mjh', 'mji', 'mjj', 'mjk', 'mjl', 'mjm', 'mjn', 'mjo', 'mjp', 'mjq', 'mjr', 'mjs', 'mjt', 'mju', 'mjv', 'mjw', 'mjx', 'mjy', 'mjz', 'mka', 'mkb', 'mkc', 'mke', 'mkf', 'mkg', 'mkh', 'mki', 'mkj', 'mkk', 'mkl', 'mkm', 'mkn', 'mko', 'mkp', 'mkq', 'mkr', 'mks', 'mkt', 'mku', 'mkv', 'mkw', 'mkx', 'mky', 'mkz', 'mla', 'mlb', 'mlc', 'mld', 'mle', 'mlf', 'mlh', 'mli', 'mlj', 'mlk', 'mll', 'mlm', 'mln', 'mlo', 'mlp', 'mlq', 'mlr', 'mls', 'mlu', 'mlv', 'mlw', 'mlx', 'mlz', 'mma', 'mmb', 'mmc', 'mmd', 'mme', 'mmf', 'mmg', 'mmh', 'mmi', 'mmj', 'mmk', 'mml', 'mmm', 'mmn', 'mmo', 'mmp', 'mmq', 'mmr', 'mmt', 'mmu', 'mmv', 'mmw', 'mmx', 'mmy', 'mmz', 'mna', 'mnb', 'mnc', 'mnd', 'mne', 'mnf', 'mng', 'mnh', 'mni', 'mnj', 'mnk', 'mnl', 'mnm', 'mnn', 'mno', 'mnp', 'mnq', 'mnr', 'mns', 'mnt', 'mnu', 'mnv', 'mnw', 'mnx', 'mny', 'mnz', 'moa', 'moc', 'mod', 'moe', 'mof', 'mog', 'moh', 'moi', 'moj', 'mok', 'mom', 'moo', 'mop', 'moq', 'mor', 'mos', 'mot', 'mou', 'mov', 'mow', 'mox', 'moy', 'moz', 'mpa', 'mpb', 'mpc', 'mpd', 'mpe', 'mpg', 'mph', 'mpi', 'mpj', 'mpk', 'mpl', 'mpm', 'mpn', 'mpo', 'mpp', 'mpq', 'mpr', 'mps', 'mpt', 'mpu', 'mpv', 'mpw', 'mpx', 'mpy', 'mpz', 'mqa', 'mqb', 'mqc', 'mqe', 'mqf', 'mqg', 'mqh', 'mqi', 'mqj', 'mqk', 'mql', 'mqm', 'mqn', 'mqo', 'mqp', 'mqq', 'mqr', 'mqs', 'mqt', 'mqu', 'mqv', 'mqw', 'mqx', 'mqy', 'mqz', 'mra', 'mrb', 'mrc', 'mrd', 'mre', 'mrf', 'mrg', 'mrh', 'mrj', 'mrk', 'mrl', 'mrm', 'mrn', 'mro', 'mrp', 'mrq', 'mrr', 'mrs', 'mrt', 'mru', 'mrv', 'mrw', 'mrx', 'mry', 'mrz', 'msb', 'msc', 'msd', 'mse', 'msf', 'msg', 'msh', 'msi', 'msj', 'msk', 'msl', 'msm', 'msn', 'mso', 'msp', 'msq', 'msr', 'mss', 'mst', 'msu', 'msv', 'msw', 'msx', 'msy', 'msz', 'mta', 'mtb', 'mtc', 'mtd', 'mte', 'mtf', 'mtg', 'mth', 'mti', 'mtj', 'mtk', 'mtl', 'mtm', 'mtn', 'mto', 'mtp', 'mtq', 'mtr', 'mts', 'mtt', 'mtu', 'mtv', 'mtw', 'mtx', 'mty', 'mua', 'mub', 'muc', 'mud', 'mue', 'mug', 'muh', 'mui', 'muj', 'muk', 'mul', 'mum', 'mun', 'muo', 'mup', 'muq', 'mur', 'mus', 'mut', 'muu', 'muv', 'mux', 'muy', 'muz', 'mva', 'mvb', 'mvd', 'mve', 'mvf', 'mvg', 'mvh', 'mvi', 'mvk', 'mvl', 'mvm', 'mvn', 'mvo', 'mvp', 'mvq', 'mvr', 'mvs', 'mvt', 'mvu', 'mvv', 'mvw', 'mvx', 'mvy', 'mvz', 'mwa', 'mwb', 'mwc', 'mwd', 'mwe', 'mwf', 'mwg', 'mwh', 'mwi', 'mwj', 'mwk', 'mwl', 'mwm', 'mwn', 'mwo', 'mwp', 'mwq', 'mwr', 'mws', 'mwt', 'mwu', 'mwv', 'mww', 'mwx', 'mwy', 'mwz', 'mxa', 'mxb', 'mxc', 'mxd', 'mxe', 'mxf', 'mxg', 'mxh', 'mxi', 'mxj', 'mxk', 'mxl', 'mxm', 'mxn', 'mxo', 'mxp', 'mxq', 'mxr', 'mxs', 'mxt', 'mxu', 'mxv', 'mxw', 'mxx', 'mxy', 'mxz', 'myb', 'myc', 'myd', 'mye', 'myf', 'myg', 'myh', 'myi', 'myj', 'myk', 'myl', 'mym', 'myn', 'myo', 'myp', 'myq', 'myr', 'mys', 'myt', 'myu', 'myv', 'myw', 'myx', 'myy', 'myz', 'mza', 'mzb', 'mzc', 'mzd', 'mze', 'mzg', 'mzh', 'mzi', 'mzj', 'mzk', 'mzl', 'mzm', 'mzn', 'mzo', 'mzp', 'mzq', 'mzr', 'mzs', 'mzt', 'mzu', 'mzv', 'mzw', 'mzx', 'mzy', 'mzz', 'naa', 'nab', 'nac', 'nad', 'nae', 'naf', 'nag', 'nah', 'nai', 'naj', 'nak', 'nal', 'nam', 'nan', 'nao', 'nap', 'naq', 'nar', 'nas', 'nat', 'naw', 'nax', 'nay', 'naz', 'nba', 'nbb', 'nbc', 'nbd', 'nbe', 'nbf', 'nbg', 'nbh', 'nbi', 'nbj', 'nbk', 'nbm', 'nbn', 'nbo', 'nbp', 'nbq', 'nbr', 'nbs', 'nbt', 'nbu', 'nbv', 'nbw', 'nbx', 'nby', 'nca', 'ncb', 'ncc', 'ncd', 'nce', 'ncf', 'ncg', 'nch', 'nci', 'ncj', 'nck', 'ncl', 'ncm', 'ncn', 'nco', 'ncp', 'ncq', 'ncr', 'ncs', 'nct', 'ncu', 'ncx', 'ncz', 'nda', 'ndb', 'ndc', 'ndd', 'ndf', 'ndg', 'ndh', 'ndi', 'ndj', 'ndk', 'ndl', 'ndm', 'ndn', 'ndp', 'ndq', 'ndr', 'nds', 'ndt', 'ndu', 'ndv', 'ndw', 'ndx', 'ndy', 'ndz', 'nea', 'neb', 'nec', 'ned', 'nee', 'nef', 'neg', 'neh', 'nei', 'nej', 'nek', 'nem', 'nen', 'neo', 'neq', 'ner', 'nes', 'net', 'neu', 'nev', 'new', 'nex', 'ney', 'nez', 'nfa', 'nfd', 'nfl', 'nfr', 'nfu', 'nga', 'ngb', 'ngc', 'ngd', 'nge', 'ngf', 'ngg', 'ngh', 'ngi', 'ngj', 'ngk', 'ngl', 'ngm', 'ngn', 'ngo', 'ngp', 'ngq', 'ngr', 'ngs', 'ngt', 'ngu', 'ngv', 'ngw', 'ngx', 'ngy', 'ngz', 'nha', 'nhb', 'nhc', 'nhd', 'nhe', 'nhf', 'nhg', 'nhh', 'nhi', 'nhk', 'nhm', 'nhn', 'nho', 'nhp', 'nhq', 'nhr', 'nht', 'nhu', 'nhv', 'nhw', 'nhx', 'nhy', 'nhz', 'nia', 'nib', 'nic', 'nid', 'nie', 'nif', 'nig', 'nih', 'nii', 'nij', 'nik', 'nil', 'nim', 'nin', 'nio', 'niq', 'nir', 'nis', 'nit', 'niu', 'niv', 'niw', 'nix', 'niy', 'niz', 'nja', 'njb', 'njd', 'njh', 'nji', 'njj', 'njl', 'njm', 'njn', 'njo', 'njr', 'njs', 'njt', 'nju', 'njx', 'njy', 'njz', 'nka', 'nkb', 'nkc', 'nkd', 'nke', 'nkf', 'nkg', 'nkh', 'nki', 'nkj', 'nkk', 'nkm', 'nkn', 'nko', 'nkp', 'nkq', 'nkr', 'nks', 'nkt', 'nku', 'nkv', 'nkw', 'nkx', 'nkz', 'nla', 'nlc', 'nle', 'nlg', 'nli', 'nlj', 'nlk', 'nll', 'nlm', 'nln', 'nlo', 'nlq', 'nlr', 'nlu', 'nlv', 'nlw', 'nlx', 'nly', 'nlz', 'nma', 'nmb', 'nmc', 'nmd', 'nme', 'nmf', 'nmg', 'nmh', 'nmi', 'nmj', 'nmk', 'nml', 'nmm', 'nmn', 'nmo', 'nmp', 'nmq', 'nmr', 'nms', 'nmt', 'nmu', 'nmv', 'nmw', 'nmx', 'nmy', 'nmz', 'nna', 'nnb', 'nnc', 'nnd', 'nne', 'nnf', 'nng', 'nnh', 'nni', 'nnj', 'nnk', 'nnl', 'nnm', 'nnn', 'nnp', 'nnq', 'nnr', 'nns', 'nnt', 'nnu', 'nnv', 'nnw', 'nnx', 'nny', 'nnz', 'noa', 'noc', 'nod', 'noe', 'nof', 'nog', 'noh', 'noi', 'noj', 'nok', 'nol', 'nom', 'non', 'noo', 'nop', 'noq', 'nos', 'not', 'nou', 'nov', 'now', 'noy', 'noz', 'npa', 'npb', 'npg', 'nph', 'npi', 'npl', 'npn', 'npo', 'nps', 'npu', 'npx', 'npy', 'nqg', 'nqk', 'nql', 'nqm', 'nqn', 'nqo', 'nqq', 'nqy', 'nra', 'nrb', 'nrc', 'nre', 'nrf', 'nrg', 'nri', 'nrk', 'nrl', 'nrm', 'nrn', 'nrp', 'nrr', 'nrt', 'nru', 'nrx', 'nrz', 'nsa', 'nsc', 'nsd', 'nse', 'nsf', 'nsg', 'nsh', 'nsi', 'nsk', 'nsl', 'nsm', 'nsn', 'nso', 'nsp', 'nsq', 'nsr', 'nss', 'nst', 'nsu', 'nsv', 'nsw', 'nsx', 'nsy', 'nsz', 'ntd', 'nte', 'ntg', 'nti', 'ntj', 'ntk', 'ntm', 'nto', 'ntp', 'ntr', 'nts', 'ntu', 'ntw', 'ntx', 'nty', 'ntz', 'nua', 'nub', 'nuc', 'nud', 'nue', 'nuf', 'nug', 'nuh', 'nui', 'nuj', 'nuk', 'nul', 'num', 'nun', 'nuo', 'nup', 'nuq', 'nur', 'nus', 'nut', 'nuu', 'nuv', 'nuw', 'nux', 'nuy', 'nuz', 'nvh', 'nvm', 'nvo', 'nwa', 'nwb', 'nwc', 'nwe', 'nwg', 'nwi', 'nwm', 'nwo', 'nwr', 'nwx', 'nwy', 'nxa', 'nxd', 'nxe', 'nxg', 'nxi', 'nxk', 'nxl', 'nxm', 'nxn', 'nxo', 'nxq', 'nxr', 'nxu', 'nxx', 'nyb', 'nyc', 'nyd', 'nye', 'nyf', 'nyg', 'nyh', 'nyi', 'nyj', 'nyk', 'nyl', 'nym', 'nyn', 'nyo', 'nyp', 'nyq', 'nyr', 'nys', 'nyt', 'nyu', 'nyv', 'nyw', 'nyx', 'nyy', 'nza', 'nzb', 'nzd', 'nzi', 'nzk', 'nzm', 'nzs', 'nzu', 'nzy', 'nzz', 'oaa', 'oac', 'oar', 'oav', 'obi', 'obk', 'obl', 'obm', 'obo', 'obr', 'obt', 'obu', 'oca', 'och', 'oco', 'ocu', 'oda', 'odk', 'odt', 'odu', 'ofo', 'ofs', 'ofu', 'ogb', 'ogc', 'oge', 'ogg', 'ogo', 'ogu', 'oht', 'ohu', 'oia', 'oin', 'ojb', 'ojc', 'ojg', 'ojp', 'ojs', 'ojv', 'ojw', 'oka', 'okb', 'okd', 'oke', 'okg', 'okh', 'oki', 'okj', 'okk', 'okl', 'okm', 'okn', 'oko', 'okr', 'oks', 'oku', 'okv', 'okx', 'ola', 'old', 'ole', 'olk', 'olm', 'olo', 'olr', 'olt', 'olu', 'oma', 'omb', 'omc', 'ome', 'omg', 'omi', 'omk', 'oml', 'omn', 'omo', 'omp', 'omq', 'omr', 'omt', 'omu', 'omv', 'omw', 'omx', 'ona', 'onb', 'one', 'ong', 'oni', 'onj', 'onk', 'onn', 'ono', 'onp', 'onr', 'ons', 'ont', 'onu', 'onw', 'onx', 'ood', 'oog', 'oon', 'oor', 'oos', 'opa', 'opk', 'opm', 'opo', 'opt', 'opy', 'ora', 'orc', 'ore', 'org', 'orh', 'orn', 'oro', 'orr', 'ors', 'ort', 'oru', 'orv', 'orw', 'orx', 'ory', 'orz', 'osa', 'osc', 'osi', 'oso', 'osp', 'ost', 'osu', 'osx', 'ota', 'otb', 'otd', 'ote', 'oti', 'otk', 'otl', 'otm', 'otn', 'oto', 'otq', 'otr', 'ots', 'ott', 'otu', 'otw', 'otx', 'oty', 'otz', 'oua', 'oub', 'oue', 'oui', 'oum', 'oun', 'ovd', 'owi', 'owl', 'oyb', 'oyd', 'oym', 'oyy', 'ozm', 'paa', 'pab', 'pac', 'pad', 'pae', 'paf', 'pag', 'pah', 'pai', 'pak', 'pal', 'pam', 'pao', 'pap', 'paq', 'par', 'pas', 'pat', 'pau', 'pav', 'paw', 'pax', 'pay', 'paz', 'pbb', 'pbc', 'pbe', 'pbf', 'pbg', 'pbh', 'pbi', 'pbl', 'pbm', 'pbn', 'pbo', 'pbp', 'pbr', 'pbs', 'pbt', 'pbu', 'pbv', 'pby', 'pbz', 'pca', 'pcb', 'pcc', 'pcd', 'pce', 'pcf', 'pcg', 'pch', 'pci', 'pcj', 'pck', 'pcl', 'pcm', 'pcn', 'pcp', 'pcr', 'pcw', 'pda', 'pdc', 'pdi', 'pdn', 'pdo', 'pdt', 'pdu', 'pea', 'peb', 'ped', 'pee', 'pef', 'peg', 'peh', 'pei', 'pej', 'pek', 'pel', 'pem', 'peo', 'pep', 'peq', 'pes', 'pev', 'pex', 'pey', 'pez', 'pfa', 'pfe', 'pfl', 'pga', 'pgd', 'pgg', 'pgi', 'pgk', 'pgl', 'pgn', 'pgs', 'pgu', 'pgy', 'pgz', 'pha', 'phd', 'phg', 'phh', 'phi', 'phk', 'phl', 'phm', 'phn', 'pho', 'phq', 'phr', 'pht', 'phu', 'phv', 'phw', 'pia', 'pib', 'pic', 'pid', 'pie', 'pif', 'pig', 'pih', 'pii', 'pij', 'pil', 'pim', 'pin', 'pio', 'pip', 'pir', 'pis', 'pit', 'piu', 'piv', 'piw', 'pix', 'piy', 'piz', 'pjt', 'pka', 'pkb', 'pkc', 'pkg', 'pkh', 'pkn', 'pko', 'pkp', 'pkr', 'pks', 'pkt', 'pku', 'pla', 'plb', 'plc', 'pld', 'ple', 'plf', 'plg', 'plh', 'plj', 'plk', 'pll', 'pln', 'plo', 'plp', 'plq', 'plr', 'pls', 'plt', 'plu', 'plv', 'plw', 'ply', 'plz', 'pma', 'pmb', 'pmc', 'pmd', 'pme', 'pmf', 'pmh', 'pmi', 'pmj', 'pmk', 'pml', 'pmm', 'pmn', 'pmo', 'pmq', 'pmr', 'pms', 'pmt', 'pmu', 'pmw', 'pmx', 'pmy', 'pmz', 'pna', 'pnb', 'pnc', 'pne', 'png', 'pnh', 'pni', 'pnj', 'pnk', 'pnl', 'pnm', 'pnn', 'pno', 'pnp', 'pnq', 'pnr', 'pns', 'pnt', 'pnu', 'pnv', 'pnw', 'pnx', 'pny', 'pnz', 'poc', 'pod', 'poe', 'pof', 'pog', 'poh', 'poi', 'pok', 'pom', 'pon', 'poo', 'pop', 'poq', 'pos', 'pot', 'pov', 'pow', 'pox', 'poy', 'poz', 'ppa', 'ppe', 'ppi', 'ppk', 'ppl', 'ppm', 'ppn', 'ppo', 'ppp', 'ppq', 'ppr', 'pps', 'ppt', 'ppu', 'pqa', 'pqe', 'pqm', 'pqw', 'pra', 'prb', 'prc', 'prd', 'pre', 'prf', 'prg', 'prh', 'pri', 'prk', 'prl', 'prm', 'prn', 'pro', 'prp', 'prq', 'prr', 'prs', 'prt', 'pru', 'prw', 'prx', 'pry', 'prz', 'psa', 'psc', 'psd', 'pse', 'psg', 'psh', 'psi', 'psl', 'psm', 'psn', 'pso', 'psp', 'psq', 'psr', 'pss', 'pst', 'psu', 'psw', 'psy', 'pta', 'pth', 'pti', 'ptn', 'pto', 'ptp', 'ptq', 'ptr', 'ptt', 'ptu', 'ptv', 'ptw', 'pty', 'pua', 'pub', 'puc', 'pud', 'pue', 'puf', 'pug', 'pui', 'puj', 'puk', 'pum', 'puo', 'pup', 'puq', 'pur', 'put', 'puu', 'puw', 'pux', 'puy', 'puz', 'pwa', 'pwb', 'pwg', 'pwi', 'pwm', 'pwn', 'pwo', 'pwr', 'pww', 'pxm', 'pye', 'pym', 'pyn', 'pys', 'pyu', 'pyx', 'pyy', 'pzn', 'qaa..qtz', 'qua', 'qub', 'quc', 'qud', 'quf', 'qug', 'quh', 'qui', 'quk', 'qul', 'qum', 'qun', 'qup', 'quq', 'qur', 'qus', 'quv', 'quw', 'qux', 'quy', 'quz', 'qva', 'qvc', 'qve', 'qvh', 'qvi', 'qvj', 'qvl', 'qvm', 'qvn', 'qvo', 'qvp', 'qvs', 'qvw', 'qvy', 'qvz', 'qwa', 'qwc', 'qwe', 'qwh', 'qwm', 'qws', 'qwt', 'qxa', 'qxc', 'qxh', 'qxl', 'qxn', 'qxo', 'qxp', 'qxq', 'qxr', 'qxs', 'qxt', 'qxu', 'qxw', 'qya', 'qyp', 'raa', 'rab', 'rac', 'rad', 'raf', 'rag', 'rah', 'rai', 'raj', 'rak', 'ral', 'ram', 'ran', 'rao', 'rap', 'raq', 'rar', 'ras', 'rat', 'rau', 'rav', 'raw', 'rax', 'ray', 'raz', 'rbb', 'rbk', 'rbl', 'rbp', 'rcf', 'rdb', 'rea', 'reb', 'ree', 'reg', 'rei', 'rej', 'rel', 'rem', 'ren', 'rer', 'res', 'ret', 'rey', 'rga', 'rge', 'rgk', 'rgn', 'rgr', 'rgs', 'rgu', 'rhg', 'rhp', 'ria', 'rie', 'rif', 'ril', 'rim', 'rin', 'rir', 'rit', 'riu', 'rjg', 'rji', 'rjs', 'rka', 'rkb', 'rkh', 'rki', 'rkm', 'rkt', 'rkw', 'rma', 'rmb', 'rmc', 'rmd', 'rme', 'rmf', 'rmg', 'rmh', 'rmi', 'rmk', 'rml', 'rmm', 'rmn', 'rmo', 'rmp', 'rmq', 'rmr', 'rms', 'rmt', 'rmu', 'rmv', 'rmw', 'rmx', 'rmy', 'rmz', 'rna', 'rnd', 'rng', 'rnl', 'rnn', 'rnp', 'rnr', 'rnw', 'roa', 'rob', 'roc', 'rod', 'roe', 'rof', 'rog', 'rol', 'rom', 'roo', 'rop', 'ror', 'rou', 'row', 'rpn', 'rpt', 'rri', 'rro', 'rrt', 'rsb', 'rsi', 'rsl', 'rsm', 'rtc', 'rth', 'rtm', 'rts', 'rtw', 'rub', 'ruc', 'rue', 'ruf', 'rug', 'ruh', 'rui', 'ruk', 'ruo', 'rup', 'ruq', 'rut', 'ruu', 'ruy', 'ruz', 'rwa', 'rwk', 'rwm', 'rwo', 'rwr', 'rxd', 'rxw', 'ryn', 'rys', 'ryu', 'rzh', 'saa', 'sab', 'sac', 'sad', 'sae', 'saf', 'sah', 'sai', 'saj', 'sak', 'sal', 'sam', 'sao', 'sap', 'saq', 'sar', 'sas', 'sat', 'sau', 'sav', 'saw', 'sax', 'say', 'saz', 'sba', 'sbb', 'sbc', 'sbd', 'sbe', 'sbf', 'sbg', 'sbh', 'sbi', 'sbj', 'sbk', 'sbl', 'sbm', 'sbn', 'sbo', 'sbp', 'sbq', 'sbr', 'sbs', 'sbt', 'sbu', 'sbv', 'sbw', 'sbx', 'sby', 'sbz', 'sca', 'scb', 'sce', 'scf', 'scg', 'sch', 'sci', 'sck', 'scl', 'scn', 'sco', 'scp', 'scq', 'scs', 'sct', 'scu', 'scv', 'scw', 'scx', 'sda', 'sdb', 'sdc', 'sde', 'sdf', 'sdg', 'sdh', 'sdj', 'sdk', 'sdl', 'sdm', 'sdn', 'sdo', 'sdp', 'sdr', 'sds', 'sdt', 'sdu', 'sdv', 'sdx', 'sdz', 'sea', 'seb', 'sec', 'sed', 'see', 'sef', 'seg', 'seh', 'sei', 'sej', 'sek', 'sel', 'sem', 'sen', 'seo', 'sep', 'seq', 'ser', 'ses', 'set', 'seu', 'sev', 'sew', 'sey', 'sez', 'sfb', 'sfe', 'sfm', 'sfs', 'sfw', 'sga', 'sgb', 'sgc', 'sgd', 'sge', 'sgg', 'sgh', 'sgi', 'sgj', 'sgk', 'sgl', 'sgm', 'sgn', 'sgo', 'sgp', 'sgr', 'sgs', 'sgt', 'sgu', 'sgw', 'sgx', 'sgy', 'sgz', 'sha', 'shb', 'shc', 'shd', 'she', 'shg', 'shh', 'shi', 'shj', 'shk', 'shl', 'shm', 'shn', 'sho', 'shp', 'shq', 'shr', 'shs', 'sht', 'shu', 'shv', 'shw', 'shx', 'shy', 'shz', 'sia', 'sib', 'sid', 'sie', 'sif', 'sig', 'sih', 'sii', 'sij', 'sik', 'sil', 'sim', 'sio', 'sip', 'siq', 'sir', 'sis', 'sit', 'siu', 'siv', 'siw', 'six', 'siy', 'siz', 'sja', 'sjb', 'sjd', 'sje', 'sjg', 'sjk', 'sjl', 'sjm', 'sjn', 'sjo', 'sjp', 'sjr', 'sjs', 'sjt', 'sju', 'sjw', 'ska', 'skb', 'skc', 'skd', 'ske', 'skf', 'skg', 'skh', 'ski', 'skj', 'skk', 'skm', 'skn', 'sko', 'skp', 'skq', 'skr', 'sks', 'skt', 'sku', 'skv', 'skw', 'skx', 'sky', 'skz', 'sla', 'slc', 'sld', 'sle', 'slf', 'slg', 'slh', 'sli', 'slj', 'sll', 'slm', 'sln', 'slp', 'slq', 'slr', 'sls', 'slt', 'slu', 'slw', 'slx', 'sly', 'slz', 'sma', 'smb', 'smc', 'smd', 'smf', 'smg', 'smh', 'smi', 'smj', 'smk', 'sml', 'smm', 'smn', 'smp', 'smq', 'smr', 'sms', 'smt', 'smu', 'smv', 'smw', 'smx', 'smy', 'smz', 'snb', 'snc', 'sne', 'snf', 'sng', 'snh', 'sni', 'snj', 'snk', 'snl', 'snm', 'snn', 'sno', 'snp', 'snq', 'snr', 'sns', 'snu', 'snv', 'snw', 'snx', 'sny', 'snz', 'soa', 'sob', 'soc', 'sod', 'soe', 'sog', 'soh', 'soi', 'soj', 'sok', 'sol', 'son', 'soo', 'sop', 'soq', 'sor', 'sos', 'sou', 'sov', 'sow', 'sox', 'soy', 'soz', 'spb', 'spc', 'spd', 'spe', 'spg', 'spi', 'spk', 'spl', 'spm', 'spn', 'spo', 'spp', 'spq', 'spr', 'sps', 'spt', 'spu', 'spv', 'spx', 'spy', 'sqa', 'sqh', 'sqj', 'sqk', 'sqm', 'sqn', 'sqo', 'sqq', 'sqr', 'sqs', 'sqt', 'squ', 'sra', 'srb', 'src', 'sre', 'srf', 'srg', 'srh', 'sri', 'srk', 'srl', 'srm', 'srn', 'sro', 'srq', 'srr', 'srs', 'srt', 'sru', 'srv', 'srw', 'srx', 'sry', 'srz', 'ssa', 'ssb', 'ssc', 'ssd', 'sse', 'ssf', 'ssg', 'ssh', 'ssi', 'ssj', 'ssk', 'ssl', 'ssm', 'ssn', 'sso', 'ssp', 'ssq', 'ssr', 'sss', 'sst', 'ssu', 'ssv', 'ssx', 'ssy', 'ssz', 'sta', 'stb', 'std', 'ste', 'stf', 'stg', 'sth', 'sti', 'stj', 'stk', 'stl', 'stm', 'stn', 'sto', 'stp', 'stq', 'str', 'sts', 'stt', 'stu', 'stv', 'stw', 'sty', 'sua', 'sub', 'suc', 'sue', 'sug', 'sui', 'suj', 'suk', 'sul', 'sum', 'suq', 'sur', 'sus', 'sut', 'suv', 'suw', 'sux', 'suy', 'suz', 'sva', 'svb', 'svc', 'sve', 'svk', 'svm', 'svr', 'svs', 'svx', 'swb', 'swc', 'swf', 'swg', 'swh', 'swi', 'swj', 'swk', 'swl', 'swm', 'swn', 'swo', 'swp', 'swq', 'swr', 'sws', 'swt', 'swu', 'swv', 'sww', 'swx', 'swy', 'sxb', 'sxc', 'sxe', 'sxg', 'sxk', 'sxl', 'sxm', 'sxn', 'sxo', 'sxr', 'sxs', 'sxu', 'sxw', 'sya', 'syb', 'syc', 'syd', 'syi', 'syk', 'syl', 'sym', 'syn', 'syo', 'syr', 'sys', 'syw', 'syx', 'syy', 'sza', 'szb', 'szc', 'szd', 'sze', 'szg', 'szl', 'szn', 'szp', 'szs', 'szv', 'szw', 'taa', 'tab', 'tac', 'tad', 'tae', 'taf', 'tag', 'tai', 'taj', 'tak', 'tal', 'tan', 'tao', 'tap', 'taq', 'tar', 'tas', 'tau', 'tav', 'taw', 'tax', 'tay', 'taz', 'tba', 'tbb', 'tbc', 'tbd', 'tbe', 'tbf', 'tbg', 'tbh', 'tbi', 'tbj', 'tbk', 'tbl', 'tbm', 'tbn', 'tbo', 'tbp', 'tbq', 'tbr', 'tbs', 'tbt', 'tbu', 'tbv', 'tbw', 'tbx', 'tby', 'tbz', 'tca', 'tcb', 'tcc', 'tcd', 'tce', 'tcf', 'tcg', 'tch', 'tci', 'tck', 'tcl', 'tcm', 'tcn', 'tco', 'tcp', 'tcq', 'tcs', 'tct', 'tcu', 'tcw', 'tcx', 'tcy', 'tcz', 'tda', 'tdb', 'tdc', 'tdd', 'tde', 'tdf', 'tdg', 'tdh', 'tdi', 'tdj', 'tdk', 'tdl', 'tdm', 'tdn', 'tdo', 'tdq', 'tdr', 'tds', 'tdt', 'tdu', 'tdv', 'tdx', 'tdy', 'tea', 'teb', 'tec', 'ted', 'tee', 'tef', 'teg', 'teh', 'tei', 'tek', 'tem', 'ten', 'teo', 'tep', 'teq', 'ter', 'tes', 'tet', 'teu', 'tev', 'tew', 'tex', 'tey', 'tez', 'tfi', 'tfn', 'tfo', 'tfr', 'tft', 'tga', 'tgb', 'tgc', 'tgd', 'tge', 'tgf', 'tgg', 'tgh', 'tgi', 'tgj', 'tgn', 'tgo', 'tgp', 'tgq', 'tgr', 'tgs', 'tgt', 'tgu', 'tgv', 'tgw', 'tgx', 'tgy', 'tgz', 'thc', 'thd', 'the', 'thf', 'thh', 'thi', 'thk', 'thl', 'thm', 'thn', 'thp', 'thq', 'thr', 'ths', 'tht', 'thu', 'thv', 'thw', 'thx', 'thy', 'thz', 'tia', 'tic', 'tid', 'tie', 'tif', 'tig', 'tih', 'tii', 'tij', 'tik', 'til', 'tim', 'tin', 'tio', 'tip', 'tiq', 'tis', 'tit', 'tiu', 'tiv', 'tiw', 'tix', 'tiy', 'tiz', 'tja', 'tjg', 'tji', 'tjl', 'tjm', 'tjn', 'tjo', 'tjs', 'tju', 'tjw', 'tka', 'tkb', 'tkd', 'tke', 'tkf', 'tkg', 'tkk', 'tkl', 'tkm', 'tkn', 'tkp', 'tkq', 'tkr', 'tks', 'tkt', 'tku', 'tkv', 'tkw', 'tkx', 'tkz', 'tla', 'tlb', 'tlc', 'tld', 'tlf', 'tlg', 'tlh', 'tli', 'tlj', 'tlk', 'tll', 'tlm', 'tln', 'tlo', 'tlp', 'tlq', 'tlr', 'tls', 'tlt', 'tlu', 'tlv', 'tlw', 'tlx', 'tly', 'tma', 'tmb', 'tmc', 'tmd', 'tme', 'tmf', 'tmg', 'tmh', 'tmi', 'tmj', 'tmk', 'tml', 'tmm', 'tmn', 'tmo', 'tmp', 'tmq', 'tmr', 'tms', 'tmt', 'tmu', 'tmv', 'tmw', 'tmy', 'tmz', 'tna', 'tnb', 'tnc', 'tnd', 'tne', 'tnf', 'tng', 'tnh', 'tni', 'tnk', 'tnl', 'tnm', 'tnn', 'tno', 'tnp', 'tnq', 'tnr', 'tns', 'tnt', 'tnu', 'tnv', 'tnw', 'tnx', 'tny', 'tnz', 'tob', 'toc', 'tod', 'toe', 'tof', 'tog', 'toh', 'toi', 'toj', 'tol', 'tom', 'too', 'top', 'toq', 'tor', 'tos', 'tou', 'tov', 'tow', 'tox', 'toy', 'toz', 'tpa', 'tpc', 'tpe', 'tpf', 'tpg', 'tpi', 'tpj', 'tpk', 'tpl', 'tpm', 'tpn', 'tpo', 'tpp', 'tpq', 'tpr', 'tpt', 'tpu', 'tpv', 'tpw', 'tpx', 'tpy', 'tpz', 'tqb', 'tql', 'tqm', 'tqn', 'tqo', 'tqp', 'tqq', 'tqr', 'tqt', 'tqu', 'tqw', 'tra', 'trb', 'trc', 'trd', 'tre', 'trf', 'trg', 'trh', 'tri', 'trj', 'trk', 'trl', 'trm', 'trn', 'tro', 'trp', 'trq', 'trr', 'trs', 'trt', 'tru', 'trv', 'trw', 'trx', 'try', 'trz', 'tsa', 'tsb', 'tsc', 'tsd', 'tse', 'tsf', 'tsg', 'tsh', 'tsi', 'tsj', 'tsk', 'tsl', 'tsm', 'tsp', 'tsq', 'tsr', 'tss', 'tst', 'tsu', 'tsv', 'tsw', 'tsx', 'tsy', 'tsz', 'tta', 'ttb', 'ttc', 'ttd', 'tte', 'ttf', 'ttg', 'tth', 'tti', 'ttj', 'ttk', 'ttl', 'ttm', 'ttn', 'tto', 'ttp', 'ttq', 'ttr', 'tts', 'ttt', 'ttu', 'ttv', 'ttw', 'tty', 'ttz', 'tua', 'tub', 'tuc', 'tud', 'tue', 'tuf', 'tug', 'tuh', 'tui', 'tuj', 'tul', 'tum', 'tun', 'tuo', 'tup', 'tuq', 'tus', 'tut', 'tuu', 'tuv', 'tuw', 'tux', 'tuy', 'tuz', 'tva', 'tvd', 'tve', 'tvk', 'tvl', 'tvm', 'tvn', 'tvo', 'tvs', 'tvt', 'tvu', 'tvw', 'tvy', 'twa', 'twb', 'twc', 'twd', 'twe', 'twf', 'twg', 'twh', 'twl', 'twm', 'twn', 'two', 'twp', 'twq', 'twr', 'twt', 'twu', 'tww', 'twx', 'twy', 'txa', 'txb', 'txc', 'txe', 'txg', 'txh', 'txi', 'txj', 'txm', 'txn', 'txo', 'txq', 'txr', 'txs', 'txt', 'txu', 'txx', 'txy', 'tya', 'tye', 'tyh', 'tyi', 'tyj', 'tyl', 'tyn', 'typ', 'tyr', 'tys', 'tyt', 'tyu', 'tyv', 'tyx', 'tyz', 'tza', 'tzh', 'tzj', 'tzl', 'tzm', 'tzn', 'tzo', 'tzx', 'uam', 'uan', 'uar', 'uba', 'ubi', 'ubl', 'ubr', 'ubu', 'uby', 'uda', 'ude', 'udg', 'udi', 'udj', 'udl', 'udm', 'udu', 'ues', 'ufi', 'uga', 'ugb', 'uge', 'ugn', 'ugo', 'ugy', 'uha', 'uhn', 'uis', 'uiv', 'uji', 'uka', 'ukg', 'ukh', 'ukk', 'ukl', 'ukp', 'ukq', 'uks', 'uku', 'ukw', 'uky', 'ula', 'ulb', 'ulc', 'ule', 'ulf', 'uli', 'ulk', 'ull', 'ulm', 'uln', 'ulu', 'ulw', 'uma', 'umb', 'umc', 'umd', 'umg', 'umi', 'umm', 'umn', 'umo', 'ump', 'umr', 'ums', 'umu', 'una', 'und', 'une', 'ung', 'unk', 'unm', 'unn', 'unp', 'unr', 'unu', 'unx', 'unz', 'uok', 'upi', 'upv', 'ura', 'urb', 'urc', 'ure', 'urf', 'urg', 'urh', 'uri', 'urj', 'urk', 'url', 'urm', 'urn', 'uro', 'urp', 'urr', 'urt', 'uru', 'urv', 'urw', 'urx', 'ury', 'urz', 'usa', 'ush', 'usi', 'usk', 'usp', 'usu', 'uta', 'ute', 'utp', 'utr', 'utu', 'uum', 'uun', 'uur', 'uuu', 'uve', 'uvh', 'uvl', 'uwa', 'uya', 'uzn', 'uzs', 'vaa', 'vae', 'vaf', 'vag', 'vah', 'vai', 'vaj', 'val', 'vam', 'van', 'vao', 'vap', 'var', 'vas', 'vau', 'vav', 'vay', 'vbb', 'vbk', 'vec', 'ved', 'vel', 'vem', 'veo', 'vep', 'ver', 'vgr', 'vgt', 'vic', 'vid', 'vif', 'vig', 'vil', 'vin', 'vis', 'vit', 'viv', 'vka', 'vki', 'vkj', 'vkk', 'vkl', 'vkm', 'vko', 'vkp', 'vkt', 'vku', 'vlp', 'vls', 'vma', 'vmb', 'vmc', 'vmd', 'vme', 'vmf', 'vmg', 'vmh', 'vmi', 'vmj', 'vmk', 'vml', 'vmm', 'vmp', 'vmq', 'vmr', 'vms', 'vmu', 'vmv', 'vmw', 'vmx', 'vmy', 'vmz', 'vnk', 'vnm', 'vnp', 'vor', 'vot', 'vra', 'vro', 'vrs', 'vrt', 'vsi', 'vsl', 'vsv', 'vto', 'vum', 'vun', 'vut', 'vwa', 'waa', 'wab', 'wac', 'wad', 'wae', 'waf', 'wag', 'wah', 'wai', 'waj', 'wak', 'wal', 'wam', 'wan', 'wao', 'wap', 'waq', 'war', 'was', 'wat', 'wau', 'wav', 'waw', 'wax', 'way', 'waz', 'wba', 'wbb', 'wbe', 'wbf', 'wbh', 'wbi', 'wbj', 'wbk', 'wbl', 'wbm', 'wbp', 'wbq', 'wbr', 'wbs', 'wbt', 'wbv', 'wbw', 'wca', 'wci', 'wdd', 'wdg', 'wdj', 'wdk', 'wdu', 'wdy', 'wea', 'wec', 'wed', 'weg', 'weh', 'wei', 'wem', 'wen', 'weo', 'wep', 'wer', 'wes', 'wet', 'weu', 'wew', 'wfg', 'wga', 'wgb', 'wgg', 'wgi', 'wgo', 'wgu', 'wgw', 'wgy', 'wha', 'whg', 'whk', 'whu', 'wib', 'wic', 'wie', 'wif', 'wig', 'wih', 'wii', 'wij', 'wik', 'wil', 'wim', 'win', 'wir', 'wit', 'wiu', 'wiv', 'wiw', 'wiy', 'wja', 'wji', 'wka', 'wkb', 'wkd', 'wkl', 'wku', 'wkw', 'wky', 'wla', 'wlc', 'wle', 'wlg', 'wli', 'wlk', 'wll', 'wlm', 'wlo', 'wlr', 'wls', 'wlu', 'wlv', 'wlw', 'wlx', 'wly', 'wma', 'wmb', 'wmc', 'wmd', 'wme', 'wmh', 'wmi', 'wmm', 'wmn', 'wmo', 'wms', 'wmt', 'wmw', 'wmx', 'wnb', 'wnc', 'wnd', 'wne', 'wng', 'wni', 'wnk', 'wnm', 'wnn', 'wno', 'wnp', 'wnu', 'wnw', 'wny', 'woa', 'wob', 'woc', 'wod', 'woe', 'wof', 'wog', 'woi', 'wok', 'wom', 'won', 'woo', 'wor', 'wos', 'wow', 'woy', 'wpc', 'wra', 'wrb', 'wrd', 'wrg', 'wrh', 'wri', 'wrk', 'wrl', 'wrm', 'wrn', 'wro', 'wrp', 'wrr', 'wrs', 'wru', 'wrv', 'wrw', 'wrx', 'wry', 'wrz', 'wsa', 'wsg', 'wsi', 'wsk', 'wsr', 'wss', 'wsu', 'wsv', 'wtf', 'wth', 'wti', 'wtk', 'wtm', 'wtw', 'wua', 'wub', 'wud', 'wuh', 'wul', 'wum', 'wun', 'wur', 'wut', 'wuu', 'wuv', 'wux', 'wuy', 'wwa', 'wwb', 'wwo', 'wwr', 'www', 'wxa', 'wxw', 'wya', 'wyb', 'wyi', 'wym', 'wyr', 'wyy', 'xaa', 'xab', 'xac', 'xad', 'xae', 'xag', 'xai', 'xaj', 'xak', 'xal', 'xam', 'xan', 'xao', 'xap', 'xaq', 'xar', 'xas', 'xat', 'xau', 'xav', 'xaw', 'xay', 'xba', 'xbb', 'xbc', 'xbd', 'xbe', 'xbg', 'xbi', 'xbj', 'xbm', 'xbn', 'xbo', 'xbp', 'xbr', 'xbw', 'xbx', 'xby', 'xcb', 'xcc', 'xce', 'xcg', 'xch', 'xcl', 'xcm', 'xcn', 'xco', 'xcr', 'xct', 'xcu', 'xcv', 'xcw', 'xcy', 'xda', 'xdc', 'xdk', 'xdm', 'xdo', 'xdy', 'xeb', 'xed', 'xeg', 'xel', 'xem', 'xep', 'xer', 'xes', 'xet', 'xeu', 'xfa', 'xga', 'xgb', 'xgd', 'xgf', 'xgg', 'xgi', 'xgl', 'xgm', 'xgn', 'xgr', 'xgu', 'xgw', 'xha', 'xhc', 'xhd', 'xhe', 'xhr', 'xht', 'xhu', 'xhv', 'xia', 'xib', 'xii', 'xil', 'xin', 'xip', 'xir', 'xis', 'xiv', 'xiy', 'xjb', 'xjt', 'xka', 'xkb', 'xkc', 'xkd', 'xke', 'xkf', 'xkg', 'xkh', 'xki', 'xkj', 'xkk', 'xkl', 'xkn', 'xko', 'xkp', 'xkq', 'xkr', 'xks', 'xkt', 'xku', 'xkv', 'xkw', 'xkx', 'xky', 'xkz', 'xla', 'xlb', 'xlc', 'xld', 'xle', 'xlg', 'xli', 'xln', 'xlo', 'xlp', 'xls', 'xlu', 'xly', 'xma', 'xmb', 'xmc', 'xmd', 'xme', 'xmf', 'xmg', 'xmh', 'xmj', 'xmk', 'xml', 'xmm', 'xmn', 'xmo', 'xmp', 'xmq', 'xmr', 'xms', 'xmt', 'xmu', 'xmv', 'xmw', 'xmx', 'xmy', 'xmz', 'xna', 'xnb', 'xnd', 'xng', 'xnh', 'xni', 'xnk', 'xnn', 'xno', 'xnr', 'xns', 'xnt', 'xnu', 'xny', 'xnz', 'xoc', 'xod', 'xog', 'xoi', 'xok', 'xom', 'xon', 'xoo', 'xop', 'xor', 'xow', 'xpa', 'xpc', 'xpe', 'xpg', 'xpi', 'xpj', 'xpk', 'xpm', 'xpn', 'xpo', 'xpp', 'xpq', 'xpr', 'xps', 'xpt', 'xpu', 'xpy', 'xqa', 'xqt', 'xra', 'xrb', 'xrd', 'xre', 'xrg', 'xri', 'xrm', 'xrn', 'xrq', 'xrr', 'xrt', 'xru', 'xrw', 'xsa', 'xsb', 'xsc', 'xsd', 'xse', 'xsh', 'xsi', 'xsj', 'xsl', 'xsm', 'xsn', 'xso', 'xsp', 'xsq', 'xsr', 'xss', 'xsu', 'xsv', 'xsy', 'xta', 'xtb', 'xtc', 'xtd', 'xte', 'xtg', 'xth', 'xti', 'xtj', 'xtl', 'xtm', 'xtn', 'xto', 'xtp', 'xtq', 'xtr', 'xts', 'xtt', 'xtu', 'xtv', 'xtw', 'xty', 'xtz', 'xua', 'xub', 'xud', 'xug', 'xuj', 'xul', 'xum', 'xun', 'xuo', 'xup', 'xur', 'xut', 'xuu', 'xve', 'xvi', 'xvn', 'xvo', 'xvs', 'xwa', 'xwc', 'xwd', 'xwe', 'xwg', 'xwj', 'xwk', 'xwl', 'xwo', 'xwr', 'xwt', 'xww', 'xxb', 'xxk', 'xxm', 'xxr', 'xxt', 'xya', 'xyb', 'xyj', 'xyk', 'xyl', 'xyt', 'xyy', 'xzh', 'xzm', 'xzp', 'yaa', 'yab', 'yac', 'yad', 'yae', 'yaf', 'yag', 'yah', 'yai', 'yaj', 'yak', 'yal', 'yam', 'yan', 'yao', 'yap', 'yaq', 'yar', 'yas', 'yat', 'yau', 'yav', 'yaw', 'yax', 'yay', 'yaz', 'yba', 'ybb', 'ybd', 'ybe', 'ybh', 'ybi', 'ybj', 'ybk', 'ybl', 'ybm', 'ybn', 'ybo', 'ybx', 'yby', 'ych', 'ycl', 'ycn', 'ycp', 'yda', 'ydd', 'yde', 'ydg', 'ydk', 'yds', 'yea', 'yec', 'yee', 'yei', 'yej', 'yel', 'yen', 'yer', 'yes', 'yet', 'yeu', 'yev', 'yey', 'yga', 'ygi', 'ygl', 'ygm', 'ygp', 'ygr', 'ygs', 'ygu', 'ygw', 'yha', 'yhd', 'yhl', 'yhs', 'yia', 'yif', 'yig', 'yih', 'yii', 'yij', 'yik', 'yil', 'yim', 'yin', 'yip', 'yiq', 'yir', 'yis', 'yit', 'yiu', 'yiv', 'yix', 'yiy', 'yiz', 'yka', 'ykg', 'yki', 'ykk', 'ykl', 'ykm', 'ykn', 'yko', 'ykr', 'ykt', 'yku', 'yky', 'yla', 'ylb', 'yle', 'ylg', 'yli', 'yll', 'ylm', 'yln', 'ylo', 'ylr', 'ylu', 'yly', 'yma', 'ymb', 'ymc', 'ymd', 'yme', 'ymg', 'ymh', 'ymi', 'ymk', 'yml', 'ymm', 'ymn', 'ymo', 'ymp', 'ymq', 'ymr', 'yms', 'ymt', 'ymx', 'ymz', 'yna', 'ynd', 'yne', 'yng', 'ynh', 'ynk', 'ynl', 'ynn', 'yno', 'ynq', 'yns', 'ynu', 'yob', 'yog', 'yoi', 'yok', 'yol', 'yom', 'yon', 'yos', 'yot', 'yox', 'yoy', 'ypa', 'ypb', 'ypg', 'yph', 'ypk', 'ypm', 'ypn', 'ypo', 'ypp', 'ypz', 'yra', 'yrb', 'yre', 'yri', 'yrk', 'yrl', 'yrm', 'yrn', 'yro', 'yrs', 'yrw', 'yry', 'ysc', 'ysd', 'ysg', 'ysl', 'ysn', 'yso', 'ysp', 'ysr', 'yss', 'ysy', 'yta', 'ytl', 'ytp', 'ytw', 'yty', 'yua', 'yub', 'yuc', 'yud', 'yue', 'yuf', 'yug', 'yui', 'yuj', 'yuk', 'yul', 'yum', 'yun', 'yup', 'yuq', 'yur', 'yut', 'yuu', 'yuw', 'yux', 'yuy', 'yuz', 'yva', 'yvt', 'ywa', 'ywg', 'ywl', 'ywn', 'ywq', 'ywr', 'ywt', 'ywu', 'yww', 'yxa', 'yxg', 'yxl', 'yxm', 'yxu', 'yxy', 'yyr', 'yyu', 'yyz', 'yzg', 'yzk', 'zaa', 'zab', 'zac', 'zad', 'zae', 'zaf', 'zag', 'zah', 'zai', 'zaj', 'zak', 'zal', 'zam', 'zao', 'zap', 'zaq', 'zar', 'zas', 'zat', 'zau', 'zav', 'zaw', 'zax', 'zay', 'zaz', 'zbc', 'zbe', 'zbl', 'zbt', 'zbw', 'zca', 'zch', 'zdj', 'zea', 'zeg', 'zeh', 'zen', 'zga', 'zgb', 'zgh', 'zgm', 'zgn', 'zgr', 'zhb', 'zhd', 'zhi', 'zhn', 'zhw', 'zhx', 'zia', 'zib', 'zik', 'zil', 'zim', 'zin', 'zir', 'ziw', 'ziz', 'zka', 'zkb', 'zkd', 'zkg', 'zkh', 'zkk', 'zkn', 'zko', 'zkp', 'zkr', 'zkt', 'zku', 'zkv', 'zkz', 'zle', 'zlj', 'zlm', 'zln', 'zlq', 'zls', 'zlw', 'zma', 'zmb', 'zmc', 'zmd', 'zme', 'zmf', 'zmg', 'zmh', 'zmi', 'zmj', 'zmk', 'zml', 'zmm', 'zmn', 'zmo', 'zmp', 'zmq', 'zmr', 'zms', 'zmt', 'zmu', 'zmv', 'zmw', 'zmx', 'zmy', 'zmz', 'zna', 'znd', 'zne', 'zng', 'znk', 'zns', 'zoc', 'zoh', 'zom', 'zoo', 'zoq', 'zor', 'zos', 'zpa', 'zpb', 'zpc', 'zpd', 'zpe', 'zpf', 'zpg', 'zph', 'zpi', 'zpj', 'zpk', 'zpl', 'zpm', 'zpn', 'zpo', 'zpp', 'zpq', 'zpr', 'zps', 'zpt', 'zpu', 'zpv', 'zpw', 'zpx', 'zpy', 'zpz', 'zqe', 'zra', 'zrg', 'zrn', 'zro', 'zrp', 'zrs', 'zsa', 'zsk', 'zsl', 'zsm', 'zsr', 'zsu', 'zte', 'ztg', 'ztl', 'ztm', 'ztn', 'ztp', 'ztq', 'zts', 'ztt', 'ztu', 'ztx', 'zty', 'zua', 'zuh', 'zum', 'zun', 'zuy', 'zwa', 'zxx', 'zyb', 'zyg', 'zyj', 'zyn', 'zyp', 'zza', 'zzj'];\n\n  axe.utils.validLangs = function () {\n    'use strict';\n\n    return langs;\n  };\n\n  'use strict';\n\n  function _extends() {\n    _extends = Object.assign || function (target) {\n      for (var i = 1; i < arguments.length; i++) {\n        var source = arguments[i];\n\n        for (var key in source) {\n          if (Object.prototype.hasOwnProperty.call(source, key)) {\n            target[key] = source[key];\n          }\n        }\n      }\n\n      return target;\n    };\n\n    return _extends.apply(this, arguments);\n  }\n\n  function _toConsumableArray(arr) {\n    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n  }\n\n  function _nonIterableSpread() {\n    throw new TypeError('Invalid attempt to spread non-iterable instance');\n  }\n\n  function _iterableToArray(iter) {\n    if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === '[object Arguments]') {\n      return Array.from(iter);\n    }\n  }\n\n  function _arrayWithoutHoles(arr) {\n    if (Array.isArray(arr)) {\n      for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n        arr2[i] = arr[i];\n      }\n\n      return arr2;\n    }\n  }\n\n  function _slicedToArray(arr, i) {\n    return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n  }\n\n  function _nonIterableRest() {\n    throw new TypeError('Invalid attempt to destructure non-iterable instance');\n  }\n\n  function _iterableToArrayLimit(arr, i) {\n    if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === '[object Arguments]')) {\n      return;\n    }\n\n    var _arr = [];\n    var _n = true;\n    var _d = false;\n    var _e = undefined;\n\n    try {\n      for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n        _arr.push(_s.value);\n\n        if (i && _arr.length === i) {\n          break;\n        }\n      }\n    } catch (err) {\n      _d = true;\n      _e = err;\n    } finally {\n      try {\n        if (!_n && _i['return'] != null) {\n          _i['return']();\n        }\n      } finally {\n        if (_d) {\n          throw _e;\n        }\n      }\n    }\n\n    return _arr;\n  }\n\n  function _arrayWithHoles(arr) {\n    if (Array.isArray(arr)) {\n      return arr;\n    }\n  }\n\n  function _typeof(obj) {\n    '@babel/helpers - typeof';\n\n    if (typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol') {\n      _typeof = function _typeof(obj) {\n        return typeof obj;\n      };\n    } else {\n      _typeof = function _typeof(obj) {\n        return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj;\n      };\n    }\n\n    return _typeof(obj);\n  }\n\n  axe._load({\n    lang: 'en',\n    data: {\n      rules: {\n        accesskeys: {\n          description: 'Ensures every accesskey attribute value is unique',\n          help: 'accesskey attribute value must be unique'\n        },\n        'area-alt': {\n          description: 'Ensures <area> elements of image maps have alternate text',\n          help: 'Active <area> elements must have alternate text'\n        },\n        'aria-allowed-attr': {\n          description: 'Ensures ARIA attributes are allowed for an element\\'s role',\n          help: 'Elements must only use allowed ARIA attributes'\n        },\n        'aria-allowed-role': {\n          description: 'Ensures role attribute has an appropriate value for the element',\n          help: 'ARIA role must be appropriate for the element'\n        },\n        'aria-dpub-role-fallback': {\n          description: 'Ensures unsupported DPUB roles are only used on elements with implicit fallback roles',\n          help: 'Unsupported DPUB ARIA roles should be used on elements with implicit fallback roles'\n        },\n        'aria-hidden-body': {\n          description: 'Ensures aria-hidden=\\'true\\' is not present on the document body.',\n          help: 'aria-hidden=\\'true\\' must not be present on the document body'\n        },\n        'aria-hidden-focus': {\n          description: 'Ensures aria-hidden elements do not contain focusable elements',\n          help: 'ARIA hidden element must not contain focusable elements'\n        },\n        'aria-input-field-name': {\n          description: 'Ensures every ARIA input field has an accessible name',\n          help: 'ARIA input fields must have an accessible name'\n        },\n        'aria-required-attr': {\n          description: 'Ensures elements with ARIA roles have all required ARIA attributes',\n          help: 'Required ARIA attributes must be provided'\n        },\n        'aria-required-children': {\n          description: 'Ensures elements with an ARIA role that require child roles contain them',\n          help: 'Certain ARIA roles must contain particular children'\n        },\n        'aria-required-parent': {\n          description: 'Ensures elements with an ARIA role that require parent roles are contained by them',\n          help: 'Certain ARIA roles must be contained by particular parents'\n        },\n        'aria-roledescription': {\n          description: 'Ensure aria-roledescription is only used on elements with an implicit or explicit role',\n          help: 'Use aria-roledescription on elements with a semantic role'\n        },\n        'aria-roles': {\n          description: 'Ensures all elements with a role attribute use a valid value',\n          help: 'ARIA roles used must conform to valid values'\n        },\n        'aria-toggle-field-name': {\n          description: 'Ensures every ARIA toggle field has an accessible name',\n          help: 'ARIA toggle fields have an accessible name'\n        },\n        'aria-valid-attr-value': {\n          description: 'Ensures all ARIA attributes have valid values',\n          help: 'ARIA attributes must conform to valid values'\n        },\n        'aria-valid-attr': {\n          description: 'Ensures attributes that begin with aria- are valid ARIA attributes',\n          help: 'ARIA attributes must conform to valid names'\n        },\n        'audio-caption': {\n          description: 'Ensures <audio> elements have captions',\n          help: '<audio> elements must have a captions track'\n        },\n        'autocomplete-valid': {\n          description: 'Ensure the autocomplete attribute is correct and suitable for the form field',\n          help: 'autocomplete attribute must be used correctly'\n        },\n        'avoid-inline-spacing': {\n          description: 'Ensure that text spacing set through style attributes can be adjusted with custom stylesheets',\n          help: 'Inline text spacing must be adjustable with custom stylesheets'\n        },\n        blink: {\n          description: 'Ensures <blink> elements are not used',\n          help: '<blink> elements are deprecated and must not be used'\n        },\n        'button-name': {\n          description: 'Ensures buttons have discernible text',\n          help: 'Buttons must have discernible text'\n        },\n        bypass: {\n          description: 'Ensures each page has at least one mechanism for a user to bypass navigation and jump straight to the content',\n          help: 'Page must have means to bypass repeated blocks'\n        },\n        checkboxgroup: {\n          description: 'Ensures related <input type=\"checkbox\"> elements have a group and that the group designation is consistent',\n          help: 'Checkbox inputs with the same name attribute value must be part of a group'\n        },\n        'color-contrast': {\n          description: 'Ensures the contrast between foreground and background colors meets WCAG 2 AA contrast ratio thresholds',\n          help: 'Elements must have sufficient color contrast'\n        },\n        'css-orientation-lock': {\n          description: 'Ensures content is not locked to any specific display orientation, and the content is operable in all display orientations',\n          help: 'CSS Media queries are not used to lock display orientation'\n        },\n        'definition-list': {\n          description: 'Ensures <dl> elements are structured correctly',\n          help: '<dl> elements must only directly contain properly-ordered <dt> and <dd> groups, <script>, <template> or <div> elements'\n        },\n        dlitem: {\n          description: 'Ensures <dt> and <dd> elements are contained by a <dl>',\n          help: '<dt> and <dd> elements must be contained by a <dl>'\n        },\n        'document-title': {\n          description: 'Ensures each HTML document contains a non-empty <title> element',\n          help: 'Documents must have <title> element to aid in navigation'\n        },\n        'duplicate-id-active': {\n          description: 'Ensures every id attribute value of active elements is unique',\n          help: 'IDs of active elements must be unique'\n        },\n        'duplicate-id-aria': {\n          description: 'Ensures every id attribute value used in ARIA and in labels is unique',\n          help: 'IDs used in ARIA and labels must be unique'\n        },\n        'duplicate-id': {\n          description: 'Ensures every id attribute value is unique',\n          help: 'id attribute value must be unique'\n        },\n        'empty-heading': {\n          description: 'Ensures headings have discernible text',\n          help: 'Headings must not be empty'\n        },\n        'focus-order-semantics': {\n          description: 'Ensures elements in the focus order have an appropriate role',\n          help: 'Elements in the focus order need a role appropriate for interactive content'\n        },\n        'form-field-multiple-labels': {\n          description: 'Ensures form field does not have multiple label elements',\n          help: 'Form field should not have multiple label elements'\n        },\n        'frame-tested': {\n          description: 'Ensures <iframe> and <frame> elements contain the axe-core script',\n          help: 'Frames must be tested with axe-core'\n        },\n        'frame-title-unique': {\n          description: 'Ensures <iframe> and <frame> elements contain a unique title attribute',\n          help: 'Frames must have a unique title attribute'\n        },\n        'frame-title': {\n          description: 'Ensures <iframe> and <frame> elements contain a non-empty title attribute',\n          help: 'Frames must have title attribute'\n        },\n        'heading-order': {\n          description: 'Ensures the order of headings is semantically correct',\n          help: 'Heading levels should only increase by one'\n        },\n        'hidden-content': {\n          description: 'Informs users about hidden content.',\n          help: 'Hidden content on the page cannot be analyzed'\n        },\n        'html-has-lang': {\n          description: 'Ensures every HTML document has a lang attribute',\n          help: '<html> element must have a lang attribute'\n        },\n        'html-lang-valid': {\n          description: 'Ensures the lang attribute of the <html> element has a valid value',\n          help: '<html> element must have a valid value for the lang attribute'\n        },\n        'html-xml-lang-mismatch': {\n          description: 'Ensure that HTML elements with both valid lang and xml:lang attributes agree on the base language of the page',\n          help: 'HTML elements with lang and xml:lang must have the same base language'\n        },\n        'identical-links-same-purpose': {\n          description: 'Ensure that links with the same accessible name serve a similar purpose',\n          help: 'Links with the same name have a similar purpose'\n        },\n        'image-alt': {\n          description: 'Ensures <img> elements have alternate text or a role of none or presentation',\n          help: 'Images must have alternate text'\n        },\n        'image-redundant-alt': {\n          description: 'Ensure image alternative is not repeated as text',\n          help: 'Alternative text of images should not be repeated as text'\n        },\n        'input-button-name': {\n          description: 'Ensures input buttons have discernible text',\n          help: 'Input buttons must have discernible text'\n        },\n        'input-image-alt': {\n          description: 'Ensures <input type=\"image\"> elements have alternate text',\n          help: 'Image buttons must have alternate text'\n        },\n        'label-content-name-mismatch': {\n          description: 'Ensures that elements labelled through their content must have their visible text as part of their accessible name',\n          help: 'Elements must have their visible text as part of their accessible name'\n        },\n        'label-title-only': {\n          description: 'Ensures that every form element is not solely labeled using the title or aria-describedby attributes',\n          help: 'Form elements should have a visible label'\n        },\n        label: {\n          description: 'Ensures every form element has a label',\n          help: 'Form elements must have labels'\n        },\n        'landmark-banner-is-top-level': {\n          description: 'Ensures the banner landmark is at top level',\n          help: 'Banner landmark must not be contained in another landmark'\n        },\n        'landmark-complementary-is-top-level': {\n          description: 'Ensures the complementary landmark or aside is at top level',\n          help: 'Aside must not be contained in another landmark'\n        },\n        'landmark-contentinfo-is-top-level': {\n          description: 'Ensures the contentinfo landmark is at top level',\n          help: 'Contentinfo landmark must not be contained in another landmark'\n        },\n        'landmark-main-is-top-level': {\n          description: 'Ensures the main landmark is at top level',\n          help: 'Main landmark must not be contained in another landmark'\n        },\n        'landmark-no-duplicate-banner': {\n          description: 'Ensures the document has at most one banner landmark',\n          help: 'Document must not have more than one banner landmark'\n        },\n        'landmark-no-duplicate-contentinfo': {\n          description: 'Ensures the document has at most one contentinfo landmark',\n          help: 'Document must not have more than one contentinfo landmark'\n        },\n        'landmark-no-duplicate-main': {\n          description: 'Ensures the document has at most one main landmark',\n          help: 'Document must not have more than one main landmark'\n        },\n        'landmark-one-main': {\n          description: 'Ensures the document has a main landmark',\n          help: 'Document must have one main landmark'\n        },\n        'landmark-unique': {\n          help: 'Ensures landmarks are unique',\n          description: 'Landmarks must have a unique role or role/label/title (i.e. accessible name) combination'\n        },\n        'layout-table': {\n          description: 'Ensures presentational <table> elements do not use <th>, <caption> elements or the summary attribute',\n          help: 'Layout tables must not use data table elements'\n        },\n        'link-in-text-block': {\n          description: 'Links can be distinguished without relying on color',\n          help: 'Links must be distinguished from surrounding text in a way that does not rely on color'\n        },\n        'link-name': {\n          description: 'Ensures links have discernible text',\n          help: 'Links must have discernible text'\n        },\n        list: {\n          description: 'Ensures that lists are structured correctly',\n          help: '<ul> and <ol> must only directly contain <li>, <script> or <template> elements'\n        },\n        listitem: {\n          description: 'Ensures <li> elements are used semantically',\n          help: '<li> elements must be contained in a <ul> or <ol>'\n        },\n        marquee: {\n          description: 'Ensures <marquee> elements are not used',\n          help: '<marquee> elements are deprecated and must not be used'\n        },\n        'meta-refresh': {\n          description: 'Ensures <meta http-equiv=\"refresh\"> is not used',\n          help: 'Timed refresh must not exist'\n        },\n        'meta-viewport-large': {\n          description: 'Ensures <meta name=\"viewport\"> can scale a significant amount',\n          help: 'Users should be able to zoom and scale the text up to 500%'\n        },\n        'meta-viewport': {\n          description: 'Ensures <meta name=\"viewport\"> does not disable text scaling and zooming',\n          help: 'Zooming and scaling must not be disabled'\n        },\n        'no-autoplay-audio': {\n          description: 'Ensures <video> or <audio> elements do not autoplay audio for more than 3 seconds without a control mechanism to stop or mute the audio',\n          help: '<video> or <audio> elements do not autoplay audio'\n        },\n        'object-alt': {\n          description: 'Ensures <object> elements have alternate text',\n          help: '<object> elements must have alternate text'\n        },\n        'p-as-heading': {\n          description: 'Ensure p elements are not used to style headings',\n          help: 'Bold, italic text and font-size are not used to style p elements as a heading'\n        },\n        'page-has-heading-one': {\n          description: 'Ensure that the page, or at least one of its frames contains a level-one heading',\n          help: 'Page must contain a level-one heading'\n        },\n        radiogroup: {\n          description: 'Ensures related <input type=\"radio\"> elements have a group and that the group designation is consistent',\n          help: 'Radio inputs with the same name attribute value must be part of a group'\n        },\n        region: {\n          description: 'Ensures all page content is contained by landmarks',\n          help: 'All page content must be contained by landmarks'\n        },\n        'role-img-alt': {\n          description: 'Ensures [role=\\'img\\'] elements have alternate text',\n          help: '[role=\\'img\\'] elements have an alternative text'\n        },\n        'scope-attr-valid': {\n          description: 'Ensures the scope attribute is used correctly on tables',\n          help: 'scope attribute should be used correctly'\n        },\n        'scrollable-region-focusable': {\n          description: 'Elements that have scrollable content should be accessible by keyboard',\n          help: 'Ensure that scrollable region has keyboard access'\n        },\n        'server-side-image-map': {\n          description: 'Ensures that server-side image maps are not used',\n          help: 'Server-side image maps must not be used'\n        },\n        'skip-link': {\n          description: 'Ensure all skip links have a focusable target',\n          help: 'The skip-link target should exist and be focusable'\n        },\n        'svg-img-alt': {\n          description: 'Ensures svg elements with an img, graphics-document or graphics-symbol role have an accessible text',\n          help: 'svg elements with an img role have an alternative text'\n        },\n        tabindex: {\n          description: 'Ensures tabindex attribute values are not greater than 0',\n          help: 'Elements should not have tabindex greater than zero'\n        },\n        'table-duplicate-name': {\n          description: 'Ensure that tables do not have the same summary and caption',\n          help: 'The <caption> element should not contain the same text as the summary attribute'\n        },\n        'table-fake-caption': {\n          description: 'Ensure that tables with a caption use the <caption> element.',\n          help: 'Data or header cells should not be used to give caption to a data table.'\n        },\n        'td-has-header': {\n          description: 'Ensure that each non-empty data cell in a large table has one or more table headers',\n          help: 'All non-empty td element in table larger than 3 by 3 must have an associated table header'\n        },\n        'td-headers-attr': {\n          description: 'Ensure that each cell in a table using the headers refers to another cell in that table',\n          help: 'All cells in a table element that use the headers attribute must only refer to other cells of that same table'\n        },\n        'th-has-data-cells': {\n          description: 'Ensure that each table header in a data table refers to data cells',\n          help: 'All th elements and elements with role=columnheader/rowheader must have data cells they describe'\n        },\n        'valid-lang': {\n          description: 'Ensures lang attributes have valid values',\n          help: 'lang attribute must have a valid value'\n        },\n        'video-caption': {\n          description: 'Ensures <video> elements have captions',\n          help: '<video> elements must have captions'\n        },\n        'video-description': {\n          description: 'Ensures <video> elements have audio descriptions',\n          help: '<video> elements must have an audio description track'\n        }\n      },\n      checks: {\n        accesskeys: {\n          impact: 'serious',\n          messages: {\n            pass: 'Accesskey attribute value is unique',\n            fail: 'Document has multiple elements with the same accesskey'\n          }\n        },\n        'non-empty-alt': {\n          impact: 'critical',\n          messages: {\n            pass: 'Element has a non-empty alt attribute',\n            fail: 'Element has no alt attribute or the alt attribute is empty'\n          }\n        },\n        'non-empty-title': {\n          impact: 'serious',\n          messages: {\n            pass: 'Element has a title attribute',\n            fail: 'Element has no title attribute or the title attribute is empty'\n          }\n        },\n        'aria-label': {\n          impact: 'serious',\n          messages: {\n            pass: 'aria-label attribute exists and is not empty',\n            fail: 'aria-label attribute does not exist or is empty'\n          }\n        },\n        'aria-labelledby': {\n          impact: 'serious',\n          messages: {\n            pass: 'aria-labelledby attribute exists and references elements that are visible to screen readers',\n            fail: 'aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty'\n          }\n        },\n        'aria-allowed-attr': {\n          impact: 'critical',\n          messages: {\n            pass: 'ARIA attributes are used correctly for the defined role',\n            fail: {\n              singular: 'ARIA attribute is not allowed: ${data.values}',\n              plural: 'ARIA attributes are not allowed: ${data.values}'\n            }\n          }\n        },\n        'aria-unsupported-attr': {\n          impact: 'critical',\n          messages: {\n            pass: 'ARIA attribute is supported',\n            fail: 'ARIA attribute is not widely supported in screen readers and assistive technologies: ${data.values}'\n          }\n        },\n        'aria-allowed-role': {\n          impact: 'minor',\n          messages: {\n            pass: 'ARIA role is allowed for given element',\n            fail: {\n              singular: 'ARIA role ${data.values} is not allowed for given element',\n              plural: 'ARIA roles ${data.values} are not allowed for given element'\n            },\n            incomplete: {\n              singular: 'ARIA role ${data.values} must be removed when the element is made visible, as it is not allowed for the element',\n              plural: 'ARIA roles ${data.values} must be removed when the element is made visible, as they are not allowed for the element'\n            }\n          }\n        },\n        'implicit-role-fallback': {\n          impact: 'moderate',\n          messages: {\n            pass: \"Element\\u2019s implicit ARIA role is an appropriate fallback\",\n            fail: \"Element\\u2019s implicit ARIA role is not a good fallback for the (unsupported) role\"\n          }\n        },\n        'aria-hidden-body': {\n          impact: 'critical',\n          messages: {\n            pass: 'No aria-hidden attribute is present on document body',\n            fail: 'aria-hidden=true should not be present on the document body'\n          }\n        },\n        'focusable-modal-open': {\n          impact: 'serious',\n          messages: {\n            pass: 'No focusable elements while a modal is open',\n            incomplete: 'Check that focusable elements are not tabbable in the current state'\n          }\n        },\n        'focusable-disabled': {\n          impact: 'serious',\n          messages: {\n            pass: 'No focusable elements contained within element',\n            fail: 'Focusable content should be disabled or be removed from the DOM'\n          }\n        },\n        'focusable-not-tabbable': {\n          impact: 'serious',\n          messages: {\n            pass: 'No focusable elements contained within element',\n            fail: 'Focusable content should have tabindex=\\'-1\\' or be removed from the DOM'\n          }\n        },\n        'no-implicit-explicit-label': {\n          impact: 'moderate',\n          messages: {\n            pass: 'There is no mismatch between a <label> and accessible name',\n            incomplete: 'Check that the <label> does not need be part of the ARIA ${data} field\\'s name'\n          }\n        },\n        'aria-required-attr': {\n          impact: 'critical',\n          messages: {\n            pass: 'All required ARIA attributes are present',\n            fail: {\n              singular: 'Required ARIA attribute not present: ${data.values}',\n              plural: 'Required ARIA attributes not present: ${data.values}'\n            }\n          }\n        },\n        'aria-required-children': {\n          impact: 'critical',\n          messages: {\n            pass: 'Required ARIA children are present',\n            fail: {\n              singular: 'Required ARIA child role not present: ${data.values}',\n              plural: 'Required ARIA children role not present: ${data.values}'\n            },\n            incomplete: {\n              singular: 'Expecting ARIA child role to be added: ${data.values}',\n              plural: 'Expecting ARIA children role to be added: ${data.values}'\n            }\n          }\n        },\n        'aria-required-parent': {\n          impact: 'critical',\n          messages: {\n            pass: 'Required ARIA parent role present',\n            fail: {\n              singular: 'Required ARIA parent role not present: ${data.values}',\n              plural: 'Required ARIA parents role not present: ${data.values}'\n            }\n          }\n        },\n        'aria-roledescription': {\n          impact: 'serious',\n          messages: {\n            pass: 'aria-roledescription used on a supported semantic role',\n            incomplete: 'Check that the aria-roledescription is announced by supported screen readers',\n            fail: 'Give the element a role that supports aria-roledescription'\n          }\n        },\n        fallbackrole: {\n          impact: 'serious',\n          messages: {\n            pass: 'Only one role value used',\n            fail: 'Use only one role value, since fallback roles are not supported in older browsers'\n          }\n        },\n        invalidrole: {\n          impact: 'critical',\n          messages: {\n            pass: 'ARIA role is valid',\n            fail: {\n              singular: 'Role must be one of the valid ARIA roles: ${data.values}',\n              plural: 'Roles must be one of the valid ARIA roles: ${data.values}'\n            }\n          }\n        },\n        abstractrole: {\n          impact: 'serious',\n          messages: {\n            pass: 'Abstract roles are not used',\n            fail: {\n              singular: 'Abstract role cannot be directly used: ${data.values}',\n              plural: 'Abstract roles cannot be directly used: ${data.values}'\n            }\n          }\n        },\n        unsupportedrole: {\n          impact: 'critical',\n          messages: {\n            pass: 'ARIA role is supported',\n            fail: 'The role used is not widely supported in screen readers and assistive technologies: ${data.values}'\n          }\n        },\n        'has-visible-text': {\n          impact: 'minor',\n          messages: {\n            pass: 'Element has text that is visible to screen readers',\n            fail: 'Element does not have text that is visible to screen readers'\n          }\n        },\n        'aria-valid-attr-value': {\n          impact: 'critical',\n          messages: {\n            pass: 'ARIA attribute values are valid',\n            fail: {\n              singular: 'Invalid ARIA attribute value: ${data.values}',\n              plural: 'Invalid ARIA attribute values: ${data.values}'\n            },\n            incomplete: {\n              noId: 'ARIA attribute element ID does not exist on the page: ${data.needsReview}',\n              ariaCurrent: 'ARIA attribute value is invalid and will be treated as \"aria-current=true\": ${data.needsReview}'\n            }\n          }\n        },\n        'aria-errormessage': {\n          impact: 'critical',\n          messages: {\n            pass: 'Uses a supported aria-errormessage technique',\n            fail: {\n              singular: 'aria-errormessage value `${data.values}` must use a technique to announce the message (e.g., aria-live, aria-describedby, role=alert, etc.)',\n              plural: 'aria-errormessage values `${data.values}` must use a technique to announce the message (e.g., aria-live, aria-describedby, role=alert, etc.)'\n            }\n          }\n        },\n        'aria-valid-attr': {\n          impact: 'critical',\n          messages: {\n            pass: 'ARIA attribute name is valid',\n            fail: {\n              singular: 'Invalid ARIA attribute name: ${data.values}',\n              plural: 'Invalid ARIA attribute names: ${data.values}'\n            }\n          }\n        },\n        caption: {\n          impact: 'critical',\n          messages: {\n            pass: 'The multimedia element has a captions track',\n            incomplete: 'Check that captions is available for the element'\n          }\n        },\n        'autocomplete-valid': {\n          impact: 'serious',\n          messages: {\n            pass: 'the autocomplete attribute is correctly formatted',\n            fail: 'the autocomplete attribute is incorrectly formatted'\n          }\n        },\n        'autocomplete-appropriate': {\n          impact: 'serious',\n          messages: {\n            pass: 'the autocomplete value is on an appropriate element',\n            fail: 'the autocomplete value is inappropriate for this type of input'\n          }\n        },\n        'avoid-inline-spacing': {\n          impact: 'serious',\n          messages: {\n            pass: 'No inline styles with \\'!important\\' that affect text spacing has been specified',\n            fail: {\n              singular: 'Remove \\'!important\\' from inline style ${data.values}, as overriding this is not supported by most browsers',\n              plural: 'Remove \\'!important\\' from inline styles ${data.values}, as overriding this is not supported by most browsers'\n            }\n          }\n        },\n        'is-on-screen': {\n          impact: 'serious',\n          messages: {\n            pass: 'Element is not visible',\n            fail: 'Element is visible'\n          }\n        },\n        'button-has-visible-text': {\n          impact: 'critical',\n          messages: {\n            pass: 'Element has inner text that is visible to screen readers',\n            fail: 'Element does not have inner text that is visible to screen readers'\n          }\n        },\n        'role-presentation': {\n          impact: 'minor',\n          messages: {\n            pass: 'Element\\'s default semantics were overriden with role=\"presentation\"',\n            fail: 'Element\\'s default semantics were not overridden with role=\"presentation\"'\n          }\n        },\n        'role-none': {\n          impact: 'minor',\n          messages: {\n            pass: 'Element\\'s default semantics were overriden with role=\"none\"',\n            fail: 'Element\\'s default semantics were not overridden with role=\"none\"'\n          }\n        },\n        'internal-link-present': {\n          impact: 'serious',\n          messages: {\n            pass: 'Valid skip link found',\n            fail: 'No valid skip link found'\n          }\n        },\n        'header-present': {\n          impact: 'serious',\n          messages: {\n            pass: 'Page has a heading',\n            fail: 'Page does not have a heading'\n          }\n        },\n        landmark: {\n          impact: 'serious',\n          messages: {\n            pass: 'Page has a landmark region',\n            fail: 'Page does not have a landmark region'\n          }\n        },\n        'group-labelledby': {\n          impact: 'critical',\n          messages: {\n            pass: 'Elements with the name \"${data.name}\" have both a shared label, and a unique label, referenced through aria-labelledby',\n            fail: {\n              default: 'Elements with the name \"${data.name}\" do not all have both a shared label, and a unique label referenced through aria-labelledby',\n              'no-shared-label': 'Elements with the name \"${data.name}\" do not all have a shared label referenced through aria-labelledby',\n              'no-unique-label': 'Elements with the name \"${data.name}\" do not all have a unique label referenced through aria-labelledby'\n            }\n          }\n        },\n        fieldset: {\n          impact: 'critical',\n          messages: {\n            pass: 'Element is contained in a fieldset',\n            fail: {\n              default: 'Element does not have a containing fieldset or ARIA group',\n              'no-legend': 'Fieldset does not have a legend as its first child',\n              'empty-legend': 'Legend does not have text that is visible to screen readers',\n              'mixed-inputs': 'Fieldset contains unrelated inputs',\n              'no-group-label': 'ARIA group does not have aria-label or aria-labelledby',\n              'group-mixed-inputs': 'ARIA group contains unrelated inputs'\n            }\n          }\n        },\n        'color-contrast': {\n          impact: 'serious',\n          messages: {\n            pass: 'Element has sufficient color contrast of ${data.contrastRatio}',\n            fail: 'Element has insufficient color contrast of ${data.contrastRatio} (foreground color: ${data.fgColor}, background color: ${data.bgColor}, font size: ${data.fontSize}, font weight: ${data.fontWeight}). Expected contrast ratio of ${data.expectedContrastRatio}',\n            incomplete: {\n              default: 'Unable to determine contrast ratio',\n              bgImage: 'Element\\'s background color could not be determined due to a background image',\n              bgGradient: 'Element\\'s background color could not be determined due to a background gradient',\n              imgNode: 'Element\\'s background color could not be determined because element contains an image node',\n              bgOverlap: 'Element\\'s background color could not be determined because it is overlapped by another element',\n              fgAlpha: 'Element\\'s foreground color could not be determined because of alpha transparency',\n              elmPartiallyObscured: 'Element\\'s background color could not be determined because it\\'s partially obscured by another element',\n              elmPartiallyObscuring: 'Element\\'s background color could not be determined because it partially overlaps other elements',\n              outsideViewport: 'Element\\'s background color could not be determined because it\\'s outside the viewport',\n              equalRatio: 'Element has a 1:1 contrast ratio with the background',\n              shortTextContent: 'Element content is too short to determine if it is actual text content',\n              nonBmp: 'Element content contains only non-text characters'\n            }\n          }\n        },\n        'css-orientation-lock': {\n          impact: 'serious',\n          messages: {\n            pass: 'Display is operable, and orientation lock does not exist',\n            fail: 'CSS Orientation lock is applied, and makes display inoperable',\n            incomplete: 'CSS Orientation lock cannot be determined'\n          }\n        },\n        'structured-dlitems': {\n          impact: 'serious',\n          messages: {\n            pass: 'When not empty, element has both <dt> and <dd> elements',\n            fail: 'When not empty, element does not have at least one <dt> element followed by at least one <dd> element'\n          }\n        },\n        'only-dlitems': {\n          impact: 'serious',\n          messages: {\n            pass: 'List element only has direct children that are allowed inside <dt> or <dd> elements',\n            fail: 'List element has direct children that are not allowed inside <dt> or <dd> elements'\n          }\n        },\n        dlitem: {\n          impact: 'serious',\n          messages: {\n            pass: 'Description list item has a <dl> parent element',\n            fail: 'Description list item does not have a <dl> parent element'\n          }\n        },\n        'doc-has-title': {\n          impact: 'serious',\n          messages: {\n            pass: 'Document has a non-empty <title> element',\n            fail: 'Document does not have a non-empty <title> element'\n          }\n        },\n        'duplicate-id-active': {\n          impact: 'serious',\n          messages: {\n            pass: 'Document has no active elements that share the same id attribute',\n            fail: 'Document has active elements with the same id attribute: ${data}'\n          }\n        },\n        'duplicate-id-aria': {\n          impact: 'critical',\n          messages: {\n            pass: 'Document has no elements referenced with ARIA or labels that share the same id attribute',\n            fail: 'Document has multiple elements referenced with ARIA with the same id attribute: ${data}'\n          }\n        },\n        'duplicate-id': {\n          impact: 'minor',\n          messages: {\n            pass: 'Document has no static elements that share the same id attribute',\n            fail: 'Document has multiple static elements with the same id attribute'\n          }\n        },\n        'has-widget-role': {\n          impact: 'minor',\n          messages: {\n            pass: 'Element has a widget role.',\n            fail: 'Element does not have a widget role.'\n          }\n        },\n        'valid-scrollable-semantics': {\n          impact: 'minor',\n          messages: {\n            pass: 'Element has valid semantics for an element in the focus order.',\n            fail: 'Element has invalid semantics for an element in the focus order.'\n          }\n        },\n        'multiple-label': {\n          impact: 'moderate',\n          messages: {\n            pass: 'Form field does not have multiple label elements',\n            incomplete: 'Multiple label elements is not widely supported in assistive technologies. Ensure the first label contains all necessary information.'\n          }\n        },\n        'frame-tested': {\n          impact: 'critical',\n          messages: {\n            pass: 'The iframe was tested with axe-core',\n            fail: 'The iframe could not be tested with axe-core',\n            incomplete: 'The iframe still has to be tested with axe-core'\n          }\n        },\n        'unique-frame-title': {\n          impact: 'serious',\n          messages: {\n            pass: 'Element\\'s title attribute is unique',\n            fail: 'Element\\'s title attribute is not unique'\n          }\n        },\n        'heading-order': {\n          impact: 'moderate',\n          messages: {\n            pass: 'Heading order valid',\n            fail: 'Heading order invalid'\n          }\n        },\n        'hidden-content': {\n          impact: 'minor',\n          messages: {\n            pass: 'All content on the page has been analyzed.',\n            fail: 'There were problems analyzing the content on this page.',\n            incomplete: 'There is hidden content on the page that was not analyzed. You will need to trigger the display of this content in order to analyze it.'\n          }\n        },\n        'has-lang': {\n          impact: 'serious',\n          messages: {\n            pass: 'The <html> element has a lang attribute',\n            fail: {\n              noXHTML: 'The xml:lang attribute is not valid on HTML pages, use the lang attribute.',\n              noLang: 'The <html> element does not have a lang attribute'\n            }\n          }\n        },\n        'valid-lang': {\n          impact: 'serious',\n          messages: {\n            pass: 'Value of lang attribute is included in the list of valid languages',\n            fail: 'Value of lang attribute not included in the list of valid languages'\n          }\n        },\n        'xml-lang-mismatch': {\n          impact: 'moderate',\n          messages: {\n            pass: 'Lang and xml:lang attributes have the same base language',\n            fail: 'Lang and xml:lang attributes do not have the same base language'\n          }\n        },\n        'identical-links-same-purpose': {\n          impact: 'minor',\n          messages: {\n            pass: 'There are no other links with the same name, that go to a different URL',\n            incomplete: 'Check that links have the same purpose, or are intentionally ambiguous.'\n          }\n        },\n        'has-alt': {\n          impact: 'critical',\n          messages: {\n            pass: 'Element has an alt attribute',\n            fail: 'Element does not have an alt attribute'\n          }\n        },\n        'alt-space-value': {\n          impact: 'critical',\n          messages: {\n            pass: 'Element has a valid alt attribute value',\n            fail: 'Element has an alt attribute containing only a space character, which is not ignored by all screen readers'\n          }\n        },\n        'duplicate-img-label': {\n          impact: 'minor',\n          messages: {\n            pass: 'Element does not duplicate existing text in <img> alt text',\n            fail: 'Element contains <img> element with alt text that duplicates existing text'\n          }\n        },\n        'non-empty-if-present': {\n          impact: 'critical',\n          messages: {\n            pass: {\n              default: 'Element does not have a value attribute',\n              'has-label': 'Element has a non-empty value attribute'\n            },\n            fail: 'Element has a value attribute and the value attribute is empty'\n          }\n        },\n        'non-empty-value': {\n          impact: 'critical',\n          messages: {\n            pass: 'Element has a non-empty value attribute',\n            fail: 'Element has no value attribute or the value attribute is empty'\n          }\n        },\n        'label-content-name-mismatch': {\n          impact: 'serious',\n          messages: {\n            pass: 'Element contains visible text as part of it\\'s accessible name',\n            fail: 'Text inside the element is not included in the accessible name'\n          }\n        },\n        'title-only': {\n          impact: 'serious',\n          messages: {\n            pass: 'Form element does not solely use title attribute for its label',\n            fail: 'Only title used to generate label for form element'\n          }\n        },\n        'implicit-label': {\n          impact: 'critical',\n          messages: {\n            pass: 'Form element has an implicit (wrapped) <label>',\n            fail: 'Form element does not have an implicit (wrapped) <label>'\n          }\n        },\n        'explicit-label': {\n          impact: 'critical',\n          messages: {\n            pass: 'Form element has an explicit <label>',\n            fail: 'Form element does not have an explicit <label>'\n          }\n        },\n        'help-same-as-label': {\n          impact: 'minor',\n          messages: {\n            pass: 'Help text (title or aria-describedby) does not duplicate label text',\n            fail: 'Help text (title or aria-describedby) text is the same as the label text'\n          }\n        },\n        'hidden-explicit-label': {\n          impact: 'critical',\n          messages: {\n            pass: 'Form element has a visible explicit <label>',\n            fail: 'Form element has explicit <label> that is hidden'\n          }\n        },\n        'landmark-is-top-level': {\n          impact: 'moderate',\n          messages: {\n            pass: 'The ${data.role} landmark is at the top level.',\n            fail: 'The ${data.role} landmark is contained in another landmark.'\n          }\n        },\n        'page-no-duplicate-banner': {\n          impact: 'moderate',\n          messages: {\n            pass: 'Document does not have more than one banner landmark',\n            fail: 'Document has more than one banner landmark'\n          }\n        },\n        'page-no-duplicate-contentinfo': {\n          impact: 'moderate',\n          messages: {\n            pass: 'Document does not have more than one contentinfo landmark',\n            fail: 'Document has more than one contentinfo landmark'\n          }\n        },\n        'page-no-duplicate-main': {\n          impact: 'moderate',\n          messages: {\n            pass: 'Document does not have more than one main landmark',\n            fail: 'Document has more than one main landmark'\n          }\n        },\n        'page-has-main': {\n          impact: 'moderate',\n          messages: {\n            pass: 'Document has at least one main landmark',\n            fail: 'Document does not have a main landmark'\n          }\n        },\n        'landmark-is-unique': {\n          impact: 'moderate',\n          messages: {\n            pass: 'Landmarks must have a unique role or role/label/title (i.e. accessible name) combination',\n            fail: 'The landmark must have a unique aria-label, aria-labelledby, or title to make landmarks distinguishable'\n          }\n        },\n        'has-th': {\n          impact: 'serious',\n          messages: {\n            pass: 'Layout table does not use <th> elements',\n            fail: 'Layout table uses <th> elements'\n          }\n        },\n        'has-caption': {\n          impact: 'serious',\n          messages: {\n            pass: 'Layout table does not use <caption> element',\n            fail: 'Layout table uses <caption> element'\n          }\n        },\n        'has-summary': {\n          impact: 'serious',\n          messages: {\n            pass: 'Layout table does not use summary attribute',\n            fail: 'Layout table uses summary attribute'\n          }\n        },\n        'link-in-text-block': {\n          impact: 'serious',\n          messages: {\n            pass: 'Links can be distinguished from surrounding text in some way other than by color',\n            fail: 'Links need to be distinguished from surrounding text in some way other than by color',\n            incomplete: {\n              default: 'Unable to determine contrast ratio',\n              bgContrast: 'Element\\'s contrast ratio could not be determined. Check for a distinct hover/focus style',\n              bgImage: 'Element\\'s contrast ratio could not be determined due to a background image',\n              bgGradient: 'Element\\'s contrast ratio could not be determined due to a background gradient',\n              imgNode: 'Element\\'s contrast ratio could not be determined because element contains an image node',\n              bgOverlap: 'Element\\'s contrast ratio could not be determined because of element overlap'\n            }\n          }\n        },\n        'focusable-no-name': {\n          impact: 'serious',\n          messages: {\n            pass: 'Element is not in tab order or has accessible text',\n            fail: 'Element is in tab order and does not have accessible text'\n          }\n        },\n        'only-listitems': {\n          impact: 'serious',\n          messages: {\n            pass: 'List element only has direct children that are allowed inside <li> elements',\n            fail: {\n              default: 'List element has direct children that are not allowed inside <li> elements',\n              roleNotValid: 'List element has direct children with a role that is not allowed: ${data.roles}'\n            }\n          }\n        },\n        listitem: {\n          impact: 'serious',\n          messages: {\n            pass: 'List item has a <ul>, <ol> or role=\"list\" parent element',\n            fail: {\n              default: 'List item does not have a <ul>, <ol> parent element',\n              roleNotValid: 'List item does not have a <ul>, <ol> parent element without a role, or a role=\"list\"'\n            }\n          }\n        },\n        'meta-refresh': {\n          impact: 'critical',\n          messages: {\n            pass: '<meta> tag does not immediately refresh the page',\n            fail: '<meta> tag forces timed refresh of page'\n          }\n        },\n        'meta-viewport-large': {\n          impact: 'minor',\n          messages: {\n            pass: '<meta> tag does not prevent significant zooming on mobile devices',\n            fail: '<meta> tag limits zooming on mobile devices'\n          }\n        },\n        'meta-viewport': {\n          impact: 'critical',\n          messages: {\n            pass: '<meta> tag does not disable zooming on mobile devices',\n            fail: '${data} on <meta> tag disables zooming on mobile devices'\n          }\n        },\n        'no-autoplay-audio': {\n          impact: 'moderate',\n          messages: {\n            pass: '<video> or <audio> does not output audio for more than allowed duration or has controls mechanism',\n            fail: '<video> or <audio> outputs audio for more than allowed duration and does not have a controls mechanism',\n            incomplete: 'Check that the <video> or <audio> does not output audio for more than allowed duration or provides a controls mechanism'\n          }\n        },\n        'p-as-heading': {\n          impact: 'serious',\n          messages: {\n            pass: '<p> elements are not styled as headings',\n            fail: 'Heading elements should be used instead of styled p elements'\n          }\n        },\n        'page-has-heading-one': {\n          impact: 'moderate',\n          messages: {\n            pass: 'Page has at least one level-one heading',\n            fail: 'Page must have a level-one heading'\n          }\n        },\n        region: {\n          impact: 'moderate',\n          messages: {\n            pass: 'All page content is contained by landmarks',\n            fail: 'Some page content is not contained by landmarks'\n          }\n        },\n        'html5-scope': {\n          impact: 'moderate',\n          messages: {\n            pass: 'Scope attribute is only used on table header elements (<th>)',\n            fail: 'In HTML 5, scope attributes may only be used on table header elements (<th>)'\n          }\n        },\n        'scope-value': {\n          impact: 'critical',\n          messages: {\n            pass: 'Scope attribute is used correctly',\n            fail: 'The value of the scope attribute may only be \\'row\\' or \\'col\\''\n          }\n        },\n        'focusable-content': {\n          impact: 'moderate',\n          messages: {\n            pass: 'Element contains focusable elements',\n            fail: 'Element should have focusable content'\n          }\n        },\n        'focusable-element': {\n          impact: 'moderate',\n          messages: {\n            pass: 'Element is focusable',\n            fail: 'Element should be focusable'\n          }\n        },\n        exists: {\n          impact: 'minor',\n          messages: {\n            pass: 'Element does not exist',\n            incomplete: 'Element exists'\n          }\n        },\n        'skip-link': {\n          impact: 'moderate',\n          messages: {\n            pass: 'Skip link target exists',\n            incomplete: 'Skip link target should become visible on activation',\n            fail: 'No skip link target'\n          }\n        },\n        'svg-non-empty-title': {\n          impact: 'serious',\n          messages: {\n            pass: 'element has a child that is a title',\n            fail: 'element has no child that is a title'\n          }\n        },\n        tabindex: {\n          impact: 'serious',\n          messages: {\n            pass: 'Element does not have a tabindex greater than 0',\n            fail: 'Element has a tabindex greater than 0'\n          }\n        },\n        'same-caption-summary': {\n          impact: 'minor',\n          messages: {\n            pass: 'Content of summary attribute and <caption> are not duplicated',\n            fail: 'Content of summary attribute and <caption> element are identical'\n          }\n        },\n        'caption-faked': {\n          impact: 'serious',\n          messages: {\n            pass: 'The first row of a table is not used as a caption',\n            fail: 'The first child of the table should be a caption instead of a table cell'\n          }\n        },\n        'td-has-header': {\n          impact: 'critical',\n          messages: {\n            pass: 'All non-empty data cells have table headers',\n            fail: 'Some non-empty data cells do not have table headers'\n          }\n        },\n        'td-headers-attr': {\n          impact: 'serious',\n          messages: {\n            pass: 'The headers attribute is exclusively used to refer to other cells in the table',\n            incomplete: 'The headers attribute is empty',\n            fail: 'The headers attribute is not exclusively used to refer to other cells in the table'\n          }\n        },\n        'th-has-data-cells': {\n          impact: 'serious',\n          messages: {\n            pass: 'All table header cells refer to data cells',\n            fail: 'Not all table header cells refer to data cells',\n            incomplete: 'Table data cells are missing or empty'\n          }\n        },\n        description: {\n          impact: 'critical',\n          messages: {\n            pass: 'The multimedia element has an audio description track',\n            incomplete: 'Check that audio description is available for the element'\n          }\n        }\n      },\n      failureSummaries: {\n        any: {\n          failureMessage: function anonymous(it) {\n            var out = 'Fix any of the following:';\n            var arr1 = it;\n\n            if (arr1) {\n              var value,\n                  i1 = -1,\n                  l1 = arr1.length - 1;\n\n              while (i1 < l1) {\n                value = arr1[i1 += 1];\n                out += '\\n  ' + value.split('\\n').join('\\n  ');\n              }\n            }\n\n            return out;\n          }\n        },\n        none: {\n          failureMessage: function anonymous(it) {\n            var out = 'Fix all of the following:';\n            var arr1 = it;\n\n            if (arr1) {\n              var value,\n                  i1 = -1,\n                  l1 = arr1.length - 1;\n\n              while (i1 < l1) {\n                value = arr1[i1 += 1];\n                out += '\\n  ' + value.split('\\n').join('\\n  ');\n              }\n            }\n\n            return out;\n          }\n        }\n      },\n      incompleteFallbackMessage: {}\n    },\n    rules: [{\n      id: 'accesskeys',\n      selector: '[accesskey]',\n      excludeHidden: false,\n      tags: ['best-practice', 'cat.keyboard'],\n      all: [],\n      any: [],\n      none: ['accesskeys']\n    }, {\n      id: 'area-alt',\n      selector: 'map area[href]',\n      excludeHidden: false,\n      tags: ['cat.text-alternatives', 'wcag2a', 'wcag111', 'wcag244', 'wcag412', 'section508', 'section508.22.a'],\n      all: [],\n      any: ['non-empty-alt', 'non-empty-title', 'aria-label', 'aria-labelledby'],\n      none: []\n    }, {\n      id: 'aria-allowed-attr',\n      matches: function matches(node, virtualNode, context) {\n        var aria = /^aria-/;\n\n        if (node.hasAttributes()) {\n          var attrs = axe.utils.getNodeAttributes(node);\n\n          for (var i = 0, l = attrs.length; i < l; i++) {\n            if (aria.test(attrs[i].name)) {\n              return true;\n            }\n          }\n        }\n\n        return false;\n      },\n      tags: ['cat.aria', 'wcag2a', 'wcag412'],\n      all: [],\n      any: ['aria-allowed-attr'],\n      none: ['aria-unsupported-attr']\n    }, {\n      id: 'aria-allowed-role',\n      excludeHidden: false,\n      selector: '[role]',\n      matches: function matches(node, virtualNode, context) {\n        return axe.commons.aria.getRole(node, {\n          noImplicit: true,\n          dpub: true,\n          fallback: true\n        }) !== null;\n      },\n      tags: ['cat.aria', 'best-practice'],\n      all: [],\n      any: [{\n        options: {\n          allowImplicit: true,\n          ignoredTags: []\n        },\n        id: 'aria-allowed-role'\n      }],\n      none: []\n    }, {\n      id: 'aria-dpub-role-fallback',\n      selector: '[role]',\n      matches: function matches(node, virtualNode, context) {\n        var role = node.getAttribute('role');\n        return ['doc-backlink', 'doc-biblioentry', 'doc-biblioref', 'doc-cover', 'doc-endnote', 'doc-glossref', 'doc-noteref'].includes(role);\n      },\n      tags: ['cat.aria', 'wcag2a', 'wcag131', 'deprecated'],\n      enabled: false,\n      all: ['implicit-role-fallback'],\n      any: [],\n      none: []\n    }, {\n      id: 'aria-hidden-body',\n      selector: 'body',\n      excludeHidden: false,\n      tags: ['cat.aria', 'wcag2a', 'wcag412'],\n      all: [],\n      any: ['aria-hidden-body'],\n      none: []\n    }, {\n      id: 'aria-hidden-focus',\n      selector: '[aria-hidden=\"true\"]',\n      matches: function matches(node, virtualNode, context) {\n        var getComposedParent = axe.commons.dom.getComposedParent;\n\n        function shouldMatchElement(el) {\n          if (!el) {\n            return true;\n          }\n\n          if (el.getAttribute('aria-hidden') === 'true') {\n            return false;\n          }\n\n          return shouldMatchElement(getComposedParent(el));\n        }\n\n        return shouldMatchElement(getComposedParent(node));\n      },\n      excludeHidden: false,\n      tags: ['cat.name-role-value', 'wcag2a', 'wcag412', 'wcag131'],\n      all: ['focusable-modal-open', 'focusable-disabled', 'focusable-not-tabbable'],\n      any: [],\n      none: []\n    }, {\n      id: 'aria-input-field-name',\n      selector: '[role=\"combobox\"], [role=\"listbox\"], [role=\"searchbox\"], [role=\"slider\"], [role=\"spinbutton\"], [role=\"textbox\"]',\n      matches: function matches(node, virtualNode, context) {\n        var aria = axe.commons.aria;\n        var nodeName = node.nodeName.toUpperCase();\n        var role = aria.getRole(node, {\n          noImplicit: true\n        });\n\n        if (nodeName === 'AREA' && !!node.getAttribute('href')) {\n          return false;\n        }\n\n        if (['INPUT', 'SELECT', 'TEXTAREA'].includes(nodeName)) {\n          return false;\n        }\n\n        if (nodeName === 'IMG' || role === 'img' && nodeName !== 'SVG') {\n          return false;\n        }\n\n        if (nodeName === 'BUTTON' || role === 'button') {\n          return false;\n        }\n\n        if (role === 'combobox' && axe.utils.querySelectorAll(virtualNode, 'input:not([type=\"hidden\"])').length) {\n          return false;\n        }\n\n        return true;\n      },\n      tags: ['wcag2a', 'wcag412'],\n      all: [],\n      any: ['aria-label', 'aria-labelledby', 'non-empty-title'],\n      none: ['no-implicit-explicit-label']\n    }, {\n      id: 'aria-required-attr',\n      selector: '[role]',\n      tags: ['cat.aria', 'wcag2a', 'wcag412'],\n      all: [],\n      any: ['aria-required-attr'],\n      none: []\n    }, {\n      id: 'aria-required-children',\n      selector: '[role]',\n      tags: ['cat.aria', 'wcag2a', 'wcag131'],\n      all: [],\n      any: [{\n        options: {\n          reviewEmpty: ['doc-bibliography', 'doc-endnotes', 'grid', 'list', 'listbox', 'table', 'tablist', 'tree', 'treegrid', 'rowgroup']\n        },\n        id: 'aria-required-children'\n      }],\n      none: []\n    }, {\n      id: 'aria-required-parent',\n      selector: '[role]',\n      tags: ['cat.aria', 'wcag2a', 'wcag131'],\n      all: [],\n      any: ['aria-required-parent'],\n      none: []\n    }, {\n      id: 'aria-roledescription',\n      selector: '[aria-roledescription]',\n      tags: ['cat.aria', 'wcag2a', 'wcag412'],\n      all: [],\n      any: [{\n        options: {\n          supportedRoles: ['button', 'img', 'checkbox', 'radio', 'combobox', 'menuitemcheckbox', 'menuitemradio']\n        },\n        id: 'aria-roledescription'\n      }],\n      none: []\n    }, {\n      id: 'aria-roles',\n      selector: '[role]',\n      matches: function matches(node, virtualNode, context) {\n        if (!virtualNode.hasAttr('role')) {\n          return false;\n        }\n\n        if (!virtualNode.attr('role').trim()) {\n          return false;\n        }\n\n        return true;\n      },\n      tags: ['cat.aria', 'wcag2a', 'wcag412'],\n      all: [],\n      any: [],\n      none: ['fallbackrole', 'invalidrole', 'abstractrole', 'unsupportedrole']\n    }, {\n      id: 'aria-toggle-field-name',\n      selector: '[role=\"checkbox\"], [role=\"menuitemcheckbox\"], [role=\"menuitemradio\"], [role=\"radio\"], [role=\"switch\"]',\n      matches: function matches(node, virtualNode, context) {\n        var aria = axe.commons.aria;\n        var nodeName = node.nodeName.toUpperCase();\n        var role = aria.getRole(node, {\n          noImplicit: true\n        });\n\n        if (nodeName === 'AREA' && !!node.getAttribute('href')) {\n          return false;\n        }\n\n        if (['INPUT', 'SELECT', 'TEXTAREA'].includes(nodeName)) {\n          return false;\n        }\n\n        if (nodeName === 'IMG' || role === 'img' && nodeName !== 'SVG') {\n          return false;\n        }\n\n        if (nodeName === 'BUTTON' || role === 'button') {\n          return false;\n        }\n\n        if (role === 'combobox' && axe.utils.querySelectorAll(virtualNode, 'input:not([type=\"hidden\"])').length) {\n          return false;\n        }\n\n        return true;\n      },\n      tags: ['wcag2a', 'wcag412'],\n      all: [],\n      any: ['aria-label', 'aria-labelledby', 'non-empty-title', 'has-visible-text'],\n      none: ['no-implicit-explicit-label']\n    }, {\n      id: 'aria-valid-attr-value',\n      matches: function matches(node, virtualNode, context) {\n        var aria = /^aria-/;\n\n        if (node.hasAttributes()) {\n          var attrs = axe.utils.getNodeAttributes(node);\n\n          for (var i = 0, l = attrs.length; i < l; i++) {\n            if (aria.test(attrs[i].name)) {\n              return true;\n            }\n          }\n        }\n\n        return false;\n      },\n      tags: ['cat.aria', 'wcag2a', 'wcag412'],\n      all: [{\n        options: [],\n        id: 'aria-valid-attr-value'\n      }, 'aria-errormessage'],\n      any: [],\n      none: []\n    }, {\n      id: 'aria-valid-attr',\n      matches: function matches(node, virtualNode, context) {\n        var aria = /^aria-/;\n\n        if (node.hasAttributes()) {\n          var attrs = axe.utils.getNodeAttributes(node);\n\n          for (var i = 0, l = attrs.length; i < l; i++) {\n            if (aria.test(attrs[i].name)) {\n              return true;\n            }\n          }\n        }\n\n        return false;\n      },\n      tags: ['cat.aria', 'wcag2a', 'wcag412'],\n      all: [],\n      any: [{\n        options: [],\n        id: 'aria-valid-attr'\n      }],\n      none: []\n    }, {\n      id: 'audio-caption',\n      selector: 'audio',\n      enabled: false,\n      excludeHidden: false,\n      tags: ['cat.time-and-media', 'wcag2a', 'wcag121', 'section508', 'section508.22.a'],\n      all: [],\n      any: [],\n      none: ['caption']\n    }, {\n      id: 'autocomplete-valid',\n      matches: function matches(node, virtualNode, context) {\n        var _axe$commons = axe.commons,\n            text = _axe$commons.text,\n            aria = _axe$commons.aria,\n            dom = _axe$commons.dom;\n        var autocomplete = virtualNode.attr('autocomplete');\n\n        if (!autocomplete || text.sanitize(autocomplete) === '') {\n          return false;\n        }\n\n        var nodeName = virtualNode.props.nodeName;\n\n        if (['textarea', 'input', 'select'].includes(nodeName) === false) {\n          return false;\n        }\n\n        var excludedInputTypes = ['submit', 'reset', 'button', 'hidden'];\n\n        if (nodeName === 'input' && excludedInputTypes.includes(virtualNode.props.type)) {\n          return false;\n        }\n\n        var ariaDisabled = virtualNode.attr('aria-disabled') || 'false';\n\n        if (virtualNode.hasAttr('disabled') || ariaDisabled.toLowerCase() === 'true') {\n          return false;\n        }\n\n        var role = virtualNode.attr('role');\n        var tabIndex = virtualNode.attr('tabindex');\n\n        if (tabIndex === '-1' && role) {\n          var roleDef = aria.lookupTable.role[role];\n\n          if (roleDef === undefined || roleDef.type !== 'widget') {\n            return false;\n          }\n        }\n\n        if (tabIndex === '-1' && virtualNode.actualNode && !dom.isVisible(virtualNode.actualNode, false) && !dom.isVisible(virtualNode.actualNode, true)) {\n          return false;\n        }\n\n        return true;\n      },\n      tags: ['cat.forms', 'wcag21aa', 'wcag135'],\n      all: ['autocomplete-valid', 'autocomplete-appropriate'],\n      any: [],\n      none: []\n    }, {\n      id: 'avoid-inline-spacing',\n      selector: '[style]',\n      tags: ['wcag21aa', 'wcag1412'],\n      all: ['avoid-inline-spacing'],\n      any: [],\n      none: []\n    }, {\n      id: 'blink',\n      selector: 'blink',\n      excludeHidden: false,\n      tags: ['cat.time-and-media', 'wcag2a', 'wcag222', 'section508', 'section508.22.j'],\n      all: [],\n      any: [],\n      none: ['is-on-screen']\n    }, {\n      id: 'button-name',\n      selector: 'button, [role=\"button\"]:not(input)',\n      tags: ['cat.name-role-value', 'wcag2a', 'wcag412', 'section508', 'section508.22.a'],\n      all: [],\n      any: ['button-has-visible-text', 'aria-label', 'aria-labelledby', 'role-presentation', 'role-none', 'non-empty-title'],\n      none: []\n    }, {\n      id: 'bypass',\n      selector: 'html',\n      pageLevel: true,\n      matches: function matches(node, virtualNode, context) {\n        return !!node.querySelector('a[href]');\n      },\n      tags: ['cat.keyboard', 'wcag2a', 'wcag241', 'section508', 'section508.22.o'],\n      all: [],\n      any: ['internal-link-present', 'header-present', 'landmark'],\n      none: []\n    }, {\n      id: 'checkboxgroup',\n      selector: 'input[type=checkbox][name]',\n      tags: ['cat.forms', 'best-practice', 'deprecated'],\n      enabled: false,\n      all: [],\n      any: ['group-labelledby', 'fieldset'],\n      none: []\n    }, {\n      id: 'color-contrast',\n      matches: function matches(node, virtualNode, context) {\n        var nodeName = node.nodeName.toUpperCase();\n        var nodeType = node.type;\n\n        if (node.getAttribute('aria-disabled') === 'true' || axe.commons.dom.findUpVirtual(virtualNode, '[aria-disabled=\"true\"]')) {\n          return false;\n        }\n\n        var formElements = ['INPUT', 'SELECT', 'TEXTAREA'];\n\n        if (formElements.includes(nodeName)) {\n          var style = window.getComputedStyle(node);\n          var textIndent = parseInt(style.getPropertyValue('text-indent'), 10);\n\n          if (textIndent) {\n            var rect = node.getBoundingClientRect();\n            rect = {\n              top: rect.top,\n              bottom: rect.bottom,\n              left: rect.left + textIndent,\n              right: rect.right + textIndent\n            };\n\n            if (!axe.commons.dom.visuallyOverlaps(rect, node)) {\n              return false;\n            }\n          }\n        }\n\n        if (nodeName === 'INPUT') {\n          return ['hidden', 'range', 'color', 'checkbox', 'radio', 'image'].indexOf(nodeType) === -1 && !node.disabled;\n        }\n\n        if (nodeName === 'SELECT') {\n          return !!node.options.length && !node.disabled;\n        }\n\n        if (nodeName === 'TEXTAREA') {\n          return !node.disabled;\n        }\n\n        if (nodeName === 'OPTION') {\n          return false;\n        }\n\n        if (nodeName === 'BUTTON' && node.disabled || axe.commons.dom.findUpVirtual(virtualNode, 'button[disabled]')) {\n          return false;\n        }\n\n        if (nodeName === 'FIELDSET' && node.disabled || axe.commons.dom.findUpVirtual(virtualNode, 'fieldset[disabled]')) {\n          return false;\n        }\n\n        var nodeParentLabel = axe.commons.dom.findUpVirtual(virtualNode, 'label');\n\n        if (nodeName === 'LABEL' || nodeParentLabel) {\n          var relevantNode = node;\n          var relevantVirtualNode = virtualNode;\n\n          if (nodeParentLabel) {\n            relevantNode = nodeParentLabel;\n            relevantVirtualNode = axe.utils.getNodeFromTree(nodeParentLabel);\n          }\n\n          var doc = axe.commons.dom.getRootNode(relevantNode);\n          var candidate = relevantNode.htmlFor && doc.getElementById(relevantNode.htmlFor);\n          var candidateVirtualNode = axe.utils.getNodeFromTree(candidate);\n\n          if (candidate && (candidate.disabled || candidate.getAttribute('aria-disabled') === 'true' || axe.commons.dom.findUpVirtual(candidateVirtualNode, '[aria-disabled=\"true\"]'))) {\n            return false;\n          }\n\n          candidate = axe.utils.querySelectorAll(relevantVirtualNode, 'input:not([type=\"hidden\"]):not([type=\"image\"])' + ':not([type=\"button\"]):not([type=\"submit\"]):not([type=\"reset\"]), select, textarea');\n\n          if (candidate.length && candidate[0].actualNode.disabled) {\n            return false;\n          }\n        }\n\n        if (node.getAttribute('id')) {\n          var id = axe.utils.escapeSelector(node.getAttribute('id'));\n\n          var _doc = axe.commons.dom.getRootNode(node);\n\n          var _candidate = _doc.querySelector('[aria-labelledby~=' + id + ']');\n\n          if (_candidate && _candidate.disabled) {\n            return false;\n          }\n        }\n\n        var visibleText = axe.commons.text.visibleVirtual(virtualNode, false, true);\n\n        if (visibleText === '' || axe.commons.text.removeUnicode(visibleText, {\n          emoji: true,\n          nonBmp: false,\n          punctuations: true\n        }) === '') {\n          return false;\n        }\n\n        var range = document.createRange();\n        var childNodes = virtualNode.children;\n        var length = childNodes.length;\n        var child = null;\n        var index = 0;\n\n        for (index = 0; index < length; index++) {\n          child = childNodes[index];\n\n          if (child.actualNode.nodeType === 3 && axe.commons.text.sanitize(child.actualNode.nodeValue) !== '') {\n            range.selectNodeContents(child.actualNode);\n          }\n        }\n\n        var rects = range.getClientRects();\n        length = rects.length;\n\n        for (index = 0; index < length; index++) {\n          if (axe.commons.dom.visuallyOverlaps(rects[index], node)) {\n            return true;\n          }\n        }\n\n        return false;\n      },\n      excludeHidden: false,\n      tags: ['cat.color', 'wcag2aa', 'wcag143'],\n      all: [],\n      any: [{\n        options: {\n          noScroll: false,\n          ignoreUnicode: true,\n          ignoreLength: false\n        },\n        id: 'color-contrast'\n      }],\n      none: []\n    }, {\n      id: 'css-orientation-lock',\n      selector: 'html',\n      tags: ['cat.structure', 'wcag134', 'wcag21aa', 'experimental'],\n      all: [{\n        options: {\n          degreeThreshold: 2\n        },\n        id: 'css-orientation-lock'\n      }],\n      any: [],\n      none: [],\n      preload: true\n    }, {\n      id: 'definition-list',\n      selector: 'dl',\n      matches: function matches(node, virtualNode, context) {\n        return !node.getAttribute('role');\n      },\n      tags: ['cat.structure', 'wcag2a', 'wcag131'],\n      all: [],\n      any: [],\n      none: ['structured-dlitems', 'only-dlitems']\n    }, {\n      id: 'dlitem',\n      selector: 'dd, dt',\n      matches: function matches(node, virtualNode, context) {\n        return !node.getAttribute('role');\n      },\n      tags: ['cat.structure', 'wcag2a', 'wcag131'],\n      all: [],\n      any: ['dlitem'],\n      none: []\n    }, {\n      id: 'document-title',\n      selector: 'html',\n      matches: function matches(node, virtualNode, context) {\n        return node.ownerDocument.defaultView.self === node.ownerDocument.defaultView.top;\n      },\n      tags: ['cat.text-alternatives', 'wcag2a', 'wcag242'],\n      all: [],\n      any: ['doc-has-title'],\n      none: []\n    }, {\n      id: 'duplicate-id-active',\n      selector: '[id]',\n      matches: function matches(node, virtualNode, context) {\n        var _axe$commons2 = axe.commons,\n            dom = _axe$commons2.dom,\n            aria = _axe$commons2.aria;\n        var id = node.getAttribute('id').trim();\n        var idSelector = '*[id=\"'.concat(axe.utils.escapeSelector(id), '\"]');\n        var idMatchingElms = Array.from(dom.getRootNode(node).querySelectorAll(idSelector));\n        return !aria.isAccessibleRef(node) && idMatchingElms.some(dom.isFocusable);\n      },\n      excludeHidden: false,\n      tags: ['cat.parsing', 'wcag2a', 'wcag411'],\n      all: [],\n      any: ['duplicate-id-active'],\n      none: []\n    }, {\n      id: 'duplicate-id-aria',\n      selector: '[id]',\n      matches: function matches(node, virtualNode, context) {\n        return axe.commons.aria.isAccessibleRef(node);\n      },\n      excludeHidden: false,\n      tags: ['cat.parsing', 'wcag2a', 'wcag411'],\n      all: [],\n      any: ['duplicate-id-aria'],\n      none: []\n    }, {\n      id: 'duplicate-id',\n      selector: '[id]',\n      matches: function matches(node, virtualNode, context) {\n        var _axe$commons3 = axe.commons,\n            dom = _axe$commons3.dom,\n            aria = _axe$commons3.aria;\n        var id = node.getAttribute('id').trim();\n        var idSelector = '*[id=\"'.concat(axe.utils.escapeSelector(id), '\"]');\n        var idMatchingElms = Array.from(dom.getRootNode(node).querySelectorAll(idSelector));\n        return !aria.isAccessibleRef(node) && idMatchingElms.every(function (elm) {\n          return !dom.isFocusable(elm);\n        });\n      },\n      excludeHidden: false,\n      tags: ['cat.parsing', 'wcag2a', 'wcag411'],\n      all: [],\n      any: ['duplicate-id'],\n      none: []\n    }, {\n      id: 'empty-heading',\n      selector: 'h1, h2, h3, h4, h5, h6, [role=\"heading\"]',\n      matches: function matches(node, virtualNode, context) {\n        var explicitRoles;\n\n        if (node.hasAttribute('role')) {\n          explicitRoles = node.getAttribute('role').split(/\\s+/i).filter(axe.commons.aria.isValidRole);\n        }\n\n        if (explicitRoles && explicitRoles.length > 0) {\n          return explicitRoles.includes('heading');\n        } else {\n          return axe.commons.aria.implicitRole(node) === 'heading';\n        }\n      },\n      tags: ['cat.name-role-value', 'best-practice'],\n      all: [],\n      any: ['has-visible-text'],\n      none: []\n    }, {\n      id: 'focus-order-semantics',\n      selector: 'div, h1, h2, h3, h4, h5, h6, [role=heading], p, span',\n      matches: function matches(node, virtualNode, context) {\n        return axe.commons.dom.insertedIntoFocusOrder(node);\n      },\n      tags: ['cat.keyboard', 'best-practice', 'experimental'],\n      all: [],\n      any: [{\n        options: [],\n        id: 'has-widget-role'\n      }, {\n        options: [],\n        id: 'valid-scrollable-semantics'\n      }],\n      none: []\n    }, {\n      id: 'form-field-multiple-labels',\n      selector: 'input, select, textarea',\n      matches: function matches(node, virtualNode, context) {\n        if (node.nodeName.toLowerCase() !== 'input' || node.hasAttribute('type') === false) {\n          return true;\n        }\n\n        var type = node.getAttribute('type').toLowerCase();\n        return ['hidden', 'image', 'button', 'submit', 'reset'].includes(type) === false;\n      },\n      tags: ['cat.forms', 'wcag2a', 'wcag332'],\n      all: [],\n      any: [],\n      none: ['multiple-label']\n    }, {\n      id: 'frame-tested',\n      selector: 'frame, iframe',\n      tags: ['cat.structure', 'review-item', 'best-practice'],\n      all: [{\n        options: {\n          isViolation: false\n        },\n        id: 'frame-tested'\n      }],\n      any: [],\n      none: []\n    }, {\n      id: 'frame-title-unique',\n      selector: 'frame[title], iframe[title]',\n      matches: function matches(node, virtualNode, context) {\n        var title = node.getAttribute('title');\n        return !!(title ? axe.commons.text.sanitize(title).trim() : '');\n      },\n      tags: ['cat.text-alternatives', 'best-practice'],\n      all: [],\n      any: [],\n      none: ['unique-frame-title']\n    }, {\n      id: 'frame-title',\n      selector: 'frame, iframe',\n      tags: ['cat.text-alternatives', 'wcag2a', 'wcag241', 'wcag412', 'section508', 'section508.22.i'],\n      all: [],\n      any: ['aria-label', 'aria-labelledby', 'non-empty-title', 'role-presentation', 'role-none'],\n      none: []\n    }, {\n      id: 'heading-order',\n      selector: 'h1, h2, h3, h4, h5, h6, [role=heading]',\n      matches: function matches(node, virtualNode, context) {\n        var explicitRoles;\n\n        if (node.hasAttribute('role')) {\n          explicitRoles = node.getAttribute('role').split(/\\s+/i).filter(axe.commons.aria.isValidRole);\n        }\n\n        if (explicitRoles && explicitRoles.length > 0) {\n          return explicitRoles.includes('heading');\n        } else {\n          return axe.commons.aria.implicitRole(node) === 'heading';\n        }\n      },\n      tags: ['cat.semantics', 'best-practice'],\n      all: [],\n      any: ['heading-order'],\n      none: []\n    }, {\n      id: 'hidden-content',\n      selector: '*',\n      excludeHidden: false,\n      tags: ['cat.structure', 'experimental', 'review-item', 'best-practice'],\n      all: [],\n      any: ['hidden-content'],\n      none: []\n    }, {\n      id: 'html-has-lang',\n      selector: 'html',\n      matches: function matches(node, virtualNode, context) {\n        return node.ownerDocument.defaultView.self === node.ownerDocument.defaultView.top;\n      },\n      tags: ['cat.language', 'wcag2a', 'wcag311'],\n      all: [],\n      any: ['has-lang'],\n      none: []\n    }, {\n      id: 'html-lang-valid',\n      selector: 'html[lang], html[xml\\\\:lang]',\n      tags: ['cat.language', 'wcag2a', 'wcag311'],\n      all: [],\n      any: [],\n      none: ['valid-lang']\n    }, {\n      id: 'html-xml-lang-mismatch',\n      selector: 'html[lang][xml\\\\:lang]',\n      matches: function matches(node, virtualNode, context) {\n        var getBaseLang = axe.utils.getBaseLang;\n        var primaryLangValue = getBaseLang(node.getAttribute('lang'));\n        var primaryXmlLangValue = getBaseLang(node.getAttribute('xml:lang'));\n        return axe.utils.validLangs().includes(primaryLangValue) && axe.utils.validLangs().includes(primaryXmlLangValue);\n      },\n      tags: ['cat.language', 'wcag2a', 'wcag311'],\n      all: ['xml-lang-mismatch'],\n      any: [],\n      none: []\n    }, {\n      id: 'identical-links-same-purpose',\n      selector: 'a[href], area[href], [role=\"link\"]',\n      excludeHidden: false,\n      matches: function matches(node, virtualNode, context) {\n        var _axe$commons4 = axe.commons,\n            aria = _axe$commons4.aria,\n            text = _axe$commons4.text;\n        var hasAccName = !!text.accessibleTextVirtual(virtualNode);\n\n        if (!hasAccName) {\n          return false;\n        }\n\n        var role = aria.getRole(node);\n\n        if (role && role !== 'link') {\n          return false;\n        }\n\n        return true;\n      },\n      tags: ['wcag2aaa', 'wcag249', 'best-practice'],\n      all: ['identical-links-same-purpose'],\n      any: [],\n      none: []\n    }, {\n      id: 'image-alt',\n      selector: 'img',\n      tags: ['cat.text-alternatives', 'wcag2a', 'wcag111', 'section508', 'section508.22.a'],\n      all: [],\n      any: ['has-alt', 'aria-label', 'aria-labelledby', 'non-empty-title', 'role-presentation', 'role-none'],\n      none: ['alt-space-value']\n    }, {\n      id: 'image-redundant-alt',\n      selector: 'img',\n      tags: ['cat.text-alternatives', 'best-practice'],\n      all: [],\n      any: [],\n      none: ['duplicate-img-label']\n    }, {\n      id: 'input-button-name',\n      selector: 'input[type=\"button\"], input[type=\"submit\"], input[type=\"reset\"]',\n      tags: ['cat.name-role-value', 'wcag2a', 'wcag412', 'section508', 'section508.22.a'],\n      all: [],\n      any: ['non-empty-if-present', 'non-empty-value', 'aria-label', 'aria-labelledby', 'role-presentation', 'role-none', 'non-empty-title'],\n      none: []\n    }, {\n      id: 'input-image-alt',\n      selector: 'input[type=\"image\"]',\n      tags: ['cat.text-alternatives', 'wcag2a', 'wcag111', 'section508', 'section508.22.a'],\n      all: [],\n      any: ['non-empty-alt', 'aria-label', 'aria-labelledby', 'non-empty-title'],\n      none: []\n    }, {\n      id: 'label-content-name-mismatch',\n      matches: function matches(node, virtualNode, context) {\n        var _axe$commons5 = axe.commons,\n            aria = _axe$commons5.aria,\n            text = _axe$commons5.text;\n        var role = aria.getRole(node);\n\n        if (!role) {\n          return false;\n        }\n\n        var widgetRoles = Object.keys(aria.lookupTable.role).filter(function (key) {\n          return aria.lookupTable.role[key].type === 'widget';\n        });\n        var isWidgetType = widgetRoles.includes(role);\n\n        if (!isWidgetType) {\n          return false;\n        }\n\n        var rolesWithNameFromContents = aria.getRolesWithNameFromContents();\n\n        if (!rolesWithNameFromContents.includes(role)) {\n          return false;\n        }\n\n        if (!text.sanitize(aria.arialabelText(virtualNode)) && !text.sanitize(aria.arialabelledbyText(node))) {\n          return false;\n        }\n\n        if (!text.sanitize(text.visibleVirtual(virtualNode))) {\n          return false;\n        }\n\n        return true;\n      },\n      tags: ['wcag21a', 'wcag253', 'experimental'],\n      all: [],\n      any: [{\n        options: {\n          pixelThreshold: .1,\n          occuranceThreshold: 3\n        },\n        id: 'label-content-name-mismatch'\n      }],\n      none: []\n    }, {\n      id: 'label-title-only',\n      selector: 'input, select, textarea',\n      matches: function matches(node, virtualNode, context) {\n        if (node.nodeName.toLowerCase() !== 'input' || node.hasAttribute('type') === false) {\n          return true;\n        }\n\n        var type = node.getAttribute('type').toLowerCase();\n        return ['hidden', 'image', 'button', 'submit', 'reset'].includes(type) === false;\n      },\n      tags: ['cat.forms', 'best-practice'],\n      all: [],\n      any: [],\n      none: ['title-only']\n    }, {\n      id: 'label',\n      selector: 'input, select, textarea',\n      matches: function matches(node, virtualNode, context) {\n        if (node.nodeName.toLowerCase() !== 'input' || node.hasAttribute('type') === false) {\n          return true;\n        }\n\n        var type = node.getAttribute('type').toLowerCase();\n        return ['hidden', 'image', 'button', 'submit', 'reset'].includes(type) === false;\n      },\n      tags: ['cat.forms', 'wcag2a', 'wcag412', 'wcag131', 'section508', 'section508.22.n'],\n      all: [],\n      any: ['aria-label', 'aria-labelledby', 'implicit-label', 'explicit-label', 'non-empty-title'],\n      none: ['help-same-as-label', 'hidden-explicit-label']\n    }, {\n      id: 'landmark-banner-is-top-level',\n      selector: 'header:not([role]), [role=banner]',\n      matches: function matches(node, virtualNode, context) {\n        var nativeScopeFilter = 'article, aside, main, nav, section';\n        return node.hasAttribute('role') || !axe.commons.dom.findUpVirtual(virtualNode, nativeScopeFilter);\n      },\n      tags: ['cat.semantics', 'best-practice'],\n      all: [],\n      any: ['landmark-is-top-level'],\n      none: []\n    }, {\n      id: 'landmark-complementary-is-top-level',\n      selector: 'aside:not([role]), [role=complementary]',\n      tags: ['cat.semantics', 'best-practice'],\n      all: [],\n      any: ['landmark-is-top-level'],\n      none: []\n    }, {\n      id: 'landmark-contentinfo-is-top-level',\n      selector: 'footer:not([role]), [role=contentinfo]',\n      matches: function matches(node, virtualNode, context) {\n        var nativeScopeFilter = 'article, aside, main, nav, section';\n        return node.hasAttribute('role') || !axe.commons.dom.findUpVirtual(virtualNode, nativeScopeFilter);\n      },\n      tags: ['cat.semantics', 'best-practice'],\n      all: [],\n      any: ['landmark-is-top-level'],\n      none: []\n    }, {\n      id: 'landmark-main-is-top-level',\n      selector: 'main:not([role]), [role=main]',\n      tags: ['cat.semantics', 'best-practice'],\n      all: [],\n      any: ['landmark-is-top-level'],\n      none: []\n    }, {\n      id: 'landmark-no-duplicate-banner',\n      selector: 'header:not([role]), [role=banner]',\n      tags: ['cat.semantics', 'best-practice'],\n      all: [],\n      any: [{\n        options: {\n          selector: 'header:not([role]), [role=banner]',\n          nativeScopeFilter: 'article, aside, main, nav, section'\n        },\n        id: 'page-no-duplicate-banner'\n      }],\n      none: []\n    }, {\n      id: 'landmark-no-duplicate-contentinfo',\n      selector: 'footer:not([role]), [role=contentinfo]',\n      tags: ['cat.semantics', 'best-practice'],\n      all: [],\n      any: [{\n        options: {\n          selector: 'footer:not([role]), [role=contentinfo]',\n          nativeScopeFilter: 'article, aside, main, nav, section'\n        },\n        id: 'page-no-duplicate-contentinfo'\n      }],\n      none: []\n    }, {\n      id: 'landmark-no-duplicate-main',\n      selector: 'main:not([role]), [role=main]',\n      tags: ['cat.semantics', 'best-practice'],\n      all: [],\n      any: [{\n        options: {\n          selector: 'main:not([role]), [role=\\'main\\']'\n        },\n        id: 'page-no-duplicate-main'\n      }],\n      none: []\n    }, {\n      id: 'landmark-one-main',\n      selector: 'html',\n      tags: ['cat.semantics', 'best-practice'],\n      all: [{\n        options: {\n          selector: 'main:not([role]), [role=\\'main\\']'\n        },\n        id: 'page-has-main'\n      }],\n      any: [],\n      none: []\n    }, {\n      id: 'landmark-unique',\n      selector: '[role=banner], [role=complementary], [role=contentinfo], [role=main], [role=navigation], [role=region], [role=search], [role=form], form, footer, header, aside, main, nav, section',\n      tags: ['cat.semantics', 'best-practice'],\n      matches: function matches(node, virtualNode, context) {\n        var excludedParentsForHeaderFooterLandmarks = ['article', 'aside', 'main', 'nav', 'section'].join(',');\n\n        function isHeaderFooterLandmark(headerFooterElement) {\n          return !axe.commons.dom.findUpVirtual(headerFooterElement, excludedParentsForHeaderFooterLandmarks);\n        }\n\n        function isLandmarkVirtual(virtualNode) {\n          var actualNode = virtualNode.actualNode;\n          var landmarkRoles = axe.commons.aria.getRolesByType('landmark');\n          var role = axe.commons.aria.getRole(actualNode);\n\n          if (!role) {\n            return false;\n          }\n\n          var nodeName = actualNode.nodeName.toUpperCase();\n\n          if (nodeName === 'HEADER' || nodeName === 'FOOTER') {\n            return isHeaderFooterLandmark(virtualNode);\n          }\n\n          if (nodeName === 'SECTION' || nodeName === 'FORM') {\n            var accessibleText = axe.commons.text.accessibleTextVirtual(virtualNode);\n            return !!accessibleText;\n          }\n\n          return landmarkRoles.indexOf(role) >= 0 || role === 'region';\n        }\n\n        return isLandmarkVirtual(virtualNode) && axe.commons.dom.isVisible(node, true);\n      },\n      all: [],\n      any: ['landmark-is-unique'],\n      none: []\n    }, {\n      id: 'layout-table',\n      selector: 'table',\n      matches: function matches(node, virtualNode, context) {\n        var role = (node.getAttribute('role') || '').toLowerCase();\n        return !((role === 'presentation' || role === 'none') && !axe.commons.dom.isFocusable(node)) && !axe.commons.table.isDataTable(node);\n      },\n      tags: ['cat.semantics', 'wcag2a', 'wcag131', 'deprecated'],\n      enabled: false,\n      all: [],\n      any: [],\n      none: ['has-th', 'has-caption', 'has-summary']\n    }, {\n      id: 'link-in-text-block',\n      selector: 'a[href], [role=link]',\n      matches: function matches(node, virtualNode, context) {\n        var text = axe.commons.text.sanitize(node.textContent);\n        var role = node.getAttribute('role');\n\n        if (role && role !== 'link') {\n          return false;\n        }\n\n        if (!text) {\n          return false;\n        }\n\n        if (!axe.commons.dom.isVisible(node, false)) {\n          return false;\n        }\n\n        return axe.commons.dom.isInTextBlock(node);\n      },\n      excludeHidden: false,\n      tags: ['cat.color', 'experimental', 'wcag2a', 'wcag141'],\n      all: ['link-in-text-block'],\n      any: [],\n      none: []\n    }, {\n      id: 'link-name',\n      selector: 'a[href]:not([role=button]), [role=link]',\n      tags: ['cat.name-role-value', 'wcag2a', 'wcag412', 'wcag244', 'section508', 'section508.22.a'],\n      all: [],\n      any: ['has-visible-text', 'aria-label', 'aria-labelledby', 'role-presentation', 'role-none'],\n      none: ['focusable-no-name']\n    }, {\n      id: 'list',\n      selector: 'ul, ol',\n      matches: function matches(node, virtualNode, context) {\n        return !node.getAttribute('role');\n      },\n      tags: ['cat.structure', 'wcag2a', 'wcag131'],\n      all: [],\n      any: [],\n      none: ['only-listitems']\n    }, {\n      id: 'listitem',\n      selector: 'li',\n      matches: function matches(node, virtualNode, context) {\n        return !node.getAttribute('role');\n      },\n      tags: ['cat.structure', 'wcag2a', 'wcag131'],\n      all: [],\n      any: ['listitem'],\n      none: []\n    }, {\n      id: 'marquee',\n      selector: 'marquee',\n      excludeHidden: false,\n      tags: ['cat.parsing', 'wcag2a', 'wcag222'],\n      all: [],\n      any: [],\n      none: ['is-on-screen']\n    }, {\n      id: 'meta-refresh',\n      selector: 'meta[http-equiv=\"refresh\"]',\n      excludeHidden: false,\n      tags: ['cat.time-and-media', 'wcag2a', 'wcag2aaa', 'wcag221', 'wcag224', 'wcag325'],\n      all: [],\n      any: ['meta-refresh'],\n      none: []\n    }, {\n      id: 'meta-viewport-large',\n      selector: 'meta[name=\"viewport\"]',\n      excludeHidden: false,\n      tags: ['cat.sensory-and-visual-cues', 'best-practice'],\n      all: [],\n      any: [{\n        options: {\n          scaleMinimum: 5,\n          lowerBound: 2\n        },\n        id: 'meta-viewport-large'\n      }],\n      none: []\n    }, {\n      id: 'meta-viewport',\n      selector: 'meta[name=\"viewport\"]',\n      excludeHidden: false,\n      tags: ['cat.sensory-and-visual-cues', 'best-practice'],\n      all: [],\n      any: [{\n        options: {\n          scaleMinimum: 2\n        },\n        id: 'meta-viewport'\n      }],\n      none: []\n    }, {\n      id: 'no-autoplay-audio',\n      excludeHidden: false,\n      selector: 'audio[autoplay], video[autoplay]',\n      matches: function matches(node, virtualNode, context) {\n        if (!node.currentSrc) {\n          return false;\n        }\n\n        if (node.hasAttribute('paused') || node.hasAttribute('muted')) {\n          return false;\n        }\n\n        return true;\n      },\n      tags: ['wcag2a', 'wcag142', 'experimental'],\n      preload: true,\n      all: [{\n        options: {\n          allowedDuration: 3\n        },\n        id: 'no-autoplay-audio'\n      }],\n      any: [],\n      none: []\n    }, {\n      id: 'object-alt',\n      selector: 'object',\n      tags: ['cat.text-alternatives', 'wcag2a', 'wcag111', 'section508', 'section508.22.a'],\n      all: [],\n      any: ['has-visible-text', 'aria-label', 'aria-labelledby', 'non-empty-title', 'role-presentation', 'role-none'],\n      none: []\n    }, {\n      id: 'p-as-heading',\n      selector: 'p',\n      matches: function matches(node, virtualNode, context) {\n        var children = Array.from(node.parentNode.childNodes);\n        var nodeText = node.textContent.trim();\n        var isSentence = /[.!?:;](?![.!?:;])/g;\n\n        if (nodeText.length === 0 || (nodeText.match(isSentence) || []).length >= 2) {\n          return false;\n        }\n\n        var siblingsAfter = children.slice(children.indexOf(node) + 1).filter(function (elm) {\n          return elm.nodeName.toUpperCase() === 'P' && elm.textContent.trim() !== '';\n        });\n        return siblingsAfter.length !== 0;\n      },\n      tags: ['cat.semantics', 'wcag2a', 'wcag131', 'experimental'],\n      all: [{\n        options: {\n          margins: [{\n            weight: 150,\n            italic: true\n          }, {\n            weight: 150,\n            size: 1.15\n          }, {\n            italic: true,\n            size: 1.15\n          }, {\n            size: 1.4\n          }]\n        },\n        id: 'p-as-heading'\n      }],\n      any: [],\n      none: []\n    }, {\n      id: 'page-has-heading-one',\n      selector: 'html',\n      tags: ['cat.semantics', 'best-practice'],\n      all: [{\n        options: {\n          selector: 'h1:not([role]), [role=\"heading\"][aria-level=\"1\"]'\n        },\n        id: 'page-has-heading-one'\n      }],\n      any: [],\n      none: []\n    }, {\n      id: 'radiogroup',\n      selector: 'input[type=radio][name]',\n      tags: ['cat.forms', 'best-practice', 'deprecated'],\n      enabled: false,\n      all: [],\n      any: ['group-labelledby', 'fieldset'],\n      none: []\n    }, {\n      id: 'region',\n      selector: 'body *',\n      tags: ['cat.keyboard', 'best-practice'],\n      all: [],\n      any: ['region'],\n      none: []\n    }, {\n      id: 'role-img-alt',\n      selector: '[role=\\'img\\']:not(img):not(area):not(input):not(object)',\n      matches: function matches(node, virtualNode, context) {\n        return node.namespaceURI === 'http://www.w3.org/1999/xhtml';\n      },\n      tags: ['cat.text-alternatives', 'wcag2a', 'wcag111', 'section508', 'section508.22.a'],\n      all: [],\n      any: ['aria-label', 'aria-labelledby', 'non-empty-title'],\n      none: []\n    }, {\n      id: 'scope-attr-valid',\n      selector: 'td[scope], th[scope]',\n      tags: ['cat.tables', 'best-practice'],\n      all: ['html5-scope', 'scope-value'],\n      any: [],\n      none: []\n    }, {\n      id: 'scrollable-region-focusable',\n      matches: function matches(node, virtualNode, context) {\n        var querySelectorAll = axe.utils.querySelectorAll;\n        var hasContentVirtual = axe.commons.dom.hasContentVirtual;\n\n        if (!!axe.utils.getScroll(node, 13) === false) {\n          return false;\n        }\n\n        var nodeAndDescendents = querySelectorAll(virtualNode, '*');\n        var hasVisibleChildren = nodeAndDescendents.some(function (elm) {\n          return hasContentVirtual(elm, true, true);\n        });\n\n        if (!hasVisibleChildren) {\n          return false;\n        }\n\n        return true;\n      },\n      tags: ['wcag2a', 'wcag211'],\n      all: [],\n      any: ['focusable-content', 'focusable-element'],\n      none: []\n    }, {\n      id: 'server-side-image-map',\n      selector: 'img[ismap]',\n      tags: ['cat.text-alternatives', 'wcag2a', 'wcag211', 'section508', 'section508.22.f'],\n      all: [],\n      any: [],\n      none: ['exists']\n    }, {\n      id: 'skip-link',\n      selector: 'a[href^=\"#\"], a[href^=\"/#\"]',\n      matches: function matches(node, virtualNode, context) {\n        return axe.commons.dom.isSkipLink(node) && axe.commons.dom.isOffscreen(node);\n      },\n      tags: ['cat.keyboard', 'best-practice'],\n      all: [],\n      any: ['skip-link'],\n      none: []\n    }, {\n      id: 'svg-img-alt',\n      selector: '[role=\"img\"], [role=\"graphics-symbol\"], svg[role=\"graphics-document\"]',\n      matches: function matches(node, virtualNode, context) {\n        return node.namespaceURI === 'http://www.w3.org/2000/svg';\n      },\n      tags: ['cat.text-alternatives', 'wcag2a', 'wcag111', 'section508', 'section508.22.a'],\n      all: [],\n      any: ['svg-non-empty-title', 'aria-label', 'aria-labelledby', 'non-empty-title'],\n      none: []\n    }, {\n      id: 'tabindex',\n      selector: '[tabindex]',\n      tags: ['cat.keyboard', 'best-practice'],\n      all: [],\n      any: ['tabindex'],\n      none: []\n    }, {\n      id: 'table-duplicate-name',\n      selector: 'table',\n      tags: ['cat.tables', 'best-practice'],\n      all: [],\n      any: [],\n      none: ['same-caption-summary']\n    }, {\n      id: 'table-fake-caption',\n      selector: 'table',\n      matches: function matches(node, virtualNode, context) {\n        return axe.commons.table.isDataTable(node);\n      },\n      tags: ['cat.tables', 'experimental', 'wcag2a', 'wcag131', 'section508', 'section508.22.g'],\n      all: ['caption-faked'],\n      any: [],\n      none: []\n    }, {\n      id: 'td-has-header',\n      selector: 'table',\n      matches: function matches(node, virtualNode, context) {\n        if (axe.commons.table.isDataTable(node)) {\n          var tableArray = axe.commons.table.toArray(node);\n          return tableArray.length >= 3 && tableArray[0].length >= 3 && tableArray[1].length >= 3 && tableArray[2].length >= 3;\n        }\n\n        return false;\n      },\n      tags: ['cat.tables', 'experimental', 'wcag2a', 'wcag131', 'section508', 'section508.22.g'],\n      all: ['td-has-header'],\n      any: [],\n      none: []\n    }, {\n      id: 'td-headers-attr',\n      selector: 'table',\n      tags: ['cat.tables', 'wcag2a', 'wcag131', 'section508', 'section508.22.g'],\n      all: ['td-headers-attr'],\n      any: [],\n      none: []\n    }, {\n      id: 'th-has-data-cells',\n      selector: 'table',\n      matches: function matches(node, virtualNode, context) {\n        return axe.commons.table.isDataTable(node);\n      },\n      tags: ['cat.tables', 'wcag2a', 'wcag131', 'section508', 'section508.22.g'],\n      all: ['th-has-data-cells'],\n      any: [],\n      none: []\n    }, {\n      id: 'valid-lang',\n      selector: '[lang], [xml\\\\:lang]',\n      matches: function matches(node, virtualNode, context) {\n        return node.nodeName.toLowerCase() !== 'html';\n      },\n      tags: ['cat.language', 'wcag2aa', 'wcag312'],\n      all: [],\n      any: [],\n      none: ['valid-lang']\n    }, {\n      id: 'video-caption',\n      selector: 'video',\n      excludeHidden: false,\n      tags: ['cat.text-alternatives', 'wcag2a', 'wcag122', 'section508', 'section508.22.a'],\n      all: [],\n      any: [],\n      none: ['caption']\n    }, {\n      id: 'video-description',\n      selector: 'video',\n      excludeHidden: false,\n      tags: ['cat.text-alternatives', 'wcag2aa', 'wcag125', 'section508', 'section508.22.b', 'deprecated'],\n      enabled: false,\n      all: [],\n      any: [],\n      none: ['description']\n    }],\n    checks: [{\n      id: 'abstractrole',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var abstractRoles = axe.utils.tokenList(virtualNode.attr('role')).filter(function (role) {\n          return axe.commons.aria.getRoleType(role) === 'abstract';\n        });\n\n        if (abstractRoles.length > 0) {\n          this.data(abstractRoles);\n          return true;\n        }\n\n        return false;\n      }\n    }, {\n      id: 'aria-allowed-attr',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        options = options || {};\n        var invalid = [];\n        var attr,\n            attrName,\n            allowed,\n            role = node.getAttribute('role'),\n            attrs = axe.utils.getNodeAttributes(node);\n\n        if (!role) {\n          role = axe.commons.aria.implicitRole(node);\n        }\n\n        allowed = axe.commons.aria.allowedAttr(role);\n\n        if (Array.isArray(options[role])) {\n          allowed = axe.utils.uniqueArray(options[role].concat(allowed));\n        }\n\n        if (role && allowed) {\n          for (var i = 0, l = attrs.length; i < l; i++) {\n            attr = attrs[i];\n            attrName = attr.name;\n\n            if (axe.commons.aria.validateAttr(attrName) && !allowed.includes(attrName)) {\n              invalid.push(attrName + '=\"' + attr.nodeValue + '\"');\n            }\n          }\n        }\n\n        if (invalid.length) {\n          this.data(invalid);\n          return false;\n        }\n\n        return true;\n      }\n    }, {\n      id: 'aria-allowed-role',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var dom = axe.commons.dom;\n\n        var _ref = options || {},\n            _ref$allowImplicit = _ref.allowImplicit,\n            allowImplicit = _ref$allowImplicit === void 0 ? true : _ref$allowImplicit,\n            _ref$ignoredTags = _ref.ignoredTags,\n            ignoredTags = _ref$ignoredTags === void 0 ? [] : _ref$ignoredTags;\n\n        var tagName = node.nodeName.toUpperCase();\n\n        if (ignoredTags.map(function (t) {\n          return t.toUpperCase();\n        }).includes(tagName)) {\n          return true;\n        }\n\n        var unallowedRoles = axe.commons.aria.getElementUnallowedRoles(node, allowImplicit);\n\n        if (unallowedRoles.length) {\n          this.data(unallowedRoles);\n\n          if (!dom.isVisible(node, true)) {\n            return undefined;\n          }\n\n          return false;\n        }\n\n        return true;\n      },\n      options: {\n        allowImplicit: true,\n        ignoredTags: []\n      }\n    }, {\n      id: 'aria-hidden-body',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        return node.getAttribute('aria-hidden') !== 'true';\n      }\n    }, {\n      id: 'aria-roledescription',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        options = options || {};\n        var role = axe.commons.aria.getRole(node);\n        var supportedRoles = options.supportedRoles || [];\n\n        if (supportedRoles.includes(role)) {\n          return true;\n        }\n\n        if (role && role !== 'presentation' && role !== 'none') {\n          return undefined;\n        }\n\n        return false;\n      },\n      options: {\n        supportedRoles: ['button', 'img', 'checkbox', 'radio', 'combobox', 'menuitemcheckbox', 'menuitemradio']\n      }\n    }, {\n      id: 'aria-errormessage',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var _axe$commons6 = axe.commons,\n            aria = _axe$commons6.aria,\n            dom = _axe$commons6.dom;\n        options = Array.isArray(options) ? options : [];\n        var attr = node.getAttribute('aria-errormessage');\n        var hasAttr = node.hasAttribute('aria-errormessage');\n        var doc = dom.getRootNode(node);\n\n        function validateAttrValue(attr) {\n          if (attr.trim() === '') {\n            return aria.lookupTable.attributes['aria-errormessage'].allowEmpty;\n          }\n\n          var idref = attr && doc.getElementById(attr);\n\n          if (idref) {\n            return idref.getAttribute('role') === 'alert' || idref.getAttribute('aria-live') === 'assertive' || axe.utils.tokenList(node.getAttribute('aria-describedby') || '').indexOf(attr) > -1;\n          }\n        }\n\n        if (options.indexOf(attr) === -1 && hasAttr) {\n          if (!validateAttrValue(attr)) {\n            this.data(axe.utils.tokenList(attr));\n            return false;\n          }\n        }\n\n        return true;\n      }\n    }, {\n      id: 'fallbackrole',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        return axe.utils.tokenList(virtualNode.attr('role')).length > 1;\n      }\n    }, {\n      id: 'has-widget-role',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var role = node.getAttribute('role');\n\n        if (role === null) {\n          return false;\n        }\n\n        var roleType = axe.commons.aria.getRoleType(role);\n        return roleType === 'widget' || roleType === 'composite';\n      },\n      options: []\n    }, {\n      id: 'implicit-role-fallback',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var role = node.getAttribute('role');\n\n        if (role === null || !axe.commons.aria.isValidRole(role)) {\n          return true;\n        }\n\n        var roleType = axe.commons.aria.getRoleType(role);\n        return axe.commons.aria.implicitRole(node) === roleType;\n      },\n      deprecated: true\n    }, {\n      id: 'invalidrole',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var tokenList = axe.utils.tokenList;\n        var aria = axe.commons.aria;\n        var allRoles = tokenList(virtualNode.attr('role'));\n        var allInvalid = allRoles.every(function (role) {\n          return !aria.isValidRole(role, {\n            allowAbstract: true\n          });\n        });\n\n        if (allInvalid) {\n          this.data(allRoles);\n          return true;\n        }\n\n        return false;\n      }\n    }, {\n      id: 'no-implicit-explicit-label',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var _axe$commons7 = axe.commons,\n            aria = _axe$commons7.aria,\n            text = _axe$commons7.text;\n        var role = aria.getRole(node, {\n          noImplicit: true\n        });\n        this.data(role);\n        var labelText = text.sanitize(text.labelText(virtualNode)).toLowerCase();\n        var accText = text.sanitize(text.accessibleText(node)).toLowerCase();\n\n        if (!accText && !labelText) {\n          return false;\n        }\n\n        if (!accText && labelText) {\n          return undefined;\n        }\n\n        if (!accText.includes(labelText)) {\n          return undefined;\n        }\n\n        return false;\n      }\n    }, {\n      id: 'aria-required-attr',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        options = options || {};\n        var missing = [];\n        var _axe$commons$forms = axe.commons.forms,\n            isNativeTextbox = _axe$commons$forms.isNativeTextbox,\n            isNativeSelect = _axe$commons$forms.isNativeSelect,\n            isAriaTextbox = _axe$commons$forms.isAriaTextbox,\n            isAriaListbox = _axe$commons$forms.isAriaListbox,\n            isAriaCombobox = _axe$commons$forms.isAriaCombobox,\n            isAriaRange = _axe$commons$forms.isAriaRange;\n        var preChecks = {\n          'aria-valuenow': function ariaValuenow() {\n            return !(isNativeTextbox(node) || isNativeSelect(node) || isAriaTextbox(node) || isAriaListbox(node) || isAriaCombobox(node) || isAriaRange(node) && node.hasAttribute('aria-valuenow'));\n          }\n        };\n\n        if (node.hasAttributes()) {\n          var role = node.getAttribute('role');\n          var required = axe.commons.aria.requiredAttr(role);\n\n          if (Array.isArray(options[role])) {\n            required = axe.utils.uniqueArray(options[role], required);\n          }\n\n          if (role && required) {\n            for (var i = 0, l = required.length; i < l; i++) {\n              var attr = required[i];\n\n              if (!node.getAttribute(attr) && (preChecks[attr] ? preChecks[attr]() : true)) {\n                missing.push(attr);\n              }\n            }\n          }\n        }\n\n        if (missing.length) {\n          this.data(missing);\n          return false;\n        }\n\n        return true;\n      }\n    }, {\n      id: 'aria-required-children',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var requiredOwned = axe.commons.aria.requiredOwned;\n        var implicitNodes = axe.commons.aria.implicitNodes;\n        var matchesSelector = axe.utils.matchesSelector;\n        var idrefs = axe.commons.dom.idrefs;\n        var hasContentVirtual = axe.commons.dom.hasContentVirtual;\n        var reviewEmpty = options && Array.isArray(options.reviewEmpty) ? options.reviewEmpty : [];\n\n        function owns(node, virtualTree, role, ariaOwned) {\n          if (node === null) {\n            return false;\n          }\n\n          var implicit = implicitNodes(role);\n          var selector = ['[role=\"' + role + '\"]'];\n\n          if (implicit) {\n            selector = selector.concat(implicit.map(function (implicitSelector) {\n              return implicitSelector + ':not([role])';\n            }));\n          }\n\n          selector = selector.join(',');\n          return ariaOwned ? matchesSelector(node, selector) || !!axe.utils.querySelectorAll(virtualTree, selector)[0] : !!axe.utils.querySelectorAll(virtualTree, selector)[0];\n        }\n\n        function ariaOwns(nodes, role) {\n          for (var index = 0; index < nodes.length; index++) {\n            var _node = nodes[index];\n\n            if (_node === null) {\n              continue;\n            }\n\n            var virtualTree = axe.utils.getNodeFromTree(_node);\n\n            if (owns(_node, virtualTree, role, true)) {\n              return true;\n            }\n          }\n\n          return false;\n        }\n\n        function missingRequiredChildren(node, childRoles, all, role) {\n          var missing = [],\n              ownedElements = idrefs(node, 'aria-owns');\n\n          for (var index = 0; index < childRoles.length; index++) {\n            var childRole = childRoles[index];\n\n            if (owns(node, virtualNode, childRole) || ariaOwns(ownedElements, childRole)) {\n              if (!all) {\n                return null;\n              }\n            } else {\n              if (all) {\n                missing.push(childRole);\n              }\n            }\n          }\n\n          if (role === 'combobox') {\n            var textboxIndex = missing.indexOf('textbox');\n            var textTypeInputs = ['text', 'search', 'email', 'url', 'tel'];\n\n            if (textboxIndex >= 0 && node.nodeName.toUpperCase() === 'INPUT' && textTypeInputs.includes(node.type) || owns(node, virtualNode, 'searchbox') || ariaOwns(ownedElements, 'searchbox')) {\n              missing.splice(textboxIndex, 1);\n            }\n\n            var expandedChildRoles = ['listbox', 'tree', 'grid', 'dialog'];\n            var expandedValue = node.getAttribute('aria-expanded');\n            var expanded = expandedValue && expandedValue !== 'false';\n            var popupRole = (node.getAttribute('aria-haspopup') || 'listbox').toLowerCase();\n\n            for (var _index = 0; _index < expandedChildRoles.length; _index++) {\n              var expandedChildRole = expandedChildRoles[_index];\n\n              if (expanded && expandedChildRole === popupRole) {\n                continue;\n              }\n\n              var missingIndex = missing.indexOf(expandedChildRole);\n\n              if (missingIndex >= 0) {\n                missing.splice(missingIndex, 1);\n              }\n            }\n          }\n\n          if (missing.length) {\n            return missing;\n          }\n\n          if (!all && childRoles.length) {\n            return childRoles;\n          }\n\n          return null;\n        }\n\n        function hasDecendantWithRole(node) {\n          return node.children && node.children.some(function (child) {\n            var role = axe.commons.aria.getRole(child);\n            return !['presentation', 'none', null].includes(role) || hasDecendantWithRole(child);\n          });\n        }\n\n        var role = node.getAttribute('role');\n        var required = requiredOwned(role);\n\n        if (!required) {\n          return true;\n        }\n\n        var all = false;\n        var childRoles = required.one;\n\n        if (!childRoles) {\n          all = true;\n          childRoles = required.all;\n        }\n\n        var missing = missingRequiredChildren(node, childRoles, all, role);\n\n        if (!missing) {\n          return true;\n        }\n\n        this.data(missing);\n\n        if (reviewEmpty.includes(role) && !hasContentVirtual(virtualNode, false, true) && !hasDecendantWithRole(virtualNode) && idrefs(node, 'aria-owns').length === 0) {\n          return undefined;\n        } else {\n          return false;\n        }\n      },\n      options: {\n        reviewEmpty: ['doc-bibliography', 'doc-endnotes', 'grid', 'list', 'listbox', 'table', 'tablist', 'tree', 'treegrid', 'rowgroup']\n      }\n    }, {\n      id: 'aria-required-parent',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        function getSelector(role) {\n          var impliedNative = axe.commons.aria.implicitNodes(role) || [];\n          return impliedNative.concat('[role=\"' + role + '\"]').join(',');\n        }\n\n        function getMissingContext(virtualNode, requiredContext, includeElement) {\n          var index,\n              length,\n              role = virtualNode.actualNode.getAttribute('role'),\n              missing = [];\n\n          if (!requiredContext) {\n            requiredContext = axe.commons.aria.requiredContext(role);\n          }\n\n          if (!requiredContext) {\n            return null;\n          }\n\n          for (index = 0, length = requiredContext.length; index < length; index++) {\n            if (includeElement && axe.utils.matchesSelector(virtualNode.actualNode, getSelector(requiredContext[index]))) {\n              return null;\n            }\n\n            if (axe.commons.dom.findUpVirtual(virtualNode, getSelector(requiredContext[index]))) {\n              return null;\n            } else {\n              missing.push(requiredContext[index]);\n            }\n          }\n\n          return missing;\n        }\n\n        function getAriaOwners(element) {\n          var owners = [],\n              o = null;\n\n          while (element) {\n            if (element.getAttribute('id')) {\n              var id = axe.utils.escapeSelector(element.getAttribute('id'));\n              var doc = axe.commons.dom.getRootNode(element);\n              o = doc.querySelector('[aria-owns~='.concat(id, ']'));\n\n              if (o) {\n                owners.push(o);\n              }\n            }\n\n            element = element.parentElement;\n          }\n\n          return owners.length ? owners : null;\n        }\n\n        var missingParents = getMissingContext(virtualNode);\n\n        if (!missingParents) {\n          return true;\n        }\n\n        var owners = getAriaOwners(node);\n\n        if (owners) {\n          for (var i = 0, l = owners.length; i < l; i++) {\n            missingParents = getMissingContext(axe.utils.getNodeFromTree(owners[i]), missingParents, true);\n\n            if (!missingParents) {\n              return true;\n            }\n          }\n        }\n\n        this.data(missingParents);\n        return false;\n      }\n    }, {\n      id: 'aria-unsupported-attr',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var nodeName = node.nodeName.toUpperCase();\n        var lookupTable = axe.commons.aria.lookupTable;\n        var role = axe.commons.aria.getRole(node);\n        var unsupportedAttrs = Array.from(axe.utils.getNodeAttributes(node)).filter(function (_ref2) {\n          var name = _ref2.name;\n          var attribute = lookupTable.attributes[name];\n\n          if (!axe.commons.aria.validateAttr(name)) {\n            return false;\n          }\n\n          var unsupported = attribute.unsupported;\n\n          if (_typeof(unsupported) !== 'object') {\n            return !!unsupported;\n          }\n\n          var isException = axe.commons.matches(node, unsupported.exceptions);\n\n          if (!Object.keys(lookupTable.evaluateRoleForElement).includes(nodeName)) {\n            return !isException;\n          }\n\n          return !lookupTable.evaluateRoleForElement[nodeName]({\n            node: node,\n            role: role,\n            out: isException\n          });\n        }).map(function (candidate) {\n          return candidate.name.toString();\n        });\n\n        if (unsupportedAttrs.length) {\n          this.data(unsupportedAttrs);\n          return true;\n        }\n\n        return false;\n      }\n    }, {\n      id: 'unsupportedrole',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        return axe.commons.aria.isUnsupportedRole(axe.commons.aria.getRole(node));\n      }\n    }, {\n      id: 'aria-valid-attr-value',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        options = Array.isArray(options) ? options : [];\n        var needsReview = '';\n        var messageKey = '';\n        var invalid = [];\n        var aria = /^aria-/;\n        var attrs = axe.utils.getNodeAttributes(node);\n        var skipAttrs = ['aria-errormessage'];\n        var preChecks = {\n          'aria-controls': function ariaControls() {\n            return node.getAttribute('aria-expanded') !== 'false' && node.getAttribute('aria-selected') !== 'false';\n          },\n          'aria-current': function ariaCurrent() {\n            if (!axe.commons.aria.validateAttrValue(node, 'aria-current')) {\n              needsReview = 'aria-current=\"'.concat(node.getAttribute('aria-current'), '\"');\n              messageKey = 'ariaCurrent';\n            }\n\n            return;\n          },\n          'aria-owns': function ariaOwns() {\n            return node.getAttribute('aria-expanded') !== 'false';\n          },\n          'aria-describedby': function ariaDescribedby() {\n            if (!axe.commons.aria.validateAttrValue(node, 'aria-describedby')) {\n              needsReview = 'aria-describedby=\"'.concat(node.getAttribute('aria-describedby'), '\"');\n              messageKey = 'noId';\n            }\n\n            return;\n          }\n        };\n\n        for (var i = 0, l = attrs.length; i < l; i++) {\n          var attr = attrs[i];\n          var attrName = attr.name;\n\n          if (!skipAttrs.includes(attrName) && options.indexOf(attrName) === -1 && aria.test(attrName) && (preChecks[attrName] ? preChecks[attrName]() : true) && !axe.commons.aria.validateAttrValue(node, attrName)) {\n            invalid.push(''.concat(attrName, '=\"').concat(attr.nodeValue, '\"'));\n          }\n        }\n\n        if (needsReview) {\n          this.data({\n            messageKey: messageKey,\n            needsReview: needsReview\n          });\n          return undefined;\n        }\n\n        if (invalid.length) {\n          this.data(invalid);\n          return false;\n        }\n\n        return true;\n      },\n      options: []\n    }, {\n      id: 'aria-valid-attr',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        options = Array.isArray(options) ? options : [];\n        var invalid = [],\n            aria = /^aria-/;\n        var attr,\n            attrs = axe.utils.getNodeAttributes(node);\n\n        for (var i = 0, l = attrs.length; i < l; i++) {\n          attr = attrs[i].name;\n\n          if (options.indexOf(attr) === -1 && aria.test(attr) && !axe.commons.aria.validateAttr(attr)) {\n            invalid.push(attr);\n          }\n        }\n\n        if (invalid.length) {\n          this.data(invalid);\n          return false;\n        }\n\n        return true;\n      },\n      options: []\n    }, {\n      id: 'valid-scrollable-semantics',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var VALID_TAG_NAMES_FOR_SCROLLABLE_REGIONS = {\n          ARTICLE: true,\n          ASIDE: true,\n          NAV: true,\n          SECTION: true\n        };\n        var VALID_ROLES_FOR_SCROLLABLE_REGIONS = {\n          application: true,\n          banner: false,\n          complementary: true,\n          contentinfo: true,\n          form: true,\n          main: true,\n          navigation: true,\n          region: true,\n          search: false\n        };\n\n        function validScrollableTagName(node) {\n          var nodeName = node.nodeName.toUpperCase();\n          return VALID_TAG_NAMES_FOR_SCROLLABLE_REGIONS[nodeName] || false;\n        }\n\n        function validScrollableRole(node) {\n          var role = node.getAttribute('role');\n\n          if (!role) {\n            return false;\n          }\n\n          return VALID_ROLES_FOR_SCROLLABLE_REGIONS[role.toLowerCase()] || false;\n        }\n\n        function validScrollableSemantics(node) {\n          return validScrollableRole(node) || validScrollableTagName(node);\n        }\n\n        return validScrollableSemantics(node);\n      },\n      options: []\n    }, {\n      id: 'color-contrast',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var _axe$commons8 = axe.commons,\n            dom = _axe$commons8.dom,\n            color = _axe$commons8.color,\n            text = _axe$commons8.text;\n\n        if (!dom.isVisible(node, false)) {\n          return true;\n        }\n\n        var visibleText = text.visibleVirtual(virtualNode, false, true);\n        var ignoreUnicode = !!(options || {}).ignoreUnicode;\n        var textContainsOnlyUnicode = text.hasUnicode(visibleText, {\n          nonBmp: true\n        }) && text.sanitize(text.removeUnicode(visibleText, {\n          nonBmp: true\n        })) === '';\n\n        if (textContainsOnlyUnicode && ignoreUnicode) {\n          this.data({\n            messageKey: 'nonBmp'\n          });\n          return undefined;\n        }\n\n        var noScroll = !!(options || {}).noScroll;\n        var bgNodes = [];\n        var bgColor = color.getBackgroundColor(node, bgNodes, noScroll);\n        var fgColor = color.getForegroundColor(node, noScroll, bgColor);\n        var nodeStyle = window.getComputedStyle(node);\n        var fontSize = parseFloat(nodeStyle.getPropertyValue('font-size'));\n        var fontWeight = nodeStyle.getPropertyValue('font-weight');\n        var bold = parseFloat(fontWeight) >= 700 || fontWeight === 'bold';\n        var cr = color.hasValidContrastRatio(bgColor, fgColor, fontSize, bold);\n        var truncatedResult = Math.floor(cr.contrastRatio * 100) / 100;\n        var missing;\n\n        if (bgColor === null) {\n          missing = color.incompleteData.get('bgColor');\n        }\n\n        var equalRatio = truncatedResult === 1;\n        var shortTextContent = visibleText.length === 1;\n        var ignoreLength = !!(options || {}).ignoreLength;\n\n        if (equalRatio) {\n          missing = color.incompleteData.set('bgColor', 'equalRatio');\n        } else if (shortTextContent && !ignoreLength) {\n          missing = 'shortTextContent';\n        }\n\n        var data = {\n          fgColor: fgColor ? fgColor.toHexString() : undefined,\n          bgColor: bgColor ? bgColor.toHexString() : undefined,\n          contrastRatio: cr ? truncatedResult : undefined,\n          fontSize: ''.concat((fontSize * 72 / 96).toFixed(1), 'pt (').concat(fontSize, 'px)'),\n          fontWeight: bold ? 'bold' : 'normal',\n          messageKey: missing,\n          expectedContrastRatio: cr.expectedContrastRatio + ':1'\n        };\n        this.data(data);\n\n        if (fgColor === null || bgColor === null || equalRatio || shortTextContent && !ignoreLength && !cr.isValid) {\n          missing = null;\n          color.incompleteData.clear();\n          this.relatedNodes(bgNodes);\n          return undefined;\n        }\n\n        if (!cr.isValid) {\n          this.relatedNodes(bgNodes);\n        }\n\n        return cr.isValid;\n      },\n      options: {\n        noScroll: false,\n        ignoreUnicode: true,\n        ignoreLength: false\n      }\n    }, {\n      id: 'link-in-text-block',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var _axe$commons9 = axe.commons,\n            color = _axe$commons9.color,\n            dom = _axe$commons9.dom;\n\n        function getContrast(color1, color2) {\n          var c1lum = color1.getRelativeLuminance();\n          var c2lum = color2.getRelativeLuminance();\n          return (Math.max(c1lum, c2lum) + .05) / (Math.min(c1lum, c2lum) + .05);\n        }\n\n        var blockLike = ['block', 'list-item', 'table', 'flex', 'grid', 'inline-block'];\n\n        function isBlock(elm) {\n          var display = window.getComputedStyle(elm).getPropertyValue('display');\n          return blockLike.indexOf(display) !== -1 || display.substr(0, 6) === 'table-';\n        }\n\n        if (isBlock(node)) {\n          return false;\n        }\n\n        var parentBlock = dom.getComposedParent(node);\n\n        while (parentBlock.nodeType === 1 && !isBlock(parentBlock)) {\n          parentBlock = dom.getComposedParent(parentBlock);\n        }\n\n        this.relatedNodes([parentBlock]);\n\n        if (color.elementIsDistinct(node, parentBlock)) {\n          return true;\n        } else {\n          var nodeColor, parentColor;\n          nodeColor = color.getForegroundColor(node);\n          parentColor = color.getForegroundColor(parentBlock);\n\n          if (!nodeColor || !parentColor) {\n            return undefined;\n          }\n\n          var contrast = getContrast(nodeColor, parentColor);\n\n          if (contrast === 1) {\n            return true;\n          } else if (contrast >= 3) {\n            axe.commons.color.incompleteData.set('fgColor', 'bgContrast');\n            this.data({\n              messageKey: axe.commons.color.incompleteData.get('fgColor')\n            });\n            axe.commons.color.incompleteData.clear();\n            return undefined;\n          }\n\n          nodeColor = color.getBackgroundColor(node);\n          parentColor = color.getBackgroundColor(parentBlock);\n\n          if (!nodeColor || !parentColor || getContrast(nodeColor, parentColor) >= 3) {\n            var reason;\n\n            if (!nodeColor || !parentColor) {\n              reason = axe.commons.color.incompleteData.get('bgColor');\n            } else {\n              reason = 'bgContrast';\n            }\n\n            axe.commons.color.incompleteData.set('fgColor', reason);\n            this.data({\n              messageKey: axe.commons.color.incompleteData.get('fgColor')\n            });\n            axe.commons.color.incompleteData.clear();\n            return undefined;\n          }\n        }\n\n        return false;\n      }\n    }, {\n      id: 'autocomplete-appropriate',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        if (virtualNode.props.nodeName !== 'input') {\n          return true;\n        }\n\n        var number = ['text', 'search', 'number'];\n        var url = ['text', 'search', 'url'];\n        var allowedTypesMap = {\n          bday: ['text', 'search', 'date'],\n          email: ['text', 'search', 'email'],\n          'cc-exp': ['text', 'search', 'month'],\n          'street-address': ['text'],\n          tel: ['text', 'search', 'tel'],\n          'cc-exp-month': number,\n          'cc-exp-year': number,\n          'transaction-amount': number,\n          'bday-day': number,\n          'bday-month': number,\n          'bday-year': number,\n          'new-password': ['text', 'search', 'password'],\n          'current-password': ['text', 'search', 'password'],\n          url: url,\n          photo: url,\n          impp: url\n        };\n\n        if (_typeof(options) === 'object') {\n          Object.keys(options).forEach(function (key) {\n            if (!allowedTypesMap[key]) {\n              allowedTypesMap[key] = [];\n            }\n\n            allowedTypesMap[key] = allowedTypesMap[key].concat(options[key]);\n          });\n        }\n\n        var autocomplete = virtualNode.attr('autocomplete');\n        var autocompleteTerms = autocomplete.split(/\\s+/g).map(function (term) {\n          return term.toLowerCase();\n        });\n        var purposeTerm = autocompleteTerms[autocompleteTerms.length - 1];\n\n        if (axe.commons.text.autocomplete.stateTerms.includes(purposeTerm)) {\n          return true;\n        }\n\n        var allowedTypes = allowedTypesMap[purposeTerm];\n        var type = virtualNode.hasAttr('type') ? axe.commons.text.sanitize(virtualNode.attr('type')).toLowerCase() : 'text';\n        type = axe.utils.validInputTypes().includes(type) ? type : 'text';\n\n        if (typeof allowedTypes === 'undefined') {\n          return type === 'text';\n        }\n\n        return allowedTypes.includes(type);\n      }\n    }, {\n      id: 'autocomplete-valid',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var autocomplete = virtualNode.attr('autocomplete') || '';\n        return axe.commons.text.isValidAutocomplete(autocomplete, options);\n      }\n    }, {\n      id: 'fieldset',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var failureCode,\n            self = this;\n\n        function getUnrelatedElements(parent, name) {\n          return axe.utils.toArray(parent.querySelectorAll('select,textarea,button,input:not([name=\"' + name + '\"]):not([type=\"hidden\"])'));\n        }\n\n        function checkFieldset(group, name) {\n          var firstNode = group.firstElementChild;\n\n          if (!firstNode || firstNode.nodeName.toUpperCase() !== 'LEGEND') {\n            self.relatedNodes([group]);\n            failureCode = 'no-legend';\n            return false;\n          }\n\n          if (!axe.commons.text.accessibleText(firstNode)) {\n            self.relatedNodes([firstNode]);\n            failureCode = 'empty-legend';\n            return false;\n          }\n\n          var otherElements = getUnrelatedElements(group, name);\n\n          if (otherElements.length) {\n            self.relatedNodes(otherElements);\n            failureCode = 'mixed-inputs';\n            return false;\n          }\n\n          return true;\n        }\n\n        function checkARIAGroup(group, name) {\n          var hasLabelledByText = axe.commons.dom.idrefs(group, 'aria-labelledby').some(function (element) {\n            return element && axe.commons.text.accessibleText(element);\n          });\n          var ariaLabel = group.getAttribute('aria-label');\n\n          if (!hasLabelledByText && !(ariaLabel && axe.commons.text.sanitize(ariaLabel))) {\n            self.relatedNodes(group);\n            failureCode = 'no-group-label';\n            return false;\n          }\n\n          var otherElements = getUnrelatedElements(group, name);\n\n          if (otherElements.length) {\n            self.relatedNodes(otherElements);\n            failureCode = 'group-mixed-inputs';\n            return false;\n          }\n\n          return true;\n        }\n\n        function spliceCurrentNode(nodes, current) {\n          return axe.utils.toArray(nodes).filter(function (candidate) {\n            return candidate !== current;\n          });\n        }\n\n        function runCheck(virtualNode) {\n          var name = axe.utils.escapeSelector(virtualNode.actualNode.name);\n          var root = axe.commons.dom.getRootNode(virtualNode.actualNode);\n          var matchingNodes = root.querySelectorAll('input[type=\"' + axe.utils.escapeSelector(virtualNode.actualNode.type) + '\"][name=\"' + name + '\"]');\n\n          if (matchingNodes.length < 2) {\n            return true;\n          }\n\n          var fieldset = axe.commons.dom.findUpVirtual(virtualNode, 'fieldset');\n          var group = axe.commons.dom.findUpVirtual(virtualNode, '[role=\"group\"]' + (virtualNode.actualNode.type === 'radio' ? ',[role=\"radiogroup\"]' : ''));\n\n          if (!group && !fieldset) {\n            failureCode = 'no-group';\n            self.relatedNodes(spliceCurrentNode(matchingNodes, virtualNode.actualNode));\n            return false;\n          } else if (fieldset) {\n            return checkFieldset(fieldset, name);\n          } else {\n            return checkARIAGroup(group, name);\n          }\n        }\n\n        var data = {\n          name: node.getAttribute('name'),\n          type: node.getAttribute('type')\n        };\n        var result = runCheck(virtualNode);\n\n        if (!result) {\n          data.messageKey = failureCode;\n        }\n\n        this.data(data);\n        return result;\n      },\n      after: function after(results, options) {\n        var seen = {};\n        return results.filter(function (result) {\n          if (result.result) {\n            return true;\n          }\n\n          var data = result.data;\n\n          if (data) {\n            seen[data.type] = seen[data.type] || {};\n\n            if (!seen[data.type][data.name]) {\n              seen[data.type][data.name] = [data];\n              return true;\n            }\n\n            var hasBeenSeen = seen[data.type][data.name].some(function (candidate) {\n              return candidate.failureCode === data.failureCode;\n            });\n\n            if (!hasBeenSeen) {\n              seen[data.type][data.name].push(data);\n            }\n\n            return !hasBeenSeen;\n          }\n\n          return false;\n        });\n      },\n      deprecated: true\n    }, {\n      id: 'group-labelledby',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var _axe$commons10 = axe.commons,\n            dom = _axe$commons10.dom,\n            text = _axe$commons10.text;\n        var type = axe.utils.escapeSelector(node.type);\n        var name = axe.utils.escapeSelector(node.name);\n        var doc = dom.getRootNode(node);\n        var data = {\n          name: node.name,\n          type: node.type\n        };\n        var matchingNodes = Array.from(doc.querySelectorAll('input[type=\"'.concat(type, '\"][name=\"').concat(name, '\"]')));\n\n        if (matchingNodes.length <= 1) {\n          this.data(data);\n          return true;\n        }\n\n        var sharedLabels = dom.idrefs(node, 'aria-labelledby').filter(function (label) {\n          return !!label;\n        });\n        var uniqueLabels = sharedLabels.slice();\n        matchingNodes.forEach(function (groupItem) {\n          if (groupItem === node) {\n            return;\n          }\n\n          var labels = dom.idrefs(groupItem, 'aria-labelledby').filter(function (newLabel) {\n            return newLabel;\n          });\n          sharedLabels = sharedLabels.filter(function (sharedLabel) {\n            return labels.includes(sharedLabel);\n          });\n          uniqueLabels = uniqueLabels.filter(function (uniqueLabel) {\n            return !labels.includes(uniqueLabel);\n          });\n        });\n        var accessibleTextOptions = {\n          inLabelledByContext: true\n        };\n        uniqueLabels = uniqueLabels.filter(function (labelNode) {\n          return text.accessibleText(labelNode, accessibleTextOptions);\n        });\n        sharedLabels = sharedLabels.filter(function (labelNode) {\n          return text.accessibleText(labelNode, accessibleTextOptions);\n        });\n\n        if (uniqueLabels.length > 0 && sharedLabels.length > 0) {\n          this.data(data);\n          return true;\n        }\n\n        if (uniqueLabels.length > 0 && sharedLabels.length === 0) {\n          data.messageKey = 'no-shared-label';\n        } else if (uniqueLabels.length === 0 && sharedLabels.length > 0) {\n          data.messageKey = 'no-unique-label';\n        }\n\n        this.data(data);\n        return false;\n      },\n      after: function after(results, options) {\n        var seen = {};\n        return results.filter(function (result) {\n          var data = result.data;\n\n          if (data) {\n            seen[data.type] = seen[data.type] || {};\n\n            if (!seen[data.type][data.name]) {\n              seen[data.type][data.name] = true;\n              return true;\n            }\n          }\n\n          return false;\n        });\n      },\n      deprecated: true\n    }, {\n      id: 'accesskeys',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        if (axe.commons.dom.isVisible(node, false)) {\n          this.data(node.getAttribute('accesskey'));\n          this.relatedNodes([node]);\n        }\n\n        return true;\n      },\n      after: function after(results, options) {\n        var seen = {};\n        return results.filter(function (r) {\n          if (!r.data) {\n            return false;\n          }\n\n          var key = r.data.toUpperCase();\n\n          if (!seen[key]) {\n            seen[key] = r;\n            r.relatedNodes = [];\n            return true;\n          }\n\n          seen[key].relatedNodes.push(r.relatedNodes[0]);\n          return false;\n        }).map(function (r) {\n          r.result = !!r.relatedNodes.length;\n          return r;\n        });\n      }\n    }, {\n      id: 'focusable-content',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var tabbableElements = virtualNode.tabbableElements;\n\n        if (!tabbableElements) {\n          return false;\n        }\n\n        var tabbableContentElements = tabbableElements.filter(function (el) {\n          return el !== virtualNode;\n        });\n        return tabbableContentElements.length > 0;\n      }\n    }, {\n      id: 'focusable-disabled',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var elementsThatCanBeDisabled = ['BUTTON', 'FIELDSET', 'INPUT', 'SELECT', 'TEXTAREA'];\n        var tabbableElements = virtualNode.tabbableElements;\n\n        if (!tabbableElements || !tabbableElements.length) {\n          return true;\n        }\n\n        var relatedNodes = tabbableElements.reduce(function (out, _ref3) {\n          var el = _ref3.actualNode;\n          var nodeName = el.nodeName.toUpperCase();\n\n          if (elementsThatCanBeDisabled.includes(nodeName)) {\n            out.push(el);\n          }\n\n          return out;\n        }, []);\n        this.relatedNodes(relatedNodes);\n\n        if (relatedNodes.length && axe.commons.dom.isModalOpen()) {\n          return true;\n        }\n\n        return relatedNodes.length === 0;\n      }\n    }, {\n      id: 'focusable-element',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var isFocusable = virtualNode.isFocusable;\n        var tabIndex = parseInt(virtualNode.actualNode.getAttribute('tabindex'), 10);\n        tabIndex = !isNaN(tabIndex) ? tabIndex : null;\n        return tabIndex ? isFocusable && tabIndex >= 0 : isFocusable;\n      }\n    }, {\n      id: 'focusable-modal-open',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var tabbableElements = virtualNode.tabbableElements.map(function (_ref4) {\n          var actualNode = _ref4.actualNode;\n          return actualNode;\n        });\n\n        if (!tabbableElements || !tabbableElements.length) {\n          return true;\n        }\n\n        if (axe.commons.dom.isModalOpen()) {\n          this.relatedNodes(tabbableElements);\n          return undefined;\n        }\n\n        return true;\n      }\n    }, {\n      id: 'focusable-no-name',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var tabIndex = node.getAttribute('tabindex'),\n            inFocusOrder = axe.commons.dom.isFocusable(node) && tabIndex > -1;\n\n        if (!inFocusOrder) {\n          return false;\n        }\n\n        return !axe.commons.text.accessibleTextVirtual(virtualNode);\n      }\n    }, {\n      id: 'focusable-not-tabbable',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var elementsThatCanBeDisabled = ['BUTTON', 'FIELDSET', 'INPUT', 'SELECT', 'TEXTAREA'];\n        var tabbableElements = virtualNode.tabbableElements;\n\n        if (!tabbableElements || !tabbableElements.length) {\n          return true;\n        }\n\n        var relatedNodes = tabbableElements.reduce(function (out, _ref5) {\n          var el = _ref5.actualNode;\n          var nodeName = el.nodeName.toUpperCase();\n\n          if (!elementsThatCanBeDisabled.includes(nodeName)) {\n            out.push(el);\n          }\n\n          return out;\n        }, []);\n        this.relatedNodes(relatedNodes);\n\n        if (relatedNodes.length > 0 && axe.commons.dom.isModalOpen()) {\n          return true;\n        }\n\n        return relatedNodes.length === 0;\n      }\n    }, {\n      id: 'landmark-is-top-level',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var landmarks = axe.commons.aria.getRolesByType('landmark');\n        var parent = axe.commons.dom.getComposedParent(node);\n        this.data({\n          role: node.getAttribute('role') || axe.commons.aria.implicitRole(node)\n        });\n\n        while (parent) {\n          var role = parent.getAttribute('role');\n\n          if (!role && parent.nodeName.toUpperCase() !== 'FORM') {\n            role = axe.commons.aria.implicitRole(parent);\n          }\n\n          if (role && landmarks.includes(role)) {\n            return false;\n          }\n\n          parent = axe.commons.dom.getComposedParent(parent);\n        }\n\n        return true;\n      }\n    }, {\n      id: 'page-has-heading-one',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        if (!options || !options.selector || typeof options.selector !== 'string') {\n          throw new TypeError('visible-in-page requires options.selector to be a string');\n        }\n\n        var matchingElms = axe.utils.querySelectorAllFilter(virtualNode, options.selector, function (vNode) {\n          return axe.commons.dom.isVisible(vNode.actualNode, true);\n        });\n        this.relatedNodes(matchingElms.map(function (vNode) {\n          return vNode.actualNode;\n        }));\n        return matchingElms.length > 0;\n      },\n      after: function after(results, options) {\n        var elmUsedAnywhere = results.some(function (frameResult) {\n          return frameResult.result === true;\n        });\n\n        if (elmUsedAnywhere) {\n          results.forEach(function (result) {\n            result.result = true;\n          });\n        }\n\n        return results;\n      },\n      options: {\n        selector: 'h1:not([role]), [role=\"heading\"][aria-level=\"1\"]'\n      }\n    }, {\n      id: 'page-has-main',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        if (!options || !options.selector || typeof options.selector !== 'string') {\n          throw new TypeError('visible-in-page requires options.selector to be a string');\n        }\n\n        var matchingElms = axe.utils.querySelectorAllFilter(virtualNode, options.selector, function (vNode) {\n          return axe.commons.dom.isVisible(vNode.actualNode, true);\n        });\n        this.relatedNodes(matchingElms.map(function (vNode) {\n          return vNode.actualNode;\n        }));\n        return matchingElms.length > 0;\n      },\n      after: function after(results, options) {\n        var elmUsedAnywhere = results.some(function (frameResult) {\n          return frameResult.result === true;\n        });\n\n        if (elmUsedAnywhere) {\n          results.forEach(function (result) {\n            result.result = true;\n          });\n        }\n\n        return results;\n      },\n      options: {\n        selector: 'main:not([role]), [role=\\'main\\']'\n      }\n    }, {\n      id: 'page-no-duplicate-banner',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        if (!options || !options.selector || typeof options.selector !== 'string') {\n          throw new TypeError('visible-in-page requires options.selector to be a string');\n        }\n\n        var key = 'page-no-duplicate;' + options.selector;\n\n        if (axe._cache.get(key)) {\n          this.data('ignored');\n          return;\n        }\n\n        axe._cache.set(key, true);\n\n        var elms = axe.utils.querySelectorAllFilter(axe._tree[0], options.selector, function (elm) {\n          return axe.commons.dom.isVisible(elm.actualNode);\n        });\n\n        if (typeof options.nativeScopeFilter === 'string') {\n          elms = elms.filter(function (elm) {\n            return elm.actualNode.hasAttribute('role') || !axe.commons.dom.findUpVirtual(elm, options.nativeScopeFilter);\n          });\n        }\n\n        this.relatedNodes(elms.filter(function (elm) {\n          return elm !== virtualNode;\n        }).map(function (elm) {\n          return elm.actualNode;\n        }));\n        return elms.length <= 1;\n      },\n      after: function after(results, options) {\n        return results.filter(function (checkResult) {\n          return checkResult.data !== 'ignored';\n        });\n      },\n      options: {\n        selector: 'header:not([role]), [role=banner]',\n        nativeScopeFilter: 'article, aside, main, nav, section'\n      }\n    }, {\n      id: 'page-no-duplicate-contentinfo',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        if (!options || !options.selector || typeof options.selector !== 'string') {\n          throw new TypeError('visible-in-page requires options.selector to be a string');\n        }\n\n        var key = 'page-no-duplicate;' + options.selector;\n\n        if (axe._cache.get(key)) {\n          this.data('ignored');\n          return;\n        }\n\n        axe._cache.set(key, true);\n\n        var elms = axe.utils.querySelectorAllFilter(axe._tree[0], options.selector, function (elm) {\n          return axe.commons.dom.isVisible(elm.actualNode);\n        });\n\n        if (typeof options.nativeScopeFilter === 'string') {\n          elms = elms.filter(function (elm) {\n            return elm.actualNode.hasAttribute('role') || !axe.commons.dom.findUpVirtual(elm, options.nativeScopeFilter);\n          });\n        }\n\n        this.relatedNodes(elms.filter(function (elm) {\n          return elm !== virtualNode;\n        }).map(function (elm) {\n          return elm.actualNode;\n        }));\n        return elms.length <= 1;\n      },\n      after: function after(results, options) {\n        return results.filter(function (checkResult) {\n          return checkResult.data !== 'ignored';\n        });\n      },\n      options: {\n        selector: 'footer:not([role]), [role=contentinfo]',\n        nativeScopeFilter: 'article, aside, main, nav, section'\n      }\n    }, {\n      id: 'page-no-duplicate-main',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        if (!options || !options.selector || typeof options.selector !== 'string') {\n          throw new TypeError('visible-in-page requires options.selector to be a string');\n        }\n\n        var key = 'page-no-duplicate;' + options.selector;\n\n        if (axe._cache.get(key)) {\n          this.data('ignored');\n          return;\n        }\n\n        axe._cache.set(key, true);\n\n        var elms = axe.utils.querySelectorAllFilter(axe._tree[0], options.selector, function (elm) {\n          return axe.commons.dom.isVisible(elm.actualNode);\n        });\n\n        if (typeof options.nativeScopeFilter === 'string') {\n          elms = elms.filter(function (elm) {\n            return elm.actualNode.hasAttribute('role') || !axe.commons.dom.findUpVirtual(elm, options.nativeScopeFilter);\n          });\n        }\n\n        this.relatedNodes(elms.filter(function (elm) {\n          return elm !== virtualNode;\n        }).map(function (elm) {\n          return elm.actualNode;\n        }));\n        return elms.length <= 1;\n      },\n      after: function after(results, options) {\n        return results.filter(function (checkResult) {\n          return checkResult.data !== 'ignored';\n        });\n      },\n      options: {\n        selector: 'main:not([role]), [role=\\'main\\']'\n      }\n    }, {\n      id: 'tabindex',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var tabIndex = parseInt(node.getAttribute('tabindex'), 10);\n        return isNaN(tabIndex) ? true : tabIndex <= 0;\n      }\n    }, {\n      id: 'alt-space-value',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var alt = virtualNode.attr('alt');\n        var isOnlySpace = /^\\s+$/;\n        return typeof alt === 'string' && isOnlySpace.test(alt);\n      }\n    }, {\n      id: 'duplicate-img-label',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var _axe$commons11 = axe.commons,\n            aria = _axe$commons11.aria,\n            text = _axe$commons11.text,\n            dom = _axe$commons11.dom;\n\n        if (['none', 'presentation'].includes(aria.getRole(node))) {\n          return false;\n        }\n\n        var parent = dom.findUpVirtual(virtualNode, 'button, [role=\"button\"], a[href], p, li, td, th');\n\n        if (!parent) {\n          return false;\n        }\n\n        var parentVNode = axe.utils.getNodeFromTree(parent);\n        var visibleText = text.visibleVirtual(parentVNode, true).toLowerCase();\n\n        if (visibleText === '') {\n          return false;\n        }\n\n        return visibleText === text.accessibleTextVirtual(virtualNode).toLowerCase();\n      }\n    }, {\n      id: 'explicit-label',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        if (node.getAttribute('id')) {\n          var root = axe.commons.dom.getRootNode(node);\n          var id = axe.utils.escapeSelector(node.getAttribute('id'));\n          var label = root.querySelector('label[for=\"'.concat(id, '\"]'));\n\n          if (label) {\n            if (!axe.commons.dom.isVisible(label)) {\n              return true;\n            } else {\n              return !!axe.commons.text.accessibleText(label);\n            }\n          }\n        }\n\n        return false;\n      }\n    }, {\n      id: 'help-same-as-label',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var labelText = axe.commons.text.labelVirtual(virtualNode),\n            check = node.getAttribute('title');\n\n        if (!labelText) {\n          return false;\n        }\n\n        if (!check) {\n          check = '';\n\n          if (node.getAttribute('aria-describedby')) {\n            var ref = axe.commons.dom.idrefs(node, 'aria-describedby');\n            check = ref.map(function (thing) {\n              return thing ? axe.commons.text.accessibleText(thing) : '';\n            }).join('');\n          }\n        }\n\n        return axe.commons.text.sanitize(check) === axe.commons.text.sanitize(labelText);\n      },\n      enabled: false\n    }, {\n      id: 'hidden-explicit-label',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        if (node.getAttribute('id')) {\n          var root = axe.commons.dom.getRootNode(node);\n          var id = axe.utils.escapeSelector(node.getAttribute('id'));\n          var label = root.querySelector('label[for=\"'.concat(id, '\"]'));\n\n          if (label && !axe.commons.dom.isVisible(label, true)) {\n            var name = axe.commons.text.accessibleTextVirtual(virtualNode).trim();\n            var isNameEmpty = name === '';\n            return isNameEmpty;\n          }\n        }\n\n        return false;\n      }\n    }, {\n      id: 'implicit-label',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var _axe$commons12 = axe.commons,\n            dom = _axe$commons12.dom,\n            text = _axe$commons12.text;\n        var label = dom.findUpVirtual(virtualNode, 'label');\n\n        if (label) {\n          return !!text.accessibleText(label, {\n            inControlContext: true\n          });\n        }\n\n        return false;\n      }\n    }, {\n      id: 'label-content-name-mismatch',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var text = axe.commons.text;\n\n        var _ref6 = options || {},\n            pixelThreshold = _ref6.pixelThreshold,\n            occuranceThreshold = _ref6.occuranceThreshold;\n\n        var accText = text.accessibleText(node).toLowerCase();\n\n        if (text.isHumanInterpretable(accText) < 1) {\n          return undefined;\n        }\n\n        var textVNodes = text.visibleTextNodes(virtualNode);\n        var nonLigatureText = textVNodes.filter(function (textVNode) {\n          return !text.isIconLigature(textVNode, pixelThreshold, occuranceThreshold);\n        }).map(function (textVNode) {\n          return textVNode.actualNode.nodeValue;\n        }).join('');\n        var visibleText = text.sanitize(nonLigatureText).toLowerCase();\n\n        if (!visibleText) {\n          return true;\n        }\n\n        if (text.isHumanInterpretable(visibleText) < 1) {\n          if (isStringContained(visibleText, accText)) {\n            return true;\n          }\n\n          return undefined;\n        }\n\n        return isStringContained(visibleText, accText);\n\n        function isStringContained(compare, compareWith) {\n          var curatedCompareWith = curateString(compareWith);\n          var curatedCompare = curateString(compare);\n\n          if (!curatedCompareWith || !curatedCompare) {\n            return false;\n          }\n\n          return curatedCompareWith.includes(curatedCompare);\n        }\n\n        function curateString(str) {\n          var noUnicodeStr = text.removeUnicode(str, {\n            emoji: true,\n            nonBmp: true,\n            punctuations: true\n          });\n          return text.sanitize(noUnicodeStr);\n        }\n      },\n      options: {\n        pixelThreshold: .1,\n        occuranceThreshold: 3\n      }\n    }, {\n      id: 'multiple-label',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var id = axe.utils.escapeSelector(node.getAttribute('id'));\n        var parent = node.parentNode;\n        var root = axe.commons.dom.getRootNode(node);\n        root = root.documentElement || root;\n        var labels = Array.from(root.querySelectorAll('label[for=\"'.concat(id, '\"]')));\n\n        if (labels.length) {\n          labels = labels.filter(function (label) {\n            return axe.commons.dom.isVisible(label);\n          });\n        }\n\n        while (parent) {\n          if (parent.nodeName.toUpperCase() === 'LABEL' && labels.indexOf(parent) === -1) {\n            labels.push(parent);\n          }\n\n          parent = parent.parentNode;\n        }\n\n        this.relatedNodes(labels);\n\n        if (labels.length > 1) {\n          var ATVisibleLabels = labels.filter(function (label) {\n            return axe.commons.dom.isVisible(label, true);\n          });\n\n          if (ATVisibleLabels.length > 1) {\n            return undefined;\n          }\n\n          var labelledby = axe.commons.dom.idrefs(node, 'aria-labelledby');\n          return !labelledby.includes(ATVisibleLabels[0]) ? undefined : false;\n        }\n\n        return false;\n      }\n    }, {\n      id: 'title-only',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var labelText = axe.commons.text.labelVirtual(virtualNode);\n        return !labelText && !!(node.getAttribute('title') || node.getAttribute('aria-describedby'));\n      }\n    }, {\n      id: 'landmark-is-unique',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var role = axe.commons.aria.getRole(node);\n        var accessibleText = axe.commons.text.accessibleTextVirtual(virtualNode);\n        accessibleText = accessibleText ? accessibleText.toLowerCase() : null;\n        this.data({\n          role: role,\n          accessibleText: accessibleText\n        });\n        this.relatedNodes([node]);\n        return true;\n      },\n      after: function after(results, options) {\n        var uniqueLandmarks = [];\n        return results.filter(function (currentResult) {\n          var findMatch = function findMatch(someResult) {\n            return currentResult.data.role === someResult.data.role && currentResult.data.accessibleText === someResult.data.accessibleText;\n          };\n\n          var matchedResult = uniqueLandmarks.find(findMatch);\n\n          if (matchedResult) {\n            matchedResult.result = false;\n            matchedResult.relatedNodes.push(currentResult.relatedNodes[0]);\n            return false;\n          }\n\n          uniqueLandmarks.push(currentResult);\n          currentResult.relatedNodes = [];\n          return true;\n        });\n      }\n    }, {\n      id: 'has-lang',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var isXHTML = axe.utils.isXHTML;\n        var langValue = (node.getAttribute('lang') || '').trim();\n        var xmlLangValue = (node.getAttribute('xml:lang') || '').trim();\n\n        if (!langValue && xmlLangValue && !isXHTML(document)) {\n          this.data({\n            messageKey: 'noXHTML'\n          });\n          return false;\n        }\n\n        if (!(langValue || xmlLangValue)) {\n          this.data({\n            messageKey: 'noLang'\n          });\n          return false;\n        }\n\n        return true;\n      }\n    }, {\n      id: 'valid-lang',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var langs, invalid;\n        langs = (options ? options : axe.utils.validLangs()).map(axe.utils.getBaseLang);\n        invalid = ['lang', 'xml:lang'].reduce(function (invalid, langAttr) {\n          var langVal = node.getAttribute(langAttr);\n\n          if (typeof langVal !== 'string') {\n            return invalid;\n          }\n\n          var baselangVal = axe.utils.getBaseLang(langVal);\n\n          if (baselangVal !== '' && langs.indexOf(baselangVal) === -1) {\n            invalid.push(langAttr + '=\"' + node.getAttribute(langAttr) + '\"');\n          }\n\n          return invalid;\n        }, []);\n\n        if (invalid.length) {\n          this.data(invalid);\n          return true;\n        }\n\n        return false;\n      }\n    }, {\n      id: 'xml-lang-mismatch',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var getBaseLang = axe.utils.getBaseLang;\n        var primaryLangValue = getBaseLang(node.getAttribute('lang'));\n        var primaryXmlLangValue = getBaseLang(node.getAttribute('xml:lang'));\n        return primaryLangValue === primaryXmlLangValue;\n      }\n    }, {\n      id: 'dlitem',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var parent = axe.commons.dom.getComposedParent(node);\n        var parentTagName = parent.nodeName.toUpperCase();\n        var parentRole = axe.commons.aria.getRole(parent, {\n          noImplicit: true\n        });\n\n        if (parentTagName === 'DIV' && ['presentation', 'none', null].includes(parentRole)) {\n          parent = axe.commons.dom.getComposedParent(parent);\n          parentTagName = parent.nodeName.toUpperCase();\n          parentRole = axe.commons.aria.getRole(parent, {\n            noImplicit: true\n          });\n        }\n\n        if (parentTagName !== 'DL') {\n          return false;\n        }\n\n        if (!parentRole || parentRole === 'list') {\n          return true;\n        }\n\n        return false;\n      }\n    }, {\n      id: 'listitem',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var parent = axe.commons.dom.getComposedParent(node);\n\n        if (!parent) {\n          return undefined;\n        }\n\n        var parentTagName = parent.nodeName.toUpperCase();\n        var parentRole = (parent.getAttribute('role') || '').toLowerCase();\n\n        if (['presentation', 'none', 'list'].includes(parentRole)) {\n          return true;\n        }\n\n        if (parentRole && axe.commons.aria.isValidRole(parentRole)) {\n          this.data({\n            messageKey: 'roleNotValid'\n          });\n          return false;\n        }\n\n        return ['UL', 'OL'].includes(parentTagName);\n      }\n    }, {\n      id: 'only-dlitems',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var _axe$commons13 = axe.commons,\n            dom = _axe$commons13.dom,\n            aria = _axe$commons13.aria;\n        var ALLOWED_ROLES = ['definition', 'term', 'list'];\n        var base = {\n          badNodes: [],\n          hasNonEmptyTextNode: false\n        };\n        var content = virtualNode.children.reduce(function (content, child) {\n          var actualNode = child.actualNode;\n\n          if (actualNode.nodeName.toUpperCase() === 'DIV' && aria.getRole(actualNode) === null) {\n            return content.concat(child.children);\n          }\n\n          return content.concat(child);\n        }, []);\n        var result = content.reduce(function (out, childNode) {\n          var actualNode = childNode.actualNode;\n          var tagName = actualNode.nodeName.toUpperCase();\n\n          if (actualNode.nodeType === 1 && dom.isVisible(actualNode, true, false)) {\n            var explicitRole = aria.getRole(actualNode, {\n              noImplicit: true\n            });\n\n            if (tagName !== 'DT' && tagName !== 'DD' || explicitRole) {\n              if (!ALLOWED_ROLES.includes(explicitRole)) {\n                out.badNodes.push(actualNode);\n              }\n            }\n          } else if (actualNode.nodeType === 3 && actualNode.nodeValue.trim() !== '') {\n            out.hasNonEmptyTextNode = true;\n          }\n\n          return out;\n        }, base);\n\n        if (result.badNodes.length) {\n          this.relatedNodes(result.badNodes);\n        }\n\n        return !!result.badNodes.length || result.hasNonEmptyTextNode;\n      }\n    }, {\n      id: 'only-listitems',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var _axe$commons14 = axe.commons,\n            dom = _axe$commons14.dom,\n            aria = _axe$commons14.aria;\n        var hasNonEmptyTextNode = false;\n        var atLeastOneListitem = false;\n        var isEmpty = true;\n        var badNodes = [];\n        var badRoleNodes = [];\n        var badRoles = [];\n        virtualNode.children.forEach(function (vNode) {\n          var actualNode = vNode.actualNode;\n\n          if (actualNode.nodeType === 3 && actualNode.nodeValue.trim() !== '') {\n            hasNonEmptyTextNode = true;\n            return;\n          }\n\n          if (actualNode.nodeType !== 1 || !dom.isVisible(actualNode, true, false)) {\n            return;\n          }\n\n          isEmpty = false;\n          var isLi = actualNode.nodeName.toUpperCase() === 'LI';\n          var role = aria.getRole(vNode);\n          var isListItemRole = role === 'listitem';\n\n          if (!isLi && !isListItemRole) {\n            badNodes.push(actualNode);\n          }\n\n          if (isLi && !isListItemRole) {\n            badRoleNodes.push(actualNode);\n\n            if (!badRoles.includes(role)) {\n              badRoles.push(role);\n            }\n          }\n\n          if (isListItemRole) {\n            atLeastOneListitem = true;\n          }\n        });\n\n        if (hasNonEmptyTextNode || badNodes.length) {\n          this.relatedNodes(badNodes);\n          return true;\n        }\n\n        if (isEmpty || atLeastOneListitem) {\n          return false;\n        }\n\n        this.relatedNodes(badRoleNodes);\n        this.data({\n          messageKey: 'roleNotValid',\n          roles: badRoles.join(', ')\n        });\n        return true;\n      }\n    }, {\n      id: 'structured-dlitems',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var children = virtualNode.children;\n\n        if (!children || !children.length) {\n          return false;\n        }\n\n        var hasDt = false,\n            hasDd = false,\n            nodeName;\n\n        for (var i = 0; i < children.length; i++) {\n          nodeName = children[i].actualNode.nodeName.toUpperCase();\n\n          if (nodeName === 'DT') {\n            hasDt = true;\n          }\n\n          if (hasDt && nodeName === 'DD') {\n            return false;\n          }\n\n          if (nodeName === 'DD') {\n            hasDd = true;\n          }\n        }\n\n        return hasDt || hasDd;\n      }\n    }, {\n      id: 'caption',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var tracks = axe.utils.querySelectorAll(virtualNode, 'track');\n        var hasCaptions = tracks.some(function (_ref7) {\n          var actualNode = _ref7.actualNode;\n          return (actualNode.getAttribute('kind') || '').toLowerCase() === 'captions';\n        });\n        return hasCaptions ? false : undefined;\n      }\n    }, {\n      id: 'description',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var tracks = axe.utils.querySelectorAll(virtualNode, 'track');\n        var hasDescriptions = tracks.some(function (_ref8) {\n          var actualNode = _ref8.actualNode;\n          return (actualNode.getAttribute('kind') || '').toLowerCase() === 'descriptions';\n        });\n        return hasDescriptions ? false : undefined;\n      }\n    }, {\n      id: 'frame-tested',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var resolve = this.async();\n\n        var _Object$assign = Object.assign({\n          isViolation: false,\n          timeout: 500\n        }, options),\n            isViolation = _Object$assign.isViolation,\n            timeout = _Object$assign.timeout;\n\n        var timer = setTimeout(function () {\n          timer = setTimeout(function () {\n            timer = null;\n            resolve(isViolation ? false : undefined);\n          }, 0);\n        }, timeout);\n        axe.utils.respondable(node.contentWindow, 'axe.ping', null, undefined, function () {\n          if (timer !== null) {\n            clearTimeout(timer);\n            resolve(true);\n          }\n        });\n      },\n      options: {\n        isViolation: false\n      }\n    }, {\n      id: 'no-autoplay-audio',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        if (!node.duration) {\n          console.warn('axe.utils.preloadMedia did not load metadata');\n          return undefined;\n        }\n\n        var _options$allowedDurat = options.allowedDuration,\n            allowedDuration = _options$allowedDurat === void 0 ? 3 : _options$allowedDurat;\n        var playableDuration = getPlayableDuration(node);\n\n        if (playableDuration <= allowedDuration && !node.hasAttribute('loop')) {\n          return true;\n        }\n\n        if (!node.hasAttribute('controls')) {\n          return false;\n        }\n\n        return true;\n\n        function getPlayableDuration(elm) {\n          if (!elm.currentSrc) {\n            return 0;\n          }\n\n          var playbackRange = getPlaybackRange(elm.currentSrc);\n\n          if (!playbackRange) {\n            return Math.abs(elm.duration - (elm.currentTime || 0));\n          }\n\n          if (playbackRange.length === 1) {\n            return Math.abs(elm.duration - playbackRange[0]);\n          }\n\n          return Math.abs(playbackRange[1] - playbackRange[0]);\n        }\n\n        function getPlaybackRange(src) {\n          var match = src.match(/#t=(.*)/);\n\n          if (!match) {\n            return;\n          }\n\n          var _match = _slicedToArray(match, 2),\n              value = _match[1];\n\n          var ranges = value.split(',');\n          return ranges.map(function (range) {\n            if (/:/.test(range)) {\n              return convertHourMinSecToSeconds(range);\n            }\n\n            return parseFloat(range);\n          });\n        }\n\n        function convertHourMinSecToSeconds(hhMmSs) {\n          var parts = hhMmSs.split(':');\n          var secs = 0;\n          var mins = 1;\n\n          while (parts.length > 0) {\n            secs += mins * parseInt(parts.pop(), 10);\n            mins *= 60;\n          }\n\n          return parseFloat(secs);\n        }\n      },\n      options: {\n        allowedDuration: 3\n      }\n    }, {\n      id: 'css-orientation-lock',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var _ref9 = context || {},\n            _ref9$cssom = _ref9.cssom,\n            cssom = _ref9$cssom === void 0 ? undefined : _ref9$cssom;\n\n        var _ref10 = options || {},\n            _ref10$degreeThreshol = _ref10.degreeThreshold,\n            degreeThreshold = _ref10$degreeThreshol === void 0 ? 0 : _ref10$degreeThreshol;\n\n        if (!cssom || !cssom.length) {\n          return undefined;\n        }\n\n        var isLocked = false;\n        var relatedElements = [];\n        var rulesGroupByDocumentFragment = groupCssomByDocument(cssom);\n\n        var _loop = function _loop() {\n          var key = _Object$keys[_i2];\n          var _rulesGroupByDocument = rulesGroupByDocumentFragment[key],\n              root = _rulesGroupByDocument.root,\n              rules = _rulesGroupByDocument.rules;\n          var orientationRules = rules.filter(isMediaRuleWithOrientation);\n\n          if (!orientationRules.length) {\n            return 'continue';\n          }\n\n          orientationRules.forEach(function (_ref16) {\n            var cssRules = _ref16.cssRules;\n            Array.from(cssRules).forEach(function (cssRule) {\n              var locked = getIsOrientationLocked(cssRule);\n\n              if (locked && cssRule.selectorText.toUpperCase() !== 'HTML') {\n                var elms = Array.from(root.querySelectorAll(cssRule.selectorText)) || [];\n                relatedElements = relatedElements.concat(elms);\n              }\n\n              isLocked = isLocked || locked;\n            });\n          });\n        };\n\n        for (var _i2 = 0, _Object$keys = Object.keys(rulesGroupByDocumentFragment); _i2 < _Object$keys.length; _i2++) {\n          var _ret = _loop();\n\n          if (_ret === 'continue') {\n            continue;\n          }\n        }\n\n        if (!isLocked) {\n          return true;\n        }\n\n        if (relatedElements.length) {\n          this.relatedNodes(relatedElements);\n        }\n\n        return false;\n\n        function groupCssomByDocument(cssObjectModel) {\n          return cssObjectModel.reduce(function (out, _ref11) {\n            var sheet = _ref11.sheet,\n                root = _ref11.root,\n                shadowId = _ref11.shadowId;\n            var key = shadowId ? shadowId : 'topDocument';\n\n            if (!out[key]) {\n              out[key] = {\n                root: root,\n                rules: []\n              };\n            }\n\n            if (!sheet || !sheet.cssRules) {\n              return out;\n            }\n\n            var rules = Array.from(sheet.cssRules);\n            out[key].rules = out[key].rules.concat(rules);\n            return out;\n          }, {});\n        }\n\n        function isMediaRuleWithOrientation(_ref12) {\n          var type = _ref12.type,\n              cssText = _ref12.cssText;\n\n          if (type !== 4) {\n            return false;\n          }\n\n          return /orientation:\\s*landscape/i.test(cssText) || /orientation:\\s*portrait/i.test(cssText);\n        }\n\n        function getIsOrientationLocked(_ref13) {\n          var selectorText = _ref13.selectorText,\n              style = _ref13.style;\n\n          if (!selectorText || style.length <= 0) {\n            return false;\n          }\n\n          var transformStyle = style.transform || style.webkitTransform || style.msTransform || false;\n\n          if (!transformStyle) {\n            return false;\n          }\n\n          var matches = transformStyle.match(/(rotate|rotateZ|rotate3d|matrix|matrix3d)\\(([^)]+)\\)(?!.*(rotate|rotateZ|rotate3d|matrix|matrix3d))/);\n\n          if (!matches) {\n            return false;\n          }\n\n          var _matches = _slicedToArray(matches, 3),\n              transformFn = _matches[1],\n              transformFnValue = _matches[2];\n\n          var degrees = getRotationInDegrees(transformFn, transformFnValue);\n\n          if (!degrees) {\n            return false;\n          }\n\n          degrees = Math.abs(degrees);\n\n          if (Math.abs(degrees - 180) % 180 <= degreeThreshold) {\n            return false;\n          }\n\n          return Math.abs(degrees - 90) % 90 <= degreeThreshold;\n        }\n\n        function getRotationInDegrees(transformFunction, transformFnValue) {\n          switch (transformFunction) {\n            case 'rotate':\n            case 'rotateZ':\n              return getAngleInDegrees(transformFnValue);\n\n            case 'rotate3d':\n              var _transformFnValue$spl = transformFnValue.split(',').map(function (value) {\n                return value.trim();\n              }),\n                  _transformFnValue$spl2 = _slicedToArray(_transformFnValue$spl, 4),\n                  z = _transformFnValue$spl2[2],\n                  angleWithUnit = _transformFnValue$spl2[3];\n\n              if (parseInt(z) === 0) {\n                return;\n              }\n\n              return getAngleInDegrees(angleWithUnit);\n\n            case 'matrix':\n            case 'matrix3d':\n              return getAngleInDegreesFromMatrixTransform(transformFnValue);\n\n            default:\n              return;\n          }\n        }\n\n        function getAngleInDegrees(angleWithUnit) {\n          var _ref14 = angleWithUnit.match(/(deg|grad|rad|turn)/) || [],\n              _ref15 = _slicedToArray(_ref14, 1),\n              unit = _ref15[0];\n\n          if (!unit) {\n            return;\n          }\n\n          var angle = parseFloat(angleWithUnit.replace(unit, ''));\n\n          switch (unit) {\n            case 'rad':\n              return convertRadToDeg(angle);\n\n            case 'grad':\n              return convertGradToDeg(angle);\n\n            case 'turn':\n              return convertTurnToDeg(angle);\n\n            case 'deg':\n            default:\n              return parseInt(angle);\n          }\n        }\n\n        function getAngleInDegreesFromMatrixTransform(transformFnValue) {\n          var values = transformFnValue.split(',');\n\n          if (values.length <= 6) {\n            var _values = _slicedToArray(values, 2),\n                a = _values[0],\n                _b = _values[1];\n\n            var radians = Math.atan2(parseFloat(_b), parseFloat(a));\n            return convertRadToDeg(radians);\n          }\n\n          var sinB = parseFloat(values[8]);\n          var b = Math.asin(sinB);\n          var cosB = Math.cos(b);\n          var rotateZRadians = Math.acos(parseFloat(values[0]) / cosB);\n          return convertRadToDeg(rotateZRadians);\n        }\n\n        function convertRadToDeg(radians) {\n          return Math.round(radians * (180 / Math.PI));\n        }\n\n        function convertGradToDeg(grad) {\n          grad = grad % 400;\n\n          if (grad < 0) {\n            grad += 400;\n          }\n\n          return Math.round(grad / 400 * 360);\n        }\n\n        function convertTurnToDeg(turn) {\n          return Math.round(360 / (1 / turn));\n        }\n      },\n      options: {\n        degreeThreshold: 2\n      }\n    }, {\n      id: 'meta-viewport-large',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var _ref17 = options || {},\n            _ref17$scaleMinimum = _ref17.scaleMinimum,\n            scaleMinimum = _ref17$scaleMinimum === void 0 ? 2 : _ref17$scaleMinimum,\n            _ref17$lowerBound = _ref17.lowerBound,\n            lowerBound = _ref17$lowerBound === void 0 ? false : _ref17$lowerBound;\n\n        var content = node.getAttribute('content') || '';\n\n        if (!content) {\n          return true;\n        }\n\n        var result = content.split(/[;,]/).reduce(function (out, item) {\n          var contentValue = item.trim();\n\n          if (!contentValue) {\n            return out;\n          }\n\n          var _contentValue$split = contentValue.split('='),\n              _contentValue$split2 = _slicedToArray(_contentValue$split, 2),\n              key = _contentValue$split2[0],\n              value = _contentValue$split2[1];\n\n          if (!key || !value) {\n            return out;\n          }\n\n          var curatedKey = key.toLowerCase().trim();\n          var curatedValue = value.toLowerCase().trim();\n\n          if (curatedKey === 'maximum-scale' && curatedValue === 'yes') {\n            curatedValue = 1;\n          }\n\n          if (curatedKey === 'maximum-scale' && parseFloat(curatedValue) < 0) {\n            return out;\n          }\n\n          out[curatedKey] = curatedValue;\n          return out;\n        }, {});\n\n        if (lowerBound && result['maximum-scale'] && parseFloat(result['maximum-scale']) < lowerBound) {\n          return true;\n        }\n\n        if (!lowerBound && result['user-scalable'] === 'no') {\n          this.data('user-scalable=no');\n          return false;\n        }\n\n        if (result['maximum-scale'] && parseFloat(result['maximum-scale']) < scaleMinimum) {\n          this.data('maximum-scale');\n          return false;\n        }\n\n        return true;\n      },\n      options: {\n        scaleMinimum: 5,\n        lowerBound: 2\n      }\n    }, {\n      id: 'meta-viewport',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var _ref18 = options || {},\n            _ref18$scaleMinimum = _ref18.scaleMinimum,\n            scaleMinimum = _ref18$scaleMinimum === void 0 ? 2 : _ref18$scaleMinimum,\n            _ref18$lowerBound = _ref18.lowerBound,\n            lowerBound = _ref18$lowerBound === void 0 ? false : _ref18$lowerBound;\n\n        var content = node.getAttribute('content') || '';\n\n        if (!content) {\n          return true;\n        }\n\n        var result = content.split(/[;,]/).reduce(function (out, item) {\n          var contentValue = item.trim();\n\n          if (!contentValue) {\n            return out;\n          }\n\n          var _contentValue$split3 = contentValue.split('='),\n              _contentValue$split4 = _slicedToArray(_contentValue$split3, 2),\n              key = _contentValue$split4[0],\n              value = _contentValue$split4[1];\n\n          if (!key || !value) {\n            return out;\n          }\n\n          var curatedKey = key.toLowerCase().trim();\n          var curatedValue = value.toLowerCase().trim();\n\n          if (curatedKey === 'maximum-scale' && curatedValue === 'yes') {\n            curatedValue = 1;\n          }\n\n          if (curatedKey === 'maximum-scale' && parseFloat(curatedValue) < 0) {\n            return out;\n          }\n\n          out[curatedKey] = curatedValue;\n          return out;\n        }, {});\n\n        if (lowerBound && result['maximum-scale'] && parseFloat(result['maximum-scale']) < lowerBound) {\n          return true;\n        }\n\n        if (!lowerBound && result['user-scalable'] === 'no') {\n          this.data('user-scalable=no');\n          return false;\n        }\n\n        if (result['maximum-scale'] && parseFloat(result['maximum-scale']) < scaleMinimum) {\n          this.data('maximum-scale');\n          return false;\n        }\n\n        return true;\n      },\n      options: {\n        scaleMinimum: 2\n      }\n    }, {\n      id: 'header-present',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        return !!axe.utils.querySelectorAll(virtualNode, 'h1, h2, h3, h4, h5, h6, [role=\"heading\"]')[0];\n      }\n    }, {\n      id: 'heading-order',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var ariaHeadingLevel = node.getAttribute('aria-level');\n\n        if (ariaHeadingLevel !== null) {\n          this.data(parseInt(ariaHeadingLevel, 10));\n          return true;\n        }\n\n        var headingLevel = node.nodeName.toUpperCase().match(/H(\\d)/);\n\n        if (headingLevel) {\n          this.data(parseInt(headingLevel[1], 10));\n          return true;\n        }\n\n        return true;\n      },\n      after: function after(results, options) {\n        if (results.length < 2) {\n          return results;\n        }\n\n        var prevLevel = results[0].data;\n\n        for (var i = 1; i < results.length; i++) {\n          if (results[i].result && results[i].data > prevLevel + 1) {\n            results[i].result = false;\n          }\n\n          prevLevel = results[i].data;\n        }\n\n        return results;\n      }\n    }, {\n      id: 'identical-links-same-purpose',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var _axe$commons15 = axe.commons,\n            dom = _axe$commons15.dom,\n            text = _axe$commons15.text;\n        var accText = text.accessibleTextVirtual(virtualNode);\n        var name = text.sanitize(text.removeUnicode(accText, {\n          emoji: true,\n          nonBmp: true,\n          punctuations: true\n        })).toLowerCase();\n\n        if (!name) {\n          return undefined;\n        }\n\n        var afterData = {\n          name: name,\n          urlProps: dom.urlPropsFromAttribute(node, 'href')\n        };\n        this.data(afterData);\n        this.relatedNodes([node]);\n        return true;\n      },\n      after: function after(results, options) {\n        if (results.length < 2) {\n          return results;\n        }\n\n        var incompleteResults = results.filter(function (_ref19) {\n          var result = _ref19.result;\n          return result !== undefined;\n        });\n        var uniqueResults = [];\n        var nameMap = {};\n\n        var _loop2 = function _loop2(index) {\n          var _currentResult$relate;\n\n          var currentResult = incompleteResults[index];\n          var _currentResult$data = currentResult.data,\n              name = _currentResult$data.name,\n              urlProps = _currentResult$data.urlProps;\n\n          if (nameMap[name]) {\n            return 'continue';\n          }\n\n          var sameNameResults = incompleteResults.filter(function (_ref20, resultNum) {\n            var data = _ref20.data;\n            return data.name === name && resultNum !== index;\n          });\n          var isSameUrl = sameNameResults.every(function (_ref21) {\n            var data = _ref21.data;\n            return isIdenticalObject(data.urlProps, urlProps);\n          });\n\n          if (sameNameResults.length && !isSameUrl) {\n            currentResult.result = undefined;\n          }\n\n          currentResult.relatedNodes = [];\n\n          (_currentResult$relate = currentResult.relatedNodes).push.apply(_currentResult$relate, _toConsumableArray(sameNameResults.map(function (node) {\n            return node.relatedNodes[0];\n          })));\n\n          nameMap[name] = sameNameResults;\n          uniqueResults.push(currentResult);\n        };\n\n        for (var index = 0; index < incompleteResults.length; index++) {\n          var _ret2 = _loop2(index);\n\n          if (_ret2 === 'continue') {\n            continue;\n          }\n        }\n\n        return uniqueResults;\n\n        function isIdenticalObject(a, b) {\n          if (!a || !b) {\n            return false;\n          }\n\n          var aProps = Object.getOwnPropertyNames(a);\n          var bProps = Object.getOwnPropertyNames(b);\n\n          if (aProps.length !== bProps.length) {\n            return false;\n          }\n\n          var result = aProps.every(function (propName) {\n            var aValue = a[propName];\n            var bValue = b[propName];\n\n            if (_typeof(aValue) !== _typeof(bValue)) {\n              return false;\n            }\n\n            if (typeof aValue === 'object' || typeof bValue === 'object') {\n              return isIdenticalObject(aValue, bValue);\n            }\n\n            return aValue === bValue;\n          });\n          return result;\n        }\n      }\n    }, {\n      id: 'internal-link-present',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var links = axe.utils.querySelectorAll(virtualNode, 'a[href]');\n        return links.some(function (vLink) {\n          return /^#[^/!]/.test(vLink.actualNode.getAttribute('href'));\n        });\n      }\n    }, {\n      id: 'landmark',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        return axe.utils.querySelectorAll(virtualNode, 'main, [role=\"main\"]').length > 0;\n      }\n    }, {\n      id: 'meta-refresh',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var content = node.getAttribute('content') || '',\n            parsedParams = content.split(/[;,]/);\n        return content === '' || parsedParams[0] === '0';\n      }\n    }, {\n      id: 'p-as-heading',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var siblings = Array.from(node.parentNode.children);\n        var currentIndex = siblings.indexOf(node);\n        options = options || {};\n        var margins = options.margins || [];\n        var nextSibling = siblings.slice(currentIndex + 1).find(function (elm) {\n          return elm.nodeName.toUpperCase() === 'P';\n        });\n        var prevSibling = siblings.slice(0, currentIndex).reverse().find(function (elm) {\n          return elm.nodeName.toUpperCase() === 'P';\n        });\n\n        function getTextContainer(elm) {\n          var nextNode = elm;\n          var outerText = elm.textContent.trim();\n          var innerText = outerText;\n\n          while (innerText === outerText && nextNode !== undefined) {\n            var i = -1;\n            elm = nextNode;\n\n            if (elm.children.length === 0) {\n              return elm;\n            }\n\n            do {\n              i++;\n              innerText = elm.children[i].textContent.trim();\n            } while (innerText === '' && i + 1 < elm.children.length);\n\n            nextNode = elm.children[i];\n          }\n\n          return elm;\n        }\n\n        function normalizeFontWeight(weight) {\n          switch (weight) {\n            case 'lighter':\n              return 100;\n\n            case 'normal':\n              return 400;\n\n            case 'bold':\n              return 700;\n\n            case 'bolder':\n              return 900;\n          }\n\n          weight = parseInt(weight);\n          return !isNaN(weight) ? weight : 400;\n        }\n\n        function getStyleValues(node) {\n          var style = window.getComputedStyle(getTextContainer(node));\n          return {\n            fontWeight: normalizeFontWeight(style.getPropertyValue('font-weight')),\n            fontSize: parseInt(style.getPropertyValue('font-size')),\n            isItalic: style.getPropertyValue('font-style') === 'italic'\n          };\n        }\n\n        function isHeaderStyle(styleA, styleB, margins) {\n          return margins.reduce(function (out, margin) {\n            return out || (!margin.size || styleA.fontSize / margin.size > styleB.fontSize) && (!margin.weight || styleA.fontWeight - margin.weight > styleB.fontWeight) && (!margin.italic || styleA.isItalic && !styleB.isItalic);\n          }, false);\n        }\n\n        var currStyle = getStyleValues(node);\n        var nextStyle = nextSibling ? getStyleValues(nextSibling) : null;\n        var prevStyle = prevSibling ? getStyleValues(prevSibling) : null;\n\n        if (!nextStyle || !isHeaderStyle(currStyle, nextStyle, margins)) {\n          return true;\n        }\n\n        var blockquote = axe.commons.dom.findUpVirtual(virtualNode, 'blockquote');\n\n        if (blockquote && blockquote.nodeName.toUpperCase() === 'BLOCKQUOTE') {\n          return undefined;\n        }\n\n        if (prevStyle && !isHeaderStyle(currStyle, prevStyle, margins)) {\n          return undefined;\n        }\n\n        return false;\n      },\n      options: {\n        margins: [{\n          weight: 150,\n          italic: true\n        }, {\n          weight: 150,\n          size: 1.15\n        }, {\n          italic: true,\n          size: 1.15\n        }, {\n          size: 1.4\n        }]\n      }\n    }, {\n      id: 'region',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var _axe$commons16 = axe.commons,\n            dom = _axe$commons16.dom,\n            aria = _axe$commons16.aria;\n        var landmarkRoles = aria.getRolesByType('landmark');\n        var implicitAriaLiveRoles = ['alert', 'log', 'status'];\n\n        var regionlessNodes = axe._cache.get('regionlessNodes');\n\n        if (regionlessNodes) {\n          return !regionlessNodes.includes(virtualNode);\n        }\n\n        var implicitLandmarks = landmarkRoles.reduce(function (arr, role) {\n          return arr.concat(aria.implicitNodes(role));\n        }, []).filter(function (r) {\n          return r !== null;\n        });\n\n        function isRegion(virtualNode) {\n          var node = virtualNode.actualNode;\n          var explicitRole = axe.commons.aria.getRole(node, {\n            noImplicit: true\n          });\n          var ariaLive = (node.getAttribute('aria-live') || '').toLowerCase().trim();\n\n          if (['assertive', 'polite'].includes(ariaLive) || implicitAriaLiveRoles.includes(explicitRole)) {\n            return true;\n          }\n\n          if (explicitRole) {\n            return explicitRole === 'dialog' || landmarkRoles.includes(explicitRole);\n          }\n\n          return implicitLandmarks.some(function (implicitSelector) {\n            var matches = axe.utils.matchesSelector(node, implicitSelector);\n\n            if (node.nodeName.toUpperCase() === 'FORM') {\n              var titleAttr = node.getAttribute('title');\n              var title = titleAttr && titleAttr.trim() !== '' ? axe.commons.text.sanitize(titleAttr) : null;\n              return matches && (!!aria.labelVirtual(virtualNode) || !!title);\n            }\n\n            return matches;\n          });\n        }\n\n        function findRegionlessElms(virtualNode) {\n          var node = virtualNode.actualNode;\n\n          if (isRegion(virtualNode) || dom.isSkipLink(virtualNode.actualNode) && dom.getElementByReference(virtualNode.actualNode, 'href') || !dom.isVisible(node, true)) {\n            var vNode = virtualNode;\n\n            while (vNode) {\n              vNode._hasRegionDescendant = true;\n              vNode = vNode.parent;\n            }\n\n            return [];\n          } else if (node !== document.body && dom.hasContent(node, true)) {\n            return [virtualNode];\n          } else {\n            return virtualNode.children.filter(function (_ref22) {\n              var actualNode = _ref22.actualNode;\n              return actualNode.nodeType === 1;\n            }).map(findRegionlessElms).reduce(function (a, b) {\n              return a.concat(b);\n            }, []);\n          }\n        }\n\n        regionlessNodes = findRegionlessElms(axe._tree[0]).map(function (vNode) {\n          while (vNode.parent && !vNode.parent._hasRegionDescendant && vNode.parent.actualNode !== document.body) {\n            vNode = vNode.parent;\n          }\n\n          return vNode;\n        }).filter(function (vNode, index, array) {\n          return array.indexOf(vNode) === index;\n        });\n\n        axe._cache.set('regionlessNodes', regionlessNodes);\n\n        return !regionlessNodes.includes(virtualNode);\n      }\n    }, {\n      id: 'skip-link',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var target = axe.commons.dom.getElementByReference(node, 'href');\n\n        if (target) {\n          return axe.commons.dom.isVisible(target, true) || undefined;\n        }\n\n        return false;\n      }\n    }, {\n      id: 'unique-frame-title',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var title = axe.commons.text.sanitize(node.title).trim().toLowerCase();\n        this.data(title);\n        return true;\n      },\n      after: function after(results, options) {\n        var titles = {};\n        results.forEach(function (r) {\n          titles[r.data] = titles[r.data] !== undefined ? ++titles[r.data] : 0;\n        });\n        results.forEach(function (r) {\n          r.result = !!titles[r.data];\n        });\n        return results;\n      }\n    }, {\n      id: 'duplicate-id-active',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var id = node.getAttribute('id').trim();\n\n        if (!id) {\n          return true;\n        }\n\n        var root = axe.commons.dom.getRootNode(node);\n        var matchingNodes = Array.from(root.querySelectorAll('[id=\"'.concat(axe.utils.escapeSelector(id), '\"]'))).filter(function (foundNode) {\n          return foundNode !== node;\n        });\n\n        if (matchingNodes.length) {\n          this.relatedNodes(matchingNodes);\n        }\n\n        this.data(id);\n        return matchingNodes.length === 0;\n      },\n      after: function after(results, options) {\n        var uniqueIds = [];\n        return results.filter(function (r) {\n          if (uniqueIds.indexOf(r.data) === -1) {\n            uniqueIds.push(r.data);\n            return true;\n          }\n\n          return false;\n        });\n      }\n    }, {\n      id: 'duplicate-id-aria',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var id = node.getAttribute('id').trim();\n\n        if (!id) {\n          return true;\n        }\n\n        var root = axe.commons.dom.getRootNode(node);\n        var matchingNodes = Array.from(root.querySelectorAll('[id=\"'.concat(axe.utils.escapeSelector(id), '\"]'))).filter(function (foundNode) {\n          return foundNode !== node;\n        });\n\n        if (matchingNodes.length) {\n          this.relatedNodes(matchingNodes);\n        }\n\n        this.data(id);\n        return matchingNodes.length === 0;\n      },\n      after: function after(results, options) {\n        var uniqueIds = [];\n        return results.filter(function (r) {\n          if (uniqueIds.indexOf(r.data) === -1) {\n            uniqueIds.push(r.data);\n            return true;\n          }\n\n          return false;\n        });\n      }\n    }, {\n      id: 'duplicate-id',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var id = node.getAttribute('id').trim();\n\n        if (!id) {\n          return true;\n        }\n\n        var root = axe.commons.dom.getRootNode(node);\n        var matchingNodes = Array.from(root.querySelectorAll('[id=\"'.concat(axe.utils.escapeSelector(id), '\"]'))).filter(function (foundNode) {\n          return foundNode !== node;\n        });\n\n        if (matchingNodes.length) {\n          this.relatedNodes(matchingNodes);\n        }\n\n        this.data(id);\n        return matchingNodes.length === 0;\n      },\n      after: function after(results, options) {\n        var uniqueIds = [];\n        return results.filter(function (r) {\n          if (uniqueIds.indexOf(r.data) === -1) {\n            uniqueIds.push(r.data);\n            return true;\n          }\n\n          return false;\n        });\n      }\n    }, {\n      id: 'aria-label',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var _axe$commons17 = axe.commons,\n            text = _axe$commons17.text,\n            aria = _axe$commons17.aria;\n        return !!text.sanitize(aria.arialabelText(virtualNode));\n      }\n    }, {\n      id: 'aria-labelledby',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var _axe$commons18 = axe.commons,\n            text = _axe$commons18.text,\n            aria = _axe$commons18.aria;\n        return !!text.sanitize(aria.arialabelledbyText(node));\n      }\n    }, {\n      id: 'avoid-inline-spacing',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var inlineSpacingCssProperties = ['line-height', 'letter-spacing', 'word-spacing'];\n        var overriddenProperties = inlineSpacingCssProperties.filter(function (property) {\n          if (node.style.getPropertyPriority(property) === 'important') {\n            return property;\n          }\n        });\n\n        if (overriddenProperties.length > 0) {\n          this.data(overriddenProperties);\n          return false;\n        }\n\n        return true;\n      }\n    }, {\n      id: 'button-has-visible-text',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var nodeName = node.nodeName.toUpperCase();\n        var role = node.getAttribute('role');\n        var label;\n\n        if (nodeName === 'BUTTON' || role === 'button' && nodeName !== 'INPUT') {\n          label = axe.commons.text.accessibleTextVirtual(virtualNode);\n          this.data(label);\n          return !!label;\n        } else {\n          return false;\n        }\n      }\n    }, {\n      id: 'doc-has-title',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var title = document.title;\n        return !!(title ? axe.commons.text.sanitize(title).trim() : '');\n      }\n    }, {\n      id: 'exists',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        return undefined;\n      }\n    }, {\n      id: 'has-alt',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var nodeName = virtualNode.props.nodeName;\n\n        if (!['img', 'input', 'area'].includes(nodeName)) {\n          return false;\n        }\n\n        return virtualNode.hasAttr('alt');\n      }\n    }, {\n      id: 'has-visible-text',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        return axe.commons.text.accessibleTextVirtual(virtualNode).length > 0;\n      }\n    }, {\n      id: 'is-on-screen',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        return axe.commons.dom.isVisible(node, false) && !axe.commons.dom.isOffscreen(node);\n      }\n    }, {\n      id: 'non-empty-alt',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var label = virtualNode.attr('alt');\n        return !!(label ? axe.commons.text.sanitize(label).trim() : '');\n      }\n    }, {\n      id: 'non-empty-if-present',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var nodeName = node.nodeName.toUpperCase();\n        var type = (node.getAttribute('type') || '').toLowerCase();\n        var label = node.getAttribute('value');\n\n        if (label) {\n          this.data({\n            messageKey: 'has-label'\n          });\n        }\n\n        if (nodeName === 'INPUT' && ['submit', 'reset'].includes(type)) {\n          return label === null;\n        }\n\n        return false;\n      }\n    }, {\n      id: 'non-empty-title',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var text = axe.commons.text;\n        return !!text.sanitize(text.titleText(node));\n      }\n    }, {\n      id: 'non-empty-value',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var label = node.getAttribute('value');\n        return !!(label ? axe.commons.text.sanitize(label).trim() : '');\n      }\n    }, {\n      id: 'role-none',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        return node.getAttribute('role') === 'none';\n      }\n    }, {\n      id: 'role-presentation',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        return node.getAttribute('role') === 'presentation';\n      }\n    }, {\n      id: 'svg-non-empty-title',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var titleNode = virtualNode.children.find(function (_ref23) {\n          var props = _ref23.props;\n          return props.nodeName === 'title';\n        });\n        return !!titleNode && titleNode.actualNode.textContent.trim() !== '';\n      }\n    }, {\n      id: 'caption-faked',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var table = axe.commons.table.toGrid(node);\n        var firstRow = table[0];\n\n        if (table.length <= 1 || firstRow.length <= 1 || node.rows.length <= 1) {\n          return true;\n        }\n\n        return firstRow.reduce(function (out, curr, i) {\n          return out || curr !== firstRow[i + 1] && firstRow[i + 1] !== undefined;\n        }, false);\n      }\n    }, {\n      id: 'has-caption',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        return !!node.caption;\n      },\n      deprecated: true\n    }, {\n      id: 'has-summary',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        return !!node.summary;\n      },\n      deprecated: true\n    }, {\n      id: 'has-th',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var row,\n            cell,\n            badCells = [];\n\n        for (var rowIndex = 0, rowLength = node.rows.length; rowIndex < rowLength; rowIndex++) {\n          row = node.rows[rowIndex];\n\n          for (var cellIndex = 0, cellLength = row.cells.length; cellIndex < cellLength; cellIndex++) {\n            cell = row.cells[cellIndex];\n\n            if (cell.nodeName.toUpperCase() === 'TH' || ['rowheader', 'columnheader'].indexOf(cell.getAttribute('role')) !== -1) {\n              badCells.push(cell);\n            }\n          }\n        }\n\n        if (badCells.length) {\n          this.relatedNodes(badCells);\n          return true;\n        }\n\n        return false;\n      },\n      deprecated: true\n    }, {\n      id: 'html5-scope',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        if (!axe.commons.dom.isHTML5(document)) {\n          return true;\n        }\n\n        return node.nodeName.toUpperCase() === 'TH';\n      }\n    }, {\n      id: 'same-caption-summary',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        return !!(node.summary && node.caption) && node.summary.toLowerCase() === axe.commons.text.accessibleText(node.caption).toLowerCase();\n      }\n    }, {\n      id: 'scope-value',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        options = options || {};\n        var value = node.getAttribute('scope').toLowerCase();\n        var validVals = ['row', 'col', 'rowgroup', 'colgroup'] || options.values;\n        return validVals.indexOf(value) !== -1;\n      }\n    }, {\n      id: 'td-has-header',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var tableUtils = axe.commons.table;\n        var badCells = [];\n        var cells = tableUtils.getAllCells(node);\n        var tableGrid = tableUtils.toGrid(node);\n        cells.forEach(function (cell) {\n          if (axe.commons.dom.hasContent(cell) && tableUtils.isDataCell(cell) && !axe.commons.aria.label(cell)) {\n            var hasHeaders = tableUtils.getHeaders(cell, tableGrid).some(function (header) {\n              return header !== null && !!axe.commons.dom.hasContent(header);\n            });\n\n            if (!hasHeaders) {\n              badCells.push(cell);\n            }\n          }\n        });\n\n        if (badCells.length) {\n          this.relatedNodes(badCells);\n          return false;\n        }\n\n        return true;\n      }\n    }, {\n      id: 'td-headers-attr',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var cells = [];\n        var reviewCells = [];\n        var badCells = [];\n\n        for (var rowIndex = 0; rowIndex < node.rows.length; rowIndex++) {\n          var row = node.rows[rowIndex];\n\n          for (var cellIndex = 0; cellIndex < row.cells.length; cellIndex++) {\n            cells.push(row.cells[cellIndex]);\n          }\n        }\n\n        var ids = cells.reduce(function (ids, cell) {\n          if (cell.getAttribute('id')) {\n            ids.push(cell.getAttribute('id'));\n          }\n\n          return ids;\n        }, []);\n        cells.forEach(function (cell) {\n          var isSelf = false;\n          var notOfTable = false;\n\n          if (!cell.hasAttribute('headers')) {\n            return;\n          }\n\n          var headersAttr = cell.getAttribute('headers').trim();\n\n          if (!headersAttr) {\n            return reviewCells.push(cell);\n          }\n\n          var headers = axe.utils.tokenList(headersAttr);\n\n          if (headers.length !== 0) {\n            if (cell.getAttribute('id')) {\n              isSelf = headers.indexOf(cell.getAttribute('id').trim()) !== -1;\n            }\n\n            notOfTable = headers.some(function (header) {\n              return !ids.includes(header);\n            });\n\n            if (isSelf || notOfTable) {\n              badCells.push(cell);\n            }\n          }\n        });\n\n        if (badCells.length > 0) {\n          this.relatedNodes(badCells);\n          return false;\n        }\n\n        if (reviewCells.length) {\n          this.relatedNodes(reviewCells);\n          return undefined;\n        }\n\n        return true;\n      }\n    }, {\n      id: 'th-has-data-cells',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var tableUtils = axe.commons.table;\n        var cells = tableUtils.getAllCells(node);\n        var checkResult = this;\n        var reffedHeaders = [];\n        cells.forEach(function (cell) {\n          var headers = cell.getAttribute('headers');\n\n          if (headers) {\n            reffedHeaders = reffedHeaders.concat(headers.split(/\\s+/));\n          }\n\n          var ariaLabel = cell.getAttribute('aria-labelledby');\n\n          if (ariaLabel) {\n            reffedHeaders = reffedHeaders.concat(ariaLabel.split(/\\s+/));\n          }\n        });\n        var headers = cells.filter(function (cell) {\n          if (axe.commons.text.sanitize(cell.textContent) === '') {\n            return false;\n          }\n\n          return cell.nodeName.toUpperCase() === 'TH' || ['rowheader', 'columnheader'].indexOf(cell.getAttribute('role')) !== -1;\n        });\n        var tableGrid = tableUtils.toGrid(node);\n        var out = true;\n        headers.forEach(function (header) {\n          if (header.getAttribute('id') && reffedHeaders.includes(header.getAttribute('id'))) {\n            return;\n          }\n\n          var pos = tableUtils.getCellPosition(header, tableGrid);\n          var hasCell = false;\n\n          if (tableUtils.isColumnHeader(header)) {\n            hasCell = tableUtils.traverse('down', pos, tableGrid).find(function (cell) {\n              return !tableUtils.isColumnHeader(cell) && tableUtils.getHeaders(cell, tableGrid).includes(header);\n            });\n          }\n\n          if (!hasCell && tableUtils.isRowHeader(header)) {\n            hasCell = tableUtils.traverse('right', pos, tableGrid).find(function (cell) {\n              return !tableUtils.isRowHeader(cell) && tableUtils.getHeaders(cell, tableGrid).includes(header);\n            });\n          }\n\n          if (!hasCell) {\n            checkResult.relatedNodes(header);\n          }\n\n          out = out && hasCell;\n        });\n        return out ? true : undefined;\n      }\n    }, {\n      id: 'hidden-content',\n      evaluate: function evaluate(node, options, virtualNode, context) {\n        var whitelist = ['SCRIPT', 'HEAD', 'TITLE', 'NOSCRIPT', 'STYLE', 'TEMPLATE'];\n\n        if (!whitelist.includes(node.nodeName.toUpperCase()) && axe.commons.dom.hasContentVirtual(virtualNode)) {\n          var styles = window.getComputedStyle(node);\n\n          if (styles.getPropertyValue('display') === 'none') {\n            return undefined;\n          } else if (styles.getPropertyValue('visibility') === 'hidden') {\n            var parent = axe.commons.dom.getComposedParent(node);\n            var parentStyle = parent && window.getComputedStyle(parent);\n\n            if (!parentStyle || parentStyle.getPropertyValue('visibility') !== 'hidden') {\n              return undefined;\n            }\n          }\n        }\n\n        return true;\n      }\n    }],\n    commons: function () {\n      var commons = {};\n      var aria = commons.aria = {};\n      var lookupTable = aria.lookupTable = {};\n\n      var isNull = function isNull(value) {\n        return value === null;\n      };\n\n      var isNotNull = function isNotNull(value) {\n        return value !== null;\n      };\n\n      lookupTable.attributes = {\n        'aria-activedescendant': {\n          type: 'idref',\n          allowEmpty: true,\n          unsupported: false\n        },\n        'aria-atomic': {\n          type: 'boolean',\n          values: ['true', 'false'],\n          unsupported: false\n        },\n        'aria-autocomplete': {\n          type: 'nmtoken',\n          values: ['inline', 'list', 'both', 'none'],\n          unsupported: false\n        },\n        'aria-busy': {\n          type: 'boolean',\n          values: ['true', 'false'],\n          unsupported: false\n        },\n        'aria-checked': {\n          type: 'nmtoken',\n          values: ['true', 'false', 'mixed', 'undefined'],\n          unsupported: false\n        },\n        'aria-colcount': {\n          type: 'int',\n          unsupported: false\n        },\n        'aria-colindex': {\n          type: 'int',\n          unsupported: false\n        },\n        'aria-colspan': {\n          type: 'int',\n          unsupported: false\n        },\n        'aria-controls': {\n          type: 'idrefs',\n          allowEmpty: true,\n          unsupported: false\n        },\n        'aria-current': {\n          type: 'nmtoken',\n          allowEmpty: true,\n          values: ['page', 'step', 'location', 'date', 'time', 'true', 'false'],\n          unsupported: false\n        },\n        'aria-describedby': {\n          type: 'idrefs',\n          allowEmpty: true,\n          unsupported: false\n        },\n        'aria-describedat': {\n          unsupported: true,\n          unstandardized: true\n        },\n        'aria-details': {\n          type: 'idref',\n          allowEmpty: true,\n          unsupported: false\n        },\n        'aria-disabled': {\n          type: 'boolean',\n          values: ['true', 'false'],\n          unsupported: false\n        },\n        'aria-dropeffect': {\n          type: 'nmtokens',\n          values: ['copy', 'move', 'reference', 'execute', 'popup', 'none'],\n          unsupported: false\n        },\n        'aria-errormessage': {\n          type: 'idref',\n          allowEmpty: true,\n          unsupported: false\n        },\n        'aria-expanded': {\n          type: 'nmtoken',\n          values: ['true', 'false', 'undefined'],\n          unsupported: false\n        },\n        'aria-flowto': {\n          type: 'idrefs',\n          allowEmpty: true,\n          unsupported: false\n        },\n        'aria-grabbed': {\n          type: 'nmtoken',\n          values: ['true', 'false', 'undefined'],\n          unsupported: false\n        },\n        'aria-haspopup': {\n          type: 'nmtoken',\n          allowEmpty: true,\n          values: ['true', 'false', 'menu', 'listbox', 'tree', 'grid', 'dialog'],\n          unsupported: false\n        },\n        'aria-hidden': {\n          type: 'boolean',\n          values: ['true', 'false'],\n          unsupported: false\n        },\n        'aria-invalid': {\n          type: 'nmtoken',\n          allowEmpty: true,\n          values: ['true', 'false', 'spelling', 'grammar'],\n          unsupported: false\n        },\n        'aria-keyshortcuts': {\n          type: 'string',\n          allowEmpty: true,\n          unsupported: false\n        },\n        'aria-label': {\n          type: 'string',\n          allowEmpty: true,\n          unsupported: false\n        },\n        'aria-labelledby': {\n          type: 'idrefs',\n          allowEmpty: true,\n          unsupported: false\n        },\n        'aria-level': {\n          type: 'int',\n          unsupported: false\n        },\n        'aria-live': {\n          type: 'nmtoken',\n          values: ['off', 'polite', 'assertive'],\n          unsupported: false\n        },\n        'aria-modal': {\n          type: 'boolean',\n          values: ['true', 'false'],\n          unsupported: false\n        },\n        'aria-multiline': {\n          type: 'boolean',\n          values: ['true', 'false'],\n          unsupported: false\n        },\n        'aria-multiselectable': {\n          type: 'boolean',\n          values: ['true', 'false'],\n          unsupported: false\n        },\n        'aria-orientation': {\n          type: 'nmtoken',\n          values: ['horizontal', 'vertical'],\n          unsupported: false\n        },\n        'aria-owns': {\n          type: 'idrefs',\n          allowEmpty: true,\n          unsupported: false\n        },\n        'aria-placeholder': {\n          type: 'string',\n          allowEmpty: true,\n          unsupported: false\n        },\n        'aria-posinset': {\n          type: 'int',\n          unsupported: false\n        },\n        'aria-pressed': {\n          type: 'nmtoken',\n          values: ['true', 'false', 'mixed', 'undefined'],\n          unsupported: false\n        },\n        'aria-readonly': {\n          type: 'boolean',\n          values: ['true', 'false'],\n          unsupported: false\n        },\n        'aria-relevant': {\n          type: 'nmtokens',\n          values: ['additions', 'removals', 'text', 'all'],\n          unsupported: false\n        },\n        'aria-required': {\n          type: 'boolean',\n          values: ['true', 'false'],\n          unsupported: false\n        },\n        'aria-roledescription': {\n          type: 'string',\n          allowEmpty: true,\n          unsupported: false\n        },\n        'aria-rowcount': {\n          type: 'int',\n          unsupported: false\n        },\n        'aria-rowindex': {\n          type: 'int',\n          unsupported: false\n        },\n        'aria-rowspan': {\n          type: 'int',\n          unsupported: false\n        },\n        'aria-selected': {\n          type: 'nmtoken',\n          values: ['true', 'false', 'undefined'],\n          unsupported: false\n        },\n        'aria-setsize': {\n          type: 'int',\n          unsupported: false\n        },\n        'aria-sort': {\n          type: 'nmtoken',\n          values: ['ascending', 'descending', 'other', 'none'],\n          unsupported: false\n        },\n        'aria-valuemax': {\n          type: 'decimal',\n          unsupported: false\n        },\n        'aria-valuemin': {\n          type: 'decimal',\n          unsupported: false\n        },\n        'aria-valuenow': {\n          type: 'decimal',\n          unsupported: false\n        },\n        'aria-valuetext': {\n          type: 'string',\n          unsupported: false\n        }\n      };\n      lookupTable.globalAttributes = ['aria-atomic', 'aria-busy', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-details', 'aria-disabled', 'aria-dropeffect', 'aria-flowto', 'aria-grabbed', 'aria-haspopup', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-owns', 'aria-relevant', 'aria-roledescription'];\n      lookupTable.role = {\n        alert: {\n          type: 'widget',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['section']\n        },\n        alertdialog: {\n          type: 'widget',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-modal', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['dialog', 'section']\n        },\n        application: {\n          type: 'landmark',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['article', 'audio', 'embed', 'iframe', 'object', 'section', 'svg', 'video']\n        },\n        article: {\n          type: 'structure',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-posinset', 'aria-setsize', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          implicit: ['article'],\n          unsupported: false\n        },\n        banner: {\n          type: 'landmark',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          implicit: ['header'],\n          unsupported: false,\n          allowedElements: ['section']\n        },\n        button: {\n          type: 'widget',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-pressed', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author', 'contents'],\n          context: null,\n          implicit: ['button', 'input[type=\"button\"]', 'input[type=\"image\"]', 'input[type=\"reset\"]', 'input[type=\"submit\"]', 'summary'],\n          unsupported: false,\n          allowedElements: [{\n            nodeName: 'a',\n            attributes: {\n              href: isNotNull\n            }\n          }]\n        },\n        cell: {\n          type: 'structure',\n          attributes: {\n            allowed: ['aria-colindex', 'aria-colspan', 'aria-rowindex', 'aria-rowspan', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author', 'contents'],\n          context: ['row'],\n          implicit: ['td', 'th'],\n          unsupported: false\n        },\n        checkbox: {\n          type: 'widget',\n          attributes: {\n            allowed: ['aria-checked', 'aria-required', 'aria-readonly', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author', 'contents'],\n          context: null,\n          implicit: ['input[type=\"checkbox\"]'],\n          unsupported: false,\n          allowedElements: ['button']\n        },\n        columnheader: {\n          type: 'structure',\n          attributes: {\n            allowed: ['aria-colindex', 'aria-colspan', 'aria-expanded', 'aria-rowindex', 'aria-rowspan', 'aria-required', 'aria-readonly', 'aria-selected', 'aria-sort', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author', 'contents'],\n          context: ['row'],\n          implicit: ['th'],\n          unsupported: false\n        },\n        combobox: {\n          type: 'composite',\n          attributes: {\n            allowed: ['aria-autocomplete', 'aria-required', 'aria-activedescendant', 'aria-orientation', 'aria-errormessage'],\n            required: ['aria-expanded']\n          },\n          owned: {\n            all: ['listbox', 'tree', 'grid', 'dialog', 'textbox']\n          },\n          nameFrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: [{\n            nodeName: 'input',\n            properties: {\n              type: ['text', 'search', 'tel', 'url', 'email']\n            }\n          }]\n        },\n        command: {\n          nameFrom: ['author'],\n          type: 'abstract',\n          unsupported: false\n        },\n        complementary: {\n          type: 'landmark',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          implicit: ['aside'],\n          unsupported: false,\n          allowedElements: ['section']\n        },\n        composite: {\n          nameFrom: ['author'],\n          type: 'abstract',\n          unsupported: false\n        },\n        contentinfo: {\n          type: 'landmark',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          implicit: ['footer'],\n          unsupported: false,\n          allowedElements: ['section']\n        },\n        definition: {\n          type: 'structure',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          implicit: ['dd', 'dfn'],\n          unsupported: false\n        },\n        dialog: {\n          type: 'widget',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-modal', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          implicit: ['dialog'],\n          unsupported: false,\n          allowedElements: ['section']\n        },\n        directory: {\n          type: 'structure',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author', 'contents'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['ol', 'ul']\n        },\n        document: {\n          type: 'structure',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          implicit: ['body'],\n          unsupported: false,\n          allowedElements: ['article', 'embed', 'iframe', 'object', 'section', 'svg']\n        },\n        'doc-abstract': {\n          type: 'section',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['section']\n        },\n        'doc-acknowledgments': {\n          type: 'landmark',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['section']\n        },\n        'doc-afterword': {\n          type: 'landmark',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['section']\n        },\n        'doc-appendix': {\n          type: 'landmark',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['section']\n        },\n        'doc-backlink': {\n          type: 'link',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author', 'contents'],\n          context: null,\n          unsupported: false,\n          allowedElements: [{\n            nodeName: 'a',\n            attributes: {\n              href: isNotNull\n            }\n          }]\n        },\n        'doc-biblioentry': {\n          type: 'listitem',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-level', 'aria-posinset', 'aria-setsize', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author'],\n          context: ['doc-bibliography'],\n          unsupported: false,\n          allowedElements: ['li']\n        },\n        'doc-bibliography': {\n          type: 'landmark',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: {\n            one: ['doc-biblioentry']\n          },\n          nameFrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['section']\n        },\n        'doc-biblioref': {\n          type: 'link',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author', 'contents'],\n          context: null,\n          unsupported: false,\n          allowedElements: [{\n            nodeName: 'a',\n            attributes: {\n              href: isNotNull\n            }\n          }]\n        },\n        'doc-chapter': {\n          type: 'landmark',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          namefrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['section']\n        },\n        'doc-colophon': {\n          type: 'section',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          namefrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['section']\n        },\n        'doc-conclusion': {\n          type: 'landmark',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          namefrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['section']\n        },\n        'doc-cover': {\n          type: 'img',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          namefrom: ['author'],\n          context: null,\n          unsupported: false\n        },\n        'doc-credit': {\n          type: 'section',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          namefrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['section']\n        },\n        'doc-credits': {\n          type: 'landmark',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          namefrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['section']\n        },\n        'doc-dedication': {\n          type: 'section',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          namefrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['section']\n        },\n        'doc-endnote': {\n          type: 'listitem',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-level', 'aria-posinset', 'aria-setsize', 'aria-errormessage']\n          },\n          owned: null,\n          namefrom: ['author'],\n          context: ['doc-endnotes'],\n          unsupported: false,\n          allowedElements: ['li']\n        },\n        'doc-endnotes': {\n          type: 'landmark',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: {\n            one: ['doc-endnote']\n          },\n          namefrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['section']\n        },\n        'doc-epigraph': {\n          type: 'section',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          namefrom: ['author'],\n          context: null,\n          unsupported: false\n        },\n        'doc-epilogue': {\n          type: 'landmark',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          namefrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['section']\n        },\n        'doc-errata': {\n          type: 'landmark',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          namefrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['section']\n        },\n        'doc-example': {\n          type: 'section',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          namefrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['aside', 'section']\n        },\n        'doc-footnote': {\n          type: 'section',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          namefrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['aside', 'footer', 'header']\n        },\n        'doc-foreword': {\n          type: 'landmark',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          namefrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['section']\n        },\n        'doc-glossary': {\n          type: 'landmark',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: ['term', 'definition'],\n          namefrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['dl']\n        },\n        'doc-glossref': {\n          type: 'link',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          namefrom: ['author', 'contents'],\n          context: null,\n          unsupported: false,\n          allowedElements: [{\n            nodeName: 'a',\n            attributes: {\n              href: isNotNull\n            }\n          }]\n        },\n        'doc-index': {\n          type: 'navigation',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          namefrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['nav', 'section']\n        },\n        'doc-introduction': {\n          type: 'landmark',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          namefrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['section']\n        },\n        'doc-noteref': {\n          type: 'link',\n          attributes: {\n            allowed: ['aria-expanded']\n          },\n          owned: null,\n          namefrom: ['author', 'contents'],\n          context: null,\n          unsupported: false,\n          allowedElements: [{\n            nodeName: 'a',\n            attributes: {\n              href: isNotNull\n            }\n          }]\n        },\n        'doc-notice': {\n          type: 'note',\n          attributes: {\n            allowed: ['aria-expanded']\n          },\n          owned: null,\n          namefrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['section']\n        },\n        'doc-pagebreak': {\n          type: 'separator',\n          attributes: {\n            allowed: ['aria-expanded']\n          },\n          owned: null,\n          namefrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['hr']\n        },\n        'doc-pagelist': {\n          type: 'navigation',\n          attributes: {\n            allowed: ['aria-expanded']\n          },\n          owned: null,\n          namefrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['nav', 'section']\n        },\n        'doc-part': {\n          type: 'landmark',\n          attributes: {\n            allowed: ['aria-expanded']\n          },\n          owned: null,\n          namefrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['section']\n        },\n        'doc-preface': {\n          type: 'landmark',\n          attributes: {\n            allowed: ['aria-expanded']\n          },\n          owned: null,\n          namefrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['section']\n        },\n        'doc-prologue': {\n          type: 'landmark',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          namefrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['section']\n        },\n        'doc-pullquote': {\n          type: 'none',\n          attributes: {\n            allowed: ['aria-expanded']\n          },\n          owned: null,\n          namefrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['aside', 'section']\n        },\n        'doc-qna': {\n          type: 'section',\n          attributes: {\n            allowed: ['aria-expanded']\n          },\n          owned: null,\n          namefrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['section']\n        },\n        'doc-subtitle': {\n          type: 'sectionhead',\n          attributes: {\n            allowed: ['aria-expanded']\n          },\n          owned: null,\n          namefrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: {\n            nodeName: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6']\n          }\n        },\n        'doc-tip': {\n          type: 'note',\n          attributes: {\n            allowed: ['aria-expanded']\n          },\n          owned: null,\n          namefrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['aside']\n        },\n        'doc-toc': {\n          type: 'navigation',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          namefrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['nav', 'section']\n        },\n        feed: {\n          type: 'structure',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: {\n            one: ['article']\n          },\n          nameFrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['article', 'aside', 'section']\n        },\n        figure: {\n          type: 'structure',\n          unsupported: false\n        },\n        form: {\n          type: 'landmark',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          implicit: ['form'],\n          unsupported: false\n        },\n        grid: {\n          type: 'composite',\n          attributes: {\n            allowed: ['aria-activedescendant', 'aria-expanded', 'aria-colcount', 'aria-level', 'aria-multiselectable', 'aria-readonly', 'aria-rowcount', 'aria-errormessage']\n          },\n          owned: {\n            one: ['rowgroup', 'row']\n          },\n          nameFrom: ['author'],\n          context: null,\n          implicit: ['table'],\n          unsupported: false\n        },\n        gridcell: {\n          type: 'widget',\n          attributes: {\n            allowed: ['aria-colindex', 'aria-colspan', 'aria-expanded', 'aria-rowindex', 'aria-rowspan', 'aria-selected', 'aria-readonly', 'aria-required', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author', 'contents'],\n          context: ['row'],\n          implicit: ['td', 'th'],\n          unsupported: false\n        },\n        group: {\n          type: 'structure',\n          attributes: {\n            allowed: ['aria-activedescendant', 'aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          implicit: ['details', 'optgroup'],\n          unsupported: false,\n          allowedElements: ['dl', 'figcaption', 'fieldset', 'figure', 'footer', 'header', 'ol', 'ul']\n        },\n        heading: {\n          type: 'structure',\n          attributes: {\n            required: ['aria-level'],\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author', 'contents'],\n          context: null,\n          implicit: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'],\n          unsupported: false\n        },\n        img: {\n          type: 'structure',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          implicit: ['img'],\n          unsupported: false,\n          allowedElements: ['embed', 'iframe', 'object', 'svg']\n        },\n        input: {\n          nameFrom: ['author'],\n          type: 'abstract',\n          unsupported: false\n        },\n        landmark: {\n          nameFrom: ['author'],\n          type: 'abstract',\n          unsupported: false\n        },\n        link: {\n          type: 'widget',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author', 'contents'],\n          context: null,\n          implicit: ['a[href]'],\n          unsupported: false,\n          allowedElements: ['button', {\n            nodeName: 'input',\n            properties: {\n              type: ['image', 'button']\n            }\n          }]\n        },\n        list: {\n          type: 'structure',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: {\n            all: ['listitem']\n          },\n          nameFrom: ['author'],\n          context: null,\n          implicit: ['ol', 'ul', 'dl'],\n          unsupported: false\n        },\n        listbox: {\n          type: 'composite',\n          attributes: {\n            allowed: ['aria-activedescendant', 'aria-multiselectable', 'aria-readonly', 'aria-required', 'aria-expanded', 'aria-orientation', 'aria-errormessage']\n          },\n          owned: {\n            all: ['option']\n          },\n          nameFrom: ['author'],\n          context: null,\n          implicit: ['select'],\n          unsupported: false,\n          allowedElements: ['ol', 'ul']\n        },\n        listitem: {\n          type: 'structure',\n          attributes: {\n            allowed: ['aria-level', 'aria-posinset', 'aria-setsize', 'aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author', 'contents'],\n          context: ['list'],\n          implicit: ['li', 'dt'],\n          unsupported: false\n        },\n        log: {\n          type: 'widget',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['section']\n        },\n        main: {\n          type: 'landmark',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          implicit: ['main'],\n          unsupported: false,\n          allowedElements: ['article', 'section']\n        },\n        marquee: {\n          type: 'widget',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['section']\n        },\n        math: {\n          type: 'structure',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          implicit: ['math'],\n          unsupported: false\n        },\n        menu: {\n          type: 'composite',\n          attributes: {\n            allowed: ['aria-activedescendant', 'aria-expanded', 'aria-orientation', 'aria-errormessage']\n          },\n          owned: {\n            one: ['menuitem', 'menuitemradio', 'menuitemcheckbox']\n          },\n          nameFrom: ['author'],\n          context: null,\n          implicit: ['menu[type=\"context\"]'],\n          unsupported: false,\n          allowedElements: ['ol', 'ul']\n        },\n        menubar: {\n          type: 'composite',\n          attributes: {\n            allowed: ['aria-activedescendant', 'aria-expanded', 'aria-orientation', 'aria-errormessage']\n          },\n          owned: {\n            one: ['menuitem', 'menuitemradio', 'menuitemcheckbox']\n          },\n          nameFrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['ol', 'ul']\n        },\n        menuitem: {\n          type: 'widget',\n          attributes: {\n            allowed: ['aria-posinset', 'aria-setsize', 'aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author', 'contents'],\n          context: ['menu', 'menubar'],\n          implicit: ['menuitem[type=\"command\"]'],\n          unsupported: false,\n          allowedElements: ['button', 'li', {\n            nodeName: 'iput',\n            properties: {\n              type: ['image', 'button']\n            }\n          }, {\n            nodeName: 'a',\n            attributes: {\n              href: isNotNull\n            }\n          }]\n        },\n        menuitemcheckbox: {\n          type: 'widget',\n          attributes: {\n            allowed: ['aria-checked', 'aria-posinset', 'aria-setsize', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author', 'contents'],\n          context: ['menu', 'menubar'],\n          implicit: ['menuitem[type=\"checkbox\"]'],\n          unsupported: false,\n          allowedElements: [{\n            nodeName: ['button', 'li']\n          }, {\n            nodeName: 'input',\n            properties: {\n              type: ['checkbox', 'image', 'button']\n            }\n          }, {\n            nodeName: 'a',\n            attributes: {\n              href: isNotNull\n            }\n          }]\n        },\n        menuitemradio: {\n          type: 'widget',\n          attributes: {\n            allowed: ['aria-checked', 'aria-selected', 'aria-posinset', 'aria-setsize', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author', 'contents'],\n          context: ['menu', 'menubar'],\n          implicit: ['menuitem[type=\"radio\"]'],\n          unsupported: false,\n          allowedElements: [{\n            nodeName: ['button', 'li']\n          }, {\n            nodeName: 'input',\n            properties: {\n              type: ['image', 'button', 'radio']\n            }\n          }, {\n            nodeName: 'a',\n            attributes: {\n              href: isNotNull\n            }\n          }]\n        },\n        navigation: {\n          type: 'landmark',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          implicit: ['nav'],\n          unsupported: false,\n          allowedElements: ['section']\n        },\n        none: {\n          type: 'structure',\n          attributes: null,\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: [{\n            nodeName: ['article', 'aside', 'dl', 'embed', 'figcaption', 'fieldset', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'iframe', 'li', 'ol', 'section', 'ul']\n          }, {\n            nodeName: 'img',\n            attributes: {\n              alt: isNotNull\n            }\n          }]\n        },\n        note: {\n          type: 'structure',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['aside']\n        },\n        option: {\n          type: 'widget',\n          attributes: {\n            allowed: ['aria-selected', 'aria-posinset', 'aria-setsize', 'aria-checked', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author', 'contents'],\n          context: ['listbox'],\n          implicit: ['option'],\n          unsupported: false,\n          allowedElements: [{\n            nodeName: ['button', 'li']\n          }, {\n            nodeName: 'input',\n            properties: {\n              type: ['checkbox', 'button']\n            }\n          }, {\n            nodeName: 'a',\n            attributes: {\n              href: isNotNull\n            }\n          }]\n        },\n        presentation: {\n          type: 'structure',\n          attributes: null,\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: [{\n            nodeName: ['article', 'aside', 'dl', 'embed', 'figcaption', 'fieldset', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'iframe', 'li', 'ol', 'section', 'ul']\n          }, {\n            nodeName: 'img',\n            attributes: {\n              alt: isNotNull\n            }\n          }]\n        },\n        progressbar: {\n          type: 'widget',\n          attributes: {\n            allowed: ['aria-valuetext', 'aria-valuenow', 'aria-valuemax', 'aria-valuemin', 'aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          implicit: ['progress'],\n          unsupported: false\n        },\n        radio: {\n          type: 'widget',\n          attributes: {\n            allowed: ['aria-selected', 'aria-posinset', 'aria-setsize', 'aria-required', 'aria-errormessage', 'aria-checked']\n          },\n          owned: null,\n          nameFrom: ['author', 'contents'],\n          context: null,\n          implicit: ['input[type=\"radio\"]'],\n          unsupported: false,\n          allowedElements: [{\n            nodeName: ['button', 'li']\n          }, {\n            nodeName: 'input',\n            properties: {\n              type: ['image', 'button']\n            }\n          }]\n        },\n        radiogroup: {\n          type: 'composite',\n          attributes: {\n            allowed: ['aria-activedescendant', 'aria-required', 'aria-expanded', 'aria-readonly', 'aria-errormessage']\n          },\n          owned: {\n            all: ['radio']\n          },\n          nameFrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: {\n            nodeName: ['ol', 'ul']\n          }\n        },\n        range: {\n          nameFrom: ['author'],\n          type: 'abstract',\n          unsupported: false\n        },\n        region: {\n          type: 'landmark',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          implicit: ['section[aria-label]', 'section[aria-labelledby]', 'section[title]'],\n          unsupported: false,\n          allowedElements: {\n            nodeName: ['article', 'aside']\n          }\n        },\n        roletype: {\n          type: 'abstract',\n          unsupported: false\n        },\n        row: {\n          type: 'structure',\n          attributes: {\n            allowed: ['aria-activedescendant', 'aria-colindex', 'aria-expanded', 'aria-level', 'aria-selected', 'aria-rowindex', 'aria-errormessage']\n          },\n          owned: {\n            one: ['cell', 'columnheader', 'rowheader', 'gridcell']\n          },\n          nameFrom: ['author', 'contents'],\n          context: ['rowgroup', 'grid', 'treegrid', 'table'],\n          implicit: ['tr'],\n          unsupported: false\n        },\n        rowgroup: {\n          type: 'structure',\n          attributes: {\n            allowed: ['aria-activedescendant', 'aria-expanded', 'aria-errormessage']\n          },\n          owned: {\n            all: ['row']\n          },\n          nameFrom: ['author', 'contents'],\n          context: ['grid', 'table', 'treegrid'],\n          implicit: ['tbody', 'thead', 'tfoot'],\n          unsupported: false\n        },\n        rowheader: {\n          type: 'structure',\n          attributes: {\n            allowed: ['aria-colindex', 'aria-colspan', 'aria-expanded', 'aria-rowindex', 'aria-rowspan', 'aria-required', 'aria-readonly', 'aria-selected', 'aria-sort', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author', 'contents'],\n          context: ['row'],\n          implicit: ['th'],\n          unsupported: false\n        },\n        scrollbar: {\n          type: 'widget',\n          attributes: {\n            required: ['aria-controls', 'aria-valuenow'],\n            allowed: ['aria-valuetext', 'aria-orientation', 'aria-errormessage', 'aria-valuemax', 'aria-valuemin']\n          },\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          unsupported: false\n        },\n        search: {\n          type: 'landmark',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: {\n            nodeName: ['aside', 'form', 'section']\n          }\n        },\n        searchbox: {\n          type: 'widget',\n          attributes: {\n            allowed: ['aria-activedescendant', 'aria-autocomplete', 'aria-multiline', 'aria-readonly', 'aria-required', 'aria-placeholder', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          implicit: ['input[type=\"search\"]'],\n          unsupported: false,\n          allowedElements: {\n            nodeName: 'input',\n            properties: {\n              type: 'text'\n            }\n          }\n        },\n        section: {\n          nameFrom: ['author', 'contents'],\n          type: 'abstract',\n          unsupported: false\n        },\n        sectionhead: {\n          nameFrom: ['author', 'contents'],\n          type: 'abstract',\n          unsupported: false\n        },\n        select: {\n          nameFrom: ['author'],\n          type: 'abstract',\n          unsupported: false\n        },\n        separator: {\n          type: 'structure',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-orientation', 'aria-valuenow', 'aria-valuemax', 'aria-valuemin', 'aria-valuetext', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          implicit: ['hr'],\n          unsupported: false,\n          allowedElements: ['li']\n        },\n        slider: {\n          type: 'widget',\n          attributes: {\n            allowed: ['aria-valuetext', 'aria-orientation', 'aria-readonly', 'aria-errormessage', 'aria-valuemax', 'aria-valuemin'],\n            required: ['aria-valuenow']\n          },\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          implicit: ['input[type=\"range\"]'],\n          unsupported: false\n        },\n        spinbutton: {\n          type: 'widget',\n          attributes: {\n            allowed: ['aria-valuetext', 'aria-required', 'aria-readonly', 'aria-errormessage', 'aria-valuemax', 'aria-valuemin'],\n            required: ['aria-valuenow']\n          },\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          implicit: ['input[type=\"number\"]'],\n          unsupported: false,\n          allowedElements: {\n            nodeName: 'input',\n            properties: {\n              type: ['text', 'tel']\n            }\n          }\n        },\n        status: {\n          type: 'widget',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          implicit: ['output'],\n          unsupported: false,\n          allowedElements: ['section']\n        },\n        structure: {\n          type: 'abstract',\n          unsupported: false\n        },\n        switch: {\n          type: 'widget',\n          attributes: {\n            allowed: ['aria-errormessage'],\n            required: ['aria-checked']\n          },\n          owned: null,\n          nameFrom: ['author', 'contents'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['button', {\n            nodeName: 'input',\n            properties: {\n              type: ['checkbox', 'image', 'button']\n            }\n          }, {\n            nodeName: 'a',\n            attributes: {\n              href: isNotNull\n            }\n          }]\n        },\n        tab: {\n          type: 'widget',\n          attributes: {\n            allowed: ['aria-selected', 'aria-expanded', 'aria-setsize', 'aria-posinset', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author', 'contents'],\n          context: ['tablist'],\n          unsupported: false,\n          allowedElements: [{\n            nodeName: ['button', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'li']\n          }, {\n            nodeName: 'input',\n            properties: {\n              type: 'button'\n            }\n          }, {\n            nodeName: 'a',\n            attributes: {\n              href: isNotNull\n            }\n          }]\n        },\n        table: {\n          type: 'structure',\n          attributes: {\n            allowed: ['aria-colcount', 'aria-rowcount', 'aria-errormessage']\n          },\n          owned: {\n            one: ['rowgroup', 'row']\n          },\n          nameFrom: ['author'],\n          context: null,\n          implicit: ['table'],\n          unsupported: false\n        },\n        tablist: {\n          type: 'composite',\n          attributes: {\n            allowed: ['aria-activedescendant', 'aria-expanded', 'aria-level', 'aria-multiselectable', 'aria-orientation', 'aria-errormessage']\n          },\n          owned: {\n            all: ['tab']\n          },\n          nameFrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['ol', 'ul']\n        },\n        tabpanel: {\n          type: 'widget',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['section']\n        },\n        term: {\n          type: 'structure',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author', 'contents'],\n          context: null,\n          implicit: ['dt'],\n          unsupported: false\n        },\n        textbox: {\n          type: 'widget',\n          attributes: {\n            allowed: ['aria-activedescendant', 'aria-autocomplete', 'aria-multiline', 'aria-readonly', 'aria-required', 'aria-placeholder', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          implicit: ['input[type=\"text\"]', 'input[type=\"email\"]', 'input[type=\"password\"]', 'input[type=\"tel\"]', 'input[type=\"url\"]', 'input:not([type])', 'textarea'],\n          unsupported: false\n        },\n        timer: {\n          type: 'widget',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          unsupported: false\n        },\n        toolbar: {\n          type: 'structure',\n          attributes: {\n            allowed: ['aria-activedescendant', 'aria-expanded', 'aria-orientation', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author'],\n          context: null,\n          implicit: ['menu[type=\"toolbar\"]'],\n          unsupported: false,\n          allowedElements: ['ol', 'ul']\n        },\n        tooltip: {\n          type: 'structure',\n          attributes: {\n            allowed: ['aria-expanded', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author', 'contents'],\n          context: null,\n          unsupported: false\n        },\n        tree: {\n          type: 'composite',\n          attributes: {\n            allowed: ['aria-activedescendant', 'aria-multiselectable', 'aria-required', 'aria-expanded', 'aria-orientation', 'aria-errormessage']\n          },\n          owned: {\n            all: ['treeitem']\n          },\n          nameFrom: ['author'],\n          context: null,\n          unsupported: false,\n          allowedElements: ['ol', 'ul']\n        },\n        treegrid: {\n          type: 'composite',\n          attributes: {\n            allowed: ['aria-activedescendant', 'aria-colcount', 'aria-expanded', 'aria-level', 'aria-multiselectable', 'aria-readonly', 'aria-required', 'aria-rowcount', 'aria-orientation', 'aria-errormessage']\n          },\n          owned: {\n            one: ['rowgroup', 'row']\n          },\n          nameFrom: ['author'],\n          context: null,\n          unsupported: false\n        },\n        treeitem: {\n          type: 'widget',\n          attributes: {\n            allowed: ['aria-checked', 'aria-selected', 'aria-expanded', 'aria-level', 'aria-posinset', 'aria-setsize', 'aria-errormessage']\n          },\n          owned: null,\n          nameFrom: ['author', 'contents'],\n          context: ['group', 'tree'],\n          unsupported: false,\n          allowedElements: ['li', {\n            nodeName: 'a',\n            attributes: {\n              href: isNotNull\n            }\n          }]\n        },\n        widget: {\n          type: 'abstract',\n          unsupported: false\n        },\n        window: {\n          nameFrom: ['author'],\n          type: 'abstract',\n          unsupported: false\n        }\n      };\n      lookupTable.elementsAllowedNoRole = [{\n        nodeName: ['base', 'body', 'caption', 'col', 'colgroup', 'datalist', 'dd', 'details', 'dt', 'head', 'html', 'keygen', 'label', 'legend', 'main', 'map', 'math', 'meta', 'meter', 'noscript', 'optgroup', 'param', 'picture', 'progress', 'script', 'source', 'style', 'template', 'textarea', 'title', 'track']\n      }, {\n        nodeName: 'area',\n        attributes: {\n          href: isNotNull\n        }\n      }, {\n        nodeName: 'input',\n        properties: {\n          type: ['color', 'data', 'datatime', 'file', 'hidden', 'month', 'number', 'password', 'range', 'reset', 'submit', 'time', 'week']\n        }\n      }, {\n        nodeName: 'link',\n        attributes: {\n          href: isNotNull\n        }\n      }, {\n        nodeName: 'menu',\n        attributes: {\n          type: 'context'\n        }\n      }, {\n        nodeName: 'menuitem',\n        attributes: {\n          type: ['command', 'checkbox', 'radio']\n        }\n      }, {\n        nodeName: 'select',\n        condition: function condition(vNode) {\n          if (!(vNode instanceof axe.AbstractVirtualNode)) {\n            vNode = axe.utils.getNodeFromTree(vNode);\n          }\n\n          return Number(vNode.attr('size')) > 1;\n        },\n        properties: {\n          multiple: true\n        }\n      }, {\n        nodeName: ['clippath', 'cursor', 'defs', 'desc', 'feblend', 'fecolormatrix', 'fecomponenttransfer', 'fecomposite', 'feconvolvematrix', 'fediffuselighting', 'fedisplacementmap', 'fedistantlight', 'fedropshadow', 'feflood', 'fefunca', 'fefuncb', 'fefuncg', 'fefuncr', 'fegaussianblur', 'feimage', 'femerge', 'femergenode', 'femorphology', 'feoffset', 'fepointlight', 'fespecularlighting', 'fespotlight', 'fetile', 'feturbulence', 'filter', 'hatch', 'hatchpath', 'lineargradient', 'marker', 'mask', 'meshgradient', 'meshpatch', 'meshrow', 'metadata', 'mpath', 'pattern', 'radialgradient', 'solidcolor', 'stop', 'switch', 'view']\n      }];\n      lookupTable.elementsAllowedAnyRole = [{\n        nodeName: 'a',\n        attributes: {\n          href: isNull\n        }\n      }, {\n        nodeName: 'img',\n        attributes: {\n          alt: isNull\n        }\n      }, {\n        nodeName: ['abbr', 'address', 'canvas', 'div', 'p', 'pre', 'blockquote', 'ins', 'del', 'output', 'span', 'table', 'tbody', 'thead', 'tfoot', 'td', 'em', 'strong', 'small', 's', 'cite', 'q', 'dfn', 'abbr', 'time', 'code', 'var', 'samp', 'kbd', 'sub', 'sup', 'i', 'b', 'u', 'mark', 'ruby', 'rt', 'rp', 'bdi', 'bdo', 'br', 'wbr', 'th', 'tr']\n      }];\n      lookupTable.evaluateRoleForElement = {\n        A: function A(_ref24) {\n          var node = _ref24.node,\n              out = _ref24.out;\n\n          if (node.namespaceURI === 'http://www.w3.org/2000/svg') {\n            return true;\n          }\n\n          if (node.href.length) {\n            return out;\n          }\n\n          return true;\n        },\n        AREA: function AREA(_ref25) {\n          var node = _ref25.node;\n          return !node.href;\n        },\n        BUTTON: function BUTTON(_ref26) {\n          var node = _ref26.node,\n              role = _ref26.role,\n              out = _ref26.out;\n\n          if (node.getAttribute('type') === 'menu') {\n            return role === 'menuitem';\n          }\n\n          return out;\n        },\n        IMG: function IMG(_ref27) {\n          var node = _ref27.node,\n              role = _ref27.role,\n              out = _ref27.out;\n\n          switch (node.alt) {\n            case null:\n              return out;\n\n            case '':\n              return role === 'presentation' || role === 'none';\n\n            default:\n              return role !== 'presentation' && role !== 'none';\n          }\n        },\n        INPUT: function INPUT(_ref28) {\n          var node = _ref28.node,\n              role = _ref28.role,\n              out = _ref28.out;\n\n          switch (node.type) {\n            case 'button':\n            case 'image':\n              return out;\n\n            case 'checkbox':\n              if (role === 'button' && node.hasAttribute('aria-pressed')) {\n                return true;\n              }\n\n              return out;\n\n            case 'radio':\n              return role === 'menuitemradio';\n\n            case 'text':\n              return role === 'combobox' || role === 'searchbox' || role === 'spinbutton';\n\n            case 'tel':\n              return role === 'combobox' || role === 'spinbutton';\n\n            case 'url':\n            case 'search':\n            case 'email':\n              return role === 'combobox';\n\n            default:\n              return false;\n          }\n        },\n        LI: function LI(_ref29) {\n          var node = _ref29.node,\n              out = _ref29.out;\n          var hasImplicitListitemRole = axe.utils.matchesSelector(node, 'ol li, ul li');\n\n          if (hasImplicitListitemRole) {\n            return out;\n          }\n\n          return true;\n        },\n        MENU: function MENU(_ref30) {\n          var node = _ref30.node;\n\n          if (node.getAttribute('type') === 'context') {\n            return false;\n          }\n\n          return true;\n        },\n        OPTION: function OPTION(_ref31) {\n          var node = _ref31.node;\n          var withinOptionList = axe.utils.matchesSelector(node, 'select > option, datalist > option, optgroup > option');\n          return !withinOptionList;\n        },\n        SELECT: function SELECT(_ref32) {\n          var node = _ref32.node,\n              role = _ref32.role;\n          return !node.multiple && node.size <= 1 && role === 'menu';\n        },\n        SVG: function SVG(_ref33) {\n          var node = _ref33.node,\n              out = _ref33.out;\n\n          if (node.parentNode && node.parentNode.namespaceURI === 'http://www.w3.org/2000/svg') {\n            return true;\n          }\n\n          return out;\n        }\n      };\n      lookupTable.rolesOfType = {\n        widget: ['button', 'checkbox', 'dialog', 'gridcell', 'link', 'log', 'marquee', 'menuitem', 'menuitemcheckbox', 'menuitemradio', 'option', 'progressbar', 'radio', 'scrollbar', 'searchbox', 'slider', 'spinbutton', 'status', 'switch', 'tab', 'tabpanel', 'textbox', 'timer', 'tooltip', 'tree', 'treeitem']\n      };\n      var color = {};\n      commons.color = color;\n      var dom = commons.dom = {};\n      var forms = {};\n      commons.forms = forms;\n\n      function matches(vNode, definition) {\n        return matches.fromDefinition(vNode, definition);\n      }\n\n      commons.matches = matches;\n      var table = commons.table = {};\n      var text = commons.text = {\n        EdgeFormDefaults: {}\n      };\n      var utils = commons.utils = axe.utils;\n\n      aria.arialabelText = function arialabelText(node) {\n        if (node instanceof axe.AbstractVirtualNode === false) {\n          if (node.nodeType !== 1) {\n            return '';\n          }\n\n          node = axe.utils.getNodeFromTree(node);\n        }\n\n        return node.attr('aria-label') || '';\n      };\n\n      aria.arialabelledbyText = function arialabelledbyText(node) {\n        var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        node = node.actualNode || node;\n\n        if (node.nodeType !== 1 || context.inLabelledByContext || context.inControlContext) {\n          return '';\n        }\n\n        var refs = dom.idrefs(node, 'aria-labelledby').filter(function (elm) {\n          return elm;\n        });\n        return refs.reduce(function (accessibleName, elm) {\n          var accessibleNameAdd = text.accessibleText(elm, _extends({\n            inLabelledByContext: true,\n            startNode: context.startNode || node\n          }, context));\n\n          if (!accessibleName) {\n            return accessibleNameAdd;\n          } else {\n            return ''.concat(accessibleName, ' ').concat(accessibleNameAdd);\n          }\n        }, '');\n      };\n\n      aria.requiredAttr = function (role) {\n        var roles = aria.lookupTable.role[role],\n            attr = roles && roles.attributes && roles.attributes.required;\n        return attr || [];\n      };\n\n      aria.allowedAttr = function (role) {\n        var roles = aria.lookupTable.role[role],\n            attr = roles && roles.attributes && roles.attributes.allowed || [],\n            requiredAttr = roles && roles.attributes && roles.attributes.required || [];\n        return attr.concat(aria.lookupTable.globalAttributes).concat(requiredAttr);\n      };\n\n      aria.validateAttr = function validateAttr(att) {\n        var attrDefinition = aria.lookupTable.attributes[att];\n        return !!attrDefinition;\n      };\n\n      var dpubRoles = ['doc-backlink', 'doc-biblioentry', 'doc-biblioref', 'doc-cover', 'doc-endnote', 'doc-glossref', 'doc-noteref'];\n\n      function getRoleSegments(node) {\n        var roles = [];\n\n        if (!node) {\n          return roles;\n        }\n\n        if (node.hasAttribute('role')) {\n          var nodeRoles = axe.utils.tokenList(node.getAttribute('role').toLowerCase());\n          roles = roles.concat(nodeRoles);\n        }\n\n        if (node.hasAttributeNS('http://www.idpf.org/2007/ops', 'type')) {\n          var epubRoles = axe.utils.tokenList(node.getAttributeNS('http://www.idpf.org/2007/ops', 'type').toLowerCase()).map(function (role) {\n            return 'doc-'.concat(role);\n          });\n          roles = roles.concat(epubRoles);\n        }\n\n        roles = roles.filter(function (role) {\n          return axe.commons.aria.isValidRole(role);\n        });\n        return roles;\n      }\n\n      aria.getElementUnallowedRoles = function getElementUnallowedRoles(node) {\n        var allowImplicit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n        var tagName = node.nodeName.toUpperCase();\n\n        if (!axe.utils.isHtmlElement(node)) {\n          return [];\n        }\n\n        var roleSegments = getRoleSegments(node);\n        var implicitRole = axe.commons.aria.implicitRole(node);\n        var unallowedRoles = roleSegments.filter(function (role) {\n          if (allowImplicit && role === implicitRole) {\n            return false;\n          }\n\n          if (allowImplicit && dpubRoles.includes(role)) {\n            var roleType = axe.commons.aria.getRoleType(role);\n\n            if (implicitRole !== roleType) {\n              return true;\n            }\n          }\n\n          if (!allowImplicit && !(role === 'row' && tagName === 'TR' && axe.utils.matchesSelector(node, 'table[role=\"grid\"] > tr'))) {\n            return true;\n          }\n\n          return !aria.isAriaRoleAllowedOnElement(node, role);\n        });\n        return unallowedRoles;\n      };\n\n      aria.getOwnedVirtual = function getOwned(_ref34) {\n        var actualNode = _ref34.actualNode,\n            children = _ref34.children;\n\n        if (!actualNode || !children) {\n          throw new Error('getOwnedVirtual requires a virtual node');\n        }\n\n        return dom.idrefs(actualNode, 'aria-owns').reduce(function (ownedElms, element) {\n          if (element) {\n            var virtualNode = axe.utils.getNodeFromTree(element);\n            ownedElms.push(virtualNode);\n          }\n\n          return ownedElms;\n        }, children);\n      };\n\n      aria.getRole = function getRole(node) {\n        var _ref35 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n            noImplicit = _ref35.noImplicit,\n            fallback = _ref35.fallback,\n            abstracts = _ref35.abstracts,\n            dpub = _ref35.dpub;\n\n        node = node.actualNode || node;\n\n        if (node.nodeType !== 1) {\n          return null;\n        }\n\n        var roleAttr = (node.getAttribute('role') || '').trim().toLowerCase();\n        var roleList = fallback ? axe.utils.tokenList(roleAttr) : [roleAttr];\n        var validRoles = roleList.filter(function (role) {\n          if (!dpub && role.substr(0, 4) === 'doc-') {\n            return false;\n          }\n\n          return aria.isValidRole(role, {\n            allowAbstract: abstracts\n          });\n        });\n        var explicitRole = validRoles[0];\n\n        if (!explicitRole && !noImplicit) {\n          return aria.implicitRole(node);\n        }\n\n        return explicitRole || null;\n      };\n\n      var idRefsRegex = /^idrefs?$/;\n\n      function cacheIdRefs(node, refAttrs) {\n        if (node.hasAttribute) {\n          var idRefs = axe._cache.get('idRefs');\n\n          if (node.nodeName.toUpperCase() === 'LABEL' && node.hasAttribute('for')) {\n            idRefs[node.getAttribute('for')] = true;\n          }\n\n          for (var i = 0; i < refAttrs.length; ++i) {\n            var attr = refAttrs[i];\n\n            if (!node.hasAttribute(attr)) {\n              continue;\n            }\n\n            var attrValue = node.getAttribute(attr);\n            var tokens = axe.utils.tokenList(attrValue);\n\n            for (var k = 0; k < tokens.length; ++k) {\n              idRefs[tokens[k]] = true;\n            }\n          }\n        }\n\n        for (var _i3 = 0; _i3 < node.children.length; _i3++) {\n          cacheIdRefs(node.children[_i3], refAttrs);\n        }\n      }\n\n      aria.isAccessibleRef = function isAccessibleRef(node) {\n        node = node.actualNode || node;\n        var root = dom.getRootNode(node);\n        root = root.documentElement || root;\n        var id = node.id;\n\n        if (!axe._cache.get('idRefs')) {\n          axe._cache.set('idRefs', {});\n\n          var refAttrs = Object.keys(aria.lookupTable.attributes).filter(function (attr) {\n            var type = aria.lookupTable.attributes[attr].type;\n            return idRefsRegex.test(type);\n          });\n          cacheIdRefs(root, refAttrs);\n        }\n\n        return axe._cache.get('idRefs')[id] === true;\n      };\n\n      aria.isAriaRoleAllowedOnElement = function isAriaRoleAllowedOnElement(node, role) {\n        var nodeName = node.nodeName.toUpperCase();\n        var lookupTable = axe.commons.aria.lookupTable;\n\n        if (matches(node, lookupTable.elementsAllowedNoRole)) {\n          return false;\n        }\n\n        if (matches(node, lookupTable.elementsAllowedAnyRole)) {\n          return true;\n        }\n\n        var roleValue = lookupTable.role[role];\n\n        if (!roleValue || !roleValue.allowedElements) {\n          return false;\n        }\n\n        var out = matches(node, roleValue.allowedElements);\n\n        if (Object.keys(lookupTable.evaluateRoleForElement).includes(nodeName)) {\n          return lookupTable.evaluateRoleForElement[nodeName]({\n            node: node,\n            role: role,\n            out: out\n          });\n        }\n\n        return out;\n      };\n\n      aria.isUnsupportedRole = function (role) {\n        var roleDefinition = aria.lookupTable.role[role];\n        return roleDefinition ? roleDefinition.unsupported : false;\n      };\n\n      aria.labelVirtual = function (_ref36) {\n        var actualNode = _ref36.actualNode;\n        var ref, candidate;\n\n        if (actualNode.getAttribute('aria-labelledby')) {\n          ref = dom.idrefs(actualNode, 'aria-labelledby');\n          candidate = ref.map(function (thing) {\n            var vNode = axe.utils.getNodeFromTree(thing);\n            return vNode ? text.visibleVirtual(vNode, true) : '';\n          }).join(' ').trim();\n\n          if (candidate) {\n            return candidate;\n          }\n        }\n\n        candidate = actualNode.getAttribute('aria-label');\n\n        if (candidate) {\n          candidate = text.sanitize(candidate).trim();\n\n          if (candidate) {\n            return candidate;\n          }\n        }\n\n        return null;\n      };\n\n      aria.label = function (node) {\n        node = axe.utils.getNodeFromTree(node);\n        return aria.labelVirtual(node);\n      };\n\n      aria.namedFromContents = function namedFromContents(node) {\n        var _ref37 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n            strict = _ref37.strict;\n\n        node = node.actualNode || node;\n\n        if (node.nodeType !== 1) {\n          return false;\n        }\n\n        var role = aria.getRole(node);\n        var roleDef = aria.lookupTable.role[role];\n\n        if (roleDef && roleDef.nameFrom.includes('contents') || node.nodeName.toUpperCase() === 'TABLE') {\n          return true;\n        }\n\n        if (strict) {\n          return false;\n        }\n\n        return !roleDef || ['presentation', 'none'].includes(role);\n      };\n\n      aria.isValidRole = function (role) {\n        var _ref38 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n            allowAbstract = _ref38.allowAbstract,\n            _ref38$flagUnsupporte = _ref38.flagUnsupported,\n            flagUnsupported = _ref38$flagUnsupporte === void 0 ? false : _ref38$flagUnsupporte;\n\n        var roleDefinition = aria.lookupTable.role[role];\n        var isRoleUnsupported = roleDefinition ? roleDefinition.unsupported : false;\n\n        if (!roleDefinition || flagUnsupported && isRoleUnsupported) {\n          return false;\n        }\n\n        return allowAbstract ? true : roleDefinition.type !== 'abstract';\n      };\n\n      aria.getRolesWithNameFromContents = function () {\n        return Object.keys(aria.lookupTable.role).filter(function (r) {\n          return aria.lookupTable.role[r].nameFrom && aria.lookupTable.role[r].nameFrom.indexOf('contents') !== -1;\n        });\n      };\n\n      aria.getRolesByType = function (roleType) {\n        return Object.keys(aria.lookupTable.role).filter(function (r) {\n          return aria.lookupTable.role[r].type === roleType;\n        });\n      };\n\n      aria.getRoleType = function (role) {\n        var r = aria.lookupTable.role[role];\n        return r && r.type || null;\n      };\n\n      aria.requiredOwned = function (role) {\n        'use strict';\n\n        var owned = null,\n            roles = aria.lookupTable.role[role];\n\n        if (roles) {\n          owned = axe.utils.clone(roles.owned);\n        }\n\n        return owned;\n      };\n\n      aria.requiredContext = function (role) {\n        'use strict';\n\n        var context = null,\n            roles = aria.lookupTable.role[role];\n\n        if (roles) {\n          context = axe.utils.clone(roles.context);\n        }\n\n        return context;\n      };\n\n      aria.implicitNodes = function (role) {\n        'use strict';\n\n        var implicit = null,\n            roles = aria.lookupTable.role[role];\n\n        if (roles && roles.implicit) {\n          implicit = axe.utils.clone(roles.implicit);\n        }\n\n        return implicit;\n      };\n\n      aria.implicitRole = function (node) {\n        'use strict';\n\n        var isValidImplicitRole = function isValidImplicitRole(set, role) {\n          var validForNodeType = function validForNodeType(implicitNodeTypeSelector) {\n            return axe.utils.matchesSelector(node, implicitNodeTypeSelector);\n          };\n\n          if (role.implicit && role.implicit.some(validForNodeType)) {\n            set.push(role.name);\n          }\n\n          return set;\n        };\n\n        var sortRolesByOptimalAriaContext = function sortRolesByOptimalAriaContext(roles, ariaAttributes) {\n          var getScore = function getScore(role) {\n            var allowedAriaAttributes = aria.allowedAttr(role);\n            return allowedAriaAttributes.reduce(function (score, attribute) {\n              return score + (ariaAttributes.indexOf(attribute) > -1 ? 1 : 0);\n            }, 0);\n          };\n\n          var scored = roles.map(function (role) {\n            return {\n              score: getScore(role),\n              name: role\n            };\n          });\n          var sorted = scored.sort(function (scoredRoleA, scoredRoleB) {\n            return scoredRoleB.score - scoredRoleA.score;\n          });\n          return sorted.map(function (sortedRole) {\n            return sortedRole.name;\n          });\n        };\n\n        var roles = Object.keys(aria.lookupTable.role).map(function (role) {\n          var lookup = aria.lookupTable.role[role];\n          return {\n            name: role,\n            implicit: lookup && lookup.implicit\n          };\n        });\n        var availableImplicitRoles = roles.reduce(isValidImplicitRole, []);\n\n        if (!availableImplicitRoles.length) {\n          return null;\n        }\n\n        var nodeAttributes = axe.utils.getNodeAttributes(node);\n        var ariaAttributes = [];\n\n        for (var i = 0, j = nodeAttributes.length; i < j; i++) {\n          var attr = nodeAttributes[i];\n\n          if (attr.name.match(/^aria-/)) {\n            ariaAttributes.push(attr.name);\n          }\n        }\n\n        return sortRolesByOptimalAriaContext(availableImplicitRoles, ariaAttributes).shift();\n      };\n\n      aria.validateAttrValue = function validateAttrValue(node, attr) {\n        'use strict';\n\n        var matches,\n            list,\n            value = node.getAttribute(attr),\n            attrInfo = aria.lookupTable.attributes[attr];\n        var doc = dom.getRootNode(node);\n\n        if (!attrInfo) {\n          return true;\n        }\n\n        if (attrInfo.allowEmpty && (!value || value.trim() === '')) {\n          return true;\n        }\n\n        switch (attrInfo.type) {\n          case 'boolean':\n          case 'nmtoken':\n            return typeof value === 'string' && attrInfo.values.includes(value.toLowerCase());\n\n          case 'nmtokens':\n            list = axe.utils.tokenList(value);\n            return list.reduce(function (result, token) {\n              return result && attrInfo.values.includes(token);\n            }, list.length !== 0);\n\n          case 'idref':\n            return !!(value && doc.getElementById(value));\n\n          case 'idrefs':\n            list = axe.utils.tokenList(value);\n            return list.some(function (token) {\n              return doc.getElementById(token);\n            });\n\n          case 'string':\n            return value.trim() !== '';\n\n          case 'decimal':\n            matches = value.match(/^[-+]?([0-9]*)\\.?([0-9]*)$/);\n            return !!(matches && (matches[1] || matches[2]));\n\n          case 'int':\n            return /^[-+]?[0-9]+$/.test(value);\n        }\n      };\n\n      color.centerPointOfRect = function centerPointOfRect(rect) {\n        if (rect.left > window.innerWidth) {\n          return undefined;\n        }\n\n        if (rect.top > window.innerHeight) {\n          return undefined;\n        }\n\n        var x = Math.min(Math.ceil(rect.left + rect.width / 2), window.innerWidth - 1);\n        var y = Math.min(Math.ceil(rect.top + rect.height / 2), window.innerHeight - 1);\n        return {\n          x: x,\n          y: y\n        };\n      };\n\n      color.Color = function (red, green, blue, alpha) {\n        this.red = red;\n        this.green = green;\n        this.blue = blue;\n        this.alpha = alpha;\n\n        this.toHexString = function () {\n          var redString = Math.round(this.red).toString(16);\n          var greenString = Math.round(this.green).toString(16);\n          var blueString = Math.round(this.blue).toString(16);\n          return '#' + (this.red > 15.5 ? redString : '0' + redString) + (this.green > 15.5 ? greenString : '0' + greenString) + (this.blue > 15.5 ? blueString : '0' + blueString);\n        };\n\n        var rgbRegex = /^rgb\\((\\d+), (\\d+), (\\d+)\\)$/;\n        var rgbaRegex = /^rgba\\((\\d+), (\\d+), (\\d+), (\\d*(\\.\\d+)?)\\)/;\n\n        this.parseRgbString = function (colorString) {\n          if (colorString === 'transparent') {\n            this.red = 0;\n            this.green = 0;\n            this.blue = 0;\n            this.alpha = 0;\n            return;\n          }\n\n          var match = colorString.match(rgbRegex);\n\n          if (match) {\n            this.red = parseInt(match[1], 10);\n            this.green = parseInt(match[2], 10);\n            this.blue = parseInt(match[3], 10);\n            this.alpha = 1;\n            return;\n          }\n\n          match = colorString.match(rgbaRegex);\n\n          if (match) {\n            this.red = parseInt(match[1], 10);\n            this.green = parseInt(match[2], 10);\n            this.blue = parseInt(match[3], 10);\n            this.alpha = Math.round(parseFloat(match[4]) * 100) / 100;\n            return;\n          }\n        };\n\n        this.getRelativeLuminance = function () {\n          var rSRGB = this.red / 255;\n          var gSRGB = this.green / 255;\n          var bSRGB = this.blue / 255;\n          var r = rSRGB <= .03928 ? rSRGB / 12.92 : Math.pow((rSRGB + .055) / 1.055, 2.4);\n          var g = gSRGB <= .03928 ? gSRGB / 12.92 : Math.pow((gSRGB + .055) / 1.055, 2.4);\n          var b = bSRGB <= .03928 ? bSRGB / 12.92 : Math.pow((bSRGB + .055) / 1.055, 2.4);\n          return .2126 * r + .7152 * g + .0722 * b;\n        };\n      };\n\n      color.flattenColors = function (fgColor, bgColor) {\n        var alpha = fgColor.alpha;\n        var r = (1 - alpha) * bgColor.red + alpha * fgColor.red;\n        var g = (1 - alpha) * bgColor.green + alpha * fgColor.green;\n        var b = (1 - alpha) * bgColor.blue + alpha * fgColor.blue;\n        var a = fgColor.alpha + bgColor.alpha * (1 - fgColor.alpha);\n        return new color.Color(r, g, b, a);\n      };\n\n      color.getContrast = function (bgColor, fgColor) {\n        if (!fgColor || !bgColor) {\n          return null;\n        }\n\n        if (fgColor.alpha < 1) {\n          fgColor = color.flattenColors(fgColor, bgColor);\n        }\n\n        var bL = bgColor.getRelativeLuminance();\n        var fL = fgColor.getRelativeLuminance();\n        return (Math.max(fL, bL) + .05) / (Math.min(fL, bL) + .05);\n      };\n\n      color.hasValidContrastRatio = function (bg, fg, fontSize, isBold) {\n        var contrast = color.getContrast(bg, fg);\n        var isSmallFont = isBold && Math.ceil(fontSize * 72) / 96 < 14 || !isBold && Math.ceil(fontSize * 72) / 96 < 18;\n        var expectedContrastRatio = isSmallFont ? 4.5 : 3;\n        return {\n          isValid: contrast > expectedContrastRatio,\n          contrastRatio: contrast,\n          expectedContrastRatio: expectedContrastRatio\n        };\n      };\n\n      color.elementHasImage = function elementHasImage(elm, style) {\n        var graphicNodes = ['IMG', 'CANVAS', 'OBJECT', 'IFRAME', 'VIDEO', 'SVG'];\n        var nodeName = elm.nodeName.toUpperCase();\n\n        if (graphicNodes.includes(nodeName)) {\n          axe.commons.color.incompleteData.set('bgColor', 'imgNode');\n          return true;\n        }\n\n        style = style || window.getComputedStyle(elm);\n        var bgImageStyle = style.getPropertyValue('background-image');\n        var hasBgImage = bgImageStyle !== 'none';\n\n        if (hasBgImage) {\n          var hasGradient = /gradient/.test(bgImageStyle);\n          axe.commons.color.incompleteData.set('bgColor', hasGradient ? 'bgGradient' : 'bgImage');\n        }\n\n        return hasBgImage;\n      };\n\n      function _getFonts(style) {\n        return style.getPropertyValue('font-family').split(/[,;]/g).map(function (font) {\n          return font.trim().toLowerCase();\n        });\n      }\n\n      function elementIsDistinct(node, ancestorNode) {\n        var nodeStyle = window.getComputedStyle(node);\n\n        if (nodeStyle.getPropertyValue('background-image') !== 'none') {\n          return true;\n        }\n\n        var hasBorder = ['border-bottom', 'border-top', 'outline'].reduce(function (result, edge) {\n          var borderClr = new color.Color();\n          borderClr.parseRgbString(nodeStyle.getPropertyValue(edge + '-color'));\n          return result || nodeStyle.getPropertyValue(edge + '-style') !== 'none' && parseFloat(nodeStyle.getPropertyValue(edge + '-width')) > 0 && borderClr.alpha !== 0;\n        }, false);\n\n        if (hasBorder) {\n          return true;\n        }\n\n        var parentStyle = window.getComputedStyle(ancestorNode);\n\n        if (_getFonts(nodeStyle)[0] !== _getFonts(parentStyle)[0]) {\n          return true;\n        }\n\n        var hasStyle = ['text-decoration-line', 'text-decoration-style', 'font-weight', 'font-style', 'font-size'].reduce(function (result, cssProp) {\n          return result || nodeStyle.getPropertyValue(cssProp) !== parentStyle.getPropertyValue(cssProp);\n        }, false);\n        var tDec = nodeStyle.getPropertyValue('text-decoration');\n\n        if (tDec.split(' ').length < 3) {\n          hasStyle = hasStyle || tDec !== parentStyle.getPropertyValue('text-decoration');\n        }\n\n        return hasStyle;\n      }\n\n      color.elementIsDistinct = elementIsDistinct;\n\n      color.getBackgroundColor = function getBackgroundColor(elm) {\n        var bgElms = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n        var bgColors = [];\n        var elmStack = color.getBackgroundStack(elm);\n        (elmStack || []).some(function (bgElm) {\n          var bgElmStyle = window.getComputedStyle(bgElm);\n          var bgColor = color.getOwnBackgroundColor(bgElmStyle);\n\n          if (elmPartiallyObscured(elm, bgElm, bgColor) || color.elementHasImage(bgElm, bgElmStyle)) {\n            bgColors = null;\n            bgElms.push(bgElm);\n            return true;\n          }\n\n          if (bgColor.alpha !== 0) {\n            bgElms.push(bgElm);\n            bgColors.push(bgColor);\n            return bgColor.alpha === 1;\n          } else {\n            return false;\n          }\n        });\n\n        if (bgColors !== null && elmStack !== null) {\n          bgColors.push(new color.Color(255, 255, 255, 1));\n          var colors = bgColors.reduce(color.flattenColors);\n          return colors;\n        }\n\n        return null;\n      };\n\n      color.getBackgroundStack = function getBackgroundStack(elm) {\n        var elmStack = color.filteredRectStack(elm);\n\n        if (elmStack === null) {\n          return null;\n        }\n\n        elmStack = dom.reduceToElementsBelowFloating(elmStack, elm);\n        elmStack = sortPageBackground(elmStack);\n        var elmIndex = elmStack.indexOf(elm);\n\n        if (calculateObscuringElement(elmIndex, elmStack, elm)) {\n          axe.commons.color.incompleteData.set('bgColor', 'bgOverlap');\n          return null;\n        }\n\n        return elmIndex !== -1 ? elmStack : null;\n      };\n\n      color.filteredRectStack = function filteredRectStack(elm) {\n        var rectStack = color.getRectStack(elm);\n\n        if (rectStack && rectStack.length === 1) {\n          return rectStack[0];\n        }\n\n        if (rectStack && rectStack.length > 1) {\n          var boundingStack = rectStack.shift();\n          var isSame;\n          rectStack.forEach(function (rectList, index) {\n            if (index === 0) {\n              return;\n            }\n\n            var rectA = rectStack[index - 1],\n                rectB = rectStack[index];\n            isSame = rectA.every(function (element, elementIndex) {\n              return element === rectB[elementIndex];\n            }) || boundingStack.includes(elm);\n          });\n\n          if (!isSame) {\n            axe.commons.color.incompleteData.set('bgColor', 'elmPartiallyObscuring');\n            return null;\n          }\n\n          return rectStack[0];\n        }\n\n        axe.commons.color.incompleteData.set('bgColor', 'outsideViewport');\n        return null;\n      };\n\n      color.getRectStack = function (elm) {\n        var boundingStack = axe.commons.dom.getElementStack(elm);\n        var filteredArr = axe.commons.dom.getTextElementStack(elm);\n\n        if (!filteredArr || filteredArr.length <= 1) {\n          return [boundingStack];\n        }\n\n        if (filteredArr.some(function (stack) {\n          return stack === undefined;\n        })) {\n          return null;\n        }\n\n        filteredArr.splice(0, 0, boundingStack);\n        return filteredArr;\n      };\n\n      function sortPageBackground(elmStack) {\n        var bodyIndex = elmStack.indexOf(document.body);\n        var bgNodes = elmStack;\n        var sortBodyElement = bodyIndex > 1 || bodyIndex === -1;\n\n        if (sortBodyElement && !color.elementHasImage(document.documentElement) && color.getOwnBackgroundColor(window.getComputedStyle(document.documentElement)).alpha === 0) {\n          if (bodyIndex > 1) {\n            bgNodes.splice(bodyIndex, 1);\n          }\n\n          bgNodes.splice(elmStack.indexOf(document.documentElement), 1);\n          bgNodes.push(document.body);\n        }\n\n        return bgNodes;\n      }\n\n      function elmPartiallyObscured(elm, bgElm, bgColor) {\n        var obscured = elm !== bgElm && !dom.visuallyContains(elm, bgElm) && bgColor.alpha !== 0;\n\n        if (obscured) {\n          axe.commons.color.incompleteData.set('bgColor', 'elmPartiallyObscured');\n        }\n\n        return obscured;\n      }\n\n      function calculateObscuringElement(elmIndex, elmStack, originalElm) {\n        if (elmIndex > 0) {\n          for (var i = elmIndex - 1; i >= 0; i--) {\n            var bgElm = elmStack[i];\n\n            if (contentOverlapping(originalElm, bgElm)) {\n              return true;\n            } else {\n              elmStack.splice(i, 1);\n            }\n          }\n        }\n\n        return false;\n      }\n\n      function contentOverlapping(targetElement, bgNode) {\n        var targetRect = targetElement.getClientRects()[0];\n        var obscuringElements = dom.shadowElementsFromPoint(targetRect.left, targetRect.top);\n\n        if (obscuringElements) {\n          for (var i = 0; i < obscuringElements.length; i++) {\n            if (obscuringElements[i] !== targetElement && obscuringElements[i] === bgNode) {\n              return true;\n            }\n          }\n        }\n\n        return false;\n      }\n\n      dom.isOpaque = function (node) {\n        var style = window.getComputedStyle(node);\n        return color.elementHasImage(node, style) || color.getOwnBackgroundColor(style).alpha === 1;\n      };\n\n      function getOpacity(node) {\n        if (!node) {\n          return 1;\n        }\n\n        var vNode = axe.utils.getNodeFromTree(node);\n\n        if (vNode && vNode._opacity !== undefined && vNode._opacity !== null) {\n          return vNode._opacity;\n        }\n\n        var nodeStyle = window.getComputedStyle(node);\n        var opacity = nodeStyle.getPropertyValue('opacity');\n        var finalOpacity = opacity * getOpacity(node.parentElement);\n\n        if (vNode) {\n          vNode._opacity = finalOpacity;\n        }\n\n        return finalOpacity;\n      }\n\n      color.getForegroundColor = function (node, noScroll, bgColor) {\n        var nodeStyle = window.getComputedStyle(node);\n        var fgColor = new color.Color();\n        fgColor.parseRgbString(nodeStyle.getPropertyValue('color'));\n        var opacity = getOpacity(node);\n        fgColor.alpha = fgColor.alpha * opacity;\n\n        if (fgColor.alpha === 1) {\n          return fgColor;\n        }\n\n        if (!bgColor) {\n          bgColor = color.getBackgroundColor(node, [], noScroll);\n        }\n\n        if (bgColor === null) {\n          var reason = axe.commons.color.incompleteData.get('bgColor');\n          axe.commons.color.incompleteData.set('fgColor', reason);\n          return null;\n        }\n\n        return color.flattenColors(fgColor, bgColor);\n      };\n\n      color.getOwnBackgroundColor = function getOwnBackgroundColor(elmStyle) {\n        var bgColor = new color.Color();\n        bgColor.parseRgbString(elmStyle.getPropertyValue('background-color'));\n\n        if (bgColor.alpha !== 0) {\n          var opacity = elmStyle.getPropertyValue('opacity');\n          bgColor.alpha = bgColor.alpha * opacity;\n        }\n\n        return bgColor;\n      };\n\n      color.incompleteData = function () {\n        var data = {};\n        return {\n          set: function set(key, reason) {\n            if (typeof key !== 'string') {\n              throw new Error('Incomplete data: key must be a string');\n            }\n\n            if (reason) {\n              data[key] = reason;\n            }\n\n            return data[key];\n          },\n          get: function get(key) {\n            return data[key];\n          },\n          clear: function clear() {\n            data = {};\n          }\n        };\n      }();\n\n      dom.reduceToElementsBelowFloating = function (elements, targetNode) {\n        var floatingPositions = ['fixed', 'sticky'],\n            finalElements = [],\n            targetFound = false,\n            index,\n            currentNode,\n            style;\n\n        for (index = 0; index < elements.length; ++index) {\n          currentNode = elements[index];\n\n          if (currentNode === targetNode) {\n            targetFound = true;\n          }\n\n          style = window.getComputedStyle(currentNode);\n\n          if (!targetFound && floatingPositions.indexOf(style.position) !== -1) {\n            finalElements = [];\n            continue;\n          }\n\n          finalElements.push(currentNode);\n        }\n\n        return finalElements;\n      };\n\n      dom.findElmsInContext = function (_ref39) {\n        var context = _ref39.context,\n            value = _ref39.value,\n            attr = _ref39.attr,\n            _ref39$elm = _ref39.elm,\n            elm = _ref39$elm === void 0 ? '' : _ref39$elm;\n        var root;\n        var escapedValue = axe.utils.escapeSelector(value);\n\n        if (context.nodeType === 9 || context.nodeType === 11) {\n          root = context;\n        } else {\n          root = dom.getRootNode(context);\n        }\n\n        return Array.from(root.querySelectorAll(elm + '[' + attr + '=' + escapedValue + ']'));\n      };\n\n      dom.findUp = function (element, target) {\n        return dom.findUpVirtual(axe.utils.getNodeFromTree(element), target);\n      };\n\n      dom.findUpVirtual = function (element, target) {\n        var parent;\n        parent = element.actualNode;\n\n        if (!element.shadowId && typeof element.actualNode.closest === 'function') {\n          var match = element.actualNode.closest(target);\n\n          if (match) {\n            return match;\n          }\n\n          return null;\n        }\n\n        do {\n          parent = parent.assignedSlot ? parent.assignedSlot : parent.parentNode;\n\n          if (parent && parent.nodeType === 11) {\n            parent = parent.host;\n          }\n        } while (parent && !axe.utils.matchesSelector(parent, target) && parent !== document.documentElement);\n\n        if (!parent) {\n          return null;\n        }\n\n        if (!axe.utils.matchesSelector(parent, target)) {\n          return null;\n        }\n\n        return parent;\n      };\n\n      dom.getComposedParent = function getComposedParent(element) {\n        if (element.assignedSlot) {\n          return getComposedParent(element.assignedSlot);\n        } else if (element.parentNode) {\n          var parentNode = element.parentNode;\n\n          if (parentNode.nodeType === 1) {\n            return parentNode;\n          } else if (parentNode.host) {\n            return parentNode.host;\n          }\n        }\n\n        return null;\n      };\n\n      dom.getElementByReference = function (node, attr) {\n        var fragment = node.getAttribute(attr);\n\n        if (!fragment) {\n          return null;\n        }\n\n        if (fragment.charAt(0) === '#') {\n          fragment = decodeURIComponent(fragment.substring(1));\n        } else if (fragment.substr(0, 2) === '/#') {\n          fragment = decodeURIComponent(fragment.substring(2));\n        }\n\n        var candidate = document.getElementById(fragment);\n\n        if (candidate) {\n          return candidate;\n        }\n\n        candidate = document.getElementsByName(fragment);\n\n        if (candidate.length) {\n          return candidate[0];\n        }\n\n        return null;\n      };\n\n      dom.getElementCoordinates = function (element) {\n        'use strict';\n\n        var scrollOffset = dom.getScrollOffset(document),\n            xOffset = scrollOffset.left,\n            yOffset = scrollOffset.top,\n            coords = element.getBoundingClientRect();\n        return {\n          top: coords.top + yOffset,\n          right: coords.right + xOffset,\n          bottom: coords.bottom + yOffset,\n          left: coords.left + xOffset,\n          width: coords.right - coords.left,\n          height: coords.bottom - coords.top\n        };\n      };\n\n      var gridSize = 200;\n\n      function isStackingContext(vNode, parentVNode) {\n        var position = vNode.getComputedStylePropertyValue('position');\n        var zIndex = vNode.getComputedStylePropertyValue('z-index');\n\n        if (position === 'fixed' || position === 'sticky') {\n          return true;\n        }\n\n        if (zIndex !== 'auto' && position !== 'static') {\n          return true;\n        }\n\n        if (vNode.getComputedStylePropertyValue('opacity') !== '1') {\n          return true;\n        }\n\n        var transform = vNode.getComputedStylePropertyValue('-webkit-transform') || vNode.getComputedStylePropertyValue('-ms-transform') || vNode.getComputedStylePropertyValue('transform') || 'none';\n\n        if (transform !== 'none') {\n          return true;\n        }\n\n        var mixBlendMode = vNode.getComputedStylePropertyValue('mix-blend-mode');\n\n        if (mixBlendMode && mixBlendMode !== 'normal') {\n          return true;\n        }\n\n        var filter = vNode.getComputedStylePropertyValue('filter');\n\n        if (filter && filter !== 'none') {\n          return true;\n        }\n\n        var perspective = vNode.getComputedStylePropertyValue('perspective');\n\n        if (perspective && perspective !== 'none') {\n          return true;\n        }\n\n        var clipPath = vNode.getComputedStylePropertyValue('clip-path');\n\n        if (clipPath && clipPath !== 'none') {\n          return true;\n        }\n\n        var mask = vNode.getComputedStylePropertyValue('-webkit-mask') || vNode.getComputedStylePropertyValue('mask') || 'none';\n\n        if (mask !== 'none') {\n          return true;\n        }\n\n        var maskImage = vNode.getComputedStylePropertyValue('-webkit-mask-image') || vNode.getComputedStylePropertyValue('mask-image') || 'none';\n\n        if (maskImage !== 'none') {\n          return true;\n        }\n\n        var maskBorder = vNode.getComputedStylePropertyValue('-webkit-mask-border') || vNode.getComputedStylePropertyValue('mask-border') || 'none';\n\n        if (maskBorder !== 'none') {\n          return true;\n        }\n\n        if (vNode.getComputedStylePropertyValue('isolation') === 'isolate') {\n          return true;\n        }\n\n        var willChange = vNode.getComputedStylePropertyValue('will-change');\n\n        if (willChange === 'transform' || willChange === 'opacity') {\n          return true;\n        }\n\n        if (vNode.getComputedStylePropertyValue('-webkit-overflow-scrolling') === 'touch') {\n          return true;\n        }\n\n        var contain = vNode.getComputedStylePropertyValue('contain');\n\n        if (['layout', 'paint', 'strict', 'content'].includes(contain)) {\n          return true;\n        }\n\n        if (zIndex !== 'auto' && parentVNode) {\n          var parentDsiplay = parentVNode.getComputedStylePropertyValue('display');\n\n          if (['flex', 'inline-flex', 'inline flex', 'grid', 'inline-grid', 'inline grid'].includes(parentDsiplay)) {\n            return true;\n          }\n        }\n\n        return false;\n      }\n\n      function isFloated(vNode) {\n        if (!vNode) {\n          return false;\n        }\n\n        if (vNode._isFloated !== undefined) {\n          return vNode._isFloated;\n        }\n\n        var floatStyle = vNode.getComputedStylePropertyValue('float');\n\n        if (floatStyle !== 'none') {\n          vNode._isFloated = true;\n          return true;\n        }\n\n        var floated = isFloated(vNode.parent);\n        vNode._isFloated = floated;\n        return floated;\n      }\n\n      function getPositionOrder(vNode) {\n        if (vNode.getComputedStylePropertyValue('position') === 'static') {\n          if (vNode.getComputedStylePropertyValue('display').indexOf('inline') !== -1) {\n            return 2;\n          }\n\n          if (isFloated(vNode)) {\n            return 1;\n          }\n\n          return 0;\n        }\n\n        return 3;\n      }\n\n      function visuallySort(a, b) {\n        for (var i = 0; i < a._stackingOrder.length; i++) {\n          if (typeof b._stackingOrder[i] === 'undefined') {\n            return -1;\n          }\n\n          if (b._stackingOrder[i] > a._stackingOrder[i]) {\n            return 1;\n          }\n\n          if (b._stackingOrder[i] < a._stackingOrder[i]) {\n            return -1;\n          }\n        }\n\n        var aNode = a.actualNode;\n        var bNode = b.actualNode;\n\n        if (aNode.getRootNode && aNode.getRootNode() !== bNode.getRootNode()) {\n          var boundaries = [];\n\n          while (aNode) {\n            boundaries.push({\n              root: aNode.getRootNode(),\n              node: aNode\n            });\n            aNode = aNode.getRootNode().host;\n          }\n\n          while (bNode && !boundaries.find(function (boundary) {\n            return boundary.root === bNode.getRootNode();\n          })) {\n            bNode = bNode.getRootNode().host;\n          }\n\n          aNode = boundaries.find(function (boundary) {\n            return boundary.root === bNode.getRootNode();\n          }).node;\n\n          if (aNode === bNode) {\n            return a.actualNode.getRootNode() !== aNode.getRootNode() ? -1 : 1;\n          }\n        }\n\n        var _window$Node = window.Node,\n            DOCUMENT_POSITION_FOLLOWING = _window$Node.DOCUMENT_POSITION_FOLLOWING,\n            DOCUMENT_POSITION_CONTAINS = _window$Node.DOCUMENT_POSITION_CONTAINS,\n            DOCUMENT_POSITION_CONTAINED_BY = _window$Node.DOCUMENT_POSITION_CONTAINED_BY;\n        var docPosition = aNode.compareDocumentPosition(bNode);\n        var DOMOrder = docPosition & DOCUMENT_POSITION_FOLLOWING ? 1 : -1;\n        var isDescendant = docPosition & DOCUMENT_POSITION_CONTAINS || docPosition & DOCUMENT_POSITION_CONTAINED_BY;\n        var aPosition = getPositionOrder(a);\n        var bPosition = getPositionOrder(b);\n\n        if (aPosition === bPosition || isDescendant) {\n          return DOMOrder;\n        }\n\n        return bPosition - aPosition;\n      }\n\n      function getStackingOrder(vNode, parentVNode) {\n        var stackingOrder = parentVNode._stackingOrder.slice();\n\n        var zIndex = vNode.getComputedStylePropertyValue('z-index');\n\n        if (zIndex !== 'auto') {\n          stackingOrder[stackingOrder.length - 1] = parseInt(zIndex);\n        }\n\n        if (isStackingContext(vNode, parentVNode)) {\n          stackingOrder.push(0);\n        }\n\n        return stackingOrder;\n      }\n\n      function findScrollRegionParent(vNode, parentVNode) {\n        var scrollRegionParent = null;\n        var checkedNodes = [vNode];\n\n        while (parentVNode) {\n          if (parentVNode._scrollRegionParent) {\n            scrollRegionParent = parentVNode._scrollRegionParent;\n            break;\n          }\n\n          if (axe.utils.getScroll(parentVNode.actualNode)) {\n            scrollRegionParent = parentVNode;\n            break;\n          }\n\n          checkedNodes.push(parentVNode);\n          parentVNode = axe.utils.getNodeFromTree(parentVNode.actualNode.parentElement || parentVNode.actualNode.parentNode);\n        }\n\n        checkedNodes.forEach(function (vNode) {\n          return vNode._scrollRegionParent = scrollRegionParent;\n        });\n        return scrollRegionParent;\n      }\n\n      function addNodeToGrid(grid, vNode) {\n        vNode._grid = grid;\n        vNode.clientRects.forEach(function (rect) {\n          var x = rect.left;\n          var y = rect.top;\n          var startRow = y / gridSize | 0;\n          var startCol = x / gridSize | 0;\n          var endRow = (y + rect.height) / gridSize | 0;\n          var endCol = (x + rect.width) / gridSize | 0;\n\n          for (var row = startRow; row <= endRow; row++) {\n            grid.cells[row] = grid.cells[row] || [];\n\n            for (var col = startCol; col <= endCol; col++) {\n              grid.cells[row][col] = grid.cells[row][col] || [];\n\n              if (!grid.cells[row][col].includes(vNode)) {\n                grid.cells[row][col].push(vNode);\n              }\n            }\n          }\n        });\n      }\n\n      function createGrid() {\n        var root = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document.body;\n        var rootGrid = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n          container: null,\n          cells: []\n        };\n        var parentVNode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n        if (!parentVNode) {\n          var vNode = axe.utils.getNodeFromTree(document.documentElement);\n\n          if (!vNode) {\n            vNode = new VirtualNode(document.documentElement);\n          }\n\n          vNode._stackingOrder = [0];\n          addNodeToGrid(rootGrid, vNode);\n\n          if (axe.utils.getScroll(vNode.actualNode)) {\n            var subGrid = {\n              container: vNode,\n              cells: []\n            };\n            vNode._subGrid = subGrid;\n          }\n        }\n\n        var treeWalker = document.createTreeWalker(root, window.NodeFilter.SHOW_ELEMENT, null, false);\n        var node = parentVNode ? treeWalker.nextNode() : treeWalker.currentNode;\n\n        while (node) {\n          var _vNode = axe.utils.getNodeFromTree(node);\n\n          if (node.parentElement) {\n            parentVNode = axe.utils.getNodeFromTree(node.parentElement);\n          } else if (node.parentNode && axe.utils.getNodeFromTree(node.parentNode)) {\n            parentVNode = axe.utils.getNodeFromTree(node.parentNode);\n          }\n\n          if (!_vNode) {\n            _vNode = new VirtualNode(node, parentVNode);\n          }\n\n          _vNode._stackingOrder = getStackingOrder(_vNode, parentVNode);\n          var scrollRegionParent = findScrollRegionParent(_vNode, parentVNode);\n          var grid = scrollRegionParent ? scrollRegionParent._subGrid : rootGrid;\n\n          if (axe.utils.getScroll(_vNode.actualNode)) {\n            var _subGrid = {\n              container: _vNode,\n              cells: []\n            };\n            _vNode._subGrid = _subGrid;\n          }\n\n          var rect = _vNode.boundingClientRect;\n\n          if (rect.width !== 0 && rect.height !== 0 && dom.isVisible(node)) {\n            addNodeToGrid(grid, _vNode);\n          }\n\n          if (axe.utils.isShadowRoot(node)) {\n            createGrid(node.shadowRoot, grid, _vNode);\n          }\n\n          node = treeWalker.nextNode();\n        }\n      }\n\n      function getRectStack(grid, rect) {\n        var recursed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n        var x = rect.left + rect.width / 2;\n        var y = rect.top + rect.height / 2;\n        var row = y / gridSize | 0;\n        var col = x / gridSize | 0;\n        var stack = grid.cells[row][col].filter(function (gridCellNode) {\n          return gridCellNode.clientRects.find(function (clientRect) {\n            var rectX = clientRect.left;\n            var rectY = clientRect.top;\n            return x <= rectX + clientRect.width && x >= rectX && y <= rectY + clientRect.height && y >= rectY;\n          });\n        });\n        var gridContainer = grid.container;\n\n        if (gridContainer) {\n          stack = getRectStack(gridContainer._grid, gridContainer.boundingClientRect, true).concat(stack);\n        }\n\n        if (!recursed) {\n          stack = stack.sort(visuallySort).map(function (vNode) {\n            return vNode.actualNode;\n          }).concat(document.documentElement).filter(function (node, index, array) {\n            return array.indexOf(node) === index;\n          });\n        }\n\n        return stack;\n      }\n\n      dom.getElementStack = function (node) {\n        if (!axe._cache.get('gridCreated')) {\n          createGrid();\n\n          axe._cache.set('gridCreated', true);\n        }\n\n        var vNode = axe.utils.getNodeFromTree(node);\n        var grid = vNode._grid;\n\n        if (!grid) {\n          return [];\n        }\n\n        return getRectStack(grid, vNode.boundingClientRect);\n      };\n\n      dom.getTextElementStack = function (node) {\n        if (!axe._cache.get('gridCreated')) {\n          createGrid();\n\n          axe._cache.set('gridCreated', true);\n        }\n\n        var vNode = axe.utils.getNodeFromTree(node);\n        var grid = vNode._grid;\n\n        if (!grid) {\n          return [];\n        }\n\n        var clientRects = [];\n        Array.from(node.childNodes).forEach(function (elm) {\n          if (elm.nodeType === 3 && axe.commons.text.sanitize(elm.textContent) !== '') {\n            var range = document.createRange();\n            range.selectNodeContents(elm);\n            var rects = range.getClientRects();\n\n            for (var i = 0; i < rects.length; i++) {\n              var rect = rects[i];\n\n              if (rect.width >= 1 && rect.height >= 1) {\n                clientRects.push(rect);\n              }\n            }\n          }\n        });\n        return clientRects.map(function (rect) {\n          return getRectStack(grid, rect);\n        });\n      };\n\n      dom.getRootNode = axe.utils.getRootNode;\n\n      dom.getScrollOffset = function (element) {\n        'use strict';\n\n        if (!element.nodeType && element.document) {\n          element = element.document;\n        }\n\n        if (element.nodeType === 9) {\n          var docElement = element.documentElement,\n              body = element.body;\n          return {\n            left: docElement && docElement.scrollLeft || body && body.scrollLeft || 0,\n            top: docElement && docElement.scrollTop || body && body.scrollTop || 0\n          };\n        }\n\n        return {\n          left: element.scrollLeft,\n          top: element.scrollTop\n        };\n      };\n\n      dom.getTabbableElements = function getTabbableElements(virtualNode) {\n        var nodeAndDescendents = axe.utils.querySelectorAll(virtualNode, '*');\n        var tabbableElements = nodeAndDescendents.filter(function (vNode) {\n          var isFocusable = vNode.isFocusable;\n          var tabIndex = vNode.actualNode.getAttribute('tabindex');\n          tabIndex = tabIndex && !isNaN(parseInt(tabIndex, 10)) ? parseInt(tabIndex) : null;\n          return tabIndex ? isFocusable && tabIndex >= 0 : isFocusable;\n        });\n        return tabbableElements;\n      };\n\n      dom.getViewportSize = function (win) {\n        'use strict';\n\n        var body,\n            doc = win.document,\n            docElement = doc.documentElement;\n\n        if (win.innerWidth) {\n          return {\n            width: win.innerWidth,\n            height: win.innerHeight\n          };\n        }\n\n        if (docElement) {\n          return {\n            width: docElement.clientWidth,\n            height: docElement.clientHeight\n          };\n        }\n\n        body = doc.body;\n        return {\n          width: body.clientWidth,\n          height: body.clientHeight\n        };\n      };\n\n      var hiddenTextElms = ['HEAD', 'TITLE', 'TEMPLATE', 'SCRIPT', 'STYLE', 'IFRAME', 'OBJECT', 'VIDEO', 'AUDIO', 'NOSCRIPT'];\n\n      function hasChildTextNodes(elm) {\n        if (!hiddenTextElms.includes(elm.actualNode.nodeName.toUpperCase())) {\n          return elm.children.some(function (_ref40) {\n            var actualNode = _ref40.actualNode;\n            return actualNode.nodeType === 3 && actualNode.nodeValue.trim();\n          });\n        }\n      }\n\n      dom.hasContentVirtual = function (elm, noRecursion, ignoreAria) {\n        return hasChildTextNodes(elm) || dom.isVisualContent(elm.actualNode) || !ignoreAria && !!aria.labelVirtual(elm) || !noRecursion && elm.children.some(function (child) {\n          return child.actualNode.nodeType === 1 && dom.hasContentVirtual(child);\n        });\n      };\n\n      dom.hasContent = function hasContent(elm, noRecursion, ignoreAria) {\n        elm = axe.utils.getNodeFromTree(elm);\n        return dom.hasContentVirtual(elm, noRecursion, ignoreAria);\n      };\n\n      dom.idrefs = function (node, attr) {\n        'use strict';\n\n        var index,\n            length,\n            doc = dom.getRootNode(node),\n            result = [],\n            idrefs = node.getAttribute(attr);\n\n        if (idrefs) {\n          idrefs = axe.utils.tokenList(idrefs);\n\n          for (index = 0, length = idrefs.length; index < length; index++) {\n            result.push(doc.getElementById(idrefs[index]));\n          }\n        }\n\n        return result;\n      };\n\n      function focusDisabled(el) {\n        return el.disabled || el.nodeName.toUpperCase() !== 'AREA' && dom.isHiddenWithCSS(el);\n      }\n\n      dom.isFocusable = function (el) {\n        'use strict';\n\n        if (focusDisabled(el)) {\n          return false;\n        } else if (dom.isNativelyFocusable(el)) {\n          return true;\n        }\n\n        var tabindex = el.getAttribute('tabindex');\n\n        if (tabindex && !isNaN(parseInt(tabindex, 10))) {\n          return true;\n        }\n\n        return false;\n      };\n\n      dom.isNativelyFocusable = function (el) {\n        'use strict';\n\n        if (!el || focusDisabled(el)) {\n          return false;\n        }\n\n        switch (el.nodeName.toUpperCase()) {\n          case 'A':\n          case 'AREA':\n            if (el.href) {\n              return true;\n            }\n\n            break;\n\n          case 'INPUT':\n            return el.type !== 'hidden';\n\n          case 'TEXTAREA':\n          case 'SELECT':\n          case 'SUMMARY':\n          case 'BUTTON':\n            return true;\n\n          case 'DETAILS':\n            return !el.querySelector('summary');\n        }\n\n        return false;\n      };\n\n      dom.insertedIntoFocusOrder = function (el) {\n        var tabIndex = parseInt(el.getAttribute('tabindex'), 10);\n        return tabIndex > -1 && dom.isFocusable(el) && !dom.isNativelyFocusable(el);\n      };\n\n      dom.isHiddenWithCSS = function isHiddenWithCSS(el, descendentVisibilityValue) {\n        var vNode = axe.utils.getNodeFromTree(el);\n\n        if (!vNode) {\n          return _isHiddenWithCSS(el, descendentVisibilityValue);\n        }\n\n        if (vNode._isHiddenWithCSS === void 0) {\n          vNode._isHiddenWithCSS = _isHiddenWithCSS(el, descendentVisibilityValue);\n        }\n\n        return vNode._isHiddenWithCSS;\n      };\n\n      function _isHiddenWithCSS(el, descendentVisibilityValue) {\n        if (el.nodeType === 9) {\n          return false;\n        }\n\n        if (el.nodeType === 11) {\n          el = el.host;\n        }\n\n        if (['STYLE', 'SCRIPT'].includes(el.nodeName.toUpperCase())) {\n          return false;\n        }\n\n        var style = window.getComputedStyle(el, null);\n\n        if (!style) {\n          throw new Error('Style does not exist for the given element.');\n        }\n\n        var displayValue = style.getPropertyValue('display');\n\n        if (displayValue === 'none') {\n          return true;\n        }\n\n        var HIDDEN_VISIBILITY_VALUES = ['hidden', 'collapse'];\n        var visibilityValue = style.getPropertyValue('visibility');\n\n        if (HIDDEN_VISIBILITY_VALUES.includes(visibilityValue) && !descendentVisibilityValue) {\n          return true;\n        }\n\n        if (HIDDEN_VISIBILITY_VALUES.includes(visibilityValue) && descendentVisibilityValue && HIDDEN_VISIBILITY_VALUES.includes(descendentVisibilityValue)) {\n          return true;\n        }\n\n        var parent = dom.getComposedParent(el);\n\n        if (parent && !HIDDEN_VISIBILITY_VALUES.includes(visibilityValue)) {\n          return dom.isHiddenWithCSS(parent, visibilityValue);\n        }\n\n        return false;\n      }\n\n      dom.isHTML5 = function (doc) {\n        var node = doc.doctype;\n\n        if (node === null) {\n          return false;\n        }\n\n        return node.name === 'html' && !node.publicId && !node.systemId;\n      };\n\n      function walkDomNode(node, functor) {\n        if (functor(node.actualNode) !== false) {\n          node.children.forEach(function (child) {\n            return walkDomNode(child, functor);\n          });\n        }\n      }\n\n      var blockLike = ['block', 'list-item', 'table', 'flex', 'grid', 'inline-block'];\n\n      function isBlock(elm) {\n        var display = window.getComputedStyle(elm).getPropertyValue('display');\n        return blockLike.includes(display) || display.substr(0, 6) === 'table-';\n      }\n\n      function getBlockParent(node) {\n        var parentBlock = dom.getComposedParent(node);\n\n        while (parentBlock && !isBlock(parentBlock)) {\n          parentBlock = dom.getComposedParent(parentBlock);\n        }\n\n        return axe.utils.getNodeFromTree(parentBlock);\n      }\n\n      dom.isInTextBlock = function isInTextBlock(node) {\n        if (isBlock(node)) {\n          return false;\n        }\n\n        var virtualParent = getBlockParent(node);\n        var parentText = '';\n        var linkText = '';\n        var inBrBlock = 0;\n        walkDomNode(virtualParent, function (currNode) {\n          if (inBrBlock === 2) {\n            return false;\n          }\n\n          if (currNode.nodeType === 3) {\n            parentText += currNode.nodeValue;\n          }\n\n          if (currNode.nodeType !== 1) {\n            return;\n          }\n\n          var nodeName = (currNode.nodeName || '').toUpperCase();\n\n          if (['BR', 'HR'].includes(nodeName)) {\n            if (inBrBlock === 0) {\n              parentText = '';\n              linkText = '';\n            } else {\n              inBrBlock = 2;\n            }\n          } else if (currNode.style.display === 'none' || currNode.style.overflow === 'hidden' || !['', null, 'none'].includes(currNode.style['float']) || !['', null, 'relative'].includes(currNode.style.position)) {\n            return false;\n          } else if (nodeName === 'A' && currNode.href || (currNode.getAttribute('role') || '').toLowerCase() === 'link') {\n            if (currNode === node) {\n              inBrBlock = 1;\n            }\n\n            linkText += currNode.textContent;\n            return false;\n          }\n        });\n        parentText = axe.commons.text.sanitize(parentText);\n        linkText = axe.commons.text.sanitize(linkText);\n        return parentText.length > linkText.length;\n      };\n\n      dom.isModalOpen = function isModalOpen(options) {\n        options = options || {};\n        var modalPercent = options.modalPercent || .75;\n\n        if (axe._cache.get('isModalOpen')) {\n          return axe._cache.get('isModalOpen');\n        }\n\n        var definiteModals = axe.utils.querySelectorAllFilter(axe._tree[0], 'dialog, [role=dialog], [aria-modal=true]', function (vNode) {\n          return dom.isVisible(vNode.actualNode);\n        });\n\n        if (definiteModals.length) {\n          axe._cache.set('isModalOpen', true);\n\n          return true;\n        }\n\n        var viewport = dom.getViewportSize(window);\n        var percentWidth = viewport.width * modalPercent;\n        var percentHeight = viewport.height * modalPercent;\n        var x = (viewport.width - percentWidth) / 2;\n        var y = (viewport.height - percentHeight) / 2;\n        var points = [{\n          x: x,\n          y: y\n        }, {\n          x: viewport.width - x,\n          y: y\n        }, {\n          x: viewport.width / 2,\n          y: viewport.height / 2\n        }, {\n          x: x,\n          y: viewport.height - y\n        }, {\n          x: viewport.width - x,\n          y: viewport.height - y\n        }];\n        var stacks = points.map(function (point) {\n          return Array.from(document.elementsFromPoint(point.x, point.y));\n        });\n\n        var _loop3 = function _loop3(i) {\n          var modalElement = stacks[i].find(function (elm) {\n            var style = window.getComputedStyle(elm);\n            return parseInt(style.width, 10) >= percentWidth && parseInt(style.height, 10) >= percentHeight && style.getPropertyValue('pointer-events') !== 'none' && (style.position === 'absolute' || style.position === 'fixed');\n          });\n\n          if (modalElement && stacks.every(function (stack) {\n            return stack.includes(modalElement);\n          })) {\n            axe._cache.set('isModalOpen', true);\n\n            return {\n              v: true\n            };\n          }\n        };\n\n        for (var i = 0; i < stacks.length; i++) {\n          var _ret3 = _loop3(i);\n\n          if (_typeof(_ret3) === 'object') {\n            return _ret3.v;\n          }\n        }\n\n        axe._cache.set('isModalOpen', undefined);\n\n        return undefined;\n      };\n\n      dom.isNode = function (element) {\n        'use strict';\n\n        return element instanceof Node;\n      };\n\n      function noParentScrolled(element, offset) {\n        element = dom.getComposedParent(element);\n\n        while (element && element.nodeName.toLowerCase() !== 'html') {\n          if (element.scrollTop) {\n            offset += element.scrollTop;\n\n            if (offset >= 0) {\n              return false;\n            }\n          }\n\n          element = dom.getComposedParent(element);\n        }\n\n        return true;\n      }\n\n      dom.isOffscreen = function (element) {\n        var leftBoundary;\n        var docElement = document.documentElement;\n        var styl = window.getComputedStyle(element);\n        var dir = window.getComputedStyle(document.body || docElement).getPropertyValue('direction');\n        var coords = dom.getElementCoordinates(element);\n\n        if (coords.bottom < 0 && (noParentScrolled(element, coords.bottom) || styl.position === 'absolute')) {\n          return true;\n        }\n\n        if (coords.left === 0 && coords.right === 0) {\n          return false;\n        }\n\n        if (dir === 'ltr') {\n          if (coords.right <= 0) {\n            return true;\n          }\n        } else {\n          leftBoundary = Math.max(docElement.scrollWidth, dom.getViewportSize(window).width);\n\n          if (coords.left >= leftBoundary) {\n            return true;\n          }\n        }\n\n        return false;\n      };\n\n      var isInternalLinkRegex = /^\\/?#[^/!]/;\n\n      dom.isSkipLink = function (element) {\n        if (!isInternalLinkRegex.test(element.getAttribute('href'))) {\n          return false;\n        }\n\n        var firstPageLink;\n\n        if (typeof axe._cache.get('firstPageLink') !== 'undefined') {\n          firstPageLink = axe._cache.get('firstPageLink');\n        } else {\n          firstPageLink = axe.utils.querySelectorAll(axe._tree, 'a:not([href^=\"#\"]):not([href^=\"/#\"]):not([href^=\"javascript\"])')[0];\n\n          axe._cache.set('firstPageLink', firstPageLink || null);\n        }\n\n        if (!firstPageLink) {\n          return true;\n        }\n\n        return element.compareDocumentPosition(firstPageLink.actualNode) === element.DOCUMENT_POSITION_FOLLOWING;\n      };\n\n      var clipRegex = /rect\\s*\\(([0-9]+)px,?\\s*([0-9]+)px,?\\s*([0-9]+)px,?\\s*([0-9]+)px\\s*\\)/;\n      var clipPathRegex = /(\\w+)\\((\\d+)/;\n\n      function isClipped(style) {\n        'use strict';\n\n        var matchesClip = style.getPropertyValue('clip').match(clipRegex);\n        var matchesClipPath = style.getPropertyValue('clip-path').match(clipPathRegex);\n\n        if (matchesClip && matchesClip.length === 5) {\n          return matchesClip[3] - matchesClip[1] <= 0 && matchesClip[2] - matchesClip[4] <= 0;\n        }\n\n        if (matchesClipPath) {\n          var type = matchesClipPath[1];\n          var value = parseInt(matchesClipPath[2], 10);\n\n          switch (type) {\n            case 'inset':\n              return value >= 50;\n\n            case 'circle':\n              return value === 0;\n\n            default:\n          }\n        }\n\n        return false;\n      }\n\n      function isAreaVisible(el, screenReader, recursed) {\n        var mapEl = dom.findUp(el, 'map');\n\n        if (!mapEl) {\n          return false;\n        }\n\n        var mapElName = mapEl.getAttribute('name');\n\n        if (!mapElName) {\n          return false;\n        }\n\n        var mapElRootNode = dom.getRootNode(el);\n\n        if (!mapElRootNode || mapElRootNode.nodeType !== 9) {\n          return false;\n        }\n\n        var refs = axe.utils.querySelectorAll(axe._tree, 'img[usemap=\"#'.concat(axe.utils.escapeSelector(mapElName), '\"]'));\n\n        if (!refs || !refs.length) {\n          return false;\n        }\n\n        return refs.some(function (_ref41) {\n          var actualNode = _ref41.actualNode;\n          return dom.isVisible(actualNode, screenReader, recursed);\n        });\n      }\n\n      dom.isVisible = function (el, screenReader, recursed) {\n        'use strict';\n\n        var node = axe.utils.getNodeFromTree(el);\n        var cacheName = '_isVisible' + (screenReader ? 'ScreenReader' : '');\n\n        if (el.nodeType === 9) {\n          return true;\n        }\n\n        if (el.nodeType === 11) {\n          el = el.host;\n        }\n\n        if (node && typeof node[cacheName] !== 'undefined') {\n          return node[cacheName];\n        }\n\n        var style = window.getComputedStyle(el, null);\n\n        if (style === null) {\n          return false;\n        }\n\n        var nodeName = el.nodeName.toUpperCase();\n\n        if (nodeName === 'AREA') {\n          return isAreaVisible(el, screenReader, recursed);\n        }\n\n        if (style.getPropertyValue('display') === 'none' || ['STYLE', 'SCRIPT', 'NOSCRIPT', 'TEMPLATE'].includes(nodeName)) {\n          return false;\n        }\n\n        if (screenReader && el.getAttribute('aria-hidden') === 'true') {\n          return false;\n        }\n\n        if (!screenReader && (isClipped(style) || style.getPropertyValue('opacity') === '0' || axe.utils.getScroll(el) && parseInt(style.getPropertyValue('height')) === 0)) {\n          return false;\n        }\n\n        if (!recursed && (style.getPropertyValue('visibility') === 'hidden' || !screenReader && axe.commons.dom.isOffscreen(el))) {\n          return false;\n        }\n\n        var parent = el.assignedSlot ? el.assignedSlot : el.parentNode;\n        var isVisible = false;\n\n        if (parent) {\n          isVisible = dom.isVisible(parent, screenReader, true);\n        }\n\n        if (node) {\n          node[cacheName] = isVisible;\n        }\n\n        return isVisible;\n      };\n\n      var visualRoles = ['checkbox', 'img', 'radio', 'range', 'slider', 'spinbutton', 'textbox'];\n\n      dom.isVisualContent = function (element) {\n        var role = element.getAttribute('role');\n\n        if (role) {\n          return visualRoles.indexOf(role) !== -1;\n        }\n\n        switch (element.nodeName.toUpperCase()) {\n          case 'IMG':\n          case 'IFRAME':\n          case 'OBJECT':\n          case 'VIDEO':\n          case 'AUDIO':\n          case 'CANVAS':\n          case 'SVG':\n          case 'MATH':\n          case 'BUTTON':\n          case 'SELECT':\n          case 'TEXTAREA':\n          case 'KEYGEN':\n          case 'PROGRESS':\n          case 'METER':\n            return true;\n\n          case 'INPUT':\n            return element.type !== 'hidden';\n\n          default:\n            return false;\n        }\n      };\n\n      dom.shadowElementsFromPoint = function (nodeX, nodeY) {\n        var root = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : document;\n        var i = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n\n        if (i > 999) {\n          throw new Error('Infinite loop detected');\n        }\n\n        return Array.from(root.elementsFromPoint(nodeX, nodeY) || []).filter(function (nodes) {\n          return dom.getRootNode(nodes) === root;\n        }).reduce(function (stack, elm) {\n          if (axe.utils.isShadowRoot(elm)) {\n            var shadowStack = dom.shadowElementsFromPoint(nodeX, nodeY, elm.shadowRoot, i + 1);\n            stack = stack.concat(shadowStack);\n\n            if (stack.length && axe.commons.dom.visuallyContains(stack[0], elm)) {\n              stack.push(elm);\n            }\n          } else {\n            stack.push(elm);\n          }\n\n          return stack;\n        }, []);\n      };\n\n      dom.urlPropsFromAttribute = function urlPropsFromAttribute(node, attribute) {\n        if (!node.hasAttribute(attribute)) {\n          return undefined;\n        }\n\n        var nodeName = node.nodeName.toUpperCase();\n        var parser = node;\n\n        if (!['A', 'AREA'].includes(nodeName) || node.ownerSVGElement) {\n          parser = document.createElement('a');\n          parser.href = node.getAttribute(attribute);\n        }\n\n        var protocol = ['https:', 'ftps:'].includes(parser.protocol) ? parser.protocol.replace(/s:$/, ':') : parser.protocol;\n        var parserPathname = /^\\//.test(parser.pathname) ? parser.pathname : '/'.concat(parser.pathname);\n\n        var _getPathnameOrFilenam = getPathnameOrFilename(parserPathname),\n            pathname = _getPathnameOrFilenam.pathname,\n            filename = _getPathnameOrFilenam.filename;\n\n        return {\n          protocol: protocol,\n          hostname: parser.hostname,\n          port: getPort(parser.port),\n          pathname: /\\/$/.test(pathname) ? pathname : ''.concat(pathname, '/'),\n          search: getSearchPairs(parser.search),\n          hash: getHashRoute(parser.hash),\n          filename: filename\n        };\n      };\n\n      function getPort(port) {\n        var excludePorts = ['443', '80'];\n        return !excludePorts.includes(port) ? port : '';\n      }\n\n      function getPathnameOrFilename(pathname) {\n        var filename = pathname.split('/').pop();\n\n        if (!filename || filename.indexOf('.') === -1) {\n          return {\n            pathname: pathname,\n            filename: ''\n          };\n        }\n\n        return {\n          pathname: pathname.replace(filename, ''),\n          filename: /index./.test(filename) ? '' : filename\n        };\n      }\n\n      function getSearchPairs(searchStr) {\n        var query = {};\n\n        if (!searchStr || !searchStr.length) {\n          return query;\n        }\n\n        var pairs = searchStr.substring(1).split('&');\n\n        if (!pairs || !pairs.length) {\n          return query;\n        }\n\n        for (var index = 0; index < pairs.length; index++) {\n          var pair = pairs[index];\n\n          var _pair$split = pair.split('='),\n              _pair$split2 = _slicedToArray(_pair$split, 2),\n              key = _pair$split2[0],\n              _pair$split2$ = _pair$split2[1],\n              value = _pair$split2$ === void 0 ? '' : _pair$split2$;\n\n          query[decodeURIComponent(key)] = decodeURIComponent(value);\n        }\n\n        return query;\n      }\n\n      function getHashRoute(hash) {\n        if (!hash) {\n          return '';\n        }\n\n        var hashRegex = /#!?\\/?/g;\n        var hasMatch = hash.match(hashRegex);\n\n        if (!hasMatch) {\n          return '';\n        }\n\n        var _hasMatch = _slicedToArray(hasMatch, 1),\n            matchedStr = _hasMatch[0];\n\n        if (matchedStr === '#') {\n          return '';\n        }\n\n        return hash;\n      }\n\n      function getScrollAncestor(node) {\n        var vNode = axe.utils.getNodeFromTree(node);\n        var ancestor = vNode.parent;\n\n        while (ancestor) {\n          if (axe.utils.getScroll(ancestor.actualNode)) {\n            return ancestor.actualNode;\n          }\n\n          ancestor = ancestor.parent;\n        }\n      }\n\n      function contains(node, parent) {\n        var rectBound = node.getBoundingClientRect();\n        var margin = .01;\n        var rect = {\n          top: rectBound.top + margin,\n          bottom: rectBound.bottom - margin,\n          left: rectBound.left + margin,\n          right: rectBound.right - margin\n        };\n        var parentRect = parent.getBoundingClientRect();\n        var parentTop = parentRect.top;\n        var parentLeft = parentRect.left;\n        var parentScrollArea = {\n          top: parentTop - parent.scrollTop,\n          bottom: parentTop - parent.scrollTop + parent.scrollHeight,\n          left: parentLeft - parent.scrollLeft,\n          right: parentLeft - parent.scrollLeft + parent.scrollWidth\n        };\n        var style = window.getComputedStyle(parent);\n\n        if (style.getPropertyValue('display') === 'inline') {\n          return true;\n        }\n\n        if (rect.left < parentScrollArea.left && rect.left < parentRect.left || rect.top < parentScrollArea.top && rect.top < parentRect.top || rect.right > parentScrollArea.right && rect.right > parentRect.right || rect.bottom > parentScrollArea.bottom && rect.bottom > parentRect.bottom) {\n          return false;\n        }\n\n        if (rect.right > parentRect.right || rect.bottom > parentRect.bottom) {\n          return style.overflow === 'scroll' || style.overflow === 'auto' || style.overflow === 'hidden' || parent instanceof HTMLBodyElement || parent instanceof HTMLHtmlElement;\n        }\n\n        return true;\n      }\n\n      dom.visuallyContains = function visuallyContains(node, parent) {\n        var parentScrollAncestor = getScrollAncestor(parent);\n\n        do {\n          var nextScrollAncestor = getScrollAncestor(node);\n\n          if (nextScrollAncestor === parentScrollAncestor || nextScrollAncestor === parent) {\n            return contains(node, parent);\n          }\n\n          node = nextScrollAncestor;\n        } while (node);\n\n        return false;\n      };\n\n      dom.visuallyOverlaps = function (rect, parent) {\n        var parentRect = parent.getBoundingClientRect();\n        var parentTop = parentRect.top;\n        var parentLeft = parentRect.left;\n        var parentScrollArea = {\n          top: parentTop - parent.scrollTop,\n          bottom: parentTop - parent.scrollTop + parent.scrollHeight,\n          left: parentLeft - parent.scrollLeft,\n          right: parentLeft - parent.scrollLeft + parent.scrollWidth\n        };\n\n        if (rect.left > parentScrollArea.right && rect.left > parentRect.right || rect.top > parentScrollArea.bottom && rect.top > parentRect.bottom || rect.right < parentScrollArea.left && rect.right < parentRect.left || rect.bottom < parentScrollArea.top && rect.bottom < parentRect.top) {\n          return false;\n        }\n\n        var style = window.getComputedStyle(parent);\n\n        if (rect.left > parentRect.right || rect.top > parentRect.bottom) {\n          return style.overflow === 'scroll' || style.overflow === 'auto' || parent instanceof HTMLBodyElement || parent instanceof HTMLHtmlElement;\n        }\n\n        return true;\n      };\n\n      forms.isAriaCombobox = function (node) {\n        var role = axe.commons.aria.getRole(node, {\n          noImplicit: true\n        });\n        return role === 'combobox';\n      };\n\n      forms.isAriaListbox = function (node) {\n        var role = axe.commons.aria.getRole(node, {\n          noImplicit: true\n        });\n        return role === 'listbox';\n      };\n\n      var rangeRoles = ['progressbar', 'scrollbar', 'slider', 'spinbutton'];\n\n      forms.isAriaRange = function (node) {\n        var role = axe.commons.aria.getRole(node, {\n          noImplicit: true\n        });\n        return rangeRoles.includes(role);\n      };\n\n      forms.isAriaTextbox = function (node) {\n        var role = axe.commons.aria.getRole(node, {\n          noImplicit: true\n        });\n        return role === 'textbox';\n      };\n\n      forms.isNativeSelect = function (node) {\n        var nodeName = node.nodeName.toUpperCase();\n        return nodeName === 'SELECT';\n      };\n\n      var nonTextInputTypes = ['button', 'checkbox', 'color', 'file', 'hidden', 'image', 'password', 'radio', 'reset', 'submit'];\n\n      forms.isNativeTextbox = function (node) {\n        var nodeName = node.nodeName.toUpperCase();\n        return nodeName === 'TEXTAREA' || nodeName === 'INPUT' && !nonTextInputTypes.includes(node.type);\n      };\n\n      matches.attributes = function matchesAttributes(vNode, matcher) {\n        if (!(vNode instanceof axe.AbstractVirtualNode)) {\n          vNode = axe.utils.getNodeFromTree(vNode);\n        }\n\n        return matches.fromFunction(function (attrName) {\n          return vNode.attr(attrName);\n        }, matcher);\n      };\n\n      matches.condition = function (arg, condition) {\n        return !!condition(arg);\n      };\n\n      var matchers = ['nodeName', 'attributes', 'properties', 'condition'];\n\n      matches.fromDefinition = function matchFromDefinition(vNode, definition) {\n        if (!(vNode instanceof axe.AbstractVirtualNode)) {\n          vNode = axe.utils.getNodeFromTree(vNode);\n        }\n\n        if (Array.isArray(definition)) {\n          return definition.some(function (definitionItem) {\n            return matches(vNode, definitionItem);\n          });\n        }\n\n        if (typeof definition === 'string') {\n          return axe.utils.matches(vNode, definition);\n        }\n\n        return Object.keys(definition).every(function (matcherName) {\n          if (!matchers.includes(matcherName)) {\n            throw new Error('Unknown matcher type \"'.concat(matcherName, '\"'));\n          }\n\n          var matchMethod = matches[matcherName];\n          var matcher = definition[matcherName];\n          return matchMethod(vNode, matcher);\n        });\n      };\n\n      matches.fromFunction = function matchFromFunction(getValue, matcher) {\n        var matcherType = _typeof(matcher);\n\n        if (matcherType !== 'object' || Array.isArray(matcher) || matcher instanceof RegExp) {\n          throw new Error('Expect matcher to be an object');\n        }\n\n        return Object.keys(matcher).every(function (propName) {\n          return matches.fromPrimative(getValue(propName), matcher[propName]);\n        });\n      };\n\n      matches.fromPrimative = function matchFromPrimative(someString, matcher) {\n        var matcherType = _typeof(matcher);\n\n        if (Array.isArray(matcher) && typeof someString !== 'undefined') {\n          return matcher.includes(someString);\n        }\n\n        if (matcherType === 'function') {\n          return !!matcher(someString);\n        }\n\n        if (matcher instanceof RegExp) {\n          return matcher.test(someString);\n        }\n\n        return matcher === someString;\n      };\n\n      matches.nodeName = function matchNodeName(vNode, matcher) {\n        if (!(vNode instanceof axe.AbstractVirtualNode)) {\n          vNode = axe.utils.getNodeFromTree(vNode);\n        }\n\n        return matches.fromPrimative(vNode.props.nodeName, matcher);\n      };\n\n      matches.properties = function matchesProperties(vNode, matcher) {\n        if (!(vNode instanceof axe.AbstractVirtualNode)) {\n          vNode = axe.utils.getNodeFromTree(vNode);\n        }\n\n        return matches.fromFunction(function (propName) {\n          return vNode.props[propName];\n        }, matcher);\n      };\n\n      table.getAllCells = function (tableElm) {\n        var rowIndex, cellIndex, rowLength, cellLength;\n        var cells = [];\n\n        for (rowIndex = 0, rowLength = tableElm.rows.length; rowIndex < rowLength; rowIndex++) {\n          for (cellIndex = 0, cellLength = tableElm.rows[rowIndex].cells.length; cellIndex < cellLength; cellIndex++) {\n            cells.push(tableElm.rows[rowIndex].cells[cellIndex]);\n          }\n        }\n\n        return cells;\n      };\n\n      table.getCellPosition = axe.utils.memoize(function (cell, tableGrid) {\n        var rowIndex, index;\n\n        if (!tableGrid) {\n          tableGrid = table.toGrid(dom.findUp(cell, 'table'));\n        }\n\n        for (rowIndex = 0; rowIndex < tableGrid.length; rowIndex++) {\n          if (tableGrid[rowIndex]) {\n            index = tableGrid[rowIndex].indexOf(cell);\n\n            if (index !== -1) {\n              return {\n                x: index,\n                y: rowIndex\n              };\n            }\n          }\n        }\n      });\n\n      function traverseForHeaders(headerType, position, tableGrid) {\n        var property = headerType === 'row' ? '_rowHeaders' : '_colHeaders';\n        var predicate = headerType === 'row' ? table.isRowHeader : table.isColumnHeader;\n        var rowEnd = headerType === 'row' ? position.y : 0;\n        var colEnd = headerType === 'row' ? 0 : position.x;\n        var headers;\n        var cells = [];\n\n        for (var row = position.y; row >= rowEnd && !headers; row--) {\n          for (var col = position.x; col >= colEnd; col--) {\n            var cell = tableGrid[row] ? tableGrid[row][col] : undefined;\n\n            if (!cell) {\n              continue;\n            }\n\n            var vNode = axe.utils.getNodeFromTree(cell);\n\n            if (vNode[property]) {\n              headers = vNode[property];\n              break;\n            }\n\n            cells.push(cell);\n          }\n        }\n\n        headers = (headers || []).concat(cells.filter(predicate));\n        cells.forEach(function (tableCell) {\n          var vNode = axe.utils.getNodeFromTree(tableCell);\n          vNode[property] = headers;\n        });\n        return headers;\n      }\n\n      table.getHeaders = function (cell, tableGrid) {\n        if (cell.getAttribute('headers')) {\n          var headers = commons.dom.idrefs(cell, 'headers');\n\n          if (headers.filter(function (header) {\n            return header;\n          }).length) {\n            return headers;\n          }\n        }\n\n        if (!tableGrid) {\n          tableGrid = commons.table.toGrid(commons.dom.findUp(cell, 'table'));\n        }\n\n        var position = commons.table.getCellPosition(cell, tableGrid);\n        var rowHeaders = traverseForHeaders('row', position, tableGrid);\n        var colHeaders = traverseForHeaders('col', position, tableGrid);\n        return [].concat(rowHeaders, colHeaders).reverse();\n      };\n\n      table.getScope = function (cell) {\n        var scope = cell.getAttribute('scope');\n        var role = cell.getAttribute('role');\n\n        if (cell instanceof Element === false || ['TD', 'TH'].indexOf(cell.nodeName.toUpperCase()) === -1) {\n          throw new TypeError('Expected TD or TH element');\n        }\n\n        if (role === 'columnheader') {\n          return 'col';\n        } else if (role === 'rowheader') {\n          return 'row';\n        } else if (scope === 'col' || scope === 'row') {\n          return scope;\n        } else if (cell.nodeName.toUpperCase() !== 'TH') {\n          return false;\n        }\n\n        var tableGrid = table.toGrid(dom.findUp(cell, 'table'));\n        var pos = table.getCellPosition(cell, tableGrid);\n        var headerRow = tableGrid[pos.y].reduce(function (headerRow, cell) {\n          return headerRow && cell.nodeName.toUpperCase() === 'TH';\n        }, true);\n\n        if (headerRow) {\n          return 'col';\n        }\n\n        var headerCol = tableGrid.map(function (col) {\n          return col[pos.x];\n        }).reduce(function (headerCol, cell) {\n          return headerCol && cell && cell.nodeName.toUpperCase() === 'TH';\n        }, true);\n\n        if (headerCol) {\n          return 'row';\n        }\n\n        return 'auto';\n      };\n\n      table.isColumnHeader = function (element) {\n        return ['col', 'auto'].indexOf(table.getScope(element)) !== -1;\n      };\n\n      table.isDataCell = function (cell) {\n        if (!cell.children.length && !cell.textContent.trim()) {\n          return false;\n        }\n\n        var role = cell.getAttribute('role');\n\n        if (axe.commons.aria.isValidRole(role)) {\n          return ['cell', 'gridcell'].includes(role);\n        } else {\n          return cell.nodeName.toUpperCase() === 'TD';\n        }\n      };\n\n      table.isDataTable = function (node) {\n        var role = (node.getAttribute('role') || '').toLowerCase();\n\n        if ((role === 'presentation' || role === 'none') && !dom.isFocusable(node)) {\n          return false;\n        }\n\n        if (node.getAttribute('contenteditable') === 'true' || dom.findUp(node, '[contenteditable=\"true\"]')) {\n          return true;\n        }\n\n        if (role === 'grid' || role === 'treegrid' || role === 'table') {\n          return true;\n        }\n\n        if (commons.aria.getRoleType(role) === 'landmark') {\n          return true;\n        }\n\n        if (node.getAttribute('datatable') === '0') {\n          return false;\n        }\n\n        if (node.getAttribute('summary')) {\n          return true;\n        }\n\n        if (node.tHead || node.tFoot || node.caption) {\n          return true;\n        }\n\n        for (var childIndex = 0, childLength = node.children.length; childIndex < childLength; childIndex++) {\n          if (node.children[childIndex].nodeName.toUpperCase() === 'COLGROUP') {\n            return true;\n          }\n        }\n\n        var cells = 0;\n        var rowLength = node.rows.length;\n        var row, cell;\n        var hasBorder = false;\n\n        for (var rowIndex = 0; rowIndex < rowLength; rowIndex++) {\n          row = node.rows[rowIndex];\n\n          for (var cellIndex = 0, cellLength = row.cells.length; cellIndex < cellLength; cellIndex++) {\n            cell = row.cells[cellIndex];\n\n            if (cell.nodeName.toUpperCase() === 'TH') {\n              return true;\n            }\n\n            if (!hasBorder && (cell.offsetWidth !== cell.clientWidth || cell.offsetHeight !== cell.clientHeight)) {\n              hasBorder = true;\n            }\n\n            if (cell.getAttribute('scope') || cell.getAttribute('headers') || cell.getAttribute('abbr')) {\n              return true;\n            }\n\n            if (['columnheader', 'rowheader'].includes((cell.getAttribute('role') || '').toLowerCase())) {\n              return true;\n            }\n\n            if (cell.children.length === 1 && cell.children[0].nodeName.toUpperCase() === 'ABBR') {\n              return true;\n            }\n\n            cells++;\n          }\n        }\n\n        if (node.getElementsByTagName('table').length) {\n          return false;\n        }\n\n        if (rowLength < 2) {\n          return false;\n        }\n\n        var sampleRow = node.rows[Math.ceil(rowLength / 2)];\n\n        if (sampleRow.cells.length === 1 && sampleRow.cells[0].colSpan === 1) {\n          return false;\n        }\n\n        if (sampleRow.cells.length >= 5) {\n          return true;\n        }\n\n        if (hasBorder) {\n          return true;\n        }\n\n        var bgColor, bgImage;\n\n        for (rowIndex = 0; rowIndex < rowLength; rowIndex++) {\n          row = node.rows[rowIndex];\n\n          if (bgColor && bgColor !== window.getComputedStyle(row).getPropertyValue('background-color')) {\n            return true;\n          } else {\n            bgColor = window.getComputedStyle(row).getPropertyValue('background-color');\n          }\n\n          if (bgImage && bgImage !== window.getComputedStyle(row).getPropertyValue('background-image')) {\n            return true;\n          } else {\n            bgImage = window.getComputedStyle(row).getPropertyValue('background-image');\n          }\n        }\n\n        if (rowLength >= 20) {\n          return true;\n        }\n\n        if (dom.getElementCoordinates(node).width > dom.getViewportSize(window).width * .95) {\n          return false;\n        }\n\n        if (cells < 10) {\n          return false;\n        }\n\n        if (node.querySelector('object, embed, iframe, applet')) {\n          return false;\n        }\n\n        return true;\n      };\n\n      table.isHeader = function (cell) {\n        if (table.isColumnHeader(cell) || table.isRowHeader(cell)) {\n          return true;\n        }\n\n        if (cell.getAttribute('id')) {\n          var id = axe.utils.escapeSelector(cell.getAttribute('id'));\n          return !!document.querySelector('[headers~=\"'.concat(id, '\"]'));\n        }\n\n        return false;\n      };\n\n      table.isRowHeader = function (cell) {\n        return ['row', 'auto'].includes(table.getScope(cell));\n      };\n\n      table.toGrid = axe.utils.memoize(function (node) {\n        var table = [];\n        var rows = node.rows;\n\n        for (var i = 0, rowLength = rows.length; i < rowLength; i++) {\n          var cells = rows[i].cells;\n          table[i] = table[i] || [];\n          var columnIndex = 0;\n\n          for (var j = 0, cellLength = cells.length; j < cellLength; j++) {\n            for (var colSpan = 0; colSpan < cells[j].colSpan; colSpan++) {\n              for (var rowSpan = 0; rowSpan < cells[j].rowSpan; rowSpan++) {\n                table[i + rowSpan] = table[i + rowSpan] || [];\n\n                while (table[i + rowSpan][columnIndex]) {\n                  columnIndex++;\n                }\n\n                table[i + rowSpan][columnIndex] = cells[j];\n              }\n\n              columnIndex++;\n            }\n          }\n        }\n\n        return table;\n      });\n      table.toArray = table.toGrid;\n\n      (function (table) {\n        var traverseTable = function traverseTable(dir, position, tableGrid, callback) {\n          var result;\n          var cell = tableGrid[position.y] ? tableGrid[position.y][position.x] : undefined;\n\n          if (!cell) {\n            return [];\n          }\n\n          if (typeof callback === 'function') {\n            result = callback(cell, position, tableGrid);\n\n            if (result === true) {\n              return [cell];\n            }\n          }\n\n          result = traverseTable(dir, {\n            x: position.x + dir.x,\n            y: position.y + dir.y\n          }, tableGrid, callback);\n          result.unshift(cell);\n          return result;\n        };\n\n        table.traverse = function (dir, startPos, tableGrid, callback) {\n          if (Array.isArray(startPos)) {\n            callback = tableGrid;\n            tableGrid = startPos;\n            startPos = {\n              x: 0,\n              y: 0\n            };\n          }\n\n          if (typeof dir === 'string') {\n            switch (dir) {\n              case 'left':\n                dir = {\n                  x: -1,\n                  y: 0\n                };\n                break;\n\n              case 'up':\n                dir = {\n                  x: 0,\n                  y: -1\n                };\n                break;\n\n              case 'right':\n                dir = {\n                  x: 1,\n                  y: 0\n                };\n                break;\n\n              case 'down':\n                dir = {\n                  x: 0,\n                  y: 1\n                };\n                break;\n            }\n          }\n\n          return traverseTable(dir, {\n            x: startPos.x + dir.x,\n            y: startPos.y + dir.y\n          }, tableGrid, callback);\n        };\n      })(table);\n\n      text.accessibleText = function accessibleText(element, context) {\n        var virtualNode = axe.utils.getNodeFromTree(element);\n        return text.accessibleTextVirtual(virtualNode, context);\n      };\n\n      text.accessibleTextVirtual = function accessibleTextVirtual(virtualNode) {\n        var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        var actualNode = virtualNode.actualNode;\n        context = prepareContext(virtualNode, context);\n\n        if (shouldIgnoreHidden(virtualNode, context)) {\n          return '';\n        }\n\n        var computationSteps = [aria.arialabelledbyText, aria.arialabelText, text.nativeTextAlternative, text.formControlValue, text.subtreeText, textNodeContent, text.titleText];\n        var accName = computationSteps.reduce(function (accName, step) {\n          if (context.startNode === virtualNode) {\n            accName = text.sanitize(accName);\n          }\n\n          if (accName !== '') {\n            return accName;\n          }\n\n          return step(virtualNode, context);\n        }, '');\n\n        if (context.debug) {\n          axe.log(accName || '{empty-value}', actualNode, context);\n        }\n\n        return accName;\n      };\n\n      function textNodeContent(_ref42) {\n        var actualNode = _ref42.actualNode;\n\n        if (actualNode.nodeType !== 3) {\n          return '';\n        }\n\n        return actualNode.textContent;\n      }\n\n      function shouldIgnoreHidden(_ref43, context) {\n        var actualNode = _ref43.actualNode;\n\n        if (actualNode.nodeType !== 1 || context.includeHidden) {\n          return false;\n        }\n\n        return !dom.isVisible(actualNode, true);\n      }\n\n      function prepareContext(virtualNode, context) {\n        var actualNode = virtualNode.actualNode;\n\n        if (!context.startNode) {\n          context = _extends({\n            startNode: virtualNode\n          }, context);\n        }\n\n        if (actualNode.nodeType === 1 && context.inLabelledByContext && context.includeHidden === undefined) {\n          context = _extends({\n            includeHidden: !dom.isVisible(actualNode, true)\n          }, context);\n        }\n\n        return context;\n      }\n\n      text.accessibleTextVirtual.alreadyProcessed = function alreadyProcessed(virtualnode, context) {\n        context.processed = context.processed || [];\n\n        if (context.processed.includes(virtualnode)) {\n          return true;\n        }\n\n        context.processed.push(virtualnode);\n        return false;\n      };\n\n      var controlValueRoles = ['textbox', 'progressbar', 'scrollbar', 'slider', 'spinbutton', 'combobox', 'listbox'];\n      text.formControlValueMethods = {\n        nativeTextboxValue: nativeTextboxValue,\n        nativeSelectValue: nativeSelectValue,\n        ariaTextboxValue: ariaTextboxValue,\n        ariaListboxValue: ariaListboxValue,\n        ariaComboboxValue: ariaComboboxValue,\n        ariaRangeValue: ariaRangeValue\n      };\n\n      text.formControlValue = function formControlValue(virtualNode) {\n        var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        var actualNode = virtualNode.actualNode;\n        var unsupported = text.unsupported.accessibleNameFromFieldValue || [];\n        var role = aria.getRole(actualNode);\n\n        if (context.startNode === virtualNode || !controlValueRoles.includes(role) || unsupported.includes(role)) {\n          return '';\n        }\n\n        var valueMethods = Object.keys(text.formControlValueMethods).map(function (name) {\n          return text.formControlValueMethods[name];\n        });\n        var valueString = valueMethods.reduce(function (accName, step) {\n          return accName || step(virtualNode, context);\n        }, '');\n\n        if (context.debug) {\n          axe.log(valueString || '{empty-value}', actualNode, context);\n        }\n\n        return valueString;\n      };\n\n      function nativeTextboxValue(node) {\n        node = node.actualNode || node;\n\n        if (axe.commons.forms.isNativeTextbox(node)) {\n          return node.value || '';\n        }\n\n        return '';\n      }\n\n      function nativeSelectValue(node) {\n        node = node.actualNode || node;\n\n        if (!axe.commons.forms.isNativeSelect(node)) {\n          return '';\n        }\n\n        return Array.from(node.options).filter(function (option) {\n          return option.selected;\n        }).map(function (option) {\n          return option.text;\n        }).join(' ') || '';\n      }\n\n      function ariaTextboxValue(virtualNode) {\n        var actualNode = virtualNode.actualNode;\n\n        if (!axe.commons.forms.isAriaTextbox(actualNode)) {\n          return '';\n        }\n\n        if (!dom.isHiddenWithCSS(actualNode)) {\n          return text.visibleVirtual(virtualNode, true);\n        } else {\n          return actualNode.textContent;\n        }\n      }\n\n      function ariaListboxValue(virtualNode, context) {\n        var actualNode = virtualNode.actualNode;\n\n        if (!axe.commons.forms.isAriaListbox(actualNode)) {\n          return '';\n        }\n\n        var selected = aria.getOwnedVirtual(virtualNode).filter(function (owned) {\n          return aria.getRole(owned) === 'option' && owned.actualNode.getAttribute('aria-selected') === 'true';\n        });\n\n        if (selected.length === 0) {\n          return '';\n        }\n\n        return axe.commons.text.accessibleTextVirtual(selected[0], context);\n      }\n\n      function ariaComboboxValue(virtualNode, context) {\n        var actualNode = virtualNode.actualNode;\n        var listbox;\n\n        if (!axe.commons.forms.isAriaCombobox(actualNode)) {\n          return '';\n        }\n\n        listbox = aria.getOwnedVirtual(virtualNode).filter(function (elm) {\n          return aria.getRole(elm) === 'listbox';\n        })[0];\n        return listbox ? text.formControlValueMethods.ariaListboxValue(listbox, context) : '';\n      }\n\n      function ariaRangeValue(node) {\n        node = node.actualNode || node;\n\n        if (!axe.commons.forms.isAriaRange(node) || !node.hasAttribute('aria-valuenow')) {\n          return '';\n        }\n\n        var valueNow = +node.getAttribute('aria-valuenow');\n        return !isNaN(valueNow) ? String(valueNow) : '0';\n      }\n\n      text.isHumanInterpretable = function (str) {\n        if (!str.length) {\n          return 0;\n        }\n\n        var alphaNumericIconMap = ['x', 'i'];\n\n        if (alphaNumericIconMap.includes(str)) {\n          return 0;\n        }\n\n        var noUnicodeStr = text.removeUnicode(str, {\n          emoji: true,\n          nonBmp: true,\n          punctuations: true\n        });\n\n        if (!text.sanitize(noUnicodeStr)) {\n          return 0;\n        }\n\n        return 1;\n      };\n\n      text.isIconLigature = function (textVNode) {\n        var differenceThreshold = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : .15;\n        var occuranceThreshold = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 3;\n        var nodeValue = textVNode.actualNode.nodeValue.trim();\n\n        if (!text.sanitize(nodeValue) || text.hasUnicode(nodeValue, {\n          emoji: true,\n          nonBmp: true\n        })) {\n          return false;\n        }\n\n        if (!axe._cache.get('canvasContext')) {\n          axe._cache.set('canvasContext', document.createElement('canvas').getContext('2d'));\n        }\n\n        var canvasContext = axe._cache.get('canvasContext');\n\n        var canvas = canvasContext.canvas;\n\n        if (!axe._cache.get('fonts')) {\n          axe._cache.set('fonts', {});\n        }\n\n        var fonts = axe._cache.get('fonts');\n\n        var style = window.getComputedStyle(textVNode.parent.actualNode);\n        var fontFamily = style.getPropertyValue('font-family');\n\n        if (!fonts[fontFamily]) {\n          fonts[fontFamily] = {\n            occurances: 0,\n            numLigatures: 0\n          };\n        }\n\n        var font = fonts[fontFamily];\n\n        if (font.occurances >= occuranceThreshold) {\n          if (font.numLigatures / font.occurances === 1) {\n            return true;\n          } else if (font.numLigatures === 0) {\n            return false;\n          }\n        }\n\n        font.occurances++;\n        var fontSize = 30;\n        var fontStyle = ''.concat(fontSize, 'px ').concat(fontFamily);\n        canvasContext.font = fontStyle;\n        var firstChar = nodeValue.charAt(0);\n        var width = canvasContext.measureText(firstChar).width;\n\n        if (width < 30) {\n          var diff = 30 / width;\n          width *= diff;\n          fontSize *= diff;\n          fontStyle = ''.concat(fontSize, 'px ').concat(fontFamily);\n        }\n\n        canvas.width = width;\n        canvas.height = fontSize;\n        canvasContext.font = fontStyle;\n        canvasContext.textAlign = 'left';\n        canvasContext.textBaseline = 'top';\n        canvasContext.fillText(firstChar, 0, 0);\n        var compareData = new Uint32Array(canvasContext.getImageData(0, 0, width, fontSize).data.buffer);\n\n        if (!compareData.some(function (pixel) {\n          return pixel;\n        })) {\n          font.numLigatures++;\n          return true;\n        }\n\n        canvasContext.clearRect(0, 0, width, fontSize);\n        canvasContext.fillText(nodeValue, 0, 0);\n        var compareWith = new Uint32Array(canvasContext.getImageData(0, 0, width, fontSize).data.buffer);\n        var differences = compareData.reduce(function (diff, pixel, i) {\n          if (pixel === 0 && compareWith[i] === 0) {\n            return diff;\n          }\n\n          if (pixel !== 0 && compareWith[i] !== 0) {\n            return diff;\n          }\n\n          return ++diff;\n        }, 0);\n        var expectedWidth = nodeValue.split('').reduce(function (width, _char) {\n          return width + canvasContext.measureText(_char).width;\n        }, 0);\n        var actualWidth = canvasContext.measureText(nodeValue).width;\n        var pixelDifference = differences / compareData.length;\n        var sizeDifference = 1 - actualWidth / expectedWidth;\n\n        if (pixelDifference >= differenceThreshold && sizeDifference >= differenceThreshold) {\n          font.numLigatures++;\n          return true;\n        }\n\n        return false;\n      };\n\n      var autocomplete = {\n        stateTerms: ['on', 'off'],\n        standaloneTerms: ['name', 'honorific-prefix', 'given-name', 'additional-name', 'family-name', 'honorific-suffix', 'nickname', 'username', 'new-password', 'current-password', 'organization-title', 'organization', 'street-address', 'address-line1', 'address-line2', 'address-line3', 'address-level4', 'address-level3', 'address-level2', 'address-level1', 'country', 'country-name', 'postal-code', 'cc-name', 'cc-given-name', 'cc-additional-name', 'cc-family-name', 'cc-number', 'cc-exp', 'cc-exp-month', 'cc-exp-year', 'cc-csc', 'cc-type', 'transaction-currency', 'transaction-amount', 'language', 'bday', 'bday-day', 'bday-month', 'bday-year', 'sex', 'url', 'photo'],\n        qualifiers: ['home', 'work', 'mobile', 'fax', 'pager'],\n        qualifiedTerms: ['tel', 'tel-country-code', 'tel-national', 'tel-area-code', 'tel-local', 'tel-local-prefix', 'tel-local-suffix', 'tel-extension', 'email', 'impp'],\n        locations: ['billing', 'shipping']\n      };\n      text.autocomplete = autocomplete;\n\n      text.isValidAutocomplete = function isValidAutocomplete(autocomplete) {\n        var _ref44 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n            _ref44$looseTyped = _ref44.looseTyped,\n            looseTyped = _ref44$looseTyped === void 0 ? false : _ref44$looseTyped,\n            _ref44$stateTerms = _ref44.stateTerms,\n            stateTerms = _ref44$stateTerms === void 0 ? [] : _ref44$stateTerms,\n            _ref44$locations = _ref44.locations,\n            locations = _ref44$locations === void 0 ? [] : _ref44$locations,\n            _ref44$qualifiers = _ref44.qualifiers,\n            qualifiers = _ref44$qualifiers === void 0 ? [] : _ref44$qualifiers,\n            _ref44$standaloneTerm = _ref44.standaloneTerms,\n            standaloneTerms = _ref44$standaloneTerm === void 0 ? [] : _ref44$standaloneTerm,\n            _ref44$qualifiedTerms = _ref44.qualifiedTerms,\n            qualifiedTerms = _ref44$qualifiedTerms === void 0 ? [] : _ref44$qualifiedTerms;\n\n        autocomplete = autocomplete.toLowerCase().trim();\n        stateTerms = stateTerms.concat(text.autocomplete.stateTerms);\n\n        if (stateTerms.includes(autocomplete) || autocomplete === '') {\n          return true;\n        }\n\n        qualifiers = qualifiers.concat(text.autocomplete.qualifiers);\n        locations = locations.concat(text.autocomplete.locations);\n        standaloneTerms = standaloneTerms.concat(text.autocomplete.standaloneTerms);\n        qualifiedTerms = qualifiedTerms.concat(text.autocomplete.qualifiedTerms);\n        var autocompleteTerms = autocomplete.split(/\\s+/g);\n\n        if (!looseTyped) {\n          if (autocompleteTerms[0].length > 8 && autocompleteTerms[0].substr(0, 8) === 'section-') {\n            autocompleteTerms.shift();\n          }\n\n          if (locations.includes(autocompleteTerms[0])) {\n            autocompleteTerms.shift();\n          }\n\n          if (qualifiers.includes(autocompleteTerms[0])) {\n            autocompleteTerms.shift();\n            standaloneTerms = [];\n          }\n\n          if (autocompleteTerms.length !== 1) {\n            return false;\n          }\n        }\n\n        var purposeTerm = autocompleteTerms[autocompleteTerms.length - 1];\n        return standaloneTerms.includes(purposeTerm) || qualifiedTerms.includes(purposeTerm);\n      };\n\n      text.labelText = function labelText(virtualNode) {\n        var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        var alreadyProcessed = text.accessibleTextVirtual.alreadyProcessed;\n\n        if (context.inControlContext || context.inLabelledByContext || alreadyProcessed(virtualNode, context)) {\n          return '';\n        }\n\n        if (!context.startNode) {\n          context.startNode = virtualNode;\n        }\n\n        var labelContext = _extends({\n          inControlContext: true\n        }, context);\n\n        var explicitLabels = getExplicitLabels(virtualNode);\n        var implicitLabel = dom.findUpVirtual(virtualNode, 'label');\n        var labels;\n\n        if (implicitLabel) {\n          labels = [].concat(_toConsumableArray(explicitLabels), [implicitLabel]);\n          labels.sort(axe.utils.nodeSorter);\n        } else {\n          labels = explicitLabels;\n        }\n\n        return labels.map(function (label) {\n          return text.accessibleText(label, labelContext);\n        }).filter(function (text) {\n          return text !== '';\n        }).join(' ');\n      };\n\n      function getExplicitLabels(_ref45) {\n        var actualNode = _ref45.actualNode;\n\n        if (!actualNode.id) {\n          return [];\n        }\n\n        return dom.findElmsInContext({\n          elm: 'label',\n          attr: 'for',\n          value: actualNode.id,\n          context: actualNode\n        });\n      }\n\n      text.labelVirtual = function (node) {\n        var ref, candidate, doc;\n        candidate = aria.labelVirtual(node);\n\n        if (candidate) {\n          return candidate;\n        }\n\n        if (node.actualNode.id) {\n          var id = axe.utils.escapeSelector(node.actualNode.getAttribute('id'));\n          doc = axe.commons.dom.getRootNode(node.actualNode);\n          ref = doc.querySelector('label[for=\"' + id + '\"]');\n          candidate = ref && text.visible(ref, true);\n\n          if (candidate) {\n            return candidate;\n          }\n        }\n\n        ref = dom.findUpVirtual(node, 'label');\n        candidate = ref && text.visible(ref, true);\n\n        if (candidate) {\n          return candidate;\n        }\n\n        return null;\n      };\n\n      text.label = function (node) {\n        node = axe.utils.getNodeFromTree(node);\n        return text.labelVirtual(node);\n      };\n\n      text.nativeElementType = [{\n        matches: [{\n          nodeName: 'textarea'\n        }, {\n          nodeName: 'input',\n          properties: {\n            type: ['text', 'password', 'search', 'tel', 'email', 'url']\n          }\n        }],\n        namingMethods: 'labelText'\n      }, {\n        matches: {\n          nodeName: 'input',\n          properties: {\n            type: ['button', 'submit', 'reset']\n          }\n        },\n        namingMethods: ['valueText', 'titleText', 'buttonDefaultText']\n      }, {\n        matches: {\n          nodeName: 'input',\n          properties: {\n            type: 'image'\n          }\n        },\n        namingMethods: ['altText', 'valueText', 'labelText', 'titleText', 'buttonDefaultText']\n      }, {\n        matches: 'button',\n        namingMethods: 'subtreeText'\n      }, {\n        matches: 'fieldset',\n        namingMethods: 'fieldsetLegendText'\n      }, {\n        matches: 'OUTPUT',\n        namingMethods: 'subtreeText'\n      }, {\n        matches: [{\n          nodeName: 'select'\n        }, {\n          nodeName: 'input',\n          properties: {\n            type: /^(?!text|password|search|tel|email|url|button|submit|reset)/\n          }\n        }],\n        namingMethods: 'labelText'\n      }, {\n        matches: 'summary',\n        namingMethods: 'subtreeText'\n      }, {\n        matches: 'figure',\n        namingMethods: ['figureText', 'titleText']\n      }, {\n        matches: 'img',\n        namingMethods: 'altText'\n      }, {\n        matches: 'table',\n        namingMethods: ['tableCaptionText', 'tableSummaryText']\n      }, {\n        matches: ['hr', 'br'],\n        namingMethods: ['titleText', 'singleSpace']\n      }];\n\n      text.nativeTextAlternative = function nativeTextAlternative(virtualNode) {\n        var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        var actualNode = virtualNode.actualNode;\n\n        if (actualNode.nodeType !== 1 || ['presentation', 'none'].includes(aria.getRole(actualNode))) {\n          return '';\n        }\n\n        var textMethods = findTextMethods(virtualNode);\n        var accName = textMethods.reduce(function (accName, step) {\n          return accName || step(virtualNode, context);\n        }, '');\n\n        if (context.debug) {\n          axe.log(accName || '{empty-value}', actualNode, context);\n        }\n\n        return accName;\n      };\n\n      function findTextMethods(virtualNode) {\n        var nativeElementType = text.nativeElementType,\n            nativeTextMethods = text.nativeTextMethods;\n        var nativeType = nativeElementType.find(function (_ref46) {\n          var matches = _ref46.matches;\n          return axe.commons.matches(virtualNode, matches);\n        });\n        var methods = nativeType ? [].concat(nativeType.namingMethods) : [];\n        return methods.map(function (methodName) {\n          return nativeTextMethods[methodName];\n        });\n      }\n\n      var defaultButtonValues = {\n        submit: 'Submit',\n        image: 'Submit',\n        reset: 'Reset',\n        button: ''\n      };\n      text.nativeTextMethods = {\n        valueText: function valueText(_ref47) {\n          var actualNode = _ref47.actualNode;\n          return actualNode.value || '';\n        },\n        buttonDefaultText: function buttonDefaultText(_ref48) {\n          var actualNode = _ref48.actualNode;\n          return defaultButtonValues[actualNode.type] || '';\n        },\n        tableCaptionText: descendantText.bind(null, 'caption'),\n        figureText: descendantText.bind(null, 'figcaption'),\n        fieldsetLegendText: descendantText.bind(null, 'legend'),\n        altText: attrText.bind(null, 'alt'),\n        tableSummaryText: attrText.bind(null, 'summary'),\n        titleText: function titleText(virtualNode, context) {\n          return text.titleText(virtualNode, context);\n        },\n        subtreeText: function subtreeText(virtualNode, context) {\n          return text.subtreeText(virtualNode, context);\n        },\n        labelText: function labelText(virtualNode, context) {\n          return text.labelText(virtualNode, context);\n        },\n        singleSpace: function singleSpace() {\n          return ' ';\n        }\n      };\n\n      function attrText(attr, _ref49) {\n        var actualNode = _ref49.actualNode;\n        return actualNode.getAttribute(attr) || '';\n      }\n\n      function descendantText(nodeName, _ref50, context) {\n        var actualNode = _ref50.actualNode;\n        nodeName = nodeName.toLowerCase();\n        var nodeNames = [nodeName, actualNode.nodeName.toLowerCase()].join(',');\n        var candidate = actualNode.querySelector(nodeNames);\n\n        if (!candidate || candidate.nodeName.toLowerCase() !== nodeName) {\n          return '';\n        }\n\n        return text.accessibleText(candidate, context);\n      }\n\n      text.sanitize = function (str) {\n        'use strict';\n\n        return str.replace(/\\r\\n/g, '\\n').replace(/\\u00A0/g, ' ').replace(/[\\s]{2,}/g, ' ').trim();\n      };\n\n      text.subtreeText = function subtreeText(virtualNode) {\n        var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        var alreadyProcessed = text.accessibleTextVirtual.alreadyProcessed;\n        context.startNode = context.startNode || virtualNode;\n        var strict = context.strict;\n\n        if (alreadyProcessed(virtualNode, context) || !aria.namedFromContents(virtualNode, {\n          strict: strict\n        })) {\n          return '';\n        }\n\n        return aria.getOwnedVirtual(virtualNode).reduce(function (contentText, child) {\n          return appendAccessibleText(contentText, child, context);\n        }, '');\n      };\n\n      var phrasingElements = ['A', 'EM', 'STRONG', 'SMALL', 'MARK', 'ABBR', 'DFN', 'I', 'B', 'S', 'U', 'CODE', 'VAR', 'SAMP', 'KBD', 'SUP', 'SUB', 'Q', 'CITE', 'SPAN', 'BDO', 'BDI', 'WBR', 'INS', 'DEL', 'MAP', 'AREA', 'NOSCRIPT', 'RUBY', 'BUTTON', 'LABEL', 'OUTPUT', 'DATALIST', 'KEYGEN', 'PROGRESS', 'COMMAND', 'CANVAS', 'TIME', 'METER', '#TEXT'];\n\n      function appendAccessibleText(contentText, virtualNode, context) {\n        var nodeName = virtualNode.actualNode.nodeName.toUpperCase();\n        var contentTextAdd = text.accessibleTextVirtual(virtualNode, context);\n\n        if (!contentTextAdd) {\n          return contentText;\n        }\n\n        if (!phrasingElements.includes(nodeName)) {\n          if (contentTextAdd[0] !== ' ') {\n            contentTextAdd += ' ';\n          }\n\n          if (contentText && contentText[contentText.length - 1] !== ' ') {\n            contentTextAdd = ' ' + contentTextAdd;\n          }\n        }\n\n        return contentText + contentTextAdd;\n      }\n\n      var alwaysTitleElements = ['button', 'iframe', 'a[href]', {\n        nodeName: 'input',\n        properties: {\n          type: 'button'\n        }\n      }];\n\n      text.titleText = function titleText(node) {\n        node = node.actualNode || node;\n\n        if (node.nodeType !== 1 || !node.hasAttribute('title')) {\n          return '';\n        }\n\n        if (!axe.commons.matches(node, alwaysTitleElements) && ['none', 'presentation'].includes(aria.getRole(node))) {\n          return '';\n        }\n\n        return node.getAttribute('title');\n      };\n\n      text.hasUnicode = function hasUnicode(str, options) {\n        var emoji = options.emoji,\n            nonBmp = options.nonBmp,\n            punctuations = options.punctuations;\n\n        if (emoji) {\n          return axe.imports.emojiRegexText().test(str);\n        }\n\n        if (nonBmp) {\n          return getUnicodeNonBmpRegExp().test(str) || getSupplementaryPrivateUseRegExp().test(str);\n        }\n\n        if (punctuations) {\n          return getPunctuationRegExp().test(str);\n        }\n\n        return false;\n      };\n\n      text.removeUnicode = function removeUnicode(str, options) {\n        var emoji = options.emoji,\n            nonBmp = options.nonBmp,\n            punctuations = options.punctuations;\n\n        if (emoji) {\n          str = str.replace(axe.imports.emojiRegexText(), '');\n        }\n\n        if (nonBmp) {\n          str = str.replace(getUnicodeNonBmpRegExp(), '');\n          str = str.replace(getSupplementaryPrivateUseRegExp(), '');\n        }\n\n        if (punctuations) {\n          str = str.replace(getPunctuationRegExp(), '');\n        }\n\n        return str;\n      };\n\n      function getUnicodeNonBmpRegExp() {\n        return /[\\u1D00-\\u1D7F\\u1D80-\\u1DBF\\u1DC0-\\u1DFF\\u20A0-\\u20CF\\u20D0-\\u20FF\\u2100-\\u214F\\u2150-\\u218F\\u2190-\\u21FF\\u2200-\\u22FF\\u2300-\\u23FF\\u2400-\\u243F\\u2440-\\u245F\\u2460-\\u24FF\\u2500-\\u257F\\u2580-\\u259F\\u25A0-\\u25FF\\u2600-\\u26FF\\u2700-\\u27BF\\uE000-\\uF8FF]/g;\n      }\n\n      function getPunctuationRegExp() {\n        return /[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&\\xa3\\xa2\\xa5\\xa7\\u20ac()*+,\\-.\\/:;<=>?@\\[\\]^_`{|}~\\xb1]/g;\n      }\n\n      function getSupplementaryPrivateUseRegExp() {\n        return /[\\uDB80-\\uDBBF][\\uDC00-\\uDFFF]/g;\n      }\n\n      text.unsupported = {\n        accessibleNameFromFieldValue: ['combobox', 'listbox', 'progressbar']\n      };\n\n      text.visibleTextNodes = function (vNode) {\n        var parentVisible = axe.commons.dom.isVisible(vNode.actualNode);\n        var nodes = [];\n        vNode.children.forEach(function (child) {\n          if (child.actualNode.nodeType === 3) {\n            if (parentVisible) {\n              nodes.push(child);\n            }\n          } else {\n            nodes = nodes.concat(text.visibleTextNodes(child));\n          }\n        });\n        return nodes;\n      };\n\n      text.visibleVirtual = function (element, screenReader, noRecursing) {\n        var result = element.children.map(function (child) {\n          if (child.actualNode.nodeType === 3) {\n            var nodeValue = child.actualNode.nodeValue;\n\n            if (nodeValue && dom.isVisible(element.actualNode, screenReader)) {\n              return nodeValue;\n            }\n          } else if (!noRecursing) {\n            return text.visibleVirtual(child, screenReader);\n          }\n        }).join('');\n        return text.sanitize(result);\n      };\n\n      text.visible = function (element, screenReader, noRecursing) {\n        element = axe.utils.getNodeFromTree(element);\n        return text.visibleVirtual(element, screenReader, noRecursing);\n      };\n\n      return commons;\n    }()\n  });\n})(typeof window === 'object' ? window : this);"],"sourceRoot":""}