{"version":3,"sources":["bundle.js"],"names":["r","e","n","t","o","i","f","c","require","u","a","Error","code","p","exports","call","length","1","module","factory","jQuery","Zepto","define","amd","Meteor","$","Mask","el","mask","options","invalid","getCaret","sel","pos","ctrl","get","dSel","document","selection","cSelStart","selectionStart","navigator","appVersion","indexOf","createRange","moveStart","val","text","setCaret","is","range","setSelectionRange","createTextRange","collapse","moveEnd","select","events","on","data","keyCode","which","maskDigitPosMapOld","maskDigitPosMap","jMaskGlobals","useInput","behaviour","setTimeout","keydown","keyup","oldValue","trigger","selectOnFocus","target","clearIfNotMatch","regexMask","test","getRegexMask","translation","pattern","optional","recursive","oRecursive","maskChunks","jMask","charAt","toString","replace","push","digit","join","RegExp","destroyEvents","off","v","isInput","method","arguments","calculateCaretPosition","oldVal","newVal","getMasked","caretPosNew","caretPosOld","newValL","oldValL","maskDigitsBeforeCaret","maskDigitsAfterCaret","maskDigitsBeforeCaretAll","maskDigitsBeforeCaretAllOld","caretPos","window","event","inArray","byPassKeys","keyStrokeCompensation","callbacks","skipMaskChars","lastMaskChar","check","buf","value","undefined","m","maskLen","valLen","offset","addMethod","resetPos","maskDigitCount","maskDigitPosArr","reverse","lastUntranslatedMaskChar","maskDigit","valDigit","match","fallback","lastMaskCharDigit","mapMaskdigitPositions","maskDiff","changed","defaultArgs","callback","name","criteria","args","apply","this","remove","caret","placeholder","removeAttr","getCleanVal","getMaskedVal","init","onlyMask","extend","attr","maxlength","maskWatchers","HTMLAttributes","input","prefix","notSameMaskObject","field","maskObject","stringify","JSON","fn","selector","globals","interval","watchInterval","watchInputs","maskFunction","each","clearInterval","setInterval","find","masked","unmask","dataMask","removeData","cleanVal","applyDataMask","maskElements","filter","dataMaskAttr","userAgent","eventName","isSupported","createElement","setAttribute","watchDataMask","0","9","#","A","S","jquery","2","validate","debug","console","warn","validator","settings","onsubmit","submitButton","currentTarget","hasClass","cancelSubmit","handle","hidden","result","submitHandler","formSubmitted","appendTo","currentForm","preventDefault","form","pendingRequest","focusInvalid","valid","errorList","element","concat","rules","command","argument","staticRules","existingRules","param","filtered","isContentEditable","closest","normalizeRule","messages","split","index","normalizeRules","classRules","attributeRules","dataRules","required","remote","trim","str","expr","pseudos","blank","filled","unchecked","prop","defaults","format","source","params","makeArray","unshift","constructor","Array","slice","groups","errorClass","pendingClass","validClass","errorElement","focusCleanup","errorContainer","errorLabelContainer","ignore","ignoreTitle","onfocusin","lastActive","unhighlight","hideThese","errorsFor","onfocusout","checkable","submitted","onkeyup","excludedKeys","elementValue","onclick","parentNode","highlight","type","findByName","addClass","removeClass","setDefaults","email","url","date","dateISO","number","digits","equalTo","minlength","rangelength","max","min","step","autoCreateRanges","prototype","delegate","eventType","labelContainer","errorContext","containers","add","valueCache","pending","reset","key","invalidHandler","checkForm","errorMap","triggerHandler","showErrors","prepareForm","elements","currentElements","rs","group","cleanElement","clean","checkElement","validationTargetFor","prepareElement","testgroup","numberOfInvalids","toHide","errors","map","message","successList","grep","defaultShowErrors","resetForm","hideErrors","resetElements","objectLength","obj","count","not","addWrapper","hide","size","findLastActive","rulesCache","error","resetInternals","toShow","idx","$element","validity","badInput","substr","lastIndexOf","rule","normalizer","rulesCount","dependencyMismatch","parameters","methods","formatAndAdd","log","id","TypeError","customDataMessage","toUpperCase","substring","toLowerCase","customMessage","String","findDefined","defaultMessage","title","theregex","toToggle","wrapper","parent","showLabel","success","validElements","show","invalidElements","place","errorID","elementID","idOrName","describedBy","html","wrap","append","errorPlacement","insertAfter","parents","escapeCssMeta","describer","string","getLength","nodeName","depend","dependTypes","boolean","function","startRequest","stopRequest","previousValue","old","destroy","classRuleSettings","creditcard","addClassRules","className","classes","normalizeAttributeRule","Number","isNaN","getAttribute","depends","keepRule","parameter","parts","isArray","transformed","called","Date","decimals","errorMessage","supportedTypes","re","notSupported","decimalPlaces","num","toInt","Math","round","pow","optionDataString","previous","originalMessage","ajax","mode","port","dataType","context","response","pendingRequests","ajaxPrefilter","_","xhr","abort","ajaxSettings","3","global","w","noGlobal","DOMEval","node","doc","script","preservedScriptAttributes","head","appendChild","removeChild","toType","class2type","isArrayLike","isFunction","isWindow","elem","winnow","qualifier","nodeType","sibling","cur","dir","createOptions","object","rnothtmlwhite","flag","Identity","Thrower","ex","adoptValue","resolve","reject","noValue","promise","done","fail","then","completed","removeEventListener","ready","fcamelCase","_all","letter","camelCase","rmsPrefix","rdashAlpha","Data","expando","uid","getData","rbrace","parse","dataAttr","rmultiDash","dataUser","set","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","css","initial","unit","cssNumber","initialInUnit","rcssNum","exec","style","start","end","getDefaultDisplay","temp","ownerDocument","display","defaultDisplayMap","body","showHide","values","dataPriv","isHiddenWithinTree","getAll","tag","ret","getElementsByTagName","querySelectorAll","merge","setGlobalEval","elems","refElements","l","buildFragment","scripts","ignored","tmp","attached","j","fragment","createDocumentFragment","nodes","rhtml","rtagName","wrapMap","_default","innerHTML","htmlPrefilter","lastChild","childNodes","firstChild","textContent","createTextNode","isAttached","rscriptType","returnTrue","returnFalse","expectSync","safeActiveElement","activeElement","err","types","one","origFn","guid","leverageNative","namespace","handler","notAsync","saved","isTrigger","special","delegateType","stopPropagation","stopImmediatePropagation","Event","manipulationTarget","content","children","disableScript","restoreScript","removeAttribute","cloneCopyEvent","src","dest","pdataOld","udataOld","udataCur","hasData","access","fixInput","rcheckableType","checked","defaultValue","domManip","collection","flat","first","hasScripts","iNoClone","valueIsFunction","support","checkClone","rchecked","self","eq","clone","contains","_evalUrl","noModule","nonce","rcleanScript","keepData","cleanData","curCSS","computed","width","minWidth","maxWidth","isCustomProp","rcustomProp","getStyles","getPropertyValue","rtrimCSS","pixelBoxStyles","rnumnonpx","rboxStyle","addGetHookIf","conditionFn","hookFn","vendorPropName","capName","cssPrefixes","emptyStyle","finalPropName","final","cssProps","vendorProps","setPositiveNumber","_elem","subtract","matches","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","cssExpand","ceil","getWidthOrHeight","boxSizingNeeded","boxSizingReliable","valueIsBorderBox","offsetProp","reliableTrDimensions","parseFloat","getClientRects","Tween","easing","schedule","inProgress","requestAnimationFrame","fx","tick","createFxNow","fxNow","now","genFx","includeWidth","attrs","height","opacity","createTween","animation","Animation","tweeners","defaultPrefilter","props","opts","toggle","hooks","oldfire","propTween","restoreDisplay","isBox","anim","orig","dataShow","queue","_queueHooks","unqueued","empty","fire","always","rfxtypes","isEmptyObject","overflow","overflowX","overflowY","propFilter","specialEasing","cssHooks","expand","properties","stopped","prefilters","deferred","Deferred","currentTime","remaining","startTime","duration","percent","tweens","run","notifyWith","resolveWith","originalProperties","originalOptions","stop","gotoEnd","rejectWith","bind","progress","complete","timer","stripAndCollapse","getClass","classesToArray","buildParams","traditional","rbracket","addToPrefiltersOrTransports","structure","dataTypeExpression","func","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspect","selected","inspected","prefilterOrFactory","dataTypeOrTransport","seekingTransport","transports","ajaxExtend","deep","flatOptions","ajaxHandleResponses","s","responses","ct","finalDataType","firstDataType","contents","shift","mimeType","getResponseHeader","converters","ajaxConvert","isSuccess","conv2","current","conv","prev","responseFields","dataFilter","throws","state","arr","getProto","Object","getPrototypeOf","array","hasOwn","hasOwnProperty","fnToString","ObjectFunctionString","item","toArray","pushStack","prevObject","last","even","odd","len","sort","splice","copy","copyIsArray","isPlainObject","random","isReady","msg","noop","proto","Ctor","globalEval","results","second","invert","callbackExpect","arg","Symbol","iterator","_i","Sizzle","seed","nid","newSelector","newContext","setDocument","documentIsHTML","rquickExpr","getElementById","getElementsByClassName","qsa","nonnativeSelectorCache","rbuggyQSA","rdescend","rcombinators","rsibling","testContext","scope","rcssescape","fcssescape","tokenize","toSelector","qsaError","rtrim","createCache","cache","keys","Expr","cacheLength","markFunction","assert","addHandle","attrHandle","siblingCheck","b","diff","sourceIndex","nextSibling","createDisabledPseudo","disabled","isDisabled","inDisabledFieldset","createPositionalPseudo","matchIndexes","setFilters","tokens","addCombinator","matcher","combinator","base","skip","next","checkNonElements","doneName","xml","oldCache","uniqueCache","outerCache","newCache","dirruns","uniqueID","elementMatcher","matchers","multipleContexts","contexts","condense","unmatched","newUnmatched","mapped","setMatcher","preFilter","postFilter","postFinder","postSelector","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","relative","implicitRelative","matchContext","matchAnyContext","outermostContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","pop","uniqueSort","getText","isXML","compile","sortInput","hasDuplicate","docElem","rbuggyMatches","preferredDoc","classCache","tokenCache","compilerCache","sortOrder","pushNative","list","booleans","whitespace","identifier","attributes","rwhitespace","rcomma","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","runescape","funescape","escape","nonHex","high","fromCharCode","ch","asCodePoint","charCodeAt","unloadHandler","els","namespaceURI","documentElement","hasCompare","subWindow","defaultView","top","addEventListener","attachEvent","createComment","getById","getElementsByName","attrId","getAttributeNode","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","specified","duplicates","detectDuplicates","sortStable","nodeValue","selectors","createPseudo",">"," ","+","~","excess","unquoted","nodeNameSelector","operator","what","_argument","simple","forward","ofType","_context","nodeIndex","useCache","pseudo","matched","has","lang","elemLang","hash","location","root","focus","hasFocus","href","tabIndex","enabled","selectedIndex","header","button","_matchIndexes","lt","gt","radio","checkbox","file","password","image","submit","filters","parseOnly","soFar","preFilters","cached","token","compiled","_name","unique","isXMLDoc","escapeSelector","until","truncate","siblings","rneedsContext","rsingleTag","rootjQuery","parseHTML","rparentsprev","guaranteedUnique","targets","prevAll","addBack","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","Callbacks","firing","memory","fired","locked","firingIndex","once","stopOnFalse","disable","lock","fireWith","tuples","catch","pipe","fns","newDefer","tuple","returned","notify","onFulfilled","onRejected","onProgress","depth","that","mightThrow","maxDepth","process","exceptionHook","stackTrace","getStackHook","stateString","when","singleValue","resolveContexts","resolveValues","primary","updateFunc","rerrorNames","stack","readyException","readyList","readyWait","wait","readyState","doScroll","chainable","emptyGet","raw","bulk","_key","acceptData","owner","defineProperty","configurable","_data","_removeData","dequeue","startLength","setter","clearQueue","defer","pnum","composed","getRootNode","div","cloneNode","noCloneChecked","option","thead","col","tr","td","tbody","tfoot","colgroup","caption","th","optgroup","rtypenamespace","handleObjIn","eventHandle","handleObj","handlers","namespaces","origType","elemData","create","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","enumerable","originalEvent","writable","load","noBubble","click","beforeunload","returnValue","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","char","charCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","blur","mouseenter","mouseleave","pointerenter","pointerleave","related","rnoInnerhtml","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","prepend","insertBefore","before","after","replaceWith","replaceChild","prependTo","replaceAll","original","insert","opener","getComputedStyle","swap","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","position","scrollboxSizeVal","offsetWidth","measure","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","pixelPosition","reliableMarginLeft","scrollboxSize","table","trChild","trStyle","parseInt","borderTopWidth","borderBottomWidth","offsetHeight","rdisplayswap","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","order","orphans","widows","zIndex","zoom","origName","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","left","margin","padding","border","suffix","expanded","propHooks","eased","scrollTop","scrollLeft","linear","swing","cos","PI","rrun","*","tweener","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","time","timeout","clearTimeout","checkOn","optSelected","radioValue","boolHook","nType","attrHooks","attrNames","getter","lowercaseName","rfocusable","rclickable","removeProp","propFix","tabindex","for","class","classNames","curValue","finalValue","toggleClass","stateVal","isValidValue","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","attaches","rquery","parseXML","parserErrorElem","DOMParser","parseFromString","rCRLF","rsubmitterTypes","rsubmittable","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rlocalProtocol","rnoContent","rprotocol","allTypes","originAnchor","active","lastModified","etag","isLocal","protocol","processData","async","contentType","accepts","json","* text","text html","text json","text xml","ajaxSetup","ajaxTransport","status","nativeStatusText","headers","modified","statusText","timeoutTimer","transport","responseHeadersString","ifModified","cacheURL","callbackContext","statusCode","fireGlobals","globalEventContext","completeDeferred","responseHeaders","urlAnchor","uncached","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","overrideMimeType","finalText","crossDomain","host","hasContent","beforeSend","send","getJSON","getScript","text script","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","XMLHttpRequest","xhrSuccessStatus","1223","xhrSupported","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","","defaultExtra","funcName","unbind","undelegate","hover","fnOver","fnOut","proxy","holdReady","hold","parseJSON","isNumeric","_jQuery","_$","noConflict","4","Slick","dataSettings","accessibility","adaptiveHeight","appendArrows","appendDots","arrows","asNavFor","prevArrow","nextArrow","autoplay","autoplaySpeed","centerMode","centerPadding","cssEase","customPaging","slider","dots","dotsClass","draggable","edgeFriction","fade","focusOnSelect","focusOnChange","infinite","initialSlide","lazyLoad","mobileFirst","pauseOnHover","pauseOnFocus","pauseOnDotsHover","respondTo","responsive","rows","rtl","slide","slidesPerRow","slidesToShow","slidesToScroll","swipe","swipeToSlide","touchMove","touchThreshold","useCSS","useTransform","variableWidth","vertical","verticalSwiping","waitForAnimate","initials","animating","dragging","autoPlayTimer","currentDirection","currentLeft","currentSlide","direction","$dots","listWidth","listHeight","loadIndex","$nextArrow","$prevArrow","scrolling","slideCount","slideWidth","$slideTrack","$slides","sliding","slideOffset","swipeLeft","swiping","$list","touchObject","transformsEnabled","unslicked","activeBreakpoint","animType","animProp","breakpoints","breakpointSettings","cssTransitions","focussed","interrupted","paused","positionProp","rowCount","shouldClick","$slider","$slidesCache","transformType","transitionType","visibilityChange","windowWidth","windowTimer","mozHidden","webkitHidden","autoPlay","autoPlayClear","autoPlayIterator","changeSlide","clickHandler","selectHandler","setPosition","swipeHandler","dragHandler","keyHandler","instanceUid","htmlExpr","registerBreakpoints","activateADA","aria-hidden","addSlide","slickAdd","markup","addBefore","unload","reinit","animateHeight","targetHeight","outerHeight","animateSlide","targetLeft","animProps","animStart","applyTransition","disableTransition","getNavTarget","slick","slideHandler","transition","slideTo","buildArrows","aria-disabled","buildDots","dot","getDotCount","buildOut","setupInfinite","updateDots","setSlideClasses","buildRows","newSlides","numOfSlides","originalSlides","slidesPerSection","row","checkResponsive","forceUpdate","breakpoint","targetBreakpoint","respondToWidth","triggerBreakpoint","sliderWidth","innerWidth","unslick","refresh","dontAnimate","indexOffset","unevenOffset","$target","checkNavigable","navigables","prevNavigable","getNavigableIndexes","cleanUpEvents","interrupt","cleanUpSlideEvents","orientationChange","resize","cleanUpRows","fadeSlide","slideIndex","fadeSlideOut","filterSlides","slickFilter","focusHandler","$sf","getCurrent","slickCurrentSlide","breakPoint","counter","pagerQty","getLeft","verticalHeight","targetSlide","coef","verticalOffset","floor","offsetLeft","outerWidth","getOption","slickGetOption","indexes","getSlick","getSlideCount","swipedSlide","centerOffset","abs","goTo","slickGoTo","creation","setProps","startLoad","loadSlider","initializeEvents","updateArrows","initADA","numDotGroups","tabControlIndexes","slideControlIndex","role","ariaButtonControl","aria-describedby","mappedSlideIndex","aria-controls","aria-label","aria-selected","initArrowEvents","initDotEvents","initSlideEvents","action","initUI","tagName","loadImages","imagesScope","imageSource","imageSrcSet","imageSizes","imageToLoad","loadRange","cloneRange","rangeStart","rangeEnd","prevSlide","nextSlide","progressiveLazyLoad","slickNext","pause","slickPause","play","slickPlay","postSlide","slickPrev","tryCount","$imgsToLoad","initializing","lastVisibleIndex","currentBreakpoint","responsiveSettings","windowDelay","removeSlide","slickRemove","removeBefore","removeAll","setCSS","x","y","positionProps","setDimensions","setFade","setHeight","setOption","slickSetOption","bodyStyle","WebkitTransition","MozTransition","msTransition","OTransform","perspectiveProperty","webkitPerspective","MozTransform","MozPerspective","webkitTransform","msTransform","transform","allSlides","remainder","evenCoef","infiniteCount","targetElement","sync","animSlide","oldSlide","slideLeft","navTarget","swipeDirection","xDist","yDist","swipeAngle","startX","curX","startY","curY","atan2","swipeEnd","swipeLength","edgeHit","minSwipe","fingerCount","swipeStart","swipeMove","positionOffset","verticalSwipeLength","sqrt","unfilterSlides","slickUnfilter","fromBreakpoint","5","clearFields","_len","fields","forEach","viaCep","uf","city","district","street","cep","erro","alert","localidade","bairro","logradouro","default","6","_buscaCep","_buscaCep2","__esModule","hasScrolled","st","lastScrollTop","headerHeight","parallax","is_on_screen","firstTop","elSpeed","moveTop","winScrollTop","animateItens","$window","winHeight","innerHeight","winScroll","$this","elTop","toggleLineLabel","checkAnim","$hasanim","$el","countAssets","totalAssets","currElem","applyAnim","onScroll","scrollPos","currLink","refEl","refElPosTop","setCookie","cname","cvalue","exdays","d","setTime","getTime","expires","toUTCString","cookie","$body","didScroll","$header","scroll","$textVal","$html","viewport","bottom","bounds","btnActive","slideno","$linesAssets","$linesParentHeight","diffX","diffY","degX","degY","$player","$iframe","videoSrc","$accordionHeader","$accordionContext","$accordionContent","country","cellMask","cellOptions","onKeyPress","MoneyOpts","ev","curField","decimalSep","$parentLabel","$quantify","$label","accept","$uf","$city","$district","$street","./helpers/busca-cep","jquery-mask-plugin","jquery-validation","slick-carousel"],"mappings":"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","file":"bundle.js","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i 0) {\n if (el[method]() !== v) {\n el[method](v);\n }\n r = el;\n } else {\n r = el[method]();\n }\n\n return r;\n },\n calculateCaretPosition: function(oldVal) {\n var newVal = p.getMasked(),\n caretPosNew = p.getCaret();\n if (oldVal !== newVal) {\n var caretPosOld = el.data('mask-previus-caret-pos') || 0,\n newValL = newVal.length,\n oldValL = oldVal.length,\n maskDigitsBeforeCaret = 0,\n maskDigitsAfterCaret = 0,\n maskDigitsBeforeCaretAll = 0,\n maskDigitsBeforeCaretAllOld = 0,\n i = 0;\n\n for (i = caretPosNew; i < newValL; i++) {\n if (!p.maskDigitPosMap[i]) {\n break;\n }\n maskDigitsAfterCaret++;\n }\n\n for (i = caretPosNew - 1; i >= 0; i--) {\n if (!p.maskDigitPosMap[i]) {\n break;\n }\n maskDigitsBeforeCaret++;\n }\n\n for (i = caretPosNew - 1; i >= 0; i--) {\n if (p.maskDigitPosMap[i]) {\n maskDigitsBeforeCaretAll++;\n }\n }\n\n for (i = caretPosOld - 1; i >= 0; i--) {\n if (p.maskDigitPosMapOld[i]) {\n maskDigitsBeforeCaretAllOld++;\n }\n }\n\n // if the cursor is at the end keep it there\n if (caretPosNew > oldValL) {\n caretPosNew = newValL * 10;\n } else if (caretPosOld >= caretPosNew && caretPosOld !== oldValL) {\n if (!p.maskDigitPosMapOld[caretPosNew]) {\n var caretPos = caretPosNew;\n caretPosNew -= maskDigitsBeforeCaretAllOld - maskDigitsBeforeCaretAll;\n caretPosNew -= maskDigitsBeforeCaret;\n if (p.maskDigitPosMap[caretPosNew]) {\n caretPosNew = caretPos;\n }\n }\n }\n else if (caretPosNew > caretPosOld) {\n caretPosNew += maskDigitsBeforeCaretAll - maskDigitsBeforeCaretAllOld;\n caretPosNew += maskDigitsAfterCaret;\n }\n }\n return caretPosNew;\n },\n behaviour: function(e) {\n e = e || window.event;\n p.invalid = [];\n\n var keyCode = el.data('mask-keycode');\n\n if ($.inArray(keyCode, jMask.byPassKeys) === -1) {\n var newVal = p.getMasked(),\n caretPos = p.getCaret(),\n oldVal = el.data('mask-previus-value') || '';\n\n // this is a compensation to devices/browsers that don't compensate\n // caret positioning the right way\n setTimeout(function() {\n p.setCaret(p.calculateCaretPosition(oldVal));\n }, $.jMaskGlobals.keyStrokeCompensation);\n\n p.val(newVal);\n p.setCaret(caretPos);\n return p.callbacks(e);\n }\n },\n getMasked: function(skipMaskChars, val) {\n var buf = [],\n value = val === undefined ? p.val() : val + '',\n m = 0, maskLen = mask.length,\n v = 0, valLen = value.length,\n offset = 1, addMethod = 'push',\n resetPos = -1,\n maskDigitCount = 0,\n maskDigitPosArr = [],\n lastMaskChar,\n check;\n\n if (options.reverse) {\n addMethod = 'unshift';\n offset = -1;\n lastMaskChar = 0;\n m = maskLen - 1;\n v = valLen - 1;\n check = function () {\n return m > -1 && v > -1;\n };\n } else {\n lastMaskChar = maskLen - 1;\n check = function () {\n return m < maskLen && v < valLen;\n };\n }\n\n var lastUntranslatedMaskChar;\n while (check()) {\n var maskDigit = mask.charAt(m),\n valDigit = value.charAt(v),\n translation = jMask.translation[maskDigit];\n\n if (translation) {\n if (valDigit.match(translation.pattern)) {\n buf[addMethod](valDigit);\n if (translation.recursive) {\n if (resetPos === -1) {\n resetPos = m;\n } else if (m === lastMaskChar && m !== resetPos) {\n m = resetPos - offset;\n }\n\n if (lastMaskChar === resetPos) {\n m -= offset;\n }\n }\n m += offset;\n } else if (valDigit === lastUntranslatedMaskChar) {\n // matched the last untranslated (raw) mask character that we encountered\n // likely an insert offset the mask character from the last entry; fall\n // through and only increment v\n maskDigitCount--;\n lastUntranslatedMaskChar = undefined;\n } else if (translation.optional) {\n m += offset;\n v -= offset;\n } else if (translation.fallback) {\n buf[addMethod](translation.fallback);\n m += offset;\n v -= offset;\n } else {\n p.invalid.push({p: v, v: valDigit, e: translation.pattern});\n }\n v += offset;\n } else {\n if (!skipMaskChars) {\n buf[addMethod](maskDigit);\n }\n\n if (valDigit === maskDigit) {\n maskDigitPosArr.push(v);\n v += offset;\n } else {\n lastUntranslatedMaskChar = maskDigit;\n maskDigitPosArr.push(v + maskDigitCount);\n maskDigitCount++;\n }\n\n m += offset;\n }\n }\n\n var lastMaskCharDigit = mask.charAt(lastMaskChar);\n if (maskLen === valLen + 1 && !jMask.translation[lastMaskCharDigit]) {\n buf.push(lastMaskCharDigit);\n }\n\n var newVal = buf.join('');\n p.mapMaskdigitPositions(newVal, maskDigitPosArr, valLen);\n return newVal;\n },\n mapMaskdigitPositions: function(newVal, maskDigitPosArr, valLen) {\n var maskDiff = options.reverse ? newVal.length - valLen : 0;\n p.maskDigitPosMap = {};\n for (var i = 0; i < maskDigitPosArr.length; i++) {\n p.maskDigitPosMap[maskDigitPosArr[i] + maskDiff] = 1;\n }\n },\n callbacks: function (e) {\n var val = p.val(),\n changed = val !== oldValue,\n defaultArgs = [val, e, el, options],\n callback = function(name, criteria, args) {\n if (typeof options[name] === 'function' && criteria) {\n options[name].apply(this, args);\n }\n };\n\n callback('onChange', changed === true, defaultArgs);\n callback('onKeyPress', changed === true, defaultArgs);\n callback('onComplete', val.length === mask.length, defaultArgs);\n callback('onInvalid', p.invalid.length > 0, [val, e, el, p.invalid, options]);\n }\n };\n\n el = $(el);\n var jMask = this, oldValue = p.val(), regexMask;\n\n mask = typeof mask === 'function' ? mask(p.val(), undefined, el, options) : mask;\n\n // public methods\n jMask.mask = mask;\n jMask.options = options;\n jMask.remove = function() {\n var caret = p.getCaret();\n if (jMask.options.placeholder) {\n el.removeAttr('placeholder');\n }\n if (el.data('mask-maxlength')) {\n el.removeAttr('maxlength');\n }\n p.destroyEvents();\n p.val(jMask.getCleanVal());\n p.setCaret(caret);\n return el;\n };\n\n // get value without mask\n jMask.getCleanVal = function() {\n return p.getMasked(true);\n };\n\n // get masked value without the value being in the input or element\n jMask.getMaskedVal = function(val) {\n return p.getMasked(false, val);\n };\n\n jMask.init = function(onlyMask) {\n onlyMask = onlyMask || false;\n options = options || {};\n\n jMask.clearIfNotMatch = $.jMaskGlobals.clearIfNotMatch;\n jMask.byPassKeys = $.jMaskGlobals.byPassKeys;\n jMask.translation = $.extend({}, $.jMaskGlobals.translation, options.translation);\n\n jMask = $.extend(true, {}, jMask, options);\n\n regexMask = p.getRegexMask();\n\n if (onlyMask) {\n p.events();\n p.val(p.getMasked());\n } else {\n if (options.placeholder) {\n el.attr('placeholder' , options.placeholder);\n }\n\n // this is necessary, otherwise if the user submit the form\n // and then press the \"back\" button, the autocomplete will erase\n // the data. Works fine on IE9+, FF, Opera, Safari.\n if (el.data('mask')) {\n el.attr('autocomplete', 'off');\n }\n\n // detect if is necessary let the user type freely.\n // for is a lot faster than forEach.\n for (var i = 0, maxlength = true; i < mask.length; i++) {\n var translation = jMask.translation[mask.charAt(i)];\n if (translation && translation.recursive) {\n maxlength = false;\n break;\n }\n }\n\n if (maxlength) {\n el.attr('maxlength', mask.length).data('mask-maxlength', true);\n }\n\n p.destroyEvents();\n p.events();\n\n var caret = p.getCaret();\n p.val(p.getMasked());\n p.setCaret(caret);\n }\n };\n\n jMask.init(!el.is('input'));\n };\n\n $.maskWatchers = {};\n var HTMLAttributes = function () {\n var input = $(this),\n options = {},\n prefix = 'data-mask-',\n mask = input.attr('data-mask');\n\n if (input.attr(prefix + 'reverse')) {\n options.reverse = true;\n }\n\n if (input.attr(prefix + 'clearifnotmatch')) {\n options.clearIfNotMatch = true;\n }\n\n if (input.attr(prefix + 'selectonfocus') === 'true') {\n options.selectOnFocus = true;\n }\n\n if (notSameMaskObject(input, mask, options)) {\n return input.data('mask', new Mask(this, mask, options));\n }\n },\n notSameMaskObject = function(field, mask, options) {\n options = options || {};\n var maskObject = $(field).data('mask'),\n stringify = JSON.stringify,\n value = $(field).val() || $(field).text();\n try {\n if (typeof mask === 'function') {\n mask = mask(value);\n }\n return typeof maskObject !== 'object' || stringify(maskObject.options) !== stringify(options) || maskObject.mask !== mask;\n } catch (e) {}\n },\n eventSupported = function(eventName) {\n var el = document.createElement('div'), isSupported;\n\n eventName = 'on' + eventName;\n isSupported = (eventName in el);\n\n if ( !isSupported ) {\n el.setAttribute(eventName, 'return;');\n isSupported = typeof el[eventName] === 'function';\n }\n el = null;\n\n return isSupported;\n };\n\n $.fn.mask = function(mask, options) {\n options = options || {};\n var selector = this.selector,\n globals = $.jMaskGlobals,\n interval = globals.watchInterval,\n watchInputs = options.watchInputs || globals.watchInputs,\n maskFunction = function() {\n if (notSameMaskObject(this, mask, options)) {\n return $(this).data('mask', new Mask(this, mask, options));\n }\n };\n\n $(this).each(maskFunction);\n\n if (selector && selector !== '' && watchInputs) {\n clearInterval($.maskWatchers[selector]);\n $.maskWatchers[selector] = setInterval(function(){\n $(document).find(selector).each(maskFunction);\n }, interval);\n }\n return this;\n };\n\n $.fn.masked = function(val) {\n return this.data('mask').getMaskedVal(val);\n };\n\n $.fn.unmask = function() {\n clearInterval($.maskWatchers[this.selector]);\n delete $.maskWatchers[this.selector];\n return this.each(function() {\n var dataMask = $(this).data('mask');\n if (dataMask) {\n dataMask.remove().removeData('mask');\n }\n });\n };\n\n $.fn.cleanVal = function() {\n return this.data('mask').getCleanVal();\n };\n\n $.applyDataMask = function(selector) {\n selector = selector || $.jMaskGlobals.maskElements;\n var $selector = (selector instanceof $) ? selector : $(selector);\n $selector.filter($.jMaskGlobals.dataMaskAttr).each(HTMLAttributes);\n };\n\n var globals = {\n maskElements: 'input,td,span,div',\n dataMaskAttr: '*[data-mask]',\n dataMask: true,\n watchInterval: 300,\n watchInputs: true,\n keyStrokeCompensation: 10,\n // old versions of chrome dont work great with input event\n useInput: !/Chrome\\/[2-4][0-9]|SamsungBrowser/.test(window.navigator.userAgent) && eventSupported('input'),\n watchDataMask: false,\n byPassKeys: [9, 16, 17, 18, 36, 37, 38, 39, 40, 91],\n translation: {\n '0': {pattern: /\\d/},\n '9': {pattern: /\\d/, optional: true},\n '#': {pattern: /\\d/, recursive: true},\n 'A': {pattern: /[a-zA-Z0-9]/},\n 'S': {pattern: /[a-zA-Z]/}\n }\n };\n\n $.jMaskGlobals = $.jMaskGlobals || {};\n globals = $.jMaskGlobals = $.extend(true, {}, globals, $.jMaskGlobals);\n\n // looking for inputs with data-mask attribute\n if (globals.dataMask) {\n $.applyDataMask();\n }\n\n setInterval(function() {\n if ($.jMaskGlobals.watchDataMask) {\n $.applyDataMask();\n }\n }, globals.watchInterval);\n}, window.jQuery, window.Zepto));\n\n},{\"jquery\":3}],2:[function(require,module,exports){\n/*!\n * jQuery Validation Plugin v1.19.5\n *\n * https://jqueryvalidation.org/\n *\n * Copyright (c) 2022 Jörn Zaefferer\n * Released under the MIT license\n */\n(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n$.extend( $.fn, {\n\n\t// https://jqueryvalidation.org/validate/\n\tvalidate: function( options ) {\n\n\t\t// If nothing is selected, return nothing; can't chain anyway\n\t\tif ( !this.length ) {\n\t\t\tif ( options && options.debug && window.console ) {\n\t\t\t\tconsole.warn( \"Nothing selected, can't validate, returning nothing.\" );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if a validator for this form was already created\n\t\tvar validator = $.data( this[ 0 ], \"validator\" );\n\t\tif ( validator ) {\n\t\t\treturn validator;\n\t\t}\n\n\t\t// Add novalidate tag if HTML5.\n\t\tthis.attr( \"novalidate\", \"novalidate\" );\n\n\t\tvalidator = new $.validator( options, this[ 0 ] );\n\t\t$.data( this[ 0 ], \"validator\", validator );\n\n\t\tif ( validator.settings.onsubmit ) {\n\n\t\t\tthis.on( \"click.validate\", \":submit\", function( event ) {\n\n\t\t\t\t// Track the used submit button to properly handle scripted\n\t\t\t\t// submits later.\n\t\t\t\tvalidator.submitButton = event.currentTarget;\n\n\t\t\t\t// Allow suppressing validation by adding a cancel class to the submit button\n\t\t\t\tif ( $( this ).hasClass( \"cancel\" ) ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\n\t\t\t\t// Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button\n\t\t\t\tif ( $( this ).attr( \"formnovalidate\" ) !== undefined ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// Validate the form on submit\n\t\t\tthis.on( \"submit.validate\", function( event ) {\n\t\t\t\tif ( validator.settings.debug ) {\n\n\t\t\t\t\t// Prevent form submit to be able to see console output\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\n\t\t\t\tfunction handle() {\n\t\t\t\t\tvar hidden, result;\n\n\t\t\t\t\t// Insert a hidden input as a replacement for the missing submit button\n\t\t\t\t\t// The hidden input is inserted in two cases:\n\t\t\t\t\t// - A user defined a `submitHandler`\n\t\t\t\t\t// - There was a pending request due to `remote` method and `stopRequest()`\n\t\t\t\t\t// was called to submit the form in case it's valid\n\t\t\t\t\tif ( validator.submitButton && ( validator.settings.submitHandler || validator.formSubmitted ) ) {\n\t\t\t\t\t\thidden = $( \"\" )\n\t\t\t\t\t\t\t.attr( \"name\", validator.submitButton.name )\n\t\t\t\t\t\t\t.val( $( validator.submitButton ).val() )\n\t\t\t\t\t\t\t.appendTo( validator.currentForm );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( validator.settings.submitHandler && !validator.settings.debug ) {\n\t\t\t\t\t\tresult = validator.settings.submitHandler.call( validator, validator.currentForm, event );\n\t\t\t\t\t\tif ( hidden ) {\n\n\t\t\t\t\t\t\t// And clean up afterwards; thanks to no-block-scope, hidden can be referenced\n\t\t\t\t\t\t\thidden.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( result !== undefined ) {\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\t// Prevent submit for invalid forms or custom submit handlers\n\t\t\t\tif ( validator.cancelSubmit ) {\n\t\t\t\t\tvalidator.cancelSubmit = false;\n\t\t\t\t\treturn handle();\n\t\t\t\t}\n\t\t\t\tif ( validator.form() ) {\n\t\t\t\t\tif ( validator.pendingRequest ) {\n\t\t\t\t\t\tvalidator.formSubmitted = true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn handle();\n\t\t\t\t} else {\n\t\t\t\t\tvalidator.focusInvalid();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn validator;\n\t},\n\n\t// https://jqueryvalidation.org/valid/\n\tvalid: function() {\n\t\tvar valid, validator, errorList;\n\n\t\tif ( $( this[ 0 ] ).is( \"form\" ) ) {\n\t\t\tvalid = this.validate().form();\n\t\t} else {\n\t\t\terrorList = [];\n\t\t\tvalid = true;\n\t\t\tvalidator = $( this[ 0 ].form ).validate();\n\t\t\tthis.each( function() {\n\t\t\t\tvalid = validator.element( this ) && valid;\n\t\t\t\tif ( !valid ) {\n\t\t\t\t\terrorList = errorList.concat( validator.errorList );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tvalidator.errorList = errorList;\n\t\t}\n\t\treturn valid;\n\t},\n\n\t// https://jqueryvalidation.org/rules/\n\trules: function( command, argument ) {\n\t\tvar element = this[ 0 ],\n\t\t\tisContentEditable = typeof this.attr( \"contenteditable\" ) !== \"undefined\" && this.attr( \"contenteditable\" ) !== \"false\",\n\t\t\tsettings, staticRules, existingRules, data, param, filtered;\n\n\t\t// If nothing is selected, return empty object; can't chain anyway\n\t\tif ( element == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !element.form && isContentEditable ) {\n\t\t\telement.form = this.closest( \"form\" )[ 0 ];\n\t\t\telement.name = this.attr( \"name\" );\n\t\t}\n\n\t\tif ( element.form == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( command ) {\n\t\t\tsettings = $.data( element.form, \"validator\" ).settings;\n\t\t\tstaticRules = settings.rules;\n\t\t\texistingRules = $.validator.staticRules( element );\n\t\t\tswitch ( command ) {\n\t\t\tcase \"add\":\n\t\t\t\t$.extend( existingRules, $.validator.normalizeRule( argument ) );\n\n\t\t\t\t// Remove messages from rules, but allow them to be set separately\n\t\t\t\tdelete existingRules.messages;\n\t\t\t\tstaticRules[ element.name ] = existingRules;\n\t\t\t\tif ( argument.messages ) {\n\t\t\t\t\tsettings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"remove\":\n\t\t\t\tif ( !argument ) {\n\t\t\t\t\tdelete staticRules[ element.name ];\n\t\t\t\t\treturn existingRules;\n\t\t\t\t}\n\t\t\t\tfiltered = {};\n\t\t\t\t$.each( argument.split( /\\s/ ), function( index, method ) {\n\t\t\t\t\tfiltered[ method ] = existingRules[ method ];\n\t\t\t\t\tdelete existingRules[ method ];\n\t\t\t\t} );\n\t\t\t\treturn filtered;\n\t\t\t}\n\t\t}\n\n\t\tdata = $.validator.normalizeRules(\n\t\t$.extend(\n\t\t\t{},\n\t\t\t$.validator.classRules( element ),\n\t\t\t$.validator.attributeRules( element ),\n\t\t\t$.validator.dataRules( element ),\n\t\t\t$.validator.staticRules( element )\n\t\t), element );\n\n\t\t// Make sure required is at front\n\t\tif ( data.required ) {\n\t\t\tparam = data.required;\n\t\t\tdelete data.required;\n\t\t\tdata = $.extend( { required: param }, data );\n\t\t}\n\n\t\t// Make sure remote is at back\n\t\tif ( data.remote ) {\n\t\t\tparam = data.remote;\n\t\t\tdelete data.remote;\n\t\t\tdata = $.extend( data, { remote: param } );\n\t\t}\n\n\t\treturn data;\n\t}\n} );\n\n// JQuery trim is deprecated, provide a trim method based on String.prototype.trim\nvar trim = function( str ) {\n\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trim#Polyfill\n\treturn str.replace( /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, \"\" );\n};\n\n// Custom selectors\n$.extend( $.expr.pseudos || $.expr[ \":\" ], {\t\t// '|| $.expr[ \":\" ]' here enables backwards compatibility to jQuery 1.7. Can be removed when dropping jQ 1.7.x support\n\n\t// https://jqueryvalidation.org/blank-selector/\n\tblank: function( a ) {\n\t\treturn !trim( \"\" + $( a ).val() );\n\t},\n\n\t// https://jqueryvalidation.org/filled-selector/\n\tfilled: function( a ) {\n\t\tvar val = $( a ).val();\n\t\treturn val !== null && !!trim( \"\" + val );\n\t},\n\n\t// https://jqueryvalidation.org/unchecked-selector/\n\tunchecked: function( a ) {\n\t\treturn !$( a ).prop( \"checked\" );\n\t}\n} );\n\n// Constructor for validator\n$.validator = function( options, form ) {\n\tthis.settings = $.extend( true, {}, $.validator.defaults, options );\n\tthis.currentForm = form;\n\tthis.init();\n};\n\n// https://jqueryvalidation.org/jQuery.validator.format/\n$.validator.format = function( source, params ) {\n\tif ( arguments.length === 1 ) {\n\t\treturn function() {\n\t\t\tvar args = $.makeArray( arguments );\n\t\t\targs.unshift( source );\n\t\t\treturn $.validator.format.apply( this, args );\n\t\t};\n\t}\n\tif ( params === undefined ) {\n\t\treturn source;\n\t}\n\tif ( arguments.length > 2 && params.constructor !== Array ) {\n\t\tparams = $.makeArray( arguments ).slice( 1 );\n\t}\n\tif ( params.constructor !== Array ) {\n\t\tparams = [ params ];\n\t}\n\t$.each( params, function( i, n ) {\n\t\tsource = source.replace( new RegExp( \"\\\\{\" + i + \"\\\\}\", \"g\" ), function() {\n\t\t\treturn n;\n\t\t} );\n\t} );\n\treturn source;\n};\n\n$.extend( $.validator, {\n\n\tdefaults: {\n\t\tmessages: {},\n\t\tgroups: {},\n\t\trules: {},\n\t\terrorClass: \"error\",\n\t\tpendingClass: \"pending\",\n\t\tvalidClass: \"valid\",\n\t\terrorElement: \"label\",\n\t\tfocusCleanup: false,\n\t\tfocusInvalid: true,\n\t\terrorContainer: $( [] ),\n\t\terrorLabelContainer: $( [] ),\n\t\tonsubmit: true,\n\t\tignore: \":hidden\",\n\t\tignoreTitle: false,\n\t\tonfocusin: function( element ) {\n\t\t\tthis.lastActive = element;\n\n\t\t\t// Hide error label and remove error class on focus if enabled\n\t\t\tif ( this.settings.focusCleanup ) {\n\t\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.hideThese( this.errorsFor( element ) );\n\t\t\t}\n\t\t},\n\t\tonfocusout: function( element ) {\n\t\t\tif ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonkeyup: function( element, event ) {\n\n\t\t\t// Avoid revalidate the field when pressing one of the following keys\n\t\t\t// Shift => 16\n\t\t\t// Ctrl => 17\n\t\t\t// Alt => 18\n\t\t\t// Caps lock => 20\n\t\t\t// End => 35\n\t\t\t// Home => 36\n\t\t\t// Left arrow => 37\n\t\t\t// Up arrow => 38\n\t\t\t// Right arrow => 39\n\t\t\t// Down arrow => 40\n\t\t\t// Insert => 45\n\t\t\t// Num lock => 144\n\t\t\t// AltGr key => 225\n\t\t\tvar excludedKeys = [\n\t\t\t\t16, 17, 18, 20, 35, 36, 37,\n\t\t\t\t38, 39, 40, 45, 144, 225\n\t\t\t];\n\n\t\t\tif ( event.which === 9 && this.elementValue( element ) === \"\" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {\n\t\t\t\treturn;\n\t\t\t} else if ( element.name in this.submitted || element.name in this.invalid ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonclick: function( element ) {\n\n\t\t\t// Click on selects, radiobuttons and checkboxes\n\t\t\tif ( element.name in this.submitted ) {\n\t\t\t\tthis.element( element );\n\n\t\t\t// Or option elements, check parent select in that case\n\t\t\t} else if ( element.parentNode.name in this.submitted ) {\n\t\t\t\tthis.element( element.parentNode );\n\t\t\t}\n\t\t},\n\t\thighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).addClass( errorClass ).removeClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).addClass( errorClass ).removeClass( validClass );\n\t\t\t}\n\t\t},\n\t\tunhighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).removeClass( errorClass ).addClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).removeClass( errorClass ).addClass( validClass );\n\t\t\t}\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.setDefaults/\n\tsetDefaults: function( settings ) {\n\t\t$.extend( $.validator.defaults, settings );\n\t},\n\n\tmessages: {\n\t\trequired: \"This field is required.\",\n\t\tremote: \"Please fix this field.\",\n\t\temail: \"Please enter a valid email address.\",\n\t\turl: \"Please enter a valid URL.\",\n\t\tdate: \"Please enter a valid date.\",\n\t\tdateISO: \"Please enter a valid date (ISO).\",\n\t\tnumber: \"Please enter a valid number.\",\n\t\tdigits: \"Please enter only digits.\",\n\t\tequalTo: \"Please enter the same value again.\",\n\t\tmaxlength: $.validator.format( \"Please enter no more than {0} characters.\" ),\n\t\tminlength: $.validator.format( \"Please enter at least {0} characters.\" ),\n\t\trangelength: $.validator.format( \"Please enter a value between {0} and {1} characters long.\" ),\n\t\trange: $.validator.format( \"Please enter a value between {0} and {1}.\" ),\n\t\tmax: $.validator.format( \"Please enter a value less than or equal to {0}.\" ),\n\t\tmin: $.validator.format( \"Please enter a value greater than or equal to {0}.\" ),\n\t\tstep: $.validator.format( \"Please enter a multiple of {0}.\" )\n\t},\n\n\tautoCreateRanges: false,\n\n\tprototype: {\n\n\t\tinit: function() {\n\t\t\tthis.labelContainer = $( this.settings.errorLabelContainer );\n\t\t\tthis.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );\n\t\t\tthis.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );\n\t\t\tthis.submitted = {};\n\t\t\tthis.valueCache = {};\n\t\t\tthis.pendingRequest = 0;\n\t\t\tthis.pending = {};\n\t\t\tthis.invalid = {};\n\t\t\tthis.reset();\n\n\t\t\tvar currentForm = this.currentForm,\n\t\t\t\tgroups = ( this.groups = {} ),\n\t\t\t\trules;\n\t\t\t$.each( this.settings.groups, function( key, value ) {\n\t\t\t\tif ( typeof value === \"string\" ) {\n\t\t\t\t\tvalue = value.split( /\\s/ );\n\t\t\t\t}\n\t\t\t\t$.each( value, function( index, name ) {\n\t\t\t\t\tgroups[ name ] = key;\n\t\t\t\t} );\n\t\t\t} );\n\t\t\trules = this.settings.rules;\n\t\t\t$.each( rules, function( key, value ) {\n\t\t\t\trules[ key ] = $.validator.normalizeRule( value );\n\t\t\t} );\n\n\t\t\tfunction delegate( event ) {\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( !this.form && isContentEditable ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = $( this ).attr( \"name\" );\n\t\t\t\t}\n\n\t\t\t\t// Ignore the element if it belongs to another form. This will happen mainly\n\t\t\t\t// when setting the `form` attribute of an input to the id of another form.\n\t\t\t\tif ( currentForm !== this.form ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar validator = $.data( this.form, \"validator\" ),\n\t\t\t\t\teventType = \"on\" + event.type.replace( /^validate/, \"\" ),\n\t\t\t\t\tsettings = validator.settings;\n\t\t\t\tif ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {\n\t\t\t\t\tsettings[ eventType ].call( validator, this, event );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.on( \"focusin.validate focusout.validate keyup.validate\",\n\t\t\t\t\t\":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], \" +\n\t\t\t\t\t\"[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], \" +\n\t\t\t\t\t\"[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], \" +\n\t\t\t\t\t\"[type='radio'], [type='checkbox'], [contenteditable], [type='button']\", delegate )\n\n\t\t\t\t// Support: Chrome, oldIE\n\t\t\t\t// \"select\" is provided as event.target when clicking a option\n\t\t\t\t.on( \"click.validate\", \"select, option, [type='radio'], [type='checkbox']\", delegate );\n\n\t\t\tif ( this.settings.invalidHandler ) {\n\t\t\t\t$( this.currentForm ).on( \"invalid-form.validate\", this.settings.invalidHandler );\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.form/\n\t\tform: function() {\n\t\t\tthis.checkForm();\n\t\t\t$.extend( this.submitted, this.errorMap );\n\t\t\tthis.invalid = $.extend( {}, this.errorMap );\n\t\t\tif ( !this.valid() ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t}\n\t\t\tthis.showErrors();\n\t\t\treturn this.valid();\n\t\t},\n\n\t\tcheckForm: function() {\n\t\t\tthis.prepareForm();\n\t\t\tfor ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {\n\t\t\t\tthis.check( elements[ i ] );\n\t\t\t}\n\t\t\treturn this.valid();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.element/\n\t\telement: function( element ) {\n\t\t\tvar cleanElement = this.clean( element ),\n\t\t\t\tcheckElement = this.validationTargetFor( cleanElement ),\n\t\t\t\tv = this,\n\t\t\t\tresult = true,\n\t\t\t\trs, group;\n\n\t\t\tif ( checkElement === undefined ) {\n\t\t\t\tdelete this.invalid[ cleanElement.name ];\n\t\t\t} else {\n\t\t\t\tthis.prepareElement( checkElement );\n\t\t\t\tthis.currentElements = $( checkElement );\n\n\t\t\t\t// If this element is grouped, then validate all group elements already\n\t\t\t\t// containing a value\n\t\t\t\tgroup = this.groups[ checkElement.name ];\n\t\t\t\tif ( group ) {\n\t\t\t\t\t$.each( this.groups, function( name, testgroup ) {\n\t\t\t\t\t\tif ( testgroup === group && name !== checkElement.name ) {\n\t\t\t\t\t\t\tcleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );\n\t\t\t\t\t\t\tif ( cleanElement && cleanElement.name in v.invalid ) {\n\t\t\t\t\t\t\t\tv.currentElements.push( cleanElement );\n\t\t\t\t\t\t\t\tresult = v.check( cleanElement ) && result;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\trs = this.check( checkElement ) !== false;\n\t\t\t\tresult = result && rs;\n\t\t\t\tif ( rs ) {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = false;\n\t\t\t\t} else {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = true;\n\t\t\t\t}\n\n\t\t\t\tif ( !this.numberOfInvalids() ) {\n\n\t\t\t\t\t// Hide error containers on last error\n\t\t\t\t\tthis.toHide = this.toHide.add( this.containers );\n\t\t\t\t}\n\t\t\t\tthis.showErrors();\n\n\t\t\t\t// Add aria-invalid status for screen readers\n\t\t\t\t$( element ).attr( \"aria-invalid\", !rs );\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.showErrors/\n\t\tshowErrors: function( errors ) {\n\t\t\tif ( errors ) {\n\t\t\t\tvar validator = this;\n\n\t\t\t\t// Add items to error list and map\n\t\t\t\t$.extend( this.errorMap, errors );\n\t\t\t\tthis.errorList = $.map( this.errorMap, function( message, name ) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmessage: message,\n\t\t\t\t\t\telement: validator.findByName( name )[ 0 ]\n\t\t\t\t\t};\n\t\t\t\t} );\n\n\t\t\t\t// Remove items from success list\n\t\t\t\tthis.successList = $.grep( this.successList, function( element ) {\n\t\t\t\t\treturn !( element.name in errors );\n\t\t\t\t} );\n\t\t\t}\n\t\t\tif ( this.settings.showErrors ) {\n\t\t\t\tthis.settings.showErrors.call( this, this.errorMap, this.errorList );\n\t\t\t} else {\n\t\t\t\tthis.defaultShowErrors();\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.resetForm/\n\t\tresetForm: function() {\n\t\t\tif ( $.fn.resetForm ) {\n\t\t\t\t$( this.currentForm ).resetForm();\n\t\t\t}\n\t\t\tthis.invalid = {};\n\t\t\tthis.submitted = {};\n\t\t\tthis.prepareForm();\n\t\t\tthis.hideErrors();\n\t\t\tvar elements = this.elements()\n\t\t\t\t.removeData( \"previousValue\" )\n\t\t\t\t.removeAttr( \"aria-invalid\" );\n\n\t\t\tthis.resetElements( elements );\n\t\t},\n\n\t\tresetElements: function( elements ) {\n\t\t\tvar i;\n\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0; elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ],\n\t\t\t\t\t\tthis.settings.errorClass, \"\" );\n\t\t\t\t\tthis.findByName( elements[ i ].name ).removeClass( this.settings.validClass );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\telements\n\t\t\t\t\t.removeClass( this.settings.errorClass )\n\t\t\t\t\t.removeClass( this.settings.validClass );\n\t\t\t}\n\t\t},\n\n\t\tnumberOfInvalids: function() {\n\t\t\treturn this.objectLength( this.invalid );\n\t\t},\n\n\t\tobjectLength: function( obj ) {\n\t\t\t/* jshint unused: false */\n\t\t\tvar count = 0,\n\t\t\t\ti;\n\t\t\tfor ( i in obj ) {\n\n\t\t\t\t// This check allows counting elements with empty error\n\t\t\t\t// message as invalid elements\n\t\t\t\tif ( obj[ i ] !== undefined && obj[ i ] !== null && obj[ i ] !== false ) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\n\t\thideErrors: function() {\n\t\t\tthis.hideThese( this.toHide );\n\t\t},\n\n\t\thideThese: function( errors ) {\n\t\t\terrors.not( this.containers ).text( \"\" );\n\t\t\tthis.addWrapper( errors ).hide();\n\t\t},\n\n\t\tvalid: function() {\n\t\t\treturn this.size() === 0;\n\t\t},\n\n\t\tsize: function() {\n\t\t\treturn this.errorList.length;\n\t\t},\n\n\t\tfocusInvalid: function() {\n\t\t\tif ( this.settings.focusInvalid ) {\n\t\t\t\ttry {\n\t\t\t\t\t$( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [] )\n\t\t\t\t\t.filter( \":visible\" )\n\t\t\t\t\t.trigger( \"focus\" )\n\n\t\t\t\t\t// Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find\n\t\t\t\t\t.trigger( \"focusin\" );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// Ignore IE throwing errors when focusing hidden elements\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tfindLastActive: function() {\n\t\t\tvar lastActive = this.lastActive;\n\t\t\treturn lastActive && $.grep( this.errorList, function( n ) {\n\t\t\t\treturn n.element.name === lastActive.name;\n\t\t\t} ).length === 1 && lastActive;\n\t\t},\n\n\t\telements: function() {\n\t\t\tvar validator = this,\n\t\t\t\trulesCache = {};\n\n\t\t\t// Select all valid inputs inside the form (no submit or reset buttons)\n\t\t\treturn $( this.currentForm )\n\t\t\t.find( \"input, select, textarea, [contenteditable]\" )\n\t\t\t.not( \":submit, :reset, :image, :disabled\" )\n\t\t\t.not( this.settings.ignore )\n\t\t\t.filter( function() {\n\t\t\t\tvar name = this.name || $( this ).attr( \"name\" ); // For contenteditable\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\n\n\t\t\t\tif ( !name && validator.settings.debug && window.console ) {\n\t\t\t\t\tconsole.error( \"%o has no name assigned\", this );\n\t\t\t\t}\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( isContentEditable ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = name;\n\t\t\t\t}\n\n\t\t\t\t// Ignore elements that belong to other/nested forms\n\t\t\t\tif ( this.form !== validator.currentForm ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Select only the first element for each name, and only those with rules specified\n\t\t\t\tif ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\trulesCache[ name ] = true;\n\t\t\t\treturn true;\n\t\t\t} );\n\t\t},\n\n\t\tclean: function( selector ) {\n\t\t\treturn $( selector )[ 0 ];\n\t\t},\n\n\t\terrors: function() {\n\t\t\tvar errorClass = this.settings.errorClass.split( \" \" ).join( \".\" );\n\t\t\treturn $( this.settings.errorElement + \".\" + errorClass, this.errorContext );\n\t\t},\n\n\t\tresetInternals: function() {\n\t\t\tthis.successList = [];\n\t\t\tthis.errorList = [];\n\t\t\tthis.errorMap = {};\n\t\t\tthis.toShow = $( [] );\n\t\t\tthis.toHide = $( [] );\n\t\t},\n\n\t\treset: function() {\n\t\t\tthis.resetInternals();\n\t\t\tthis.currentElements = $( [] );\n\t\t},\n\n\t\tprepareForm: function() {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errors().add( this.containers );\n\t\t},\n\n\t\tprepareElement: function( element ) {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errorsFor( element );\n\t\t},\n\n\t\telementValue: function( element ) {\n\t\t\tvar $element = $( element ),\n\t\t\t\ttype = element.type,\n\t\t\t\tisContentEditable = typeof $element.attr( \"contenteditable\" ) !== \"undefined\" && $element.attr( \"contenteditable\" ) !== \"false\",\n\t\t\t\tval, idx;\n\n\t\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).val();\n\t\t\t} else if ( type === \"number\" && typeof element.validity !== \"undefined\" ) {\n\t\t\t\treturn element.validity.badInput ? \"NaN\" : $element.val();\n\t\t\t}\n\n\t\t\tif ( isContentEditable ) {\n\t\t\t\tval = $element.text();\n\t\t\t} else {\n\t\t\t\tval = $element.val();\n\t\t\t}\n\n\t\t\tif ( type === \"file\" ) {\n\n\t\t\t\t// Modern browser (chrome & safari)\n\t\t\t\tif ( val.substr( 0, 12 ) === \"C:\\\\fakepath\\\\\" ) {\n\t\t\t\t\treturn val.substr( 12 );\n\t\t\t\t}\n\n\t\t\t\t// Legacy browsers\n\t\t\t\t// Unix-based path\n\t\t\t\tidx = val.lastIndexOf( \"/\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Windows-based path\n\t\t\t\tidx = val.lastIndexOf( \"\\\\\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Just the file name\n\t\t\t\treturn val;\n\t\t\t}\n\n\t\t\tif ( typeof val === \"string\" ) {\n\t\t\t\treturn val.replace( /\\r/g, \"\" );\n\t\t\t}\n\t\t\treturn val;\n\t\t},\n\n\t\tcheck: function( element ) {\n\t\t\telement = this.validationTargetFor( this.clean( element ) );\n\n\t\t\tvar rules = $( element ).rules(),\n\t\t\t\trulesCount = $.map( rules, function( n, i ) {\n\t\t\t\t\treturn i;\n\t\t\t\t} ).length,\n\t\t\t\tdependencyMismatch = false,\n\t\t\t\tval = this.elementValue( element ),\n\t\t\t\tresult, method, rule, normalizer;\n\n\t\t\t// Prioritize the local normalizer defined for this element over the global one\n\t\t\t// if the former exists, otherwise user the global one in case it exists.\n\t\t\tif ( typeof rules.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = rules.normalizer;\n\t\t\t} else if (\ttypeof this.settings.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = this.settings.normalizer;\n\t\t\t}\n\n\t\t\t// If normalizer is defined, then call it to retreive the changed value instead\n\t\t\t// of using the real one.\n\t\t\t// Note that `this` in the normalizer is `element`.\n\t\t\tif ( normalizer ) {\n\t\t\t\tval = normalizer.call( element, val );\n\n\t\t\t\t// Delete the normalizer from rules to avoid treating it as a pre-defined method.\n\t\t\t\tdelete rules.normalizer;\n\t\t\t}\n\n\t\t\tfor ( method in rules ) {\n\t\t\t\trule = { method: method, parameters: rules[ method ] };\n\t\t\t\ttry {\n\t\t\t\t\tresult = $.validator.methods[ method ].call( this, val, element, rule.parameters );\n\n\t\t\t\t\t// If a method indicates that the field is optional and therefore valid,\n\t\t\t\t\t// don't mark it as valid when there are no other rules\n\t\t\t\t\tif ( result === \"dependency-mismatch\" && rulesCount === 1 ) {\n\t\t\t\t\t\tdependencyMismatch = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tdependencyMismatch = false;\n\n\t\t\t\t\tif ( result === \"pending\" ) {\n\t\t\t\t\t\tthis.toHide = this.toHide.not( this.errorsFor( element ) );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !result ) {\n\t\t\t\t\t\tthis.formatAndAdd( element, rule );\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} catch ( e ) {\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.log( \"Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\", e );\n\t\t\t\t\t}\n\t\t\t\t\tif ( e instanceof TypeError ) {\n\t\t\t\t\t\te.message += \". Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\";\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( dependencyMismatch ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( this.objectLength( rules ) ) {\n\t\t\t\tthis.successList.push( element );\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t// Return the custom message for the given element and validation method\n\t\t// specified in the element's HTML5 data attribute\n\t\t// return the generic message if present and no method specific message is present\n\t\tcustomDataMessage: function( element, method ) {\n\t\t\treturn $( element ).data( \"msg\" + method.charAt( 0 ).toUpperCase() +\n\t\t\t\tmethod.substring( 1 ).toLowerCase() ) || $( element ).data( \"msg\" );\n\t\t},\n\n\t\t// Return the custom message for the given element name and validation method\n\t\tcustomMessage: function( name, method ) {\n\t\t\tvar m = this.settings.messages[ name ];\n\t\t\treturn m && ( m.constructor === String ? m : m[ method ] );\n\t\t},\n\n\t\t// Return the first defined argument, allowing empty strings\n\t\tfindDefined: function() {\n\t\t\tfor ( var i = 0; i < arguments.length; i++ ) {\n\t\t\t\tif ( arguments[ i ] !== undefined ) {\n\t\t\t\t\treturn arguments[ i ];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\n\t\t// The second parameter 'rule' used to be a string, and extended to an object literal\n\t\t// of the following form:\n\t\t// rule = {\n\t\t// method: \"method name\",\n\t\t// parameters: \"the given method parameters\"\n\t\t// }\n\t\t//\n\t\t// The old behavior still supported, kept to maintain backward compatibility with\n\t\t// old code, and will be removed in the next major release.\n\t\tdefaultMessage: function( element, rule ) {\n\t\t\tif ( typeof rule === \"string\" ) {\n\t\t\t\trule = { method: rule };\n\t\t\t}\n\n\t\t\tvar message = this.findDefined(\n\t\t\t\t\tthis.customMessage( element.name, rule.method ),\n\t\t\t\t\tthis.customDataMessage( element, rule.method ),\n\n\t\t\t\t\t// 'title' is never undefined, so handle empty string as undefined\n\t\t\t\t\t!this.settings.ignoreTitle && element.title || undefined,\n\t\t\t\t\t$.validator.messages[ rule.method ],\n\t\t\t\t\t\"Warning: No message defined for \" + element.name + \"\"\n\t\t\t\t),\n\t\t\t\ttheregex = /\\$?\\{(\\d+)\\}/g;\n\t\t\tif ( typeof message === \"function\" ) {\n\t\t\t\tmessage = message.call( this, rule.parameters, element );\n\t\t\t} else if ( theregex.test( message ) ) {\n\t\t\t\tmessage = $.validator.format( message.replace( theregex, \"{$1}\" ), rule.parameters );\n\t\t\t}\n\n\t\t\treturn message;\n\t\t},\n\n\t\tformatAndAdd: function( element, rule ) {\n\t\t\tvar message = this.defaultMessage( element, rule );\n\n\t\t\tthis.errorList.push( {\n\t\t\t\tmessage: message,\n\t\t\t\telement: element,\n\t\t\t\tmethod: rule.method\n\t\t\t} );\n\n\t\t\tthis.errorMap[ element.name ] = message;\n\t\t\tthis.submitted[ element.name ] = message;\n\t\t},\n\n\t\taddWrapper: function( toToggle ) {\n\t\t\tif ( this.settings.wrapper ) {\n\t\t\t\ttoToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );\n\t\t\t}\n\t\t\treturn toToggle;\n\t\t},\n\n\t\tdefaultShowErrors: function() {\n\t\t\tvar i, elements, error;\n\t\t\tfor ( i = 0; this.errorList[ i ]; i++ ) {\n\t\t\t\terror = this.errorList[ i ];\n\t\t\t\tif ( this.settings.highlight ) {\n\t\t\t\t\tthis.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.showLabel( error.element, error.message );\n\t\t\t}\n\t\t\tif ( this.errorList.length ) {\n\t\t\t\tthis.toShow = this.toShow.add( this.containers );\n\t\t\t}\n\t\t\tif ( this.settings.success ) {\n\t\t\t\tfor ( i = 0; this.successList[ i ]; i++ ) {\n\t\t\t\t\tthis.showLabel( this.successList[ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toHide = this.toHide.not( this.toShow );\n\t\t\tthis.hideErrors();\n\t\t\tthis.addWrapper( this.toShow ).show();\n\t\t},\n\n\t\tvalidElements: function() {\n\t\t\treturn this.currentElements.not( this.invalidElements() );\n\t\t},\n\n\t\tinvalidElements: function() {\n\t\t\treturn $( this.errorList ).map( function() {\n\t\t\t\treturn this.element;\n\t\t\t} );\n\t\t},\n\n\t\tshowLabel: function( element, message ) {\n\t\t\tvar place, group, errorID, v,\n\t\t\t\terror = this.errorsFor( element ),\n\t\t\t\telementID = this.idOrName( element ),\n\t\t\t\tdescribedBy = $( element ).attr( \"aria-describedby\" );\n\n\t\t\tif ( error.length ) {\n\n\t\t\t\t// Refresh error/success class\n\t\t\t\terror.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );\n\n\t\t\t\t// Replace message on existing label\n\t\t\t\terror.html( message );\n\t\t\t} else {\n\n\t\t\t\t// Create error element\n\t\t\t\terror = $( \"<\" + this.settings.errorElement + \">\" )\n\t\t\t\t\t.attr( \"id\", elementID + \"-error\" )\n\t\t\t\t\t.addClass( this.settings.errorClass )\n\t\t\t\t\t.html( message || \"\" );\n\n\t\t\t\t// Maintain reference to the element to be placed into the DOM\n\t\t\t\tplace = error;\n\t\t\t\tif ( this.settings.wrapper ) {\n\n\t\t\t\t\t// Make sure the element is visible, even in IE\n\t\t\t\t\t// actually showing the wrapped element is handled elsewhere\n\t\t\t\t\tplace = error.hide().show().wrap( \"<\" + this.settings.wrapper + \"/>\" ).parent();\n\t\t\t\t}\n\t\t\t\tif ( this.labelContainer.length ) {\n\t\t\t\t\tthis.labelContainer.append( place );\n\t\t\t\t} else if ( this.settings.errorPlacement ) {\n\t\t\t\t\tthis.settings.errorPlacement.call( this, place, $( element ) );\n\t\t\t\t} else {\n\t\t\t\t\tplace.insertAfter( element );\n\t\t\t\t}\n\n\t\t\t\t// Link error back to the element\n\t\t\t\tif ( error.is( \"label\" ) ) {\n\n\t\t\t\t\t// If the error is a label, then associate using 'for'\n\t\t\t\t\terror.attr( \"for\", elementID );\n\n\t\t\t\t\t// If the element is not a child of an associated label, then it's necessary\n\t\t\t\t\t// to explicitly apply aria-describedby\n\t\t\t\t} else if ( error.parents( \"label[for='\" + this.escapeCssMeta( elementID ) + \"']\" ).length === 0 ) {\n\t\t\t\t\terrorID = error.attr( \"id\" );\n\n\t\t\t\t\t// Respect existing non-error aria-describedby\n\t\t\t\t\tif ( !describedBy ) {\n\t\t\t\t\t\tdescribedBy = errorID;\n\t\t\t\t\t} else if ( !describedBy.match( new RegExp( \"\\\\b\" + this.escapeCssMeta( errorID ) + \"\\\\b\" ) ) ) {\n\n\t\t\t\t\t\t// Add to end of list if not already present\n\t\t\t\t\t\tdescribedBy += \" \" + errorID;\n\t\t\t\t\t}\n\t\t\t\t\t$( element ).attr( \"aria-describedby\", describedBy );\n\n\t\t\t\t\t// If this element is grouped, then assign to all elements in the same group\n\t\t\t\t\tgroup = this.groups[ element.name ];\n\t\t\t\t\tif ( group ) {\n\t\t\t\t\t\tv = this;\n\t\t\t\t\t\t$.each( v.groups, function( name, testgroup ) {\n\t\t\t\t\t\t\tif ( testgroup === group ) {\n\t\t\t\t\t\t\t\t$( \"[name='\" + v.escapeCssMeta( name ) + \"']\", v.currentForm )\n\t\t\t\t\t\t\t\t\t.attr( \"aria-describedby\", error.attr( \"id\" ) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !message && this.settings.success ) {\n\t\t\t\terror.text( \"\" );\n\t\t\t\tif ( typeof this.settings.success === \"string\" ) {\n\t\t\t\t\terror.addClass( this.settings.success );\n\t\t\t\t} else {\n\t\t\t\t\tthis.settings.success( error, element );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toShow = this.toShow.add( error );\n\t\t},\n\n\t\terrorsFor: function( element ) {\n\t\t\tvar name = this.escapeCssMeta( this.idOrName( element ) ),\n\t\t\t\tdescriber = $( element ).attr( \"aria-describedby\" ),\n\t\t\t\tselector = \"label[for='\" + name + \"'], label[for='\" + name + \"'] *\";\n\n\t\t\t// 'aria-describedby' should directly reference the error element\n\t\t\tif ( describer ) {\n\t\t\t\tselector = selector + \", #\" + this.escapeCssMeta( describer )\n\t\t\t\t\t.replace( /\\s+/g, \", #\" );\n\t\t\t}\n\n\t\t\treturn this\n\t\t\t\t.errors()\n\t\t\t\t.filter( selector );\n\t\t},\n\n\t\t// See https://api.jquery.com/category/selectors/, for CSS\n\t\t// meta-characters that should be escaped in order to be used with JQuery\n\t\t// as a literal part of a name/id or any selector.\n\t\tescapeCssMeta: function( string ) {\n\t\t\tif ( string === undefined ) {\n\t\t\t\treturn \"\";\n\t\t\t}\n\n\t\t\treturn string.replace( /([\\\\!\"#$%&'()*+,./:;<=>?@\\[\\]^`{|}~])/g, \"\\\\$1\" );\n\t\t},\n\n\t\tidOrName: function( element ) {\n\t\t\treturn this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );\n\t\t},\n\n\t\tvalidationTargetFor: function( element ) {\n\n\t\t\t// If radio/checkbox, validate first element in group instead\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\telement = this.findByName( element.name );\n\t\t\t}\n\n\t\t\t// Always apply ignore filter\n\t\t\treturn $( element ).not( this.settings.ignore )[ 0 ];\n\t\t},\n\n\t\tcheckable: function( element ) {\n\t\t\treturn ( /radio|checkbox/i ).test( element.type );\n\t\t},\n\n\t\tfindByName: function( name ) {\n\t\t\treturn $( this.currentForm ).find( \"[name='\" + this.escapeCssMeta( name ) + \"']\" );\n\t\t},\n\n\t\tgetLength: function( value, element ) {\n\t\t\tswitch ( element.nodeName.toLowerCase() ) {\n\t\t\tcase \"select\":\n\t\t\t\treturn $( \"option:selected\", element ).length;\n\t\t\tcase \"input\":\n\t\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).length;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn value.length;\n\t\t},\n\n\t\tdepend: function( param, element ) {\n\t\t\treturn this.dependTypes[ typeof param ] ? this.dependTypes[ typeof param ]( param, element ) : true;\n\t\t},\n\n\t\tdependTypes: {\n\t\t\t\"boolean\": function( param ) {\n\t\t\t\treturn param;\n\t\t\t},\n\t\t\t\"string\": function( param, element ) {\n\t\t\t\treturn !!$( param, element.form ).length;\n\t\t\t},\n\t\t\t\"function\": function( param, element ) {\n\t\t\t\treturn param( element );\n\t\t\t}\n\t\t},\n\n\t\toptional: function( element ) {\n\t\t\tvar val = this.elementValue( element );\n\t\t\treturn !$.validator.methods.required.call( this, val, element ) && \"dependency-mismatch\";\n\t\t},\n\n\t\tstartRequest: function( element ) {\n\t\t\tif ( !this.pending[ element.name ] ) {\n\t\t\t\tthis.pendingRequest++;\n\t\t\t\t$( element ).addClass( this.settings.pendingClass );\n\t\t\t\tthis.pending[ element.name ] = true;\n\t\t\t}\n\t\t},\n\n\t\tstopRequest: function( element, valid ) {\n\t\t\tthis.pendingRequest--;\n\n\t\t\t// Sometimes synchronization fails, make sure pendingRequest is never < 0\n\t\t\tif ( this.pendingRequest < 0 ) {\n\t\t\t\tthis.pendingRequest = 0;\n\t\t\t}\n\t\t\tdelete this.pending[ element.name ];\n\t\t\t$( element ).removeClass( this.settings.pendingClass );\n\t\t\tif ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() && this.pendingRequest === 0 ) {\n\t\t\t\t$( this.currentForm ).trigger( \"submit\" );\n\n\t\t\t\t// Remove the hidden input that was used as a replacement for the\n\t\t\t\t// missing submit button. The hidden input is added by `handle()`\n\t\t\t\t// to ensure that the value of the used submit button is passed on\n\t\t\t\t// for scripted submits triggered by this method\n\t\t\t\tif ( this.submitButton ) {\n\t\t\t\t\t$( \"input:hidden[name='\" + this.submitButton.name + \"']\", this.currentForm ).remove();\n\t\t\t\t}\n\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t} else if ( !valid && this.pendingRequest === 0 && this.formSubmitted ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t}\n\t\t},\n\n\t\tpreviousValue: function( element, method ) {\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\treturn $.data( element, \"previousValue\" ) || $.data( element, \"previousValue\", {\n\t\t\t\told: null,\n\t\t\t\tvalid: true,\n\t\t\t\tmessage: this.defaultMessage( element, { method: method } )\n\t\t\t} );\n\t\t},\n\n\t\t// Cleans up all forms and elements, removes validator-specific events\n\t\tdestroy: function() {\n\t\t\tthis.resetForm();\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.off( \".validate\" )\n\t\t\t\t.removeData( \"validator\" )\n\t\t\t\t.find( \".validate-equalTo-blur\" )\n\t\t\t\t\t.off( \".validate-equalTo\" )\n\t\t\t\t\t.removeClass( \"validate-equalTo-blur\" )\n\t\t\t\t.find( \".validate-lessThan-blur\" )\n\t\t\t\t\t.off( \".validate-lessThan\" )\n\t\t\t\t\t.removeClass( \"validate-lessThan-blur\" )\n\t\t\t\t.find( \".validate-lessThanEqual-blur\" )\n\t\t\t\t\t.off( \".validate-lessThanEqual\" )\n\t\t\t\t\t.removeClass( \"validate-lessThanEqual-blur\" )\n\t\t\t\t.find( \".validate-greaterThanEqual-blur\" )\n\t\t\t\t\t.off( \".validate-greaterThanEqual\" )\n\t\t\t\t\t.removeClass( \"validate-greaterThanEqual-blur\" )\n\t\t\t\t.find( \".validate-greaterThan-blur\" )\n\t\t\t\t\t.off( \".validate-greaterThan\" )\n\t\t\t\t\t.removeClass( \"validate-greaterThan-blur\" );\n\t\t}\n\n\t},\n\n\tclassRuleSettings: {\n\t\trequired: { required: true },\n\t\temail: { email: true },\n\t\turl: { url: true },\n\t\tdate: { date: true },\n\t\tdateISO: { dateISO: true },\n\t\tnumber: { number: true },\n\t\tdigits: { digits: true },\n\t\tcreditcard: { creditcard: true }\n\t},\n\n\taddClassRules: function( className, rules ) {\n\t\tif ( className.constructor === String ) {\n\t\t\tthis.classRuleSettings[ className ] = rules;\n\t\t} else {\n\t\t\t$.extend( this.classRuleSettings, className );\n\t\t}\n\t},\n\n\tclassRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tclasses = $( element ).attr( \"class\" );\n\n\t\tif ( classes ) {\n\t\t\t$.each( classes.split( \" \" ), function() {\n\t\t\t\tif ( this in $.validator.classRuleSettings ) {\n\t\t\t\t\t$.extend( rules, $.validator.classRuleSettings[ this ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeAttributeRule: function( rules, type, method, value ) {\n\n\t\t// Convert the value to a number for number inputs, and for text for backwards compability\n\t\t// allows type=\"date\" and others to be compared as strings\n\t\tif ( /min|max|step/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {\n\t\t\tvalue = Number( value );\n\n\t\t\t// Support Opera Mini, which returns NaN for undefined minlength\n\t\t\tif ( isNaN( value ) ) {\n\t\t\t\tvalue = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( value || value === 0 ) {\n\t\t\trules[ method ] = value;\n\t\t} else if ( type === method && type !== \"range\" ) {\n\n\t\t\t// Exception: the jquery validate 'range' method\n\t\t\t// does not test for the html5 'range' type\n\t\t\trules[ type === \"date\" ? \"dateISO\" : method ] = true;\n\t\t}\n\t},\n\n\tattributeRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\n\t\t\t// Support for in both html5 and older browsers\n\t\t\tif ( method === \"required\" ) {\n\t\t\t\tvalue = element.getAttribute( method );\n\n\t\t\t\t// Some browsers return an empty string for the required attribute\n\t\t\t\t// and non-HTML5 browsers might have required=\"\" markup\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\tvalue = true;\n\t\t\t\t}\n\n\t\t\t\t// Force non-HTML5 browsers to return bool\n\t\t\t\tvalue = !!value;\n\t\t\t} else {\n\t\t\t\tvalue = $element.attr( method );\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\n\t\t// 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs\n\t\tif ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {\n\t\t\tdelete rules.maxlength;\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\tdataRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\t\t\tvalue = $element.data( \"rule\" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );\n\n\t\t\t// Cast empty attributes like `data-rule-required` to `true`\n\t\t\tif ( value === \"\" ) {\n\t\t\t\tvalue = true;\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tstaticRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tvalidator = $.data( element.form, \"validator\" );\n\n\t\tif ( validator.settings.rules ) {\n\t\t\trules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeRules: function( rules, element ) {\n\n\t\t// Handle dependency check\n\t\t$.each( rules, function( prop, val ) {\n\n\t\t\t// Ignore rule when param is explicitly false, eg. required:false\n\t\t\tif ( val === false ) {\n\t\t\t\tdelete rules[ prop ];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( val.param || val.depends ) {\n\t\t\t\tvar keepRule = true;\n\t\t\t\tswitch ( typeof val.depends ) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tkeepRule = !!$( val.depends, element.form ).length;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"function\":\n\t\t\t\t\tkeepRule = val.depends.call( element, element );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( keepRule ) {\n\t\t\t\t\trules[ prop ] = val.param !== undefined ? val.param : true;\n\t\t\t\t} else {\n\t\t\t\t\t$.data( element.form, \"validator\" ).resetElements( $( element ) );\n\t\t\t\t\tdelete rules[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\t// Evaluate parameters\n\t\t$.each( rules, function( rule, parameter ) {\n\t\t\trules[ rule ] = typeof parameter === \"function\" && rule !== \"normalizer\" ? parameter( element ) : parameter;\n\t\t} );\n\n\t\t// Clean number parameters\n\t\t$.each( [ \"minlength\", \"maxlength\" ], function() {\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\trules[ this ] = Number( rules[ this ] );\n\t\t\t}\n\t\t} );\n\t\t$.each( [ \"rangelength\", \"range\" ], function() {\n\t\t\tvar parts;\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\tif ( Array.isArray( rules[ this ] ) ) {\n\t\t\t\t\trules[ this ] = [ Number( rules[ this ][ 0 ] ), Number( rules[ this ][ 1 ] ) ];\n\t\t\t\t} else if ( typeof rules[ this ] === \"string\" ) {\n\t\t\t\t\tparts = rules[ this ].replace( /[\\[\\]]/g, \"\" ).split( /[\\s,]+/ );\n\t\t\t\t\trules[ this ] = [ Number( parts[ 0 ] ), Number( parts[ 1 ] ) ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\tif ( $.validator.autoCreateRanges ) {\n\n\t\t\t// Auto-create ranges\n\t\t\tif ( rules.min != null && rules.max != null ) {\n\t\t\t\trules.range = [ rules.min, rules.max ];\n\t\t\t\tdelete rules.min;\n\t\t\t\tdelete rules.max;\n\t\t\t}\n\t\t\tif ( rules.minlength != null && rules.maxlength != null ) {\n\t\t\t\trules.rangelength = [ rules.minlength, rules.maxlength ];\n\t\t\t\tdelete rules.minlength;\n\t\t\t\tdelete rules.maxlength;\n\t\t\t}\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\t// Converts a simple string to a {string: true} rule, e.g., \"required\" to {required:true}\n\tnormalizeRule: function( data ) {\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tvar transformed = {};\n\t\t\t$.each( data.split( /\\s/ ), function() {\n\t\t\t\ttransformed[ this ] = true;\n\t\t\t} );\n\t\t\tdata = transformed;\n\t\t}\n\t\treturn data;\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.addMethod/\n\taddMethod: function( name, method, message ) {\n\t\t$.validator.methods[ name ] = method;\n\t\t$.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];\n\t\tif ( method.length < 3 ) {\n\t\t\t$.validator.addClassRules( name, $.validator.normalizeRule( name ) );\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.methods/\n\tmethods: {\n\n\t\t// https://jqueryvalidation.org/required-method/\n\t\trequired: function( value, element, param ) {\n\n\t\t\t// Check if dependency is met\n\t\t\tif ( !this.depend( param, element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\t\t\tif ( element.nodeName.toLowerCase() === \"select\" ) {\n\n\t\t\t\t// Could be an array for select-multiple or a string, both are fine this way\n\t\t\t\tvar val = $( element ).val();\n\t\t\t\treturn val && val.length > 0;\n\t\t\t}\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\treturn this.getLength( value, element ) > 0;\n\t\t\t}\n\t\t\treturn value !== undefined && value !== null && value.length > 0;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/email-method/\n\t\temail: function( value, element ) {\n\n\t\t\t// From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address\n\t\t\t// Retrieved 2014-01-14\n\t\t\t// If you have a problem with this implementation, report a bug against the above spec\n\t\t\t// Or use custom methods to implement your own email validation\n\t\t\treturn this.optional( element ) || /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/url-method/\n\t\turl: function( value, element ) {\n\n\t\t\t// Copyright (c) 2010-2013 Diego Perini, MIT licensed\n\t\t\t// https://gist.github.com/dperini/729294\n\t\t\t// see also https://mathiasbynens.be/demo/url-regex\n\t\t\t// modified to allow protocol-relative URLs\n\t\t\treturn this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\\/\\/)(?:(?:[^\\]\\[?\\/<~#`!@$^&*()+=}|:\";',>{ ]|%[0-9A-Fa-f]{2})+(?::(?:[^\\]\\[?\\/<~#`!@$^&*()+=}|:\";',>{ ]|%[0-9A-Fa-f]{2})*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62})?[a-z0-9\\u00a1-\\uffff]\\.)+(?:[a-z\\u00a1-\\uffff]{2,}\\.?))(?::\\d{2,5})?(?:[/?#]\\S*)?$/i.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/date-method/\n\t\tdate: ( function() {\n\t\t\tvar called = false;\n\n\t\t\treturn function( value, element ) {\n\t\t\t\tif ( !called ) {\n\t\t\t\t\tcalled = true;\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t\"The `date` method is deprecated and will be removed in version '2.0.0'.\\n\" +\n\t\t\t\t\t\t\t\"Please don't use it, since it relies on the Date constructor, which\\n\" +\n\t\t\t\t\t\t\t\"behaves very differently across browsers and locales. Use `dateISO`\\n\" +\n\t\t\t\t\t\t\t\"instead or one of the locale specific methods in `localizations/`\\n\" +\n\t\t\t\t\t\t\t\"and `additional-methods.js`.\"\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );\n\t\t\t};\n\t\t}() ),\n\n\t\t// https://jqueryvalidation.org/dateISO-method/\n\t\tdateISO: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d{4}[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/number-method/\n\t\tnumber: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^(?:-?\\d+|-?\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/digits-method/\n\t\tdigits: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d+$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/minlength-method/\n\t\tminlength: function( value, element, param ) {\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/maxlength-method/\n\t\tmaxlength: function( value, element, param ) {\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/rangelength-method/\n\t\trangelength: function( value, element, param ) {\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/min-method/\n\t\tmin: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/max-method/\n\t\tmax: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/range-method/\n\t\trange: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/step-method/\n\t\tstep: function( value, element, param ) {\n\t\t\tvar type = $( element ).attr( \"type\" ),\n\t\t\t\terrorMessage = \"Step attribute on input type \" + type + \" is not supported.\",\n\t\t\t\tsupportedTypes = [ \"text\", \"number\", \"range\" ],\n\t\t\t\tre = new RegExp( \"\\\\b\" + type + \"\\\\b\" ),\n\t\t\t\tnotSupported = type && !re.test( supportedTypes.join() ),\n\t\t\t\tdecimalPlaces = function( num ) {\n\t\t\t\t\tvar match = ( \"\" + num ).match( /(?:\\.(\\d+))?$/ );\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Number of digits right of decimal point.\n\t\t\t\t\treturn match[ 1 ] ? match[ 1 ].length : 0;\n\t\t\t\t},\n\t\t\t\ttoInt = function( num ) {\n\t\t\t\t\treturn Math.round( num * Math.pow( 10, decimals ) );\n\t\t\t\t},\n\t\t\t\tvalid = true,\n\t\t\t\tdecimals;\n\n\t\t\t// Works only for text, number and range input types\n\t\t\t// TODO find a way to support input types date, datetime, datetime-local, month, time and week\n\t\t\tif ( notSupported ) {\n\t\t\t\tthrow new Error( errorMessage );\n\t\t\t}\n\n\t\t\tdecimals = decimalPlaces( param );\n\n\t\t\t// Value can't have too many decimals\n\t\t\tif ( decimalPlaces( value ) > decimals || toInt( value ) % toInt( param ) !== 0 ) {\n\t\t\t\tvalid = false;\n\t\t\t}\n\n\t\t\treturn this.optional( element ) || valid;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/equalTo-method/\n\t\tequalTo: function( value, element, param ) {\n\n\t\t\t// Bind to the blur event of the target in order to revalidate whenever the target field is updated\n\t\t\tvar target = $( param );\n\t\t\tif ( this.settings.onfocusout && target.not( \".validate-equalTo-blur\" ).length ) {\n\t\t\t\ttarget.addClass( \"validate-equalTo-blur\" ).on( \"blur.validate-equalTo\", function() {\n\t\t\t\t\t$( element ).valid();\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn value === target.val();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/remote-method/\n\t\tremote: function( value, element, param, method ) {\n\t\t\tif ( this.optional( element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\tvar previous = this.previousValue( element, method ),\n\t\t\t\tvalidator, data, optionDataString;\n\n\t\t\tif ( !this.settings.messages[ element.name ] ) {\n\t\t\t\tthis.settings.messages[ element.name ] = {};\n\t\t\t}\n\t\t\tprevious.originalMessage = previous.originalMessage || this.settings.messages[ element.name ][ method ];\n\t\t\tthis.settings.messages[ element.name ][ method ] = previous.message;\n\n\t\t\tparam = typeof param === \"string\" && { url: param } || param;\n\t\t\toptionDataString = $.param( $.extend( { data: value }, param.data ) );\n\t\t\tif ( previous.old === optionDataString ) {\n\t\t\t\treturn previous.valid;\n\t\t\t}\n\n\t\t\tprevious.old = optionDataString;\n\t\t\tvalidator = this;\n\t\t\tthis.startRequest( element );\n\t\t\tdata = {};\n\t\t\tdata[ element.name ] = value;\n\t\t\t$.ajax( $.extend( true, {\n\t\t\t\tmode: \"abort\",\n\t\t\t\tport: \"validate\" + element.name,\n\t\t\t\tdataType: \"json\",\n\t\t\t\tdata: data,\n\t\t\t\tcontext: validator.currentForm,\n\t\t\t\tsuccess: function( response ) {\n\t\t\t\t\tvar valid = response === true || response === \"true\",\n\t\t\t\t\t\terrors, message, submitted;\n\n\t\t\t\t\tvalidator.settings.messages[ element.name ][ method ] = previous.originalMessage;\n\t\t\t\t\tif ( valid ) {\n\t\t\t\t\t\tsubmitted = validator.formSubmitted;\n\t\t\t\t\t\tvalidator.resetInternals();\n\t\t\t\t\t\tvalidator.toHide = validator.errorsFor( element );\n\t\t\t\t\t\tvalidator.formSubmitted = submitted;\n\t\t\t\t\t\tvalidator.successList.push( element );\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = false;\n\t\t\t\t\t\tvalidator.showErrors();\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrors = {};\n\t\t\t\t\t\tmessage = response || validator.defaultMessage( element, { method: method, parameters: value } );\n\t\t\t\t\t\terrors[ element.name ] = previous.message = message;\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = true;\n\t\t\t\t\t\tvalidator.showErrors( errors );\n\t\t\t\t\t}\n\t\t\t\t\tprevious.valid = valid;\n\t\t\t\t\tvalidator.stopRequest( element, valid );\n\t\t\t\t}\n\t\t\t}, param ) );\n\t\t\treturn \"pending\";\n\t\t}\n\t}\n\n} );\n\n// Ajax mode: abort\n// usage: $.ajax({ mode: \"abort\"[, port: \"uniqueport\"]});\n// if mode:\"abort\" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()\n\nvar pendingRequests = {},\n\tajax;\n\n// Use a prefilter if available (1.5+)\nif ( $.ajaxPrefilter ) {\n\t$.ajaxPrefilter( function( settings, _, xhr ) {\n\t\tvar port = settings.port;\n\t\tif ( settings.mode === \"abort\" ) {\n\t\t\tif ( pendingRequests[ port ] ) {\n\t\t\t\tpendingRequests[ port ].abort();\n\t\t\t}\n\t\t\tpendingRequests[ port ] = xhr;\n\t\t}\n\t} );\n} else {\n\n\t// Proxy ajax\n\tajax = $.ajax;\n\t$.ajax = function( settings ) {\n\t\tvar mode = ( \"mode\" in settings ? settings : $.ajaxSettings ).mode,\n\t\t\tport = ( \"port\" in settings ? settings : $.ajaxSettings ).port;\n\t\tif ( mode === \"abort\" ) {\n\t\t\tif ( pendingRequests[ port ] ) {\n\t\t\t\tpendingRequests[ port ].abort();\n\t\t\t}\n\t\t\tpendingRequests[ port ] = ajax.apply( this, arguments );\n\t\t\treturn pendingRequests[ port ];\n\t\t}\n\t\treturn ajax.apply( this, arguments );\n\t};\n}\nreturn $;\n}));\n},{\"jquery\":3}],3:[function(require,module,exports){\n/*!\n * jQuery JavaScript Library v3.6.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2022-08-26T17:52Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket trac-14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.6.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.6\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2021-02-16\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem && elem.namespaceURI,\n\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[ \"TAG\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a == document || a.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b == document || b.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" ) );\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr[ \"CHILD\" ].test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"odd\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"gt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos[ \"nth\" ] = Expr.pseudos[ \"eq\" ];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rcombinators.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrim, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[ \"TAG\" ]( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[ \"needsContext\" ].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (trac-9521)\n\t// Strict HTML recognition (trac-11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See trac-6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (trac-9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see trac-8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (trac-14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (trac-11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (trac-14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces \";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (trac-13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
\" ],\n\tcol: [ 2, \"\", \"
\" ],\n\ttr: [ 2, \"\", \"
\" ],\n\ttd: [ 3, \"\", \"
\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (trac-12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (trac-13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Support: Chrome 86+\n\t\t\t\t\t\t// In Chrome, if an element having a focusout handler is blurred by\n\t\t\t\t\t\t// clicking outside of it, it invokes the handler synchronously. If\n\t\t\t\t\t\t// that handler calls `.remove()` on the element, the data is cleared,\n\t\t\t\t\t\t// leaving `result` undefined. We need to guard against this.\n\t\t\t\t\t\treturn result && result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (trac-504, trac-13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\t// Suppress native focus or blur if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (trac-8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Unwrap a CDATA section containing script contents. This shouldn't be\n\t\t\t\t\t\t\t// needed as in XML documents they're already not visible when\n\t\t\t\t\t\t\t// inspecting element contents and in HTML documents they have no\n\t\t\t\t\t\t\t// meaning but we're preserving that logic for backwards compatibility.\n\t\t\t\t\t\t\t// This will be removed completely in 4.0. See gh-4904.\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar rcustomProp = /^--/;\n\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\nvar whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n\n\nvar rtrimCSS = new RegExp(\n\t\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\",\n\t\"g\"\n);\n\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (trac-8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is display: block\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tisCustomProp = rcustomProp.test( name ),\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, trac-12537)\n\t// .css('--customProperty) (gh-3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\t// trim whitespace for custom property (issue gh-4926)\n\t\tif ( isCustomProp ) {\n\n\t\t\t// rtrim treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" );\n\t\t}\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug trac-9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (trac-7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// Use proper attribute retrieval (trac-12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar classNames, className, i, self,\n\t\t\ttype = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\treturn this.each( function() {\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (trac-14686, trac-14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (trac-2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (trac-6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// trac-7653, trac-8125, trac-8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes trac-9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (trac-10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket trac-12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// trac-9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (trac-11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// trac-1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see trac-8605, trac-14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// trac-14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"