{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./scripts/components/dynamic-helper.js","webpack:///./scripts/components/konami/volunteerGame.js","webpack:///./scripts/components/konami/gameobjects/truck.js","webpack:///./scripts/components/konami/gameobjects/tree.js","webpack:///./scripts/components/konami/gameobjects/bush.js","webpack:///./scripts/components/konami/gameobjects/fire.js","webpack:///./scripts/components/searchFormElements.js","webpack:///./scripts/common/gtmDimensions.js","webpack:///./scripts/common/logging.js","webpack:///./scripts/components/common.js","webpack:///./scripts/common/viewHeightVar.js","webpack:///./scripts/vendor/browserDetection.js","webpack:///./scripts/vendor/bootstrap-3.3.7/transition.js","webpack:///./scripts/vendor/bootstrap-3.3.7/collapse.js","webpack:///./scripts/vendor/bootstrap-3.3.7/tab.js","webpack:///./scripts/vendor/bootstrap-3.3.7/modal.js","webpack:///./scripts/vendor/bootstrap-3.3.7/tooltip.js","webpack:///./scripts/vendor/bootstrap-3.3.7/popover.js","webpack:///./scripts/vendor/jquery.mainMenu.js","webpack:///./scripts/vendor/jquery.columnizer.js","webpack:///./scripts/vendor/jquery.dlmenu.js","webpack:///./scripts/vendor/jquery.utilities.js","webpack:///../node_modules/js-cookie/src/js.cookie.js","webpack:///./scripts/vendor/jquery.multipleselect.js","webpack:///./scripts/vendor/jquery.matchHeight.js","webpack:///./scripts/vendor/jquery-ui.js","webpack:///./scripts/entry.js","webpack:///./scripts/helpers/old-browser.js","webpack:///./scripts/helpers/stateManager.js","webpack:///./scripts/helpers/displayError.js","webpack:///../node_modules/webpack/buildin/global.js","webpack:///../node_modules/@sentry/webpack-plugin/src/sentry-webpack.module.js","webpack:///./scripts/common/svgInliner.js","webpack:///./scripts/common/tables.js","webpack:///../node_modules/jquery/dist/jquery.js","webpack:///./scripts/common/accessibility.js","webpack:///./scripts/common/backToTop.js","webpack:///./scripts/common/breakpoints.js","webpack:///./scripts/common/calloutBoxes.js","webpack:///./scripts/common/contactsSearch.js","webpack:///./scripts/common/enforceParagraphs.js","webpack:///./scripts/common/forms.js","webpack:///./scripts/common/forms-navigation-field.js","webpack:///./scripts/common/forms-page-break.js","webpack:///./scripts/common/gtm.js","webpack:///./scripts/common/homeUnauthorised.js","webpack:///./scripts/common/logout.js","webpack:///./scripts/common/mainMenu.js","webpack:///./scripts/common/mobileMenu.js","webpack:///./scripts/common/mobileSearch.js","webpack:///./scripts/common/myProfileName.js","webpack:///./scripts/common/pageAnchors.js","webpack:///./scripts/common/smoothScroll.js","webpack:///./scripts/common/tabOrder.js","webpack:///./scripts/components/onthispage.js","webpack:///./scripts/common/updateProfile.js","webpack:///./scripts/vendor/.modernizrrc.js","webpack:///../node_modules/regenerator-runtime/runtime.js","webpack:///./scripts/components lazy ^\\.\\/.*$ namespace object","webpack:///./scripts/helpers/helpers.js","webpack:///./scripts/components/konami/gameobjects/_gameObject.js","webpack:///./scripts/components/konami/gameobjects/_scrollingObject.js","webpack:///./scripts/components/accordion.js","webpack:///./scripts/components/newsDetail.js","webpack:///./scripts/components/relatedLinks.js","webpack:///./scripts/components/tabs.js","webpack:///./scripts/components/konami/index.js","webpack:///./scripts/vendor/bootstrap-3.3.7/dropdown.js","webpack:///./scripts/components/konami/gameobjects/water.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","installedModules","28","__webpack_require__","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","p","jsonpScriptSrc","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","jsonpArray","window","oldJsonpFunction","slice","s","loadedComponents","Load","obj","getAttribute","includes","component","dynamicLoad","toInject","querySelectorAll","DynamicLoader","VolunteerGame","ev","$startButton","hide","gameController","state","running","startedTimeStamp","Date","now","animationController","currentFrame","playerObject","Truck","childObjects","Water","requestAnimationFrame","gameUpdate","cancelAnimationFrame","$","removeClass","remove","timestamp","update","draw","this","canvas","livesObject","settings","width","height","gamespeed","groundlevel","gravity","jumpKeyHeld","jumpReleased","lives","score","firesJumped","level","loop","$closeButton","spawnController","bush","minDelay","maxDelay","lastAddedTimestamp","nextDelay","max","lastSpawnedObj","tree","fire","init","beforeGameStart","preloadImages","usePng","preload","svgFilename","img","getElementsByClassName","browserDetection","browser","addClass","append","wrap","after","getContext","on","which","close","onJumpRelease","click","start","show","text","reset","position","x","element","GameObjectClass","spawnerType","activeCount","filter","blockedByPreviousSpawn","newSpawnedObject","Math","floor","randomMinMax","runSpawner","Bush","Tree","Fire","forEach","item","index","destroyed","splice","halfMinutesPassed","ctx","clearRect","fillStyle","fillRect","font","textAlign","fillText","scoreTime","scoreJumps","levelText","end","baseLevel","xAfterIntro","y","size","velocity","velocityIntro","onGround","previousJumpReleased","jumpTimer","maxJumpY","initialJumpForce","wheel","originOffset","currentOffset","maxOffset","wheel1","getElementById","wheel2","siren","sirenOpacity","jumpForce","timePassedSeconds","drawImage","el","save","globalAlpha","restore","GameObject","ScrollingObject","hasScored","collided","intersect","destroy","searchFormElements","qs","a","b","split","decodeURIComponent","replace","location","search","substr","setPseudoCheckbox","$parentCheckbox","$pseudoCheckbox","parent","find","is","each","$el","selectedValue","splitValues","ii","attr","multipleSelect","join","keyCode","children","not","val","prop","loadQSValues","resize","innerWidth","closest","fadeOut","keyup","searcModal","fadeIn","focus","$this","siblings","url","URL","href","searchParams","set","pathname","preventDefault","id","searchMobile","detectDoneBtn","hasClass","next","trigger","blur","has","keydown","searchHubFormDocs","Sentry","userStateManager","getUserProfileData","isNullUndefinedEmpty","ProfileInfo","setUser","email","PersonalEmail","setContext","BGUs","existingUserIdCookie","Cookies","existingUserTypeCookie","existingServiceCookie","existingRegionsCookie","existingLeaderCookie","VolunteerNo","DFESUserType","uniqueBguTypesSorted","map","BguType","self","indexOf","sort","uniqueBguRegionsSorted","Region","isCurrentlyBguLeader","ServiceHistory","some","IsLeader","EndDate","sentrySettings","dsn","environment","common","logging","accessibility","breakpoints","mainMenu","mobileMenu","mobileSearch","backToTop","tables","setupViewHeightVar","vh","innerHeight","documentElement","style","setProperty","viewHeightDebounce","debounce","addEventListener","viewHeightVar","svgInliner","pageAnchors","tabOrder","smoothScroll","enforceParagraphs","calloutBoxes","logout","updateProfile","myProfileName","homeUnauthorised","contactsSearch","gtmDimensions","forms","define","options","userAgent","browserParts","osParts","version","os","webkit","navigator","toLowerCase","exec","match","substring","parseInt","major","minor","patch","addClasses","body","parentNode","classList","add","fn","emulateTransitionEnd","duration","called","one","support","transition","transEndEventNames","WebkitTransition","MozTransition","OTransition","transitionEnd","special","bsTransitionEnd","bindType","delegateType","handle","handleObj","handler","apply","arguments","jQuery","Collapse","$element","extend","DEFAULTS","$trigger","transitioning","$parent","getParent","addAriaAndCollapsedClass","toggle","getTargetFromTrigger","Plugin","option","test","VERSION","TRANSITION_DURATION","dimension","activesData","actives","startEvent","Event","isDefaultPrevented","complete","scrollSize","camelCase","proxy","offsetHeight","isOpen","toggleClass","old","collapse","Constructor","noConflict","$target","Tab","$ul","selector","$previous","hideEvent","relatedTarget","showEvent","activate","container","callback","$active","offsetWidth","tab","clickHandler","Modal","$body","$dialog","$backdrop","isShown","originalBodyPad","scrollbarWidth","ignoreBackdropClick","remote","load","_relatedTarget","BACKDROP_TRANSITION_DURATION","backdrop","keyboard","that","checkScrollbar","setScrollbar","escape","appendTo","scrollTop","adjustDialog","enforceFocus","off","hideModal","handleUpdate","resetAdjustments","resetScrollbar","removeBackdrop","animate","doAnimate","currentTarget","callbackRemove","modalIsOverflowing","scrollHeight","clientHeight","css","paddingLeft","bodyIsOverflowing","paddingRight","fullWindowWidth","documentElementRect","getBoundingClientRect","right","abs","left","clientWidth","measureScrollbar","bodyPad","scrollDiv","className","removeChild","modal","Tooltip","enabled","hoverState","inState","animation","placement","template","title","delay","html","viewport","padding","getOptions","$viewport","isFunction","hover","constructor","triggers","eventIn","eventOut","enter","leave","_options","fixTitle","getDefaults","getDelegateOptions","defaults","tip","isInStateTrue","hasContent","inDom","contains","ownerDocument","$tip","tipId","getUID","setContent","autoToken","autoPlace","detach","top","display","insertAfter","pos","getPosition","actualWidth","actualHeight","orgPlacement","viewportDim","bottom","calculatedOffset","getCalculatedOffset","applyPlacement","prevHoverState","offset","marginTop","marginLeft","isNaN","setOffset","using","props","round","delta","getViewportAdjustedDelta","isVertical","arrowDelta","arrowOffsetPosition","replaceArrow","arrow","getTitle","removeAttr","$e","isBody","tagName","elRect","isSvg","SVGElement","elOffset","scroll","outerDims","viewportPadding","viewportDimensions","topEdgeOffset","bottomEdgeOffset","leftEdgeOffset","rightEdgeOffset","prefix","random","$arrow","enable","disable","toggleEnabled","removeData","tooltip","Popover","content","getContent","popover","cbpHorizontalMenu","current","open","eq","$item","idx","$items","$linkItems","stopPropagation","columnize","columns","buildOnce","overflow","doneFunc","ignoreImageLoading","columnFloat","lastNeverTallest","accuracy","manualBreaks","cssClassPrefix","$inBox","maxHeight","$cache","lastWidth","contents","clone","func","empty","prefixTheClassName","withDot","dot","$putInHere","$pullOutHere","$parentColumn","targetHeight","childNodes","node","kids","lastKid","nodeType","columnText","oText","nodeValue","counter2","latestTextNode","indexOfSpace","createTextNode","prepend","$cloneMe","$clone","singleColumnizeIt","$col","$destroyable","checkDontEndColumn","$lastKid","div","kid","attributes","nodeName","removeAttribute","innerHTML","dom","previousSibling","columnizeIt","numCols","optionWidth","optionHeight","maxLoops","scrollHorizontally","loopCount","appVersion","totalH","min","lastIsMax","numberOfColumnsThatDontEndInAColumnBreak","h","avgH","DLMenu","_init","animationClasses","classin","classout","onLevelClick","onLinkClick","backLabel","useActiveItemAsBackLabel","useActiveItemAsLink","resetOnClose","_config","animEndEventName","WebkitAnimation","OAnimation","msAnimation","Modernizr","prefixed","transEndEventName","msTransition","supportAnimations","cssanimations","supportTransitions","csstransitions","_initEvents","$menu","$menuitems","$back","parentLabel","parents","parentli","_closeMenu","slideDown","_openMenu","$submenu","$flyin","onAnimationEndFn","$subview","closeMenu","onTransitionEndFn","_resetMenu","openMenu","slideUp","logError","console","dlmenu","args","Array","instance","charAt","newUtilityExtension","format","reg","RegExp","getBreakpoint","getComputedStyle","querySelector","getPropertyValue","setClass","cssClassBefore","cssClass","clearClass","factory","OldCookies","api","result","converter","path","expires","setMilliseconds","getMilliseconds","toUTCString","JSON","stringify","write","encodeURIComponent","String","stringifiedAttributes","attributeName","cookie","cookies","rdecode","parts","json","read","parse","getJSON","withConverter","sprintf","str","flag","arg","removeDiacritics","defaultDiacriticsRemovalMap","base","letters","MultipleSelect","$label","LabelTxt","$choice","placeholder","$drop","dropWidth","outerWidth","selectAllName","selectGroupName","selectItemName","keepOpen","selectAll","single","inputId","selectAllDelimiter","selectAllText","elm","optionToHtml","noMatchesFound","multipleWidth","$searchInput","$selectAll","$selectGroups","$selectItems","$disableItems","$noResults","$done","events","updateSelectAll","group","groupDisabled","disabled","$elm","classes","multiple","textTemplate","selected","styler","label","labelTemplate","$group","hideOptgroupCheckboxes","toggleOpen","onFocus","onBlur","shiftKey","filterAcceptOnEnter","checked","$children","onOptgroupClick","updateOptGroupSelect","onClick","clickedVal","animateMethod","onOpen","onClose","method","fade","slide","isInit","selects","displayValues","getSelects","$span","sl","allSelected","ellipsis","minimumCountSelected","delimiter","countSelected","addTitle","first","onCheckAll","texts","values","trim","$selected","list","setSelects","checkAll","uncheckAll","onUncheckAll","refresh","onFilter","allowedMethods","inArray","_previousResizeWidth","_updateTimeout","_parse","parseFloat","_rows","elements","$elements","lastTop","rows","$that","lastRow","_parseOptions","opts","byRow","matchHeight","_groups","_apply","_throttle","_maintainScroll","_beforeUpdate","_afterUpdate","htmlHeight","outerHeight","$hiddenParents","row","$row","verticalPadding","_applyDataApi","groups","groupId","_update","throttle","windowWidth","ui","orig","widgetUuid","widgetSlice","cleanData","elems","elem","_data","triggerHandler","widget","existingConstructor","basePrototype","proxiedPrototype","namespace","fullName","Widget","isArray","concat","expr","_createWidget","_proto","_childConstructors","_super","_superApply","returnValue","__super","__superApply","widgetEventPrefix","widgetName","widgetFullName","child","childPrototype","bridge","input","inputIndex","inputLength","isPlainObject","isMethodCall","methodValue","jquery","pushStack","defaultElement","uuid","eventNamespace","bindings","hoverable","focusable","classesElementLookup","_on","defaultView","parentWindow","_getCreateOptions","_create","_setOptionDisabled","_trigger","_getCreateEventData","noop","_destroy","_removeClass","curOption","pop","_setOptions","_setOption","_setOptionClasses","classKey","currentElements","_classes","keys","_toggleClass","full","processClassString","checkOption","unique","extra","_untrackClassesElement","_addClass","suppressDisabledCheck","handlers","delegateElement","handlerProxy","guid","eventName","_off","_delay","_hoverable","mouseenter","mouseleave","_focusable","focusin","focusout","originalEvent","defaultEffect","hasOptions","effect","effectName","isEmptyObject","effects","easing","queue","createPseudo","dataName","scrollParent","includeHidden","excludeStaticParent","overflowRegex","ie","mouseHandled","cancel","distance","_mouseInit","_mouseDown","stopImmediatePropagation","started","_mouseDestroy","_mouseMoveDelegate","_mouseUpDelegate","_mouseMoved","_mouseStarted","_mouseUp","_mouseDownEvent","btnIsLeft","elIsCancel","_mouseCapture","mouseDelayMet","_mouseDelayTimer","_mouseDistanceMet","_mouseDelayMet","_mouseStart","_mouseMove","documentMode","button","altKey","ctrlKey","metaKey","ignoreMissingWhich","_mouseDrag","_mouseStop","pageX","pageY","mouse","ready","axis","connectWith","containment","cursor","cursorAt","dropOnEmpty","forcePlaceholderSize","forceHelperSize","grid","helper","items","opacity","revert","scrollSensitivity","scrollSpeed","scope","tolerance","zIndex","beforeStop","change","deactivate","out","over","receive","stop","_isOverAxis","reference","_isFloating","containerCache","_setHandleClassName","overrideHandle","currentItem","validHandle","reverting","_refreshItems","addBack","_removeCurrentsFromItems","noActivation","currentContainer","refreshPositions","_createHelper","_cacheHelperProportions","_cacheMargins","margins","_getParentOffset","relative","_getRelativeOffset","cssPosition","originalPosition","_generatePosition","originalPageX","originalPageY","_adjustOffsetFromHelper","domPosition","prev","_createPlaceholder","_setContainment","storedCursor","storedStylesheet","_storedOpacity","_storedZIndex","overflowOffset","_uiHash","_preserveHelperProportions","containers","ddmanager","dropBehaviour","prepareOffsets","dragging","itemElement","intersection","scrolled","positionAbs","_convertPositionTo","lastPositionAbs","scrollLeft","_intersectsWithPointer","direction","_intersectsWithSides","_rearrange","_contactContainers","drag","noPropagation","drop","cur","offsetParent","_clear","_storedCSS","_noFinalSort","serialize","_getItemsAsjQuery","connected","res","attribute","expression","toArray","ret","_intersectsWith","x1","x2","helperProportions","y1","y2","dyClick","dxClick","isOverElementHeight","isOverElementWidth","isOverElement","forcePointerForContainers","floating","verticalDirection","horizontalDirection","_getDragVerticalDirection","_getDragHorizontalDirection","isOverBottomHalf","isOverRightHalf","_connectWith","j","inst","queries","addItems","grep","targetData","_queries","queriesLength","fast","toleranceElement","custom","refreshContainers","_createTrPlaceholder","sourceTr","targetTr","dist","itemWithLeastDistance","posProperty","sizeProperty","nearBottom","innermostContainer","innermostIndex","po","ce","co","scrollWidth","mod","scrollIsRootNode","hardRefresh","insertBefore","nextSibling","counter","delayedTriggers","before","delayEvent","fromOutside","cancelHelperRemoval","_inst","sender","jq","require","siteInit","accordion","tabs","newsDetail","onThisPage","relatedLinks","konami","LoadScript","origin","BrowserSupportsAllFeatures","sessionStorage","getItem","loadIE11","oldBrowser","setItem","defs","subStateObj","propKey","getUserState","responseObj","stateObj","saveUserState","respObj","constructNewObj","srcObj","retVal","getStateDataHandler","endpoint","stateKey","stateValue","stateValueObj","apiProblemOccured","stateAPICaller","pollCount","finaliseAPICall","response","ajax","success","status","noProfileData","FromVISAPI","newPollCount","dataType","userStateUpdated","CustomEvent","dispatchEvent","postParams","post","region","displayErrorMessage","$container","isShortMessage","msg","apiErrorMessage","long","short","g","Function","SENTRY_RELEASE","$img","imgURL","isColour","svg","paths","viewBox","createElementNS","pathsHTML","replaceWith","responsiveWrap","class","handleSwipeDisplayResize","checkTableSwipeDisplay","$swipe","global","w","noGlobal","arr","getProto","getPrototypeOf","class2type","toString","hasOwn","fnToString","ObjectFunctionString","isWindow","preservedScriptAttributes","noModule","DOMEval","code","doc","toType","context","rtrim","isArrayLike","num","merge","prevObject","last","len","copy","copyIsArray","deep","expando","isReady","proto","Ctor","globalEval","makeArray","results","second","invert","matches","callbackExpect","iterator","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","sortOrder","push_native","booleans","whitespace","identifier","pseudos","rwhitespace","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","_","escaped","escapedWhitespace","high","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","disabledAncestor","addCombinator","dir","els","seed","nid","newSelector","newContext","getElementsByTagName","qsa","toSelector","testContext","qsaError","cache","cacheLength","markFunction","assert","addHandle","attrs","attrHandle","siblingCheck","diff","sourceIndex","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","hasCompare","subWindow","attachEvent","createComment","getById","getElementsByName","attrId","getAttributeNode","tag","tmp","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","specified","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","selectors","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","what","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","useCache","lastChild","uniqueID","pseudo","setFilters","matched","matcher","unmatched","innerText","lang","elemLang","hash","activeElement","hasFocus","tabIndex","selectedIndex","radio","checkbox","file","password","image","submit","tokens","combinator","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","token","compiled","defaultValue","isXMLDoc","escapeSelector","until","truncate","rneedsContext","needsContext","rsingleTag","winnow","qualifier","rootjQuery","root","parseHTML","rparentsprev","guaranteedUnique","sibling","targets","prevAll","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","reverse","rnothtmlwhite","Identity","v","Thrower","ex","adoptValue","noValue","fail","then","Callbacks","createOptions","firing","memory","fired","locked","firingIndex","once","stopOnFalse","lock","fireWith","Deferred","tuples","always","deferred","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","mightThrow","TypeError","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","when","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","stack","warn","readyException","readyList","completed","removeEventListener","catch","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","rmsPrefix","rdashAlpha","fcamelCase","letter","toUpperCase","string","acceptData","owner","Data","uid","configurable","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","getData","_removeData","dequeue","startLength","hooks","_queueHooks","setter","clearQueue","count","defer","pnum","source","rcssNum","cssExpand","isHiddenWithinTree","swap","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","rcheckableType","rtagName","rscriptType","wrapMap","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","optgroup","tbody","tfoot","colgroup","caption","th","rhtml","buildFragment","scripts","selection","ignored","fragment","createDocumentFragment","nodes","htmlPrefilter","checkClone","cloneNode","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","safeActiveElement","types","origFn","handleObjIn","eventHandle","namespaces","origType","elemData","triggered","dispatch","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","writable","noBubble","beforeunload","defaultPrevented","timeStamp","isSimulated","bubbles","cancelable","changedTouches","detail","eventPhase","view","charCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","pointerenter","pointerleave","related","rxhtmlTag","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","replaceChild","prependTo","replaceAll","original","insert","rnumnonpx","getStyles","opener","rboxStyle","curCSS","computed","minWidth","maxWidth","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","measure","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","cssPrefixes","emptyStyle","finalPropName","cssProps","capName","vendorPropName","setPositiveNumber","subtract","boxModelAdjustment","box","isBorderBox","styles","computedVal","ceil","getWidthOrHeight","valueIsBorderBox","Tween","cssHooks","origName","isCustomProp","isFinite","getClientRects","margin","border","suffix","expand","expanded","propHooks","run","percent","eased","step","fx","linear","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","interval","tick","createFxNow","genFx","includeWidth","createTween","Animation","tweeners","properties","stopped","prefilters","currentTime","startTime","tweens","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflowX","overflowY","prefilter","speed","opt","speeds","fadeTo","to","optall","doAnimation","finish","stopQueue","timers","cssFn","slideToggle","fadeToggle","slow","time","checkOn","optSelected","radioValue","boolHook","nType","attrHooks","bool","attrNames","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","curValue","clazz","finalValue","stateVal","isValidValue","classNames","rreturn","valHooks","optionSet","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","isTrigger","simulate","attaches","nonce","rquery","parseXML","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","valueOrFunction","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","isLocal","protocol","processData","async","contentType","accepts","responseFields","converters","ajaxSetup","ajaxPrefilter","ajaxTransport","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","abort","statusText","finalText","crossDomain","host","ifModified","headers","beforeSend","send","nativeStatusText","responses","isSuccess","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","conv","dataFilter","throws","ajaxConvert","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","username","xhrFields","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","params","animated","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","rect","win","pageYOffset","pageXOffset","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","fnOver","fnOut","unbind","delegate","undelegate","holdReady","hold","parseJSON","isNumeric","_jQuery","_$","$sbButton","$sbContainer","strIsCollapsed","isCollapsed","stringToBoolean","$button","debouncedCheck","updatePosition","footerPosition","scrollPos","setLastBreakpoint","breakpoint","getLastBreakpoint","previousBreakpoint","currentBreakpoint","breakpointChanged","poll","$callout","parentCollapseId","handleFileInputs","customRadioCheckboxesChange","populateAutoProfileFields","populateLoginStatus","checkboxSelectAll","$checkboxList","$checkboxes","$chkSelectAll","loggedInView","loggedInViewBtn","spinner","errorMessageContainer","displayName","emailAddr","FirstName","$autoProfileField","LastName","$input","$radio","$checkbox","fileName","files","newLabel","formsPageBreak","formsNavigationField","$form","parsley","invalidSelects","invalidCheckboxesRadios","errorList","selectBoxIt","formInstance","isValid","eventData","formName","gtm","pushEvent","$requiredFields","$customInputs","$selectboxes","hostname","parsleyError","Parsley","sfMessages","sfMessagesObj","$msgRequired","required","$msgPattern","regularExpression","FormData","formContainers","initializeFormContainer","formElement","formStepsContainers","navigationFieldContainers","srProgressbar","updateNavigationFields","navigationElements","navIndex","navigationElement","pages","numberOfAllSteps","progressInPercent","progressBar","progressPercent","page","pageIndex","pageTitleWrp","pageTitle","currentPage","totalPages","valueText","modifySrOnlyData","previousIndex","isPreviewMode","separator","formStepIndex","skipToPageCollection","submitButton","isSubmitButtonAdded","stepNewForm","skipToPageList","focusForm","form","currentStepContainer","continueFunction","formContainer","stepParsley","inputs","jInput","tryGoToNextStep","skipItem","SkipFromPage","getSkipToPageItem","SkipToPage","getSkipFromPageItem","dataLayer","removeItem","$myDetailMobile","$myDetailTrigger","$logos","$headerContainer","moveMenuMobile","$subMenuItemLink","$searchContainer","$searchToggle","toggleSearchMenu","mobileSearchFocus","$welcomeMessage","header","anchor","firstClass","footer","k","onThisPagePush","$onthispage","$onthispageContainer","exitCode","link","UpdateProfileLink","hadGlobal","oldGlobal","tests","ModernizrProto","_version","_q","cb","addTest","addAsyncTest","docElement","isSVG","cssomPrefixes","usePrefixes","_cssomPrefixes","modElem","mStyle","injectElementWithStyles","rule","testnames","docOverflow","fake","getBody","styleSheet","background","domToCSS","m1","nativeTestProps","CSS","supports","conditionText","currentStyle","computedStyle","cssToDOM","m2","domPrefixes","fnBind","testPropsAll","skipValueTest","ucProp","afterInit","propsLength","cleanElems","testProps","testDOMProps","testAllProps","_domPrefixes","atRule","prefixes","cssrule","CSSRule","aliases","newSyntax","oldSyntax","pointerEvents","_prefixes","testStyles","DocumentTouch","query","offsetTop","featureNames","feature","aliasIdx","nameIdx","featureNameSplit","featureIdx","Boolean","testRunner","classPrefix","baseVal","enableJSClass","reJS","enableClasses","setClasses","runtime","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","doneResult","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","invoke","__await","unwrapped","info","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","iter","skipTempReset","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","webpackAsyncContext","req","ids","immediate","later","callNow","endTime","Number","checkCondition","sheet","fadeSmoother","truncateToWord","maxLength","returnVal","lastIndexOf","appendVal","dst","spinnerHtml","getQueryString","field","fetch","imageId","loaded","created","customUpdate","$btn","$collapse","collapseId","accordionTitle","btnId","hashParentAccordion","mainTitle","newsTitle","$mainTitle","$newsTitle","$searchBox","setNewsTitle","$equalHeights","resetAccordionResize","$panel","thisId","thisTitle","thisNewId","thisPanelTitle","ran","lastKeyTime","Dropdown","clearMenus","isActive","dropdown"],"mappings":"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ACd5wB,SAAUzc,EAAOq+C,GACjBZ,WAAYA,EACZC,QAASA,GAGS,SAAhBprE,KAAKwsB,SAGPxsB,KAAK0oB,SA7rBP/sB,GAgsBOkuE,IAQJrwE,EA7sBK,CAotBiBC,EAAOD,SAGtC,IACE4zE,mBAAqBzE,EACrB,MAAO0E,GAUP1mC,SAAS,IAAK,yBAAdA,CAAwCgiC,K,oBC1uB1C,IAAI18D,EAAM,CACT,cAAe,CACd,IAED,iBAAkB,CACjB,IAED,UAAW,CACV,IACA,IAED,aAAc,CACb,IACA,IAED,8BAA+B,CAC9B,IACA,IAED,iCAAkC,CACjC,IACA,IAED,WAAY,CACX,KAED,cAAe,CACd,KAED,aAAc,CACb,IACA,IAED,gBAAiB,CAChB,IACA,IAED,yBAA0B,CACzB,IACA,IAED,4BAA6B,CAC5B,IACA,IAED,uBAAwB,CACvB,IACA,IAED,0BAA2B,CAC1B,IACA,IAED,mBAAoB,CACnB,KAED,sBAAuB,CACtB,KAED,oBAAqB,CACpB,IACA,IAED,uBAAwB,CACvB,IACA,IAED,iBAAkB,CACjB,IACA,IAED,oBAAqB,CACpB,IACA,IAED,sBAAuB,CACtB,IACA,IAED,yBAA0B,CACzB,IACA,IAED,WAAY,CACX,IAED,YAAa,CACZ,IAED,mCAAoC,CACnC,IAED,sCAAuC,CACtC,IAED,wCAAyC,CACxC,IAED,2CAA4C,CAC3C,IAED,4BAA6B,CAC5B,KAED,+BAAgC,CAC/B,KAED,4BAA6B,CAC5B,KAED,+BAAgC,CAC/B,KAED,4BAA6B,CAC5B,KAED,+BAAgC,CAC/B,KAED,6BAA8B,CAC7B,KAED,gCAAiC,CAChC,KAED,6BAA8B,CAC7B,IAED,gCAAiC,CAChC,IAED,iBAAkB,CACjB,IAED,oBAAqB,CACpB,IAED,yBAA0B,CACzB,KAED,4BAA6B,CAC5B,KAED,kBAAmB,CAClB,IACA,GAED,qBAAsB,CACrB,IACA,GAED,UAAW,CACV,IACA,GAED,aAAc,CACb,IACA,GAED,qBAAsB,CACrB,IACA,GAED,wBAAyB,CACxB,IACA,GAED,cAAe,CACd,IACA,IAED,iB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","file":"app-bundle.9a4d5bdb3f375ae57518.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t28: 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"\" + ({}[chunkId]||chunkId) + \".\" + {\"0\":\"dc9cf5d179f5dabac4ff\",\"1\":\"82cce33c60b80a814435\",\"2\":\"0b8f43c911261019d449\",\"3\":\"e3e17605a7d03e237cbd\",\"4\":\"1705a05022cddccbcce2\",\"5\":\"fe610cf5f85c94e3c9f0\",\"6\":\"547643b4a76dc94c0008\",\"7\":\"41606199b45d1669befb\",\"8\":\"653b2d13810d7f489e69\",\"9\":\"570e13daa03cc82ca5b3\",\"10\":\"e0c749b57ea97d4b6ff9\",\"11\":\"0c8033cdc4d2ee96514a\",\"12\":\"0212050cdc864702428c\",\"13\":\"cd420eba3b5e341b059c\",\"14\":\"e94ba23e751d7e26a521\",\"15\":\"54175ca946edf7e163be\",\"16\":\"d43980de9fb44b63dfba\",\"17\":\"99babbdaac8433aaa477\",\"18\":\"15194e89b59e9363d36d\",\"19\":\"60ba9e3d4d565c8d9ee6\",\"20\":\"a660c29c37ca0a8c99f7\",\"21\":\"766365177200fff18aa7\",\"22\":\"4715bc14c4347bac8957\",\"23\":\"0e8a2b4cb6e33951b1d3\",\"24\":\"502d1ec277c5ab3b3ed6\",\"25\":\"f9dc373fbe65e645aa25\",\"26\":\"ff386b0fe6ee88a4632d\",\"27\":\"388cf83dcb88171a65ee\",\"35\":\"8144d184e2d8f843fa92\",\"36\":\"9762b05d7e065958766a\",\"37\":\"cdb5595a1b042da67ce3\",\"38\":\"6d7d19636b88ef3ce6bc\",\"39\":\"740436be931e0a89417c\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/assets/build/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 384);\n","const loadedComponents = [];\n\nconst Load = async (obj) => {\n // Gets props and renders component\n var data = obj.getAttribute('data-js-inject');\n\n if (!loadedComponents.includes(data)) {\n loadedComponents.push(data);\n\n console.info('injected component', data);\n\n const { component } = await import('./' + data);\n component();\n }\n};\n\nconst dynamicLoad = async () => {\n //check for all data-js-inject\n var toInject = document.querySelectorAll('[data-js-inject]');\n\n for (var component of toInject) {\n Load(component);\n }\n};\n\nexport const DynamicLoader = async () => {\n await dynamicLoad();\n};\n","import browserDetection from \"../../vendor/browserDetection\";\n\nimport Truck from './gameobjects/truck';\nimport Tree from './gameobjects/tree';\nimport Bush from './gameobjects/bush';\nimport Fire from './gameobjects/fire';\nimport Water from './gameobjects/water';\nimport {randomMinMax} from '../../helpers/helpers';\n\nexport default class VolunteerGame {\n constructor() {\n //this.wrapper = document.createElement('div').setAttribute('id','game-wrapper');\n this.gameController = {\n canvas: document.createElement('canvas'),\n childObjects: [],\n\t\t\tplayerObject: null,\n\t\t\tlivesObject: null,\n settings: {\n width: 1000,\n height: 600,\n gamespeed: 3.5,\n groundlevel: 400,\n\t\t\t\tgravity: 1.8\n },\n state: {\n\t\t\t\trunning: false,\n\t\t\t\tstartedTimeStamp: null, //Use our own timestamp as animation frame timestamp starts when dom loads\n jumpKeyHeld: false,\n jumpReleased: true,\n\t\t\t\tlives: 3,\n\t\t\t\tscore: 0,\n\t\t\t\tfiresJumped: 0,\n\t\t\t\tgamespeed: 3.5,\n\t\t\t\tlevel: 1\n },\n loop: null\n\t\t}\n\t\t\n\t\tthis.$startButton = $('');\n\t\tthis.$closeButton = $('');\n\n this.animationController = {\n currentFrame: null, //Animation frame reference so we can canel animation frame loop\n }\n\n this.spawnController = {\n bush: {\n minDelay: 400,\n maxDelay: 1500,\n lastAddedTimestamp: 0,\n nextDelay: 0,\n max: 25,\n lastSpawnedObj: null,\n },\n tree: {\n minDelay: 0,\n maxDelay: 4000,\n lastAddedTimestamp: 0,\n nextDelay: 0,\n max: 10,\n lastSpawnedObj: null,\n },\n fire: {\n minDelay: 1700,\n maxDelay: 4000,\n lastAddedTimestamp: 0,\n nextDelay: 0,\n max: 3,\n lastSpawnedObj: null,\n }\n }\n\n this.init();\n }\n\n init() {\n\t\tthis.beforeGameStart();\n\t\tthis.preloadImages();\n\t}\n\n\tpreloadImages(){\n\t\t\n\t\t//IE Support, also swaps to PNG for IE\n\t\tvar usePng = false;\n var data = browserDetection();\n\t\t\n\t\tif (data.browser === \"ie\") {\n\t\t\tusePng = true;\n\t\t}\n\t\t\n\t\tpreload('truck_body');\n\t\tpreload('truck_wheel');\n\t\tpreload('truck_siren');\n\t\tpreload('water');\n\t\tpreload('bush');\n\t\tpreload('tree');\n\t\tpreload('fire');\n\t\t\n\t\tfunction preload(svgFilename){\n\t\t\tvar img = document.createElement('img');\n\t\t\timg.setAttribute('id',svgFilename);\n\n\t\t\tif (usePng) {\n\t\t\t\timg.src = `/assets/static/images/game/png/${svgFilename}.png`;\n\t\t\t} else {\n\t\t\t\timg.src = `/assets/static/images/game/${svgFilename}.svg`;\n\t\t\t}\n\t\t\t\n\t\t\tdocument.getElementsByClassName('game-wrapper')[0].appendChild(img);\n\t\t}\n\t}\n\n\tbeforeGameStart() {\n $('html').addClass('hide-scroll');\n $('body').append(this.gameController.canvas);\n\t\t$(this.gameController.canvas).wrap('
');\n\t\t$(this.gameController.canvas).after(this.$startButton);\n\t\t$(this.gameController.canvas).after(this.$closeButton);\n\n\n //Set up canvas\n var context = this.gameController.canvas.getContext('2d');\n\n this.gameController.canvas.width = this.gameController.settings.width;\n this.gameController.canvas.height = this.gameController.settings.height;\n\n //Controls\n $(document).on('keydown', (ev) => {\n //Jump\n if (ev.which === 32) {\n this.gameController.state.jumpKeyHeld = true;\n }\n if (ev.which === 27) {\n this.close();\n }\n });\n\n $(document).on('keyup', (ev) => {\n //Jump\n if (ev.which === 32) {\n this.gameController.state.jumpKeyHeld = false;\n this.gameController.state.jumpReleased = true;\n this.gameController.playerObject.onJumpRelease();\n }\n\t\t});\n\t\t\n\t\tthis.$closeButton.click(this.close);\n\t\tthis.$startButton.click(this.start);\n\t}\n\t\n\tstart = (ev) => {\n\t\tthis.$startButton.hide();\n\t\t\n\t\tthis.gameController.state.running = true;\n\t\tthis.gameController.state.startedTimeStamp = + Date.now();\n\t\t\n\t\t//If the game has not been started before, create player\n\t\tif (this.animationController.currentFrame === null) {\n\t\t\tthis.gameController.playerObject = new Truck(this.gameController);\n\t\t\tthis.gameController.childObjects.push(new Water(this.gameController));\n\t\t\t\n\t\t\tthis.animationController.currentFrame = requestAnimationFrame(this.gameUpdate);\n\t\t}\n\t}\n\n\tend(){\n\t\tthis.$startButton.show();\n\t\tthis.$startButton.text('Play again');\n\t\tthis.$startButton.addClass('play-again');\n\t\tthis.reset();\n\t\tthis.gameController.state.running = false;\n\t}\n\n\treset() {\n\t\tthis.gameController.state.lives = 3;\n\t\tthis.gameController.state.score = 0;\n\t\tthis.gameController.state.firesJumped = 0;\n\t\tthis.gameController.childObjects = [];\n\t\tthis.gameController.childObjects.push(new Water(this.gameController));\n\t\tthis.gameController.playerObject.position.x = this.gameController.settings.width;\n\n\t\tfor (const key in this.spawnController) {\n\t\t\tif (this.spawnController.hasOwnProperty(key)) {\n\t\t\t\tconst element = this.spawnController[key];\n\t\t\t\telement.lastSpawnedObj = null;\n\t\t\t\telement.lastAddedTimestamp = 0;\n\t\t\t}\n\t\t}\n\t}\n\n close = () => {\n cancelAnimationFrame(this.animationController.currentFrame);\n $('html').removeClass('hide-scroll');\n $('.game-wrapper').remove();\n }\n\n gameUpdate = () => {\n\t\tif (this.gameController.state.running) {\n\t\t\tconst timestamp = + Date.now() - this.gameController.state.startedTimeStamp; \n\n\t\t\tthis.update(timestamp);\n\t\t\tthis.draw(timestamp);\n\t\t}\n\n this.animationController.currentFrame = requestAnimationFrame(this.gameUpdate);\n\n }\n\n runSpawner(GameObjectClass, spawnerType, timestamp) {\n var activeCount = this.gameController.childObjects.filter(obj => { return obj instanceof GameObjectClass }).length; //&& obj.created + 1000 < Date.now()\n\n var blockedByPreviousSpawn = false;\n //Check the previously spawned object has moved out of the way - this catches odd issues on load where time progresses but we haven't had time to render\n if (this.spawnController[spawnerType].lastSpawnedObj !== null) {\n var lastSpawnedX = this.spawnController[spawnerType].lastSpawnedObj.position.x;\n \n if (lastSpawnedX < 0) {\n\t\t\t\tblockedByPreviousSpawn = true\n };\n\t\t}\n\t\t\n if (activeCount < this.spawnController[spawnerType].max &&\n (timestamp > this.spawnController[spawnerType].lastAddedTimestamp + this.spawnController[spawnerType].nextDelay) &&\n !blockedByPreviousSpawn\n ) {\n var newSpawnedObject = new GameObjectClass(this.gameController);\n this.gameController.childObjects.push(newSpawnedObject);\n this.spawnController[spawnerType].lastSpawnedObj = newSpawnedObject;\n this.spawnController[spawnerType].lastAddedTimestamp = timestamp;\n this.spawnController[spawnerType].nextDelay = Math.floor(randomMinMax(\n\t\t\t\tthis.spawnController[spawnerType].minDelay / this.gameController.state.gamespeed, \n\t\t\t\tthis.spawnController[spawnerType].maxDelay / this.gameController.state.gamespeed)\n\t\t\t\t);\n }\n\t}\n\n update(timestamp) {\n this.runSpawner(Bush, 'bush', timestamp);\n\t\tthis.runSpawner(Tree, 'tree', timestamp);\n\t\t\n\t\tif (timestamp > 2000) {\n\t\t\tthis.runSpawner(Fire, 'fire', timestamp);\n\t\t}\n\n //child object updates\n this.gameController.childObjects.forEach((item, index) => {\n if (item.destroyed === true) {\n this.gameController.childObjects.splice(index, 1);\n }\n });\n \n this.gameController.childObjects.forEach((item, index) => {\n item.update();\n });\n\n\t\tthis.gameController.playerObject.update();\n\n\t\tthis.gameController.state.score = Math.floor(timestamp / 1000);\n\t\tconst halfMinutesPassed = Math.floor((timestamp / 1000) / 30);\n\t\t\n\t\tthis.gameController.state.level = 1 + halfMinutesPassed;\n\t\tthis.gameController.state.gamespeed = this.gameController.settings.gamespeed + halfMinutesPassed * 0.5;\n }\n\n draw(timestamp) {\n var ctx = this.gameController.canvas.getContext(\"2d\");\n ctx.clearRect(0, 0, this.gameController.settings.width, this.gameController.settings.height);\n\n //Ground\n ctx.fillStyle = 'black';\n ctx.fillRect(0, this.gameController.settings.groundlevel, this.gameController.settings.width, 4);\n\n this.gameController.childObjects.forEach(item => {\n item.draw();\n });\n\t\tthis.gameController.playerObject.draw();\n\t\t\n\t\tctx.font = \"bold 16px Arial\";\n\t\tctx.textAlign = \"center\";\n\t\t//Intro text\n\t\t\n\t\tif (timestamp < 2000) {\n\t\t\tctx.fillText(\"Press Spacebar to jump the fire!\", this.gameController.settings.width / 2, this.gameController.settings.height / 3)\n\t\t}\n\n\t\t//UI elements\n\t\tctx.font = \"bold 16px Arial\";\n\t\tctx.textAlign = \"left\";\n\n\t\tconst scoreTime = `Time: ${this.gameController.state.score}`;\n\t\tctx.fillText(scoreTime, 50, 50);\n\t\t\n\t\tconst scoreJumps = `Score: ${this.gameController.state.firesJumped}`;\n\t\tctx.fillText(scoreJumps, 50, 80);\n\n\t\tctx.textAlign = \"center\";\n\t\tconst levelText = `Level: ${this.gameController.state.level}`;\n\t\tctx.fillText(levelText, this.gameController.settings.width / 2, 50);\n\t\t\n\t\tif (this.gameController.state.lives <= 0) {\n\t\t\tthis.end();\n\t\t}\n }\n}","import GameObject from './_gameObject';\n\n\nexport default class Truck extends GameObject {\n\tconstructor(gameController) {\n\t\tsuper(gameController, 'truck_body', 1);\n\t\tthis.baseLevel = this.gameController.settings.groundlevel - 66;\n\t\tthis.position = {\n\t\t\txAfterIntro: 750,\n\t\t\tx: this.gameController.settings.width,\n\t\t\ty: this.baseLevel\n\t\t};\n\t\tthis.size = {\n\t\t\tx: 100,\n\t\t\ty: 57\n\t\t};\n\t\tthis.velocity = 0;\n\t\tthis.velocityIntro = 2;\n\t\tthis.onGround = true;\n\t\tthis.previousJumpReleased = true; //Avoid holding space to continuously jump\n\t\tthis.jumpTimer = new Date();\n\t\tthis.maxJumpY = 250;\n\t\tthis.initialJumpForce = 5;\n\t\tthis.wheel = {\n\t\t\tposition: this.position.y + 43,\n\t\t\toriginOffset: 43,\n\t\t\tcurrentOffset: 0,\n\t\t\tvelocity: -0.1, //Moves up first\n\t\t\tmaxOffset: 3, //Bump height\n\t\t}\n\t\tthis.wheel1 = document.getElementById('truck_wheel');\n\t\tthis.wheel2 = document.getElementById('truck_wheel');\n\t\tthis.siren = document.getElementById('truck_siren')\n\t\tthis.sirenOpacity = 0;\n\t}\n\n\tonJumpRelease() {\n\t\tthis.previousJumpReleased = true;\n\t}\n\n\tupdate() {\n\t\tvar jumpForce = 0;\n\n\t\tif (this.gameController.state.jumpKeyHeld) {\n\n\t\t\tif (this.onGround && this.previousJumpReleased) {\n\t\t\t\t//Player on ground and previous jump ended, begin new jump\n\t\t\t\tthis.previousJumpReleased = false;\n\t\t\t\tthis.onGround = false;\n\t\t\t\tthis.jumpTimer = Date.now();\n\t\t\t\tjumpForce = this.initialJumpForce;\n\n\t\t\t} else if (!this.previousJumpReleased) {\n\t\t\t\t//Player is not on the ground, the key continues to be held, but check it hasn't already been released\n\t\t\t\t//Get the time so far, and calculate a reduction on the force\n\t\t\t\tconst timePassedSeconds = (Date.now() - this.jumpTimer) / 1000;\n\t\t\t\t//If the max jump HEIGHT has not passed, reduce by factor of 10 force per second\n\t\t\t\tif (this.position.y > this.maxJumpY) {\n\t\t\t\t\t//Reduce by factor of 10 force per second\n\t\t\t\t\tjumpForce = this.initialJumpForce - ((timePassedSeconds) * 10)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t//Calculate wheel position animation\n\t\t//Flip the wheel velocity if it's outside either upper or lower boundary\n\t\tthis.wheel.currentOffset = this.wheel.currentOffset + (this.wheel.velocity * this.gameController.state.gamespeed);\n\t\tif (this.wheel.currentOffset < 0) {\n\t\t\tthis.wheel.currentOffset = 0;\n\t\t\tthis.wheel.velocity = this.wheel.velocity * -1;\n\t\t}\n\t\tif (this.wheel.currentOffset > this.wheel.maxOffset) {\n\t\t\tthis.wheel.currentOffset = this.wheel.maxOffset;\n\t\t\tthis.wheel.velocity = this.wheel.velocity * -1;\n\t\t}\n\t\t//Siren opacity, synchronised to wheel offset\n\t\tthis.sirenOpacity = this.wheel.currentOffset / this.wheel.maxOffset;\n\n\t\t//Calc truck position\n\t\tthis.velocity = this.velocity - jumpForce + this.gameController.settings.gravity;\n\t\t//Update positions, consider in a slight factor of wheel animation for a 'bump' affect\n\t\tthis.position.y = this.position.y + (this.velocity / 1.3);\n\n\t\t//Calculate the intro \n\t\tconst timestamp = + Date.now() - this.gameController.state.startedTimeStamp;\n\t\tif (timestamp > 500) {\n\t\t\tif (this.position.x > this.position.xAfterIntro) {\n\t\t\t\tthis.position.x += (this.position.xAfterIntro - this.position.x) / 50;\n\t\t\t}\n\t\t}\n\n\t\t//Reset if out of bounds/on ground and add wheel bump animation\n\t\tif (this.position.y > this.baseLevel) {\n\t\t\tthis.onGround = true;\n\t\t\tthis.velocity = 0\n\t\t\tthis.position.y = this.baseLevel - (this.wheel.currentOffset / 2)\n\t\t}\n\n\t\t//Set wheel position\n\t\tthis.wheel.position = this.position.y - this.wheel.currentOffset + this.wheel.originOffset;\n\t}\n\n\t//Custom truck draw \n\tdraw() {\n\t\tvar ctx = this.gameController.canvas.getContext('2d');\n\t\tctx.drawImage(this.el, this.position.x, this.position.y, this.size.x, this.size.y);\n\n\t\t//Wheel 1\n\t\tctx.drawImage(this.wheel1, this.position.x + 8, this.wheel.position, 24, 24);\n\n\t\t//Wheel 2\n\t\tctx.drawImage(this.wheel2, this.position.x + 67, this.wheel.position, 24, 24);\n\n\t\tctx.save();\n\t\tctx.globalAlpha = this.sirenOpacity;\n\t\tctx.drawImage(this.siren, this.position.x + 8, this.position.y - 8, 20, 8)\n\t\tctx.restore();\n\t}\n}","import ScrollingObject from './_scrollingObject';\n\nexport default class Tree extends ScrollingObject {\n constructor(gameController) {\n super(gameController, 'tree', 1.4);\n this.position = {\n x: -100,\n y: 300\n };\n this.size = {\n x: 60,\n y: 100\n };\n }\n}","import ScrollingObject from './_scrollingObject';\nimport {randomMinMax} from '../../../helpers/helpers';\n\nexport default class Bush extends ScrollingObject {\n constructor(gameController) {\n super(gameController, 'bush', 2.5);\n this.position = {\n x: -100,\n y: Math.floor(randomMinMax(420, 500))\n }\n this.size = {\n x: 58,\n y: 26\n }\n this.velocity = 2 + ((this.position.y - 420) * 0.01); //Velocity based on how close it is\n // this.scale = 1 + ((this.position.y - 430) * 0.005);\n // this.el.css('z-index', this.position.y);\n // this.el.css('transform', `scale(${this.scale})`);\n\t}\n\n\t// draw() {\n // var ctx = this.gameController.canvas.getContext('2d');\n\t// \tctx.drawImage(this.el, this.position.x, this.position.y, this.size.x, this.size.y);\n\t\t\n\t// \tctx.font = \"bold 16px Arial\";\n\t// \tctx.textAlign = \"center\";\n\t// \tctx.fillText(this.velocity, this.position.x + 10, this.position.y + 40);\n // }\n}","import ScrollingObject from './_scrollingObject';\n\nexport default class Fire extends ScrollingObject {\n\tconstructor(gameController) {\n\t\tsuper(gameController, 'fire', 1.8);\n\t\tthis.position = {\n\t\t\tx: -100,\n\t\t\ty: this.gameController.settings.groundlevel - 29\n\t\t};\n\t\tthis.size = {\n\t\t\tx: 22,\n\t\t\ty: 29\n\t\t};\n\t\tthis.hasScored = false;\n\t}\n\n\tupdate() {\n\t\tsuper.update();\n\t\tconst collided = this.intersect(this.gameController.playerObject, this);\n\t\tconst beyondPlayer = this.position.x > this.gameController.playerObject.position.x + this.gameController.playerObject.size.x + 20;\n\n\t\t//Count the fire as having been passed if it goes beyond the truck\n\t\tif (beyondPlayer && !this.hasScored) {\n\t\t\t\tthis.gameController.state.firesJumped ++; \n\t\t\t\tthis.hasScored = true;\n\t\t\t}\n\n\t\tif (collided) {\n\t\t\tthis.gameController.state.lives = this.gameController.state.lives - 1;\n\t\t\tthis.destroy();\n\t\t}\n\t}\n}","export const searchFormElements = () => {\n var qsParameters = window.location.search.substr(1).split('&');\n\n var qs = (function (a) {\n if (a === '') return {};\n var b = {};\n for (var i = 0; i < a.length; ++i) {\n var p = a[i].split('=', 2);\n b[p[0]] = p.length === 1 ? '' : decodeURIComponent(p[1].replace(/\\+/g, ' '));\n }\n return b;\n })(qsParameters);\n\n //TODO - move these input related scripts to its own module\n var createPseudoCheckbox = function () {\n $('.dfes-checkbox').after([''].join(''));\n var $parentCheckbox = $('.dfes-checkbox');\n $parentCheckbox.each(function () {\n setPseudoCheckbox($(this));\n });\n };\n\n var setPseudoCheckbox = function ($parentCheckbox) {\n var $pseudoCheckbox = $parentCheckbox.parent().find('.dfes-pseudo-checkbox');\n $parentCheckbox.is(':checked') ? $pseudoCheckbox.addClass('checked') : $pseudoCheckbox.removeClass('checked');\n $parentCheckbox.is(':focus') ? $pseudoCheckbox.addClass('focused') : $pseudoCheckbox.removeClass('focused');\n };\n\n var loadQSValues = function () {\n if (window.location.search.length > 0 && $('.search-main-container').length > 0) {\n if (!(typeof qs['searchQuery'] === 'undefined')) {\n //Hide content except for the search if search query string found\n $('.content-inner-body')\n .children()\n .not('.search-main-container')\n .not('.search-results_container')\n .not('.related-page-links')\n .not('.accordion')\n .addClass('has-searchquery');\n }\n if (!(typeof qs['titleOnly'] === 'undefined') && qs['titleOnly'] === 'true') {\n var $parentCheckbox = $($('[data-sf-role=\"titleOnlyCheckboxId\"]').val());\n $parentCheckbox.prop('checked', true);\n setPseudoCheckbox($parentCheckbox);\n }\n }\n };\n\n // Generic type multiple select field\n var setTypeSelectField = function () {\n $('[data-custom-select-value]').each(function (el) {\n const $el = $(this);\n const selectedValue = $el.data('custom-select-value');\n\n if (typeof selectedValue !== 'undefined' && selectedValue.length > 0) {\n const splitValues = selectedValue.split(',');\n\n $.each(splitValues, function (ii, e) {\n const $op = $el.find('option[value=\"' + e + '\"]');\n $op.attr('selected', 'selected');\n });\n }\n });\n };\n\n // Set select types\n setTypeSelectField();\n\n // Style multiple select boxes\n $('.u-select-multiple').multipleSelect();\n\n // Style checkboxes, hide html checkboxes\n createPseudoCheckbox();\n\n // Capture checkbox change event\n $('.dfes-checkbox').on('change focus blur', function () {\n setPseudoCheckbox($(this));\n });\n\n // Enter key\n $('.dfes-checkbox-label').on('keyup', function () {\n if (event.keyCode === 13) {\n $(this).click();\n }\n });\n\n // Load QS parameters\n loadQSValues();\n\n function searchHubFormDocs() {\n\n $(window).resize(function() {\n if ( window.innerWidth < 1200 ) {\n $('body').removeClass('search-modal-active');\n $('.search-modal').removeClass('active').hide();\n $('.search-modal-backdrop').hide();\n }\n });\n\n // search-modal close\n $(document).on('click', '.search-modal__dismiss', function() {\n $('body').removeClass('search-modal-active');\n $(this).closest('.search-modal').removeClass('active').fadeOut('fast', function() {\n $('.search-modal-backdrop').fadeOut('fast');\n $('.search-modal__dismiss').removeClass('is-focused');\n });\n });\n\n $(document).keyup(function(e) {\n if (e.keyCode === 27) {\n // Dismiss the modal here\n $('body').removeClass('search-modal-active');\n $('.search-modal').removeClass('active').fadeOut('fast', function() {\n $('.search-modal-backdrop').fadeOut('fast');\n $('.search-modal__dismiss').removeClass('is-focused');\n });\n }\n });\n\n // search modal open\n $(document).on('click', '#search-button-modal', function() {\n var searcModal = $('.search-modal');\n $('body').addClass('search-modal-active');\n $('.search-modal-backdrop').show();\n searcModal.addClass('active').fadeIn('fast');\n // searcModal.find('#txtGeneric_SearchBox_modal').focus();\n searcModal.focus();\n $('.search-modal__dismiss').removeClass('is-focused');\n });\n\n // search-modal tabs\n $(document).on('click', '.search-modal__tabs button', function() {\n var $this = $(this);\n var target = '.s-tab-content#' + $this.attr('data-target');\n // var results = '#' + $this.attr('data-target') + '-results';\n var searcModal = $('.search-modal');\n\n $this.siblings('button').removeClass('active');\n $this.addClass('active');\n $(target).siblings('.s-tab-content').hide();\n $(target).show();\n\n if ( $this.attr('data-target') == 'hubpages' ) {\n searcModal.find('#txtGeneric_SearchBox_modal').focus();\n } else {\n searcModal.find('#txtGeneric_SearchBox_modal-formdocs').focus();\n }\n });\n\n $(document).on('click', '.search-landing-tabs button', function() {\n var $this = $(this);\n var src = $this.attr('data-src');\n var url = new URL(window.location.href)\n\n if ( url.search != '' && url.searchParams.get('src') != '' ) {\n if ( url.searchParams.get('src') !== src ) {\n url.searchParams.set('src', src);\n\n if ( src === 'formsdocslanding' ) {\n url.pathname = '/home/forms-documents';\n } else {\n url.pathname = '/home/search-results';\n }\n }\n } else {\n if ( src === 'formsdocslanding' ) {\n url.pathname = '/home/forms-documents';\n } else {\n url.pathname = '/home/search-results';\n }\n }\n\n window.location.href = url.href;\n });\n\n $(document).on('click', '.search-main__mobile-tabs button', function(e) {\n e.preventDefault();\n var $this = $(this);\n var id = $this.attr('data-target');\n var searchMobile = $('.search-main__mobile');\n\n $this.addClass('active').siblings('button').removeClass('active');\n $('#'+id).show().siblings('.s-tab-content').hide();\n $('.sf-autocomplete').hide();\n\n if ( id == 's_pages' ) {\n searchMobile.find('#txtGeneric_SearchBox').focus();\n } else {\n searchMobile.find('#txtFormsDocs_SearchBox2').focus();\n }\n });\n\n // Modal trigger dropdowns on focus\n var detectDoneBtn = false;\n $(\"input, textarea, select, button\").on(\"focus\", function() {\n if ( !$('.search-modal').is(':visible') ) return;\n\n var $this = $(this);\n if ( $this.hasClass('select-multiple-type') ) {\n $this.next('.select-multiple-type').find('> button.js-btn-toggle').trigger('click');\n }\n \n \n if ( $this.closest('.ms-drop.bottom').is(':visible')) {\n if ( $this.is(':focus') && $this.hasClass('ms-select-all-close') ) {\n detectDoneBtn = true;\n } else {\n detectDoneBtn = false;\n }\n } else {\n // detection if element still a dropdown\n if ( detectDoneBtn && !$this.hasClass('select-multiple-type') ) {\n $('.js-btn-toggle').attr('aria-expanded', true).next('.ms-drop.bottom').hide();\n }\n detectDoneBtn = false;\n }\n\n if ( $this.hasClass('search-modal__dismiss') ) {\n $this.addClass('is-focused');\n } else {\n $('.search-modal__dismiss').removeClass('is-focused').blur();\n }\n \n });\n // last link item in modal footer focusOut\n $('.last-link-focus').on('blur', function() {\n $('.search-modal__dismiss').focus();\n });\n\n $(document).on('keydown', function(e) {\n if (e.keyCode === 9 && $('.search-modal').hasClass('active') ) {\n if ( $('.search-modal-backdrop').has(e.target).length == 0 ) {\n $('.search-modal__dismiss').focus();\n e.preventDefault();\n }\n }\n });\n\n // handling auto-submission after hitting enter while tabs are focused\n $(document).keydown(function(e){\n if ( !$('.search-modal').hasClass('active') ) return;\n \n if ( e.keyCode == 13 ) {\n if ( $(event.target).data('target') ) { // tabs\n var id = '#' + $(event.target).data('target');\n $(event.target).addClass('active').siblings().removeClass('active');\n $(id).show().siblings('.s-tab-content').hide();\n } else {\n return;\n }\n\n e.preventDefault();\n return false;\n }\n });\n \n }\n\n searchHubFormDocs();\n};\n","import Cookies from \"js-cookie\";\nimport { isNullUndefinedEmpty } from \"../helpers/helpers\";\nimport userStateManager from \"../helpers/stateManager\";\n\nexport async function gtmDimensions() {\n const Sentry = await import(\"@sentry/browser\");\n\n userStateManager.getUserProfileData(function (data) {\n //spit out richer data to sentry\n if (data && !isNullUndefinedEmpty(data.ProfileInfo)) {\n Sentry.setUser({\n email: data.ProfileInfo.PersonalEmail,\n });\n Sentry.setContext(\"Profile\", data.ProfileInfo);\n }\n\n if (\n data &&\n !isNullUndefinedEmpty(data.ProfileInfo) &&\n !isNullUndefinedEmpty(data.ProfileInfo.BGUs)\n ) {\n const existingUserIdCookie = Cookies.get(\"UserId\");\n const existingUserTypeCookie = Cookies.get(\"UserType\");\n const existingServiceCookie = Cookies.get(\"ServiceSegment\");\n const existingRegionsCookie = Cookies.get(\"RegionSegment\");\n const existingLeaderCookie = Cookies.get(\"LeaderSegment\");\n\n if (typeof existingUserIdCookie === \"undefined\") {\n Cookies.set(\"UserId\", data.ProfileInfo.VolunteerNo);\n Sentry.setContext(\"UserId\", data.ProfileInfo.VolunteerNo);\n }\n\n if (typeof existingUserTypeCookie === \"undefined\") {\n Cookies.set(\"UserType\", data.ProfileInfo.DFESUserType);\n Sentry.setContext(\"UserType\", data.ProfileInfo.DFESUserType);\n }\n\n if (typeof existingServiceCookie === \"undefined\") {\n var bguTypes = data.ProfileInfo.BGUs.map((item) => item.BguType);\n var uniqueBguTypes = bguTypes.filter((value, index, self) => {\n return self.indexOf(value) === index;\n });\n\n var uniqueBguTypesSorted = uniqueBguTypes.sort();\n\n Cookies.set(\"ServiceSegment\", uniqueBguTypesSorted.join(\",\"));\n Sentry.setContext(\"ServiceSegment\", uniqueBguTypesSorted.join(\",\"));\n }\n\n if (typeof existingRegionsCookie === \"undefined\") {\n var bguRegions = data.ProfileInfo.BGUs.map((item) => item.Region);\n var uniqueBguRegions = bguRegions.filter((value, index, self) => {\n return self.indexOf(value) === index;\n });\n\n var uniqueBguRegionsSorted = uniqueBguRegions.sort();\n\n Cookies.set(\"RegionSegment\", uniqueBguRegionsSorted.join(\",\"));\n Sentry.setContext(\"RegionSegment\", uniqueBguRegionsSorted.join(\",\"));\n }\n\n if (typeof existingLeaderCookie === \"undefined\") {\n var isCurrentlyBguLeader = data.ProfileInfo.ServiceHistory.some(\n (item) => {\n return item.IsLeader && item.EndDate === null;\n }\n );\n\n Cookies.set(\"LeaderSegment\", isCurrentlyBguLeader);\n Sentry.setContext(\"LeaderSegment\", isCurrentlyBguLeader);\n }\n }\n });\n}\n","export async function logging() {\n const Sentry = await import(\"@sentry/browser\");\n\n var settings = window.sentrySettings;\n if (settings == null) {\n console.log(\n \"Sentry settings has not been initialised, please check you have the render\"\n );\n return;\n }\n\n Sentry.init({\n dsn: settings.dsn,\n environment: settings.environment,\n });\n}\n","import { accessibility } from \"../common/accessibility\";\nimport { backToTop } from \"../common/backToTop\";\nimport { breakpoints } from \"../common/breakpoints\"; //FE TODO - potential refactor away from body class breakpoints\nimport { calloutBoxes } from \"../common/calloutBoxes\";\nimport { contactsSearch } from \"../common/contactsSearch\";\nimport { enforceParagraphs } from \"../common/enforceParagraphs\";\nimport { forms } from \"../common/forms\";\nimport { gtmDimensions } from \"../common/gtmDimensions\";\nimport { homeUnauthorised } from \"../common/homeUnauthorised\";\nimport { logging } from \"../common/logging\";\nimport { logout } from \"../common/logout\";\nimport { mainMenu } from \"../common/mainMenu\";\nimport { mobileMenu } from \"../common/mobileMenu\"; //FE TODO - potential refactor away from body class breakpoints\nimport { mobileSearch } from \"../common/mobileSearch\";\nimport { myProfileName } from \"../common/myProfileName\";\nimport { pageAnchors } from \"../common/pageAnchors\";\nimport { smoothScroll } from \"../common/smoothScroll\";\nimport { svgInliner } from \"../common/svgInliner\";\nimport { tabOrder } from \"../common/tabOrder\";\nimport { tables } from \"../common/tables\";\nimport { updateProfile } from \"../common/updateProfile\";\nimport { viewHeightVar } from \"../common/viewHeightVar\";\n\nexport const common = () => {\n logging(); //needs to be logged first\n accessibility();\n breakpoints();\n mainMenu();\n mobileMenu();\n mobileSearch();\n backToTop();\n tables();\n viewHeightVar();\n svgInliner();\n pageAnchors();\n tabOrder();\n smoothScroll();\n enforceParagraphs();\n calloutBoxes();\n logout();\n updateProfile();\n myProfileName();\n homeUnauthorised();\n contactsSearch();\n gtmDimensions();\n forms();\n};\n","import { debounce } from \"../helpers/helpers\";\n\nexport function viewHeightVar() {\n function setupViewHeightVar() {\n let vh = window.innerHeight * 0.01;\n document.documentElement.style.setProperty(\"--vh\", `${vh}px`);\n }\n\n setupViewHeightVar();\n\n //Catch watcher causing odd timing issue...\n setTimeout(() => {\n setupViewHeightVar();\n }, 5000);\n\n var viewHeightDebounce = debounce(function () {\n setupViewHeightVar();\n }, 50);\n window.addEventListener(\"resize\", viewHeightDebounce);\n}\n","(function (name, definition) {\n\n if (typeof define === 'function' && define.amd) { // AMD\n define(name, [], definition);\n } else if (typeof module !== 'undefined' && module.exports) { // Node.js\n module.exports = definition();\n } else { // Browser\n var theModule = definition(),\n global = this,\n old = global[name];\n theModule.noConflict = function () {\n global[name] = old;\n return theModule;\n };\n global[name] = theModule;\n }\n})('browserDetection', function () {\n\n \"use strict\";\n\n return function (options) {\n\n var data = {};\n var browser = null;\n var version = null;\n var os = null;\n var webkit = null;\n\n parseUserAgent();\n\n // exception rules\n renameOsx();\n cutSafariVersion();\n\n prepareData();\n processOptions();\n\n return data;\n\n function parseUserAgent() {\n var userAgent = navigator.userAgent.toLowerCase(),\n browserParts = /(ie|firefox|chrome|safari|opera|edge)(?:.*version)?(?:[ \\/])?([\\w.]+)/.exec(userAgent),\n osParts = /(mac|win|linux|freebsd|mobile|iphone|ipod|ipad|android|blackberry|j2me|webtv)/.exec(userAgent);\n\n if (!!userAgent.match(/trident\\/7\\./)) {\n browser = \"ie\";\n version = 11;\n } else if (!!userAgent.match(/edge\\/\\d+/)) {\n browserParts = /(edge)\\/([\\w.]+)/.exec(userAgent),\n browser = browserParts[1];\n version = browserParts[2];\n } else if (browserParts && browserParts.length > 2) {\n browser = browserParts[1];\n version = browserParts[2];\n }\n\n if (osParts && osParts.length > 1) {\n os = osParts[1];\n }\n\n webkit = navigator.userAgent.toLowerCase().match(/webkit\\/(\\d+)\\.(\\d+)\\.(\\d+)/);\n }\n\n function prepareData() {\n data.browser = browser;\n data.version = parseInt(version, 10) || null;\n data.os = os;\n if (webkit && webkit.length >= 3) {\n data.webkit = {\n major: parseInt(webkit[1], 10),\n minor: parseInt(webkit[2], 10),\n patch: webkit[3] ? parseInt(webkit[3], 10) : undefined\n };\n }\n }\n\n function renameOsx() {\n if (os === 'mac') {\n os = 'osx';\n }\n }\n\n function cutSafariVersion() {\n if (os === 'safari') {\n version = version.substring(0, 1);\n }\n }\n\n function processOptions() {\n options = options || {};\n\n if (options.addClasses && data.os && data.browser && data.version) {\n document.body.parentNode.classList.add(data.os, data.browser, data.browser, data.version);\n }\n }\n\n };\n\n});","/* ========================================================================\n * Bootstrap: transition.js v3.3.7\n * http://getbootstrap.com/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)\n // ============================================================\n\n function transitionEnd() {\n var el = document.createElement('bootstrap')\n\n var transEndEventNames = {\n WebkitTransition : 'webkitTransitionEnd',\n MozTransition : 'transitionend',\n OTransition : 'oTransitionEnd otransitionend',\n transition : 'transitionend'\n }\n\n for (var name in transEndEventNames) {\n if (el.style[name] !== undefined) {\n return { end: transEndEventNames[name] }\n }\n }\n\n return false // explicit for ie8 ( ._.)\n }\n\n // http://blog.alexmaccaw.com/css-transitions\n $.fn.emulateTransitionEnd = function (duration) {\n var called = false\n var $el = this\n $(this).one('bsTransitionEnd', function () { called = true })\n var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n setTimeout(callback, duration)\n return this\n }\n\n $(function () {\n $.support.transition = transitionEnd()\n\n if (!$.support.transition) return\n\n $.event.special.bsTransitionEnd = {\n bindType: $.support.transition.end,\n delegateType: $.support.transition.end,\n handle: function (e) {\n if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n }\n }\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: collapse.js v3.3.7\n * http://getbootstrap.com/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n/* jshint latedef: false */\n\n+function ($) {\n 'use strict';\n\n // COLLAPSE PUBLIC CLASS DEFINITION\n // ================================\n\n var Collapse = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Collapse.DEFAULTS, options)\n this.$trigger = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' +\n '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]')\n this.transitioning = null\n\n if (this.options.parent) {\n this.$parent = this.getParent()\n } else {\n this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n }\n\n if (this.options.toggle) this.toggle()\n }\n\n Collapse.VERSION = '3.3.7'\n\n Collapse.TRANSITION_DURATION = 350\n\n Collapse.DEFAULTS = {\n toggle: true\n }\n\n Collapse.prototype.dimension = function () {\n var hasWidth = this.$element.hasClass('width')\n return hasWidth ? 'width' : 'height'\n }\n\n Collapse.prototype.show = function () {\n if (this.transitioning || this.$element.hasClass('in')) return\n\n var activesData\n var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\n\n if (actives && actives.length) {\n activesData = actives.data('bs.collapse')\n if (activesData && activesData.transitioning) return\n }\n\n var startEvent = $.Event('show.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n if (actives && actives.length) {\n Plugin.call(actives, 'hide')\n activesData || actives.data('bs.collapse', null)\n }\n\n var dimension = this.dimension()\n\n this.$element\n .removeClass('collapse')\n .addClass('collapsing')[dimension](0)\n .attr('aria-expanded', true)\n\n this.$trigger\n .removeClass('collapsed')\n .attr('aria-expanded', true)\n\n this.transitioning = 1\n\n var complete = function () {\n this.$element\n .removeClass('collapsing')\n .addClass('collapse in')[dimension]('')\n this.transitioning = 0\n this.$element\n .trigger('shown.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n this.$element\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n }\n\n Collapse.prototype.hide = function () {\n if (this.transitioning || !this.$element.hasClass('in')) return\n\n var startEvent = $.Event('hide.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n var dimension = this.dimension()\n\n this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n this.$element\n .addClass('collapsing')\n .removeClass('collapse in')\n .attr('aria-expanded', false)\n\n this.$trigger\n .addClass('collapsed')\n .attr('aria-expanded', false)\n\n this.transitioning = 1\n\n var complete = function () {\n this.transitioning = 0\n this.$element\n .removeClass('collapsing')\n .addClass('collapse')\n .trigger('hidden.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n this.$element\n [dimension](0)\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n }\n\n Collapse.prototype.toggle = function () {\n this[this.$element.hasClass('in') ? 'hide' : 'show']()\n }\n\n Collapse.prototype.getParent = function () {\n return $(this.options.parent)\n .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n .each($.proxy(function (i, element) {\n var $element = $(element)\n this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n }, this))\n .end()\n }\n\n Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n var isOpen = $element.hasClass('in')\n\n $element.attr('aria-expanded', isOpen)\n $trigger\n .toggleClass('collapsed', !isOpen)\n .attr('aria-expanded', isOpen)\n }\n\n function getTargetFromTrigger($trigger) {\n var href\n var target = $trigger.attr('data-target')\n || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n return $(target)\n }\n\n\n // COLLAPSE PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.collapse')\n var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false\n if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.collapse\n\n $.fn.collapse = Plugin\n $.fn.collapse.Constructor = Collapse\n\n\n // COLLAPSE NO CONFLICT\n // ====================\n\n $.fn.collapse.noConflict = function () {\n $.fn.collapse = old\n return this\n }\n\n\n // COLLAPSE DATA-API\n // =================\n\n $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n var $this = $(this)\n\n if (!$this.attr('data-target')) e.preventDefault()\n\n var $target = getTargetFromTrigger($this)\n var data = $target.data('bs.collapse')\n var option = data ? 'toggle' : $this.data()\n\n Plugin.call($target, option)\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: tab.js v3.3.7\n * http://getbootstrap.com/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n+function ($) {\n 'use strict';\n\n // TAB CLASS DEFINITION\n // ====================\n\n var Tab = function (element) {\n // jscs:disable requireDollarBeforejQueryAssignment\n this.element = $(element)\n // jscs:enable requireDollarBeforejQueryAssignment\n }\n\n Tab.VERSION = '3.3.7'\n\n Tab.TRANSITION_DURATION = 150\n\n Tab.prototype.show = function () {\n var $this = this.element\n var $ul = $this.closest('ul:not(.dropdown-menu)')\n var selector = $this.data('target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n if ($this.parent('li').hasClass('active')) return\n\n var $previous = $ul.find('.active:last a')\n var hideEvent = $.Event('hide.bs.tab', {\n relatedTarget: $this[0]\n })\n var showEvent = $.Event('show.bs.tab', {\n relatedTarget: $previous[0]\n })\n\n $previous.trigger(hideEvent)\n $this.trigger(showEvent)\n\n if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return\n\n var $target = $(selector)\n\n this.activate($this.closest('li'), $ul)\n this.activate($target, $target.parent(), function () {\n $previous.trigger({\n type: 'hidden.bs.tab',\n relatedTarget: $this[0]\n })\n $this.trigger({\n type: 'shown.bs.tab',\n relatedTarget: $previous[0]\n })\n })\n }\n\n Tab.prototype.activate = function (element, container, callback) {\n var $active = container.find('> .active')\n var transition = callback\n && $.support.transition\n && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)\n\n function next() {\n $active\n .removeClass('active')\n .find('> .dropdown-menu > .active')\n .removeClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', false)\n\n element\n .addClass('active')\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n\n if (transition) {\n element[0].offsetWidth // reflow for transition\n element.addClass('in')\n } else {\n element.removeClass('fade')\n }\n\n if (element.parent('.dropdown-menu').length) {\n element\n .closest('li.dropdown')\n .addClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n }\n\n callback && callback()\n }\n\n $active.length && transition ?\n $active\n .one('bsTransitionEnd', next)\n .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\n next()\n\n $active.removeClass('in')\n }\n\n\n // TAB PLUGIN DEFINITION\n // =====================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tab')\n\n if (!data) $this.data('bs.tab', (data = new Tab(this)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tab\n\n $.fn.tab = Plugin\n $.fn.tab.Constructor = Tab\n\n\n // TAB NO CONFLICT\n // ===============\n\n $.fn.tab.noConflict = function () {\n $.fn.tab = old\n return this\n }\n\n\n // TAB DATA-API\n // ============\n\n var clickHandler = function (e) {\n e.preventDefault()\n Plugin.call($(this), 'show')\n }\n\n $(document)\n .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\n .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler)\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: modal.js v3.3.7\n * http://getbootstrap.com/javascript/#modals\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // MODAL CLASS DEFINITION\n // ======================\n\n var Modal = function (element, options) {\n this.options = options\n this.$body = $(document.body)\n this.$element = $(element)\n this.$dialog = this.$element.find('.modal-dialog')\n this.$backdrop = null\n this.isShown = null\n this.originalBodyPad = null\n this.scrollbarWidth = 0\n this.ignoreBackdropClick = false\n\n if (this.options.remote) {\n this.$element\n .find('.modal-content')\n .load(this.options.remote, $.proxy(function () {\n this.$element.trigger('loaded.bs.modal')\n }, this))\n }\n }\n\n Modal.VERSION = '3.3.7'\n\n Modal.TRANSITION_DURATION = 300\n Modal.BACKDROP_TRANSITION_DURATION = 150\n\n Modal.DEFAULTS = {\n backdrop: true,\n keyboard: true,\n show: true\n }\n\n Modal.prototype.toggle = function (_relatedTarget) {\n return this.isShown ? this.hide() : this.show(_relatedTarget)\n }\n\n Modal.prototype.show = function (_relatedTarget) {\n var that = this\n var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n this.$element.trigger(e)\n\n if (this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = true\n\n this.checkScrollbar()\n this.setScrollbar()\n this.$body.addClass('modal-open')\n\n this.escape()\n this.resize()\n\n this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n })\n })\n\n this.backdrop(function () {\n var transition = $.support.transition && that.$element.hasClass('fade')\n\n if (!that.$element.parent().length) {\n that.$element.appendTo(that.$body) // don't move modals dom position\n }\n\n that.$element\n .show()\n .scrollTop(0)\n\n that.adjustDialog()\n\n if (transition) {\n that.$element[0].offsetWidth // force reflow\n }\n\n that.$element.addClass('in')\n\n that.enforceFocus()\n\n var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n transition ?\n that.$dialog // wait for modal to slide in\n .one('bsTransitionEnd', function () {\n that.$element.trigger('focus').trigger(e)\n })\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n that.$element.trigger('focus').trigger(e)\n })\n }\n\n Modal.prototype.hide = function (e) {\n if (e) e.preventDefault()\n\n e = $.Event('hide.bs.modal')\n\n this.$element.trigger(e)\n\n if (!this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = false\n\n this.escape()\n this.resize()\n\n $(document).off('focusin.bs.modal')\n\n this.$element\n .removeClass('in')\n .off('click.dismiss.bs.modal')\n .off('mouseup.dismiss.bs.modal')\n\n this.$dialog.off('mousedown.dismiss.bs.modal')\n\n $.support.transition && this.$element.hasClass('fade') ?\n this.$element\n .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n this.hideModal()\n }\n\n Modal.prototype.enforceFocus = function () {\n $(document)\n .off('focusin.bs.modal') // guard against infinite focus loop\n .on('focusin.bs.modal', $.proxy(function (e) {\n if (document !== e.target &&\n this.$element[0] !== e.target &&\n !this.$element.has(e.target).length) {\n this.$element.trigger('focus')\n }\n }, this))\n }\n\n Modal.prototype.escape = function () {\n if (this.isShown && this.options.keyboard) {\n this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n e.which == 27 && this.hide()\n }, this))\n } else if (!this.isShown) {\n this.$element.off('keydown.dismiss.bs.modal')\n }\n }\n\n Modal.prototype.resize = function () {\n if (this.isShown) {\n $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n } else {\n $(window).off('resize.bs.modal')\n }\n }\n\n Modal.prototype.hideModal = function () {\n var that = this\n this.$element.hide()\n this.backdrop(function () {\n that.$body.removeClass('modal-open')\n that.resetAdjustments()\n that.resetScrollbar()\n that.$element.trigger('hidden.bs.modal')\n })\n }\n\n Modal.prototype.removeBackdrop = function () {\n this.$backdrop && this.$backdrop.remove()\n this.$backdrop = null\n }\n\n Modal.prototype.backdrop = function (callback) {\n var that = this\n var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n if (this.isShown && this.options.backdrop) {\n var doAnimate = $.support.transition && animate\n\n this.$backdrop = $(document.createElement('div'))\n .addClass('modal-backdrop ' + animate)\n .appendTo(this.$body)\n\n this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n if (this.ignoreBackdropClick) {\n this.ignoreBackdropClick = false\n return\n }\n if (e.target !== e.currentTarget) return\n this.options.backdrop == 'static'\n ? this.$element[0].focus()\n : this.hide()\n }, this))\n\n if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n this.$backdrop.addClass('in')\n\n if (!callback) return\n\n doAnimate ?\n this.$backdrop\n .one('bsTransitionEnd', callback)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callback()\n\n } else if (!this.isShown && this.$backdrop) {\n this.$backdrop.removeClass('in')\n\n var callbackRemove = function () {\n that.removeBackdrop()\n callback && callback()\n }\n $.support.transition && this.$element.hasClass('fade') ?\n this.$backdrop\n .one('bsTransitionEnd', callbackRemove)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callbackRemove()\n\n } else if (callback) {\n callback()\n }\n }\n\n // these following methods are used to handle overflowing modals\n\n Modal.prototype.handleUpdate = function () {\n this.adjustDialog()\n }\n\n Modal.prototype.adjustDialog = function () {\n var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n this.$element.css({\n paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n })\n }\n\n Modal.prototype.resetAdjustments = function () {\n this.$element.css({\n paddingLeft: '',\n paddingRight: ''\n })\n }\n\n Modal.prototype.checkScrollbar = function () {\n var fullWindowWidth = window.innerWidth\n if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n var documentElementRect = document.documentElement.getBoundingClientRect()\n fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n }\n this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n this.scrollbarWidth = this.measureScrollbar()\n }\n\n Modal.prototype.setScrollbar = function () {\n var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n this.originalBodyPad = document.body.style.paddingRight || ''\n if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)\n }\n\n Modal.prototype.resetScrollbar = function () {\n this.$body.css('padding-right', this.originalBodyPad)\n }\n\n Modal.prototype.measureScrollbar = function () { // thx walsh\n var scrollDiv = document.createElement('div')\n scrollDiv.className = 'modal-scrollbar-measure'\n this.$body.append(scrollDiv)\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n this.$body[0].removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n\n // MODAL PLUGIN DEFINITION\n // =======================\n\n function Plugin(option, _relatedTarget) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.modal')\n var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n if (typeof option == 'string') data[option](_relatedTarget)\n else if (options.show) data.show(_relatedTarget)\n })\n }\n\n var old = $.fn.modal\n\n $.fn.modal = Plugin\n $.fn.modal.Constructor = Modal\n\n\n // MODAL NO CONFLICT\n // =================\n\n $.fn.modal.noConflict = function () {\n $.fn.modal = old\n return this\n }\n\n\n // MODAL DATA-API\n // ==============\n\n $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n var $this = $(this)\n var href = $this.attr('href')\n var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\\s]+$)/, ''))) // strip for ie7\n var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n if ($this.is('a')) e.preventDefault()\n\n $target.one('show.bs.modal', function (showEvent) {\n if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n $target.one('hidden.bs.modal', function () {\n $this.is(':visible') && $this.trigger('focus')\n })\n })\n Plugin.call($target, option, this)\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: tooltip.js v3.3.7\n * http://getbootstrap.com/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // TOOLTIP PUBLIC CLASS DEFINITION\n // ===============================\n\n var Tooltip = function (element, options) {\n this.type = null\n this.options = null\n this.enabled = null\n this.timeout = null\n this.hoverState = null\n this.$element = null\n this.inState = null\n\n this.init('tooltip', element, options)\n }\n\n Tooltip.VERSION = '3.3.7'\n\n Tooltip.TRANSITION_DURATION = 150\n\n Tooltip.DEFAULTS = {\n animation: true,\n placement: 'top',\n selector: false,\n template: '
',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n container: false,\n viewport: {\n selector: 'body',\n padding: 0\n }\n }\n\n Tooltip.prototype.init = function (type, element, options) {\n this.enabled = true\n this.type = type\n this.$element = $(element)\n this.options = this.getOptions(options)\n this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))\n this.inState = { click: false, hover: false, focus: false }\n\n if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\n }\n\n var triggers = this.options.trigger.split(' ')\n\n for (var i = triggers.length; i--;) {\n var trigger = triggers[i]\n\n if (trigger == 'click') {\n this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n } else if (trigger != 'manual') {\n var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'\n var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n }\n }\n\n this.options.selector ?\n (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n this.fixTitle()\n }\n\n Tooltip.prototype.getDefaults = function () {\n return Tooltip.DEFAULTS\n }\n\n Tooltip.prototype.getOptions = function (options) {\n options = $.extend({}, this.getDefaults(), this.$element.data(), options)\n\n if (options.delay && typeof options.delay == 'number') {\n options.delay = {\n show: options.delay,\n hide: options.delay\n }\n }\n\n return options\n }\n\n Tooltip.prototype.getDelegateOptions = function () {\n var options = {}\n var defaults = this.getDefaults()\n\n this._options && $.each(this._options, function (key, value) {\n if (defaults[key] != value) options[key] = value\n })\n\n return options\n }\n\n Tooltip.prototype.enter = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true\n }\n\n if (self.tip().hasClass('in') || self.hoverState == 'in') {\n self.hoverState = 'in'\n return\n }\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'in'\n\n if (!self.options.delay || !self.options.delay.show) return self.show()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'in') self.show()\n }, self.options.delay.show)\n }\n\n Tooltip.prototype.isInStateTrue = function () {\n for (var key in this.inState) {\n if (this.inState[key]) return true\n }\n\n return false\n }\n\n Tooltip.prototype.leave = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false\n }\n\n if (self.isInStateTrue()) return\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'out'\n\n if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'out') self.hide()\n }, self.options.delay.hide)\n }\n\n Tooltip.prototype.show = function () {\n var e = $.Event('show.bs.' + this.type)\n\n if (this.hasContent() && this.enabled) {\n this.$element.trigger(e)\n\n var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n if (e.isDefaultPrevented() || !inDom) return\n var that = this\n\n var $tip = this.tip()\n\n var tipId = this.getUID(this.type)\n\n this.setContent()\n $tip.attr('id', tipId)\n this.$element.attr('aria-describedby', tipId)\n\n if (this.options.animation) $tip.addClass('fade')\n\n var placement = typeof this.options.placement == 'function' ?\n this.options.placement.call(this, $tip[0], this.$element[0]) :\n this.options.placement\n\n var autoToken = /\\s?auto?\\s?/i\n var autoPlace = autoToken.test(placement)\n if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n $tip\n .detach()\n .css({ top: 0, left: 0, display: 'block' })\n .addClass(placement)\n .data('bs.' + this.type, this)\n\n this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)\n this.$element.trigger('inserted.bs.' + this.type)\n\n var pos = this.getPosition()\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (autoPlace) {\n var orgPlacement = placement\n var viewportDim = this.getPosition(this.$viewport)\n\n placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :\n placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :\n placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :\n placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :\n placement\n\n $tip\n .removeClass(orgPlacement)\n .addClass(placement)\n }\n\n var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n this.applyPlacement(calculatedOffset, placement)\n\n var complete = function () {\n var prevHoverState = that.hoverState\n that.$element.trigger('shown.bs.' + that.type)\n that.hoverState = null\n\n if (prevHoverState == 'out') that.leave(that)\n }\n\n $.support.transition && this.$tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n }\n }\n\n Tooltip.prototype.applyPlacement = function (offset, placement) {\n var $tip = this.tip()\n var width = $tip[0].offsetWidth\n var height = $tip[0].offsetHeight\n\n // manually read margins because getBoundingClientRect includes difference\n var marginTop = parseInt($tip.css('margin-top'), 10)\n var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n // we must check for NaN for ie 8/9\n if (isNaN(marginTop)) marginTop = 0\n if (isNaN(marginLeft)) marginLeft = 0\n\n offset.top += marginTop\n offset.left += marginLeft\n\n // $.fn.offset doesn't round pixel values\n // so we use setOffset directly with our own function B-0\n $.offset.setOffset($tip[0], $.extend({\n using: function (props) {\n $tip.css({\n top: Math.round(props.top),\n left: Math.round(props.left)\n })\n }\n }, offset), 0)\n\n $tip.addClass('in')\n\n // check to see if placing tip in new offset caused the tip to resize itself\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (placement == 'top' && actualHeight != height) {\n offset.top = offset.top + height - actualHeight\n }\n\n var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n if (delta.left) offset.left += delta.left\n else offset.top += delta.top\n\n var isVertical = /top|bottom/.test(placement)\n var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n $tip.offset(offset)\n this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n }\n\n Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\n this.arrow()\n .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n .css(isVertical ? 'top' : 'left', '')\n }\n\n Tooltip.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n\n $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)\n $tip.removeClass('fade in top bottom left right')\n }\n\n Tooltip.prototype.hide = function (callback) {\n var that = this\n var $tip = $(this.$tip)\n var e = $.Event('hide.bs.' + this.type)\n\n function complete() {\n if (that.hoverState != 'in') $tip.detach()\n if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.\n that.$element\n .removeAttr('aria-describedby')\n .trigger('hidden.bs.' + that.type)\n }\n callback && callback()\n }\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n $tip.removeClass('in')\n\n $.support.transition && $tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n\n this.hoverState = null\n\n return this\n }\n\n Tooltip.prototype.fixTitle = function () {\n var $e = this.$element\n if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {\n $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n }\n }\n\n Tooltip.prototype.hasContent = function () {\n return this.getTitle()\n }\n\n Tooltip.prototype.getPosition = function ($element) {\n $element = $element || this.$element\n\n var el = $element[0]\n var isBody = el.tagName == 'BODY'\n\n var elRect = el.getBoundingClientRect()\n if (elRect.width == null) {\n // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n }\n var isSvg = window.SVGElement && el instanceof window.SVGElement\n // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.\n // See https://github.com/twbs/bootstrap/issues/20280\n var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())\n var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n return $.extend({}, elRect, scroll, outerDims, elOffset)\n }\n\n Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n }\n\n Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n var delta = { top: 0, left: 0 }\n if (!this.$viewport) return delta\n\n var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n var viewportDimensions = this.getPosition(this.$viewport)\n\n if (/right|left/.test(placement)) {\n var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll\n var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n if (topEdgeOffset < viewportDimensions.top) { // top overflow\n delta.top = viewportDimensions.top - topEdgeOffset\n } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n }\n } else {\n var leftEdgeOffset = pos.left - viewportPadding\n var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n delta.left = viewportDimensions.left - leftEdgeOffset\n } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow\n delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n }\n }\n\n return delta\n }\n\n Tooltip.prototype.getTitle = function () {\n var title\n var $e = this.$element\n var o = this.options\n\n title = $e.attr('data-original-title')\n || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)\n\n return title\n }\n\n Tooltip.prototype.getUID = function (prefix) {\n do prefix += ~~(Math.random() * 1000000)\n while (document.getElementById(prefix))\n return prefix\n }\n\n Tooltip.prototype.tip = function () {\n if (!this.$tip) {\n this.$tip = $(this.options.template)\n if (this.$tip.length != 1) {\n throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')\n }\n }\n return this.$tip\n }\n\n Tooltip.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n }\n\n Tooltip.prototype.enable = function () {\n this.enabled = true\n }\n\n Tooltip.prototype.disable = function () {\n this.enabled = false\n }\n\n Tooltip.prototype.toggleEnabled = function () {\n this.enabled = !this.enabled\n }\n\n Tooltip.prototype.toggle = function (e) {\n var self = this\n if (e) {\n self = $(e.currentTarget).data('bs.' + this.type)\n if (!self) {\n self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n $(e.currentTarget).data('bs.' + this.type, self)\n }\n }\n\n if (e) {\n self.inState.click = !self.inState.click\n if (self.isInStateTrue()) self.enter(self)\n else self.leave(self)\n } else {\n self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n }\n }\n\n Tooltip.prototype.destroy = function () {\n var that = this\n clearTimeout(this.timeout)\n this.hide(function () {\n that.$element.off('.' + that.type).removeData('bs.' + that.type)\n if (that.$tip) {\n that.$tip.detach()\n }\n that.$tip = null\n that.$arrow = null\n that.$viewport = null\n that.$element = null\n })\n }\n\n\n // TOOLTIP PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tooltip')\n var options = typeof option == 'object' && option\n\n if (!data && /destroy|hide/.test(option)) return\n if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tooltip\n\n $.fn.tooltip = Plugin\n $.fn.tooltip.Constructor = Tooltip\n\n\n // TOOLTIP NO CONFLICT\n // ===================\n\n $.fn.tooltip.noConflict = function () {\n $.fn.tooltip = old\n return this\n }\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: popover.js v3.3.7\n * http://getbootstrap.com/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // POPOVER PUBLIC CLASS DEFINITION\n // ===============================\n\n var Popover = function (element, options) {\n this.init('popover', element, options)\n }\n\n if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n Popover.VERSION = '3.3.7'\n\n Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '

'\n })\n\n\n // NOTE: POPOVER EXTENDS tooltip.js\n // ================================\n\n Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n Popover.prototype.constructor = Popover\n\n Popover.prototype.getDefaults = function () {\n return Popover.DEFAULTS\n }\n\n Popover.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n var content = this.getContent()\n\n $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)\n $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events\n this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'\n ](content)\n\n $tip.removeClass('fade top bottom left right in')\n\n // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n // this manually by checking the contents.\n if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n }\n\n Popover.prototype.hasContent = function () {\n return this.getTitle() || this.getContent()\n }\n\n Popover.prototype.getContent = function () {\n var $e = this.$element\n var o = this.options\n\n return $e.attr('data-content')\n || (typeof o.content == 'function' ?\n o.content.call($e[0]) :\n o.content)\n }\n\n Popover.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n }\n\n\n // POPOVER PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.popover')\n var options = typeof option == 'object' && option\n\n if (!data && /destroy|hide/.test(option)) return\n if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.popover\n\n $.fn.popover = Plugin\n $.fn.popover.Constructor = Popover\n\n\n // POPOVER NO CONFLICT\n // ===================\n\n $.fn.popover.noConflict = function () {\n $.fn.popover = old\n return this\n }\n\n}(jQuery);\n","/**\n * cbpHorizontalMenu.js v1.0.0\n * http://www.codrops.com\n *\n * Licensed under the MIT license.\n * http://www.opensource.org/licenses/mit-license.php\n *\n * Copyright 2013, Codrops\n * http://www.codrops.com\n */\n\n(function ($) {\n $.fn.extend({\n //cbpHorizontalMenu\n cbpHorizontalMenu: function (options) {\n var defaults = {\n //$listItems : $('.cbp-hrmenu'),\n //$menuItems : $listItems.children('a'),\n $body: $('body'),\n current: -1,\n };\n\n var options = $.extend({}, defaults, options);\n var $body = $('body');\n var current = -1;\n\n function init($linkItems, $items) {\n $linkItems.not('.cbp-ignore').on('click', $items, open);\n $items.on('click', function (event) {\n event.stopPropagation();\n });\n }\n\n function open(event) {\n if (current !== -1) {\n event.data.eq(current).removeClass('cbp-hropen');\n event.data.eq(current).attr('aria-pressed', 'false');\n }\n\n var $item = $(event.currentTarget).parent('li'),\n idx = $item.index();\n\n if (current === idx) {\n $item.removeClass('cbp-hropen');\n current = -1;\n $item.children('a').attr('aria-pressed', 'false');\n } else {\n $item.addClass('cbp-hropen');\n $item.children('a').attr('aria-pressed', 'true');\n current = idx;\n //$body.off('click').on('click', event.data, close); // Adding .off('click') causes other events bound to body to stop working\n $body.on('click', event.data, close);\n $body.off('keyup').on('keyup', event.data, function (e) {\n if (e.which === 27) {\n close(e);\n }\n });\n $('.menu-main_btn-close').on('click', event.data, close);\n\n $('.menu-main_close-container').on('keyup', event.data, function (e) {\n if (e.which === 13 || e.which === 32) {\n close(e);\n }\n });\n }\n\n return false;\n }\n\n function close(event) {\n event.data.eq(current).removeClass('cbp-hropen');\n current = -1;\n }\n\n //Iterate over the current set of matched elements\n return this.each(function () {\n var o = options;\n var obj = $(this);\n var $items = $('> ul > li', obj);\n var $linkItems = $items.children('a');\n\n init($linkItems, $items);\n });\n },\n });\n})(jQuery);\n","// version 1.6.0\n// http://welcome.totheinter.net/columnizer-jquery-plugin/\n// created by: Adam Wulf @adamwulf, adam.wulf@gmail.com\n\n(function($){\n\n $.fn.columnize = function(options) {\n\n\n\tvar defaults = {\n\t\t// default width of columns\n\t\twidth: 400,\n\t\t// optional # of columns instead of width\n\t\tcolumns : false,\n\t\t// true to build columns once regardless of window resize\n\t\t// false to rebuild when content box changes bounds\n\t\tbuildOnce : false,\n\t\t// an object with options if the text should overflow\n\t\t// it's container if it can't fit within a specified height\n\t\toverflow : false,\n\t\t// this function is called after content is columnized\n\t\tdoneFunc : function(){},\n\t\t// if the content should be columnized into a \n\t\t// container node other than it's own node\n\t\ttarget : false,\n\t\t// re-columnizing when images reload might make things\n\t\t// run slow. so flip this to true if it's causing delays\n\t\tignoreImageLoading : true,\n\t\t// should columns float left or right\n\t\tcolumnFloat : \"left\",\n\t\t// ensure the last column is never the tallest column\n\t\tlastNeverTallest : false,\n\t\t// (int) the minimum number of characters to jump when splitting\n\t\t// text nodes. smaller numbers will result in higher accuracy\n\t\t// column widths, but will take slightly longer\n\t\taccuracy : false,\n\t\t// don't automatically layout columns, only use manual columnbreak\n\t\tmanualBreaks : false,\n\t\t// previx for all the CSS classes used by this plugin\n\t\t// default to empty string for backwards compatibility\n\t\tcssClassPrefix : \"\"\n\t};\n\toptions = $.extend(defaults, options);\n\n\tif(typeof(options.width) == \"string\"){\n\t\toptions.width = parseInt(options.width,10);\n\t\tif(isNaN(options.width)){\n\t\t\toptions.width = defaults.width;\n\t\t}\n\t}\n\n return this.each(function() {\n\t\tvar $inBox = options.target ? $(options.target) : $(this);\n\t\tvar maxHeight = $(this).height();\n\t\tvar $cache = $('
'); // this is where we'll put the real content\n\t\tvar lastWidth = 0;\n\t\tvar columnizing = false;\n\t\tvar manualBreaks = options.manualBreaks;\n\t\tvar cssClassPrefix = defaults.cssClassPrefix;\n\t\tif(typeof(options.cssClassPrefix) == \"string\"){\n\t\t\tcssClassPrefix = options.cssClassPrefix;\n\t\t}\n\n\n\t\tvar adjustment = 0;\n\n\t\t$cache.append($(this).contents().clone(true));\n\n\t\t// images loading after dom load\n\t\t// can screw up the column heights,\n\t\t// so recolumnize after images load\n\t\tif(!options.ignoreImageLoading && !options.target){\n\t\t\tif(!$inBox.data(\"imageLoaded\")){\n\t\t\t\t$inBox.data(\"imageLoaded\", true);\n\t\t\t\tif($(this).find(\"img\").length > 0){\n\t\t\t\t\t// only bother if there are\n\t\t\t\t\t// actually images...\n\t\t\t\t\tvar func = function($inBox,$cache){ return function(){\n\t\t\t\t\t\t\tif(!$inBox.data(\"firstImageLoaded\")){\n\t\t\t\t\t\t\t\t$inBox.data(\"firstImageLoaded\", \"true\");\n\t\t\t\t\t\t\t\t$inBox.empty().append($cache.children().clone(true));\n\t\t\t\t\t\t\t\t$inBox.columnize(options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}($(this), $cache);\n\t\t\t\t\t$(this).find(\"img\").one(\"load\", func);\n\t\t\t\t\t$(this).find(\"img\").one(\"abort\", func);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t$inBox.empty();\n\n\t\tcolumnizeIt();\n\n\t\tif(!options.buildOnce){\n\t\t\t$(window).resize(function() {\n\t\t\t\tif(!options.buildOnce){\n\t\t\t\t\tif($inBox.data(\"timeout\")){\n\t\t\t\t\t\tclearTimeout($inBox.data(\"timeout\"));\n\t\t\t\t\t}\n\t\t\t\t\t$inBox.data(\"timeout\", setTimeout(columnizeIt, 200));\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tfunction prefixTheClassName(className, withDot){\n\t\t\tvar dot = withDot ? \".\" : \"\";\n\t\t\tif(cssClassPrefix.length){\n\t\t\t\treturn dot + cssClassPrefix + \"-\" + className;\n\t\t\t}\n\t\t\treturn dot + className;\n\t\t}\n\n\t\t/**\n\t\t * this fuction builds as much of a column as it can without\n\t\t * splitting nodes in half. If the last node in the new column\n\t\t * is a text node, then it will try to split that text node. otherwise\n\t\t * it will leave the node in $pullOutHere and return with a height\n\t\t * smaller than targetHeight.\n\t\t * \n * Returns a boolean on whether we did some splitting successfully at a text point\n * (so we know we don't need to split a real element). return false if the caller should\n * split a node if possible to end this column.\n\t\t *\n\t\t * @param putInHere, the jquery node to put elements into for the current column\n\t\t * @param $pullOutHere, the jquery node to pull elements out of (uncolumnized html)\n\t\t * @param $parentColumn, the jquery node for the currently column that's being added to\n\t\t * @param targetHeight, the ideal height for the column, get as close as we can to this height\n\t\t */\n\t\tfunction columnize($putInHere, $pullOutHere, $parentColumn, targetHeight){\n\t\t\t//\n\t\t\t// add as many nodes to the column as we can,\n\t\t\t// but stop once our height is too tall\n\t\t\twhile((manualBreaks || $parentColumn.height() < targetHeight) &&\n\t\t\t\t$pullOutHere[0].childNodes.length){\n\t\t\t\tvar node = $pullOutHere[0].childNodes[0];\n\t\t\t\t//\n\t\t\t\t// Because we're not cloning, jquery will actually move the element\"\n\t\t\t\t// http://welcome.totheinter.net/2009/03/19/the-undocumented-life-of-jquerys-append/\n\t\t\t\tif($(node).find(prefixTheClassName(\"columnbreak\", true)).length){\n\t\t\t\t\t//\n\t\t\t\t\t// our column is on a column break, so just end here\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif($(node).hasClass(prefixTheClassName(\"columnbreak\"))){\n\t\t\t\t\t//\n\t\t\t\t\t// our column is on a column break, so just end here\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t$putInHere.append(node);\n\t\t\t}\n\t\t\tif($putInHere[0].childNodes.length === 0) return;\n\n\t\t\t// now we're too tall, so undo the last one\n\t\t\tvar kids = $putInHere[0].childNodes;\n\t\t\tvar lastKid = kids[kids.length-1];\n\t\t\t$putInHere[0].removeChild(lastKid);\n\t\t\tvar $item = $(lastKid);\n\n\t\t\t// now lets try to split that last node\n\t\t\t// to fit as much of it as we can into this column\n\t\t\tif($item[0].nodeType == 3){\n\t\t\t\t// it's a text node, split it up\n\t\t\t\tvar oText = $item[0].nodeValue;\n\t\t\t\tvar counter2 = options.width / 18;\n\t\t\t\tif(options.accuracy)\n\t\t\t\tcounter2 = options.accuracy;\n\t\t\t\tvar columnText;\n\t\t\t\tvar latestTextNode = null;\n\t\t\t\twhile($parentColumn.height() < targetHeight && oText.length){\n\t\t\t\t\tvar indexOfSpace = oText.indexOf(' ', counter2);\n\t\t\t\t\tif (indexOfSpace != -1) {\n\t\t\t\t\t\tcolumnText = oText.substring(0, oText.indexOf(' ', counter2));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcolumnText = oText;\n\t\t\t\t\t}\n\t\t\t\t\tlatestTextNode = document.createTextNode(columnText);\n\t\t\t\t\t$putInHere.append(latestTextNode);\n\n\t\t\t\t\tif(oText.length > counter2 && indexOfSpace != -1){\n\t\t\t\t\t\toText = oText.substring(indexOfSpace);\n\t\t\t\t\t}else{\n\t\t\t\t\t\toText = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif($parentColumn.height() >= targetHeight && latestTextNode !== null){\n\t\t\t\t\t// too tall :(\n\t\t\t\t\t$putInHere[0].removeChild(latestTextNode);\n\t\t\t\t\toText = latestTextNode.nodeValue + oText;\n\t\t\t\t}\n\t\t\t\tif(oText.length){\n\t\t\t\t\t$item[0].nodeValue = oText;\n\t\t\t\t}else{\n\t\t\t\t\treturn false; // we ate the whole text node, move on to the next node\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif($pullOutHere.contents().length){\n\t\t\t\t$pullOutHere.prepend($item);\n\t\t\t}else{\n\t\t\t\t$pullOutHere.append($item);\n\t\t\t}\n\n\t\t\treturn $item[0].nodeType == 3;\n\t\t}\n\n\t\t/**\n\t\t * Split up an element, which is more complex than splitting text. We need to create \n\t\t * two copies of the element with it's contents divided between each\n\t\t */\n\t\tfunction split($putInHere, $pullOutHere, $parentColumn, targetHeight){\n\t\t\tif($putInHere.contents(\":last\").find(prefixTheClassName(\"columnbreak\", true)).length){\n\t\t\t\t//\n\t\t\t\t// our column is on a column break, so just end here\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif($putInHere.contents(\":last\").hasClass(prefixTheClassName(\"columnbreak\"))){\n\t\t\t\t//\n\t\t\t\t// our column is on a column break, so just end here\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif($pullOutHere.contents().length){\n\t\t\t\tvar $cloneMe = $pullOutHere.contents(\":first\");\n\t\t\t\t//\n\t\t\t\t// make sure we're splitting an element\n\t\t\t\tif($cloneMe.get(0).nodeType != 1) return;\n\n\t\t\t\t//\n\t\t\t\t// clone the node with all data and events\n\t\t\t\tvar $clone = $cloneMe.clone(true);\n\t\t\t\t//\n\t\t\t\t// need to support both .prop and .attr if .prop doesn't exist.\n\t\t\t\t// this is for backwards compatibility with older versions of jquery.\n\t\t\t\tif($cloneMe.hasClass(prefixTheClassName(\"columnbreak\"))){\n\t\t\t\t\t//\n\t\t\t\t\t// ok, we have a columnbreak, so add it into\n\t\t\t\t\t// the column and exit\n\t\t\t\t\t$putInHere.append($clone);\n\t\t\t\t\t$cloneMe.remove();\n\t\t\t\t}else if (manualBreaks){\n\t\t\t\t\t// keep adding until we hit a manual break\n\t\t\t\t\t$putInHere.append($clone);\n\t\t\t\t\t$cloneMe.remove();\n\t\t\t\t}else if($clone.get(0).nodeType == 1 && !$clone.hasClass(prefixTheClassName(\"dontend\"))){\n\t\t\t\t\t$putInHere.append($clone);\n\t\t\t\t\tif($clone.is(\"img\") && $parentColumn.height() < targetHeight + 20){\n\t\t\t\t\t\t//\n\t\t\t\t\t\t// we can't split an img in half, so just add it\n\t\t\t\t\t\t// to the column and remove it from the pullOutHere section\n\t\t\t\t\t\t$cloneMe.remove();\n\t\t\t\t\t}else if(!$cloneMe.hasClass(prefixTheClassName(\"dontsplit\")) && $parentColumn.height() < targetHeight + 20){\n\t\t\t\t\t\t//\n\t\t\t\t\t\t// pretty close fit, and we're not allowed to split it, so just\n\t\t\t\t\t\t// add it to the column, remove from pullOutHere, and be done\n\t\t\t\t\t\t$cloneMe.remove();\n\t\t\t\t\t}else if($clone.is(\"img\") || $cloneMe.hasClass(prefixTheClassName(\"dontsplit\"))){\n\t\t\t\t\t\t//\n\t\t\t\t\t\t// it's either an image that's too tall, or an unsplittable node\n\t\t\t\t\t\t// that's too tall. leave it in the pullOutHere and we'll add it to the \n\t\t\t\t\t\t// next column\n\t\t\t\t\t\t$clone.remove();\n\t\t\t\t\t}else{\n\t\t\t\t\t\t//\n\t\t\t\t\t\t// ok, we're allowed to split the node in half, so empty out\n\t\t\t\t\t\t// the node in the column we're building, and start splitting\n\t\t\t\t\t\t// it in half, leaving some of it in pullOutHere\n\t\t\t\t\t\t$clone.empty();\n\t\t\t\t\t\tif(!columnize($clone, $cloneMe, $parentColumn, targetHeight)){\n\t\t\t\t\t\t\t// this node still has non-text nodes to split\n\t\t\t\t\t\t\t// add the split class and then recur\n\t\t\t\t\t\t\t$cloneMe.addClass(prefixTheClassName(\"split\"));\n\t\t\t\t\t\t\tif($cloneMe.children().length){\n\t\t\t\t\t\t\t\tsplit($clone, $cloneMe, $parentColumn, targetHeight);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t// this node only has text node children left, add the\n\t\t\t\t\t\t\t// split class and move on.\n\t\t\t\t\t\t\t$cloneMe.addClass(prefixTheClassName(\"split\"));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif($clone.get(0).childNodes.length === 0){\n\t\t\t\t\t\t\t// it was split, but nothing is in it :(\n\t\t\t\t\t\t\t$clone.remove();\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\n\t\tfunction singleColumnizeIt() {\n\t\t\tif ($inBox.data(\"columnized\") && $inBox.children().length == 1) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t$inBox.data(\"columnized\", true);\n\t\t\t$inBox.data(\"columnizing\", true);\n\n\t\t\t$inBox.empty();\n\t\t\t$inBox.append($(\"
\")); //\"\n\t\t\t$col = $inBox.children().eq($inBox.children().length-1);\n\t\t\t$destroyable = $cache.clone(true);\n\t\t\tif(options.overflow){\n\t\t\t\ttargetHeight = options.overflow.height;\n\t\t\t\tcolumnize($col, $destroyable, $col, targetHeight);\n\t\t\t\t// make sure that the last item in the column isn't a \"dontend\"\n\t\t\t\tif(!$destroyable.contents().find(\":first-child\").hasClass(prefixTheClassName(\"dontend\"))){\n\t\t\t\t\tsplit($col, $destroyable, $col, targetHeight);\n\t\t\t\t}\n\n\t\t\t\twhile($col.contents(\":last\").length && checkDontEndColumn($col.contents(\":last\").get(0))){\n\t\t\t\t\tvar $lastKid = $col.contents(\":last\");\n\t\t\t\t\t$lastKid.remove();\n\t\t\t\t\t$destroyable.prepend($lastKid);\n\t\t\t\t}\n\n\t\t\t\tvar html = \"\";\n\t\t\t\tvar div = document.createElement('DIV');\n\t\t\t\twhile($destroyable[0].childNodes.length > 0){\n\t\t\t\t\tvar kid = $destroyable[0].childNodes[0];\n\t\t\t\t\tif(kid.attributes){\n\t\t\t\t\t\tfor(var i=0;i
\")); //\"\n\t\t\t$col = $inBox.children(\":last\");\n\t\t\t$col.append($cache.clone());\n\t\t\tmaxHeight = $col.height();\n\t\t\t$inBox.empty();\n\n\t\t\tvar targetHeight = maxHeight / numCols;\n\t\t\tvar firstTime = true;\n\t\t\tvar maxLoops = 3;\n\t\t\tvar scrollHorizontally = false;\n\t\t\tif(options.overflow){\n\t\t\t\tmaxLoops = 1;\n\t\t\t\ttargetHeight = options.overflow.height;\n\t\t\t}else if(optionHeight && optionWidth){\n\t\t\t\tmaxLoops = 1;\n\t\t\t\ttargetHeight = optionHeight;\n\t\t\t\tscrollHorizontally = true;\n\t\t\t}\n\n\t\t\t//\n\t\t\t// We loop as we try and workout a good height to use. We know it initially as an average \n\t\t\t// but if the last column is higher than the first ones (which can happen, depending on split\n\t\t\t// points) we need to raise 'adjustment'. We try this over a few iterations until we're 'solid'.\n\t\t\t//\n\t\t\t// also, lets hard code the max loops to 20. that's /a lot/ of loops for columnizer,\n\t\t\t// and should keep run aways in check. if somehow someone has content combined with\n\t\t\t// options that would cause an infinite loop, then this'll definitely stop it.\n\t\t\tfor(var loopCount=0;loopCount\")); //\"\n\t\t\t\t}\n\n\t\t\t\t// fill all but the last column (unless overflowing)\n\t\t\t\ti = 0;\n\t\t\t\twhile(i < numCols - (options.overflow ? 0 : 1) || scrollHorizontally && $destroyable.contents().length){\n\t\t\t\t\tif($inBox.children().length <= i){\n\t\t\t\t\t\t// we ran out of columns, make another\n\t\t\t\t\t\t$inBox.append($(\"
\")); //\"\n\t\t\t\t\t}\n\t\t\t\t\t$col = $inBox.children().eq(i);\n\t\t\t\t\tif(scrollHorizontally){\n\t\t\t\t\t\t$col.width(optionWidth + \"px\");\n\t\t\t\t\t}\n\t\t\t\t\tcolumnize($col, $destroyable, $col, targetHeight);\n\t\t\t\t\t// make sure that the last item in the column isn't a \"dontend\"\n\t\t\t\t\tsplit($col, $destroyable, $col, targetHeight);\n\n\t\t\t\t\twhile($col.contents(\":last\").length && checkDontEndColumn($col.contents(\":last\").get(0))){\n\t\t\t\t\t\t$lastKid = $col.contents(\":last\");\n\t\t\t\t\t\t$lastKid.remove();\n\t\t\t\t\t\t$destroyable.prepend($lastKid);\n\t\t\t\t\t}\n\t\t\t\t\ti++;\n\n\t\t\t\t\t//\n\t\t\t\t\t// https://github.com/adamwulf/Columnizer-jQuery-Plugin/issues/47\n\t\t\t\t\t//\n\t\t\t\t\t// check for infinite loop.\n\t\t\t\t\t//\n\t\t\t\t\t// this could happen when a dontsplit or dontend item is taller than the column\n\t\t\t\t\t// we're trying to build, and its never actually added to a column.\n\t\t\t\t\t//\n\t\t\t\t\t// this results in empty columns being added with the dontsplit item\n\t\t\t\t\t// perpetually waiting to get put into a column. lets force the issue here\n\t\t\t\t\tif($col.contents().length === 0 && $destroyable.contents().length){\n\t\t\t\t\t\t//\n\t\t\t\t\t\t// ok, we're building zero content columns. this'll happen forever\n\t\t\t\t\t\t// since nothing can ever get taken out of destroyable.\n\t\t\t\t\t\t//\n\t\t\t\t\t\t// to fix, lets put 1 item from destroyable into the empty column\n\t\t\t\t\t\t// before we iterate\n\t\t\t\t\t\t$col.append($destroyable.contents(\":first\"));\n\t\t\t\t\t}else if(i == numCols - (options.overflow ? 0 : 1) && !options.overflow){\n\t\t\t\t\t\t//\n\t\t\t\t\t\t// ok, we're about to exit the while loop because we're done with all\n\t\t\t\t\t\t// columns except the last column.\n\t\t\t\t\t\t//\n\t\t\t\t\t\t// if $destroyable still has columnbreak nodes in it, then we need to keep\n\t\t\t\t\t\t// looping and creating more columns.\n\t\t\t\t\t\tif($destroyable.find(prefixTheClassName(\"columnbreak\", true)).length){\n\t\t\t\t\t\t\tnumCols ++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(options.overflow && !scrollHorizontally){\n\t\t\t\t\tvar IE6 = false /*@cc_on || @_jscript_version < 5.7 @*/;\n\t\t\t\t\tvar IE7 = (document.all) && (navigator.appVersion.indexOf(\"MSIE 7.\") != -1);\n\t\t\t\t\tif(IE6 || IE7){\n\t\t\t\t\t\tvar html = \"\";\n\t\t\t\t\t\tvar div = document.createElement('DIV');\n\t\t\t\t\t\twhile($destroyable[0].childNodes.length > 0){\n\t\t\t\t\t\t\tvar kid = $destroyable[0].childNodes[0];\n\t\t\t\t\t\t\tfor(i=0;i max) {\n\t\t\t\t\t\t\t\tmax = h;\n\t\t\t\t\t\t\t\tlastIsMax = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(h < min) min = h;\n\t\t\t\t\t\t\tnumberOfColumnsThatDontEndInAColumnBreak++;\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}($inBox));\n\n\t\t\t\t\tvar avgH = totalH / numberOfColumnsThatDontEndInAColumnBreak;\n\t\t\t\t\tif(totalH === 0){\n\t\t\t\t\t\t//\n\t\t\t\t\t\t// all columns end in a column break,\n\t\t\t\t\t\t// so we're done here\n\t\t\t\t\t\tloopCount = maxLoops;\n\t\t\t\t\t}else if(options.lastNeverTallest && lastIsMax){\n\t\t\t\t\t\t// the last column is the tallest\n\t\t\t\t\t\t// so allow columns to be taller\n\t\t\t\t\t\t// and retry\n\t\t\t\t\t\t//\n\t\t\t\t\t\t// hopefully this'll mean more content fits into\n\t\t\t\t\t\t// earlier columns, so that the last column\n\t\t\t\t\t\t// can be shorter than the rest\n\t\t\t\t\t\tadjustment += 30;\n\n\t\t\t\t\t\ttargetHeight = targetHeight + 30;\n\t\t\t\t\t\tif(loopCount == maxLoops-1) maxLoops++;\n\t\t\t\t\t}else if(max - min > 30){\n\t\t\t\t\t\t// too much variation, try again\n\t\t\t\t\t\ttargetHeight = avgH + 30;\n\t\t\t\t\t}else if(Math.abs(avgH-targetHeight) > 20){\n\t\t\t\t\t\t// too much variation, try again\n\t\t\t\t\t\ttargetHeight = avgH;\n\t\t\t\t\t}else {\n\t\t\t\t\t\t// solid, we're done\n\t\t\t\t\t\tloopCount = maxLoops;\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\t// it's scrolling horizontally, fix the width/classes of the columns\n\t\t\t\t\t$inBox.children().each(function(i){\n\t\t\t\t\t\t$col = $inBox.children().eq(i);\n\t\t\t\t\t\t$col.width(optionWidth + \"px\");\n\t\t\t\t\t\tif(i === 0){\n\t\t\t\t\t\t\t$col.addClass(prefixTheClassName(\"first\"));\n\t\t\t\t\t\t}else if(i==$inBox.children().length-1){\n\t\t\t\t\t\t\t$col.addClass(prefixTheClassName(\"last\"));\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t$col.removeClass(prefixTheClassName(\"first\"));\n\t\t\t\t\t\t\t$col.removeClass(prefixTheClassName(\"last\"));\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t$inBox.width($inBox.children().length * optionWidth + \"px\");\n\t\t\t\t}\n\t\t\t\t$inBox.append($(\"
\"));\n\t\t\t}\n\t\t\t$inBox.find(prefixTheClassName(\"column\", true)).find(\":first\" + prefixTheClassName(\"removeiffirst\", true)).remove();\n\t\t\t$inBox.find(prefixTheClassName(\"column\", true)).find(':last' + prefixTheClassName(\"removeiflast\", true)).remove();\n\t\t\t$inBox.data(\"columnizing\", false);\n\n\t\t\tif(options.overflow){\n\t\t\t\toptions.overflow.doneFunc();\n\t\t\t}\n\t\t\toptions.doneFunc();\n\t\t}\n });\n };\n})(jQuery);\n","//EQU modified, see 'equ' comments\n\nimport Modernizr from 'modernizr';\n\n// console.log(Modernizr);\n/**\n * jquery.dlmenu.js v1.0.1\n * http://www.codrops.com\n *\n * Licensed under the MIT license.\n * http://www.opensource.org/licenses/mit-license.php\n *\n * Copyright 2013, Codrops\n * http://www.codrops.com\n */\n(function ($, window, undefined) {\n 'use strict';\n\n // global\n // var Modernizr = window.Modernizr;\n var $body = $('body');\n\n $.DLMenu = function (options, element) {\n this.$el = $(element);\n this._init(options);\n };\n\n // the options\n $.DLMenu.defaults = {\n // classes for the animation effects\n animationClasses: { classin: 'dl-animate-in-1', classout: 'dl-animate-out-1' },\n // callback: click a link that has a sub menu\n // el is the link element (li); name is the level name\n onLevelClick: function (el, name) {\n return false;\n },\n // callback: click a link that does not have a sub menu\n // el is the link element (li); ev is the event obj\n onLinkClick: function (el, ev) {\n return false;\n },\n backLabel: 'Back',\n // Change to \"true\" to use the active item as back link label.\n useActiveItemAsBackLabel: false,\n // Change to \"true\" to add a navigable link to the active item to its child\n // menu.\n useActiveItemAsLink: false,\n // On close reset the menu to root\n resetOnClose: true,\n };\n\n $.DLMenu.prototype = {\n _init: function (options) {\n // options\n this.options = $.extend(true, {}, $.DLMenu.defaults, options);\n // cache some elements and initialize some variables\n this._config();\n\n var animEndEventNames = {\n WebkitAnimation: 'webkitAnimationEnd',\n OAnimation: 'oAnimationEnd',\n msAnimation: 'MSAnimationEnd',\n animation: 'animationend',\n },\n transEndEventNames = {\n WebkitTransition: 'webkitTransitionEnd',\n MozTransition: 'transitionend',\n OTransition: 'oTransitionEnd',\n msTransition: 'MSTransitionEnd',\n transition: 'transitionend',\n };\n // animation end event name\n this.animEndEventName = animEndEventNames[Modernizr.prefixed('animation')] + '.dlmenu';\n // transition end event name\n this.transEndEventName = transEndEventNames[Modernizr.prefixed('transition')] + '.dlmenu';\n // support for css animations and css transitions\n this.supportAnimations = Modernizr.cssanimations;\n this.supportTransitions = Modernizr.csstransitions;\n\n this._initEvents();\n },\n _config: function () {\n this.open = false;\n // this.$trigger = this.$el.children( '.dl-trigger' );\n this.$trigger = $(this.options.trigger); //EQU custom\n this.$menu = this.$el.children('ul.dl-menu');\n this.$menuitems = this.$menu.find('li:not(.dl-back)');\n this.$el.find('ul.dl-submenu').prepend('
  • ' + this.options.backLabel + '
  • ');\n this.$back = this.$menu.find('li.dl-back');\n\n // Set the label text for the back link.\n if (this.options.useActiveItemAsBackLabel) {\n this.$back.each(function () {\n var $this = $(this),\n parentLabel = $this.parents('li:first').find('a:first').text();\n\n $this.find('a').html(parentLabel);\n });\n }\n // If the active item should also be a clickable link, create one and put\n // it at the top of our menu.\n if (this.options.useActiveItemAsLink) {\n this.$el.find('ul.dl-submenu').prepend(function () {\n var parentli = $(this).parents('li:not(.dl-back):first').find('a:first');\n return '
  • ' + parentli.text() + '
  • ';\n });\n }\n },\n _initEvents: function () {\n var self = this;\n\n //set up working close event that excepts menu and trigger button itself\n $('body').on('click touchend', function (ev) {\n if (\n $(ev.target).parents('ul.dl-menu').length === 0 &&\n !$(ev.target).is('.dl-menu') &&\n $(ev.target).parents('.dl-trigger').length === 0 &&\n !$(ev.target).is('.dl-trigger')\n ) {\n self._closeMenu();\n }\n });\n\n this.$trigger.on('click.dlmenu', function () {\n if (self.open) {\n self._closeMenu();\n $('html').removeClass('hide-scroll menu-open');\n $('.callout-box--header-alert').slideDown(200);\n } else {\n self._openMenu();\n // clicking somewhere else makes the menu close\n $body\n .off('click')\n .children()\n .on('click.dlmenu', function () {\n // self._closeMenu() ;\n });\n }\n return false;\n });\n\n this.$menuitems.on('click.dlmenu', function (event) {\n // event.stopPropagation(); //EQU - Removed this as it's blocking toolbox dropdowns\n\n var $item = $(this),\n $submenu = $item.children('ul.dl-submenu');\n\n // Only go to the next menu level if one exists AND the link isn't the\n // one we added specifically for navigating to parent item pages.\n if ($submenu.length > 0 && !$(event.currentTarget).hasClass('dl-subviewopen')) {\n var $flyin = $submenu.clone().css('opacity', 0).insertAfter(self.$menu),\n onAnimationEndFn = function () {\n self.$menu\n .off(self.animEndEventName)\n .removeClass(self.options.animationClasses.classout)\n .addClass('dl-subview');\n $item\n .addClass('dl-subviewopen')\n .parents('.dl-subviewopen:first')\n .removeClass('dl-subviewopen')\n .addClass('dl-subview');\n $flyin.remove();\n };\n\n setTimeout(function () {\n $flyin.addClass(self.options.animationClasses.classin);\n self.$menu.addClass(self.options.animationClasses.classout);\n if (self.supportAnimations) {\n self.$menu.on(self.animEndEventName, onAnimationEndFn);\n } else {\n onAnimationEndFn.call();\n }\n\n self.options.onLevelClick($item, $item.children('a:first').text());\n });\n\n return false;\n } else {\n self.options.onLinkClick($item, event);\n }\n });\n\n this.$back.on('click.dlmenu', function (event) {\n var $this = $(this),\n $submenu = $this.parents('ul.dl-submenu:first'),\n $item = $submenu.parent(),\n $flyin = $submenu.clone().insertAfter(self.$menu);\n\n var onAnimationEndFn = function () {\n self.$menu.off(self.animEndEventName).removeClass(self.options.animationClasses.classin);\n $flyin.remove();\n };\n\n setTimeout(function () {\n $flyin.addClass(self.options.animationClasses.classout);\n self.$menu.addClass(self.options.animationClasses.classin);\n if (self.supportAnimations) {\n self.$menu.on(self.animEndEventName, onAnimationEndFn);\n } else {\n onAnimationEndFn.call();\n }\n\n $item.removeClass('dl-subviewopen');\n\n var $subview = $this.parents('.dl-subview:first');\n if ($subview.is('li')) {\n $subview.addClass('dl-subviewopen');\n }\n $subview.removeClass('dl-subview');\n });\n\n return false;\n });\n },\n closeMenu: function () {\n if (this.open) {\n this._closeMenu();\n }\n },\n _closeMenu: function () {\n var self = this,\n onTransitionEndFn = function () {\n self.$menu.off(self.transEndEventName);\n if (self.options.resetOnClose) {\n self._resetMenu();\n }\n };\n this.$menu.removeClass('dl-menuopen');\n $('.nav-wrapper--mydetail').removeClass('is-open');\n this.$menu.addClass('dl-menu-toggle');\n this.$trigger.removeClass('dl-active');\n if (this.supportTransitions) {\n this.$menu.on(this.transEndEventName, onTransitionEndFn);\n } else {\n onTransitionEndFn.call();\n }\n\n this.open = false;\n },\n openMenu: function () {\n if (!this.open) {\n this._openMenu();\n }\n },\n _openMenu: function () {\n var self = this;\n // clicking somewhere else makes the menu close\n $body.off('click').on('click.dlmenu', function () {\n self._closeMenu();\n });\n $('html').addClass('hide-scroll menu-open');\n $('.callout-box--header-alert').slideUp(200);\n\n this.$menu.removeAttr('style');\n $('.nav-wrapper--mydetail').addClass('is-open');\n setTimeout(() => {\n this.$menu.addClass('dl-menuopen dl-menu-toggle').on(this.transEndEventName, function () {\n $(this).removeClass('dl-menu-toggle');\n });\n }, 10);\n this.$trigger.addClass('dl-active');\n this.open = true;\n },\n // resets the menu to its original state (first level of options)\n _resetMenu: function () {\n this.$menu.removeClass('dl-subview');\n this.$menuitems.removeClass('dl-subview dl-subviewopen');\n\n setTimeout(() => {\n this.$menu.css('display', 'none'); //EQU\n }, 300);\n },\n };\n\n var logError = function (message) {\n if (window.console) {\n window.console.error(message);\n }\n };\n\n $.fn.dlmenu = function (options) {\n if (typeof options === 'string') {\n var args = Array.prototype.slice.call(arguments, 1);\n this.each(function () {\n var instance = $.data(this, 'dlmenu');\n if (!instance) {\n logError('cannot call methods on dlmenu prior to initialization; ' + \"attempted to call method '\" + options + \"'\");\n return;\n }\n if (!$.isFunction(instance[options]) || options.charAt(0) === '_') {\n logError(\"no such method '\" + options + \"' for dlmenu instance\");\n return;\n }\n instance[options].apply(instance, args);\n });\n } else {\n this.each(function () {\n var instance = $.data(this, 'dlmenu');\n if (instance) {\n instance._init();\n } else {\n instance = $.data(this, 'dlmenu', new $.DLMenu(options, this));\n }\n });\n }\n return this;\n };\n})(jQuery, window);\n","/**\n * jquery.utilities.js v1.0.0\n *\n */\n\n(function ($) {\n var newUtilityExtension = {\n format: function () {\n var s = arguments[0];\n for (var i = 0; i < arguments.length - 1; i++) {\n var reg = new RegExp(\"\\\\{\" + i + \"\\\\}\", \"gm\");\n s = s.replace(reg, arguments[i + 1]);\n }\n return s;\n },\n getBreakpoint : function () {\n return window.getComputedStyle(document.querySelector(\"body\"), \":before\").getPropertyValue(\"content\").replace(/\\\"/g, \"\");\n },\n setClass: function (element, cssClassBefore, cssClass) {\n var preCssClass = cssClassBefore || \"\";\n var className = preCssClass + cssClass;\n $(element).addClass(className);\n return true;\n },\n clearClass: function (element, cssClassBefore, cssClass) {\n var preCssClass = cssClassBefore || \"\";\n var className = preCssClass + cssClass;\n $(element).removeClass(className);\n return true;\n }\n }\n $.extend(newUtilityExtension);\n})(jQuery);","/*!\n * JavaScript Cookie v2.2.0\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader = false;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api (key, value, attributes) {\n\t\t\tvar result;\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Write\n\n\t\t\tif (arguments.length > 1) {\n\t\t\t\tattributes = extend({\n\t\t\t\t\tpath: '/'\n\t\t\t\t}, api.defaults, attributes);\n\n\t\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\t\tvar expires = new Date();\n\t\t\t\t\texpires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5);\n\t\t\t\t\tattributes.expires = expires;\n\t\t\t\t}\n\n\t\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\t\ttry {\n\t\t\t\t\tresult = JSON.stringify(value);\n\t\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\t\tvalue = result;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\n\t\t\t\tif (!converter.write) {\n\t\t\t\t\tvalue = encodeURIComponent(String(value))\n\t\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\t\t\t\t} else {\n\t\t\t\t\tvalue = converter.write(value, key);\n\t\t\t\t}\n\n\t\t\t\tkey = encodeURIComponent(String(key));\n\t\t\t\tkey = key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent);\n\t\t\t\tkey = key.replace(/[\\(\\)]/g, escape);\n\n\t\t\t\tvar stringifiedAttributes = '';\n\n\t\t\t\tfor (var attributeName in attributes) {\n\t\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName];\n\t\t\t\t}\n\t\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t\t}\n\n\t\t\t// Read\n\n\t\t\tif (!key) {\n\t\t\t\tresult = {};\n\t\t\t}\n\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all. Also prevents odd result when\n\t\t\t// calling \"get()\"\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar rdecode = /(%[0-9A-Z]{2})+/g;\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!this.json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = parts[0].replace(rdecode, decodeURIComponent);\n\t\t\t\t\tcookie = converter.read ?\n\t\t\t\t\t\tconverter.read(cookie, name) : converter(cookie, name) ||\n\t\t\t\t\t\tcookie.replace(rdecode, decodeURIComponent);\n\n\t\t\t\t\tif (this.json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tresult = cookie;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!key) {\n\t\t\t\t\t\tresult[name] = cookie;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\n\t\tapi.set = api;\n\t\tapi.get = function (key) {\n\t\t\treturn api.call(api, key);\n\t\t};\n\t\tapi.getJSON = function () {\n\t\t\treturn api.apply({\n\t\t\t\tjson: true\n\t\t\t}, [].slice.call(arguments));\n\t\t};\n\t\tapi.defaults = {};\n\n\t\tapi.remove = function (key, attributes) {\n\t\t\tapi(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n","/**\n * @author zhixin wen \n * @version 1.2.1\n *\n * http://wenzhixin.net.cn/p/multiple-select/\n */\n\n(function ($) {\n 'use strict';\n\n // it only does '%s', and return '' when arguments are undefined\n var sprintf = function (str) {\n var args = arguments,\n flag = true,\n i = 1;\n\n str = str.replace(/%s/g, function () {\n var arg = args[i++];\n\n if (typeof arg === 'undefined') {\n flag = false;\n return '';\n }\n return arg;\n });\n return flag ? str : '';\n };\n\n var removeDiacritics = function (str) {\n var defaultDiacriticsRemovalMap = [\n {\n base: 'A',\n letters: /[\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F]/g,\n },\n { base: 'AA', letters: /[\\uA732]/g },\n { base: 'AE', letters: /[\\u00C6\\u01FC\\u01E2]/g },\n { base: 'AO', letters: /[\\uA734]/g },\n { base: 'AU', letters: /[\\uA736]/g },\n { base: 'AV', letters: /[\\uA738\\uA73A]/g },\n { base: 'AY', letters: /[\\uA73C]/g },\n { base: 'B', letters: /[\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181]/g },\n { base: 'C', letters: /[\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E]/g },\n { base: 'D', letters: /[\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779]/g },\n { base: 'DZ', letters: /[\\u01F1\\u01C4]/g },\n { base: 'Dz', letters: /[\\u01F2\\u01C5]/g },\n {\n base: 'E',\n letters: /[\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E]/g,\n },\n { base: 'F', letters: /[\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B]/g },\n { base: 'G', letters: /[\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E]/g },\n { base: 'H', letters: /[\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D]/g },\n {\n base: 'I',\n letters: /[\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197]/g,\n },\n { base: 'J', letters: /[\\u004A\\u24BF\\uFF2A\\u0134\\u0248]/g },\n { base: 'K', letters: /[\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2]/g },\n {\n base: 'L',\n letters: /[\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780]/g,\n },\n { base: 'LJ', letters: /[\\u01C7]/g },\n { base: 'Lj', letters: /[\\u01C8]/g },\n { base: 'M', letters: /[\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C]/g },\n { base: 'N', letters: /[\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4]/g },\n { base: 'NJ', letters: /[\\u01CA]/g },\n { base: 'Nj', letters: /[\\u01CB]/g },\n {\n base: 'O',\n letters: /[\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C]/g,\n },\n { base: 'OI', letters: /[\\u01A2]/g },\n { base: 'OO', letters: /[\\uA74E]/g },\n { base: 'OU', letters: /[\\u0222]/g },\n { base: 'P', letters: /[\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754]/g },\n { base: 'Q', letters: /[\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A]/g },\n {\n base: 'R',\n letters: /[\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782]/g,\n },\n {\n base: 'S',\n letters: /[\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784]/g,\n },\n { base: 'T', letters: /[\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786]/g },\n { base: 'TZ', letters: /[\\uA728]/g },\n {\n base: 'U',\n letters: /[\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244]/g,\n },\n { base: 'V', letters: /[\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245]/g },\n { base: 'VY', letters: /[\\uA760]/g },\n { base: 'W', letters: /[\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72]/g },\n { base: 'X', letters: /[\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C]/g },\n { base: 'Y', letters: /[\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE]/g },\n { base: 'Z', letters: /[\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762]/g },\n {\n base: 'a',\n letters: /[\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250]/g,\n },\n { base: 'aa', letters: /[\\uA733]/g },\n { base: 'ae', letters: /[\\u00E6\\u01FD\\u01E3]/g },\n { base: 'ao', letters: /[\\uA735]/g },\n { base: 'au', letters: /[\\uA737]/g },\n { base: 'av', letters: /[\\uA739\\uA73B]/g },\n { base: 'ay', letters: /[\\uA73D]/g },\n { base: 'b', letters: /[\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253]/g },\n { base: 'c', letters: /[\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184]/g },\n { base: 'd', letters: /[\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A]/g },\n { base: 'dz', letters: /[\\u01F3\\u01C6]/g },\n {\n base: 'e',\n letters: /[\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD]/g,\n },\n { base: 'f', letters: /[\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C]/g },\n { base: 'g', letters: /[\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F]/g },\n { base: 'h', letters: /[\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265]/g },\n { base: 'hv', letters: /[\\u0195]/g },\n {\n base: 'i',\n letters: /[\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131]/g,\n },\n { base: 'j', letters: /[\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249]/g },\n { base: 'k', letters: /[\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3]/g },\n {\n base: 'l',\n letters: /[\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747]/g,\n },\n { base: 'lj', letters: /[\\u01C9]/g },\n { base: 'm', letters: /[\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F]/g },\n {\n base: 'n',\n letters: /[\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5]/g,\n },\n { base: 'nj', letters: /[\\u01CC]/g },\n {\n base: 'o',\n letters: /[\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275]/g,\n },\n { base: 'oi', letters: /[\\u01A3]/g },\n { base: 'ou', letters: /[\\u0223]/g },\n { base: 'oo', letters: /[\\uA74F]/g },\n { base: 'p', letters: /[\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755]/g },\n { base: 'q', letters: /[\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759]/g },\n {\n base: 'r',\n letters: /[\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783]/g,\n },\n {\n base: 's',\n letters: /[\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B]/g,\n },\n { base: 't', letters: /[\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787]/g },\n { base: 'tz', letters: /[\\uA729]/g },\n {\n base: 'u',\n letters: /[\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289]/g,\n },\n { base: 'v', letters: /[\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C]/g },\n { base: 'vy', letters: /[\\uA761]/g },\n { base: 'w', letters: /[\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73]/g },\n { base: 'x', letters: /[\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D]/g },\n { base: 'y', letters: /[\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF]/g },\n { base: 'z', letters: /[\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763]/g },\n ];\n\n for (var i = 0; i < defaultDiacriticsRemovalMap.length; i++) {\n str = str.replace(defaultDiacriticsRemovalMap[i].letters, defaultDiacriticsRemovalMap[i].base);\n }\n\n return str;\n };\n\n function MultipleSelect($el, options) {\n var that = this,\n name = $el.attr('name') || options.name || '';\n\n this.options = options;\n\n // hide select element\n this.$el = $el.hide();\n\n // label element\n this.$label = this.$el.closest('label');\n if (this.$label.length === 0 && this.$el.attr('id')) {\n this.$label = $(sprintf('label[for=\"%s\"]', this.$el.attr('id').replace(/:/g, '\\\\:')));\n }\n\n // restore class and title from select element\n this.$parent = $(sprintf('
    ', $el.attr('class') || '', sprintf('title=\"%s\"', $el.attr('title'))));\n\n var LabelTxt = this.$label.attr('id');\n\n // add placeholder to choice button\n this.$choice = $(\n sprintf(\n [\n '',\n ].join(''),\n this.options.placeholder\n )\n );\n\n // default position is bottom\n this.$drop = $(\n sprintf(\n '
    ',\n this.options.position,\n sprintf(' style=\"width: %s\"', this.options.dropWidth)\n )\n );\n\n this.$el.after(this.$parent);\n this.$parent.append(this.$choice);\n this.$parent.append(this.$drop);\n\n if (this.$el.prop('disabled')) {\n this.$choice.addClass('disabled');\n }\n this.$parent.css('width', this.options.width || this.$el.css('width') || this.$el.outerWidth() + 20);\n\n this.selectAllName = 'data-name=\"selectAll' + name + '\"';\n this.selectGroupName = 'data-name=\"selectGroup' + name + '\"';\n this.selectItemName = 'data-name=\"selectItem' + name + '\"';\n\n if (!this.options.keepOpen) {\n $(document).click(function (e) {\n if ($(e.target)[0] === that.$choice[0] || $(e.target).parents('.ms-choice')[0] === that.$choice[0]) {\n return;\n }\n if (\n ($(e.target)[0] === that.$drop[0] || ($(e.target).parents('.ms-drop')[0] !== that.$drop[0] && e.target !== $el[0])) &&\n that.options.isOpen\n ) {\n that.close();\n $(that.$label[0]).parent().find('.js-btn-toggle').removeAttr('aria-expanded');\n }\n });\n }\n }\n\n MultipleSelect.prototype = {\n constructor: MultipleSelect,\n\n init: function () {\n var that = this,\n $ul = $('
      ');\n\n this.$drop.html('');\n\n if (this.options.filter) {\n this.$drop.append(\n [\n '
      ',\n '',\n '
      ',\n ].join('')\n );\n }\n\n if (this.options.selectAll && !this.options.single) {\n var inputId = this.$el.attr('id') + '_input_all';\n\n $ul.append(\n [\n '
    • ',\n '',\n '
    • ',\n ].join('')\n );\n }\n\n $.each(this.$el.children(), function (i, elm) {\n $ul.append(that.optionToHtml(i, elm));\n });\n $ul.append(sprintf('
    • %s
    • ', this.options.noMatchesFound));\n this.$drop.append($ul);\n this.$drop.append('
      ');\n\n this.$drop.find('ul').css('max-height', this.options.maxHeight + 'px');\n this.$drop.find('.multiple').css('width', this.options.multipleWidth + 'px');\n\n this.$searchInput = this.$drop.find('.ms-search input');\n this.$selectAll = this.$drop.find('input[' + this.selectAllName + ']');\n this.$selectGroups = this.$drop.find('input[' + this.selectGroupName + ']');\n this.$selectItems = this.$drop.find('input[' + this.selectItemName + ']:enabled');\n this.$disableItems = this.$drop.find('input[' + this.selectItemName + ']:disabled');\n this.$noResults = this.$drop.find('.ms-no-results');\n this.$done = this.$drop.find('.ms-select-all-close');\n\n this.events();\n this.updateSelectAll(true);\n this.update(true);\n\n if (this.options.isOpen) {\n this.open();\n }\n },\n\n optionToHtml: function (i, elm, group, groupDisabled) {\n var that = this,\n $elm = $(elm),\n classes = $elm.attr('class') || '',\n title = sprintf('title=\"%s\"', $elm.attr('title')),\n multiple = this.options.multiple ? 'multiple' : '',\n disabled,\n type = this.options.single ? 'radio' : 'checkbox';\n\n if ($elm.is('option')) {\n var value = $elm.val(),\n text = that.options.textTemplate($elm),\n selected = $elm.prop('selected'),\n style = sprintf('style=\"%s\"', this.options.styler(value)),\n $el;\n\n classes = 'u-checkbox-container';\n\n disabled = groupDisabled || $elm.prop('disabled');\n\n var inputId = this.$el.attr('id') + '_input_' + $elm.data('id');\n\n $el = $(\n [\n sprintf('
    • ', multiple, classes, title, style),\n sprintf('',\n '
    • ',\n ].join('')\n );\n $el.find('input').val(value);\n return $el;\n }\n if ($elm.is('optgroup')) {\n var label = that.options.labelTemplate($elm),\n $group = $('
      ');\n\n group = 'group_' + i;\n disabled = $elm.prop('disabled');\n\n $group.append(\n [\n '
    • ',\n sprintf('',\n '
    • ',\n ].join('')\n );\n\n $.each($elm.children(), function (i, elm) {\n $group.append(that.optionToHtml(i, elm, group, disabled));\n });\n return $group.html();\n }\n },\n\n events: function () {\n var that = this,\n toggleOpen = function (e) {\n e.preventDefault();\n that[that.options.isOpen ? 'close' : 'open']();\n };\n\n if (this.$label) {\n this.$label.off('click').on('click', function (e) {\n if (e.target.nodeName.toLowerCase() !== 'label' || e.target !== this) {\n return;\n }\n toggleOpen(e);\n if (!that.options.filter || !that.options.isOpen) {\n that.focus();\n }\n e.stopPropagation(); // Causes lost focus otherwise\n });\n }\n\n this.$choice\n .off('click')\n .on('click', toggleOpen)\n .off('focus')\n .on('focus', this.options.onFocus)\n .off('blur')\n .on('blur', this.options.onBlur);\n\n this.$parent.off('keydown').on('keydown', function (e) {\n switch (e.which) {\n case 27: // esc key\n that.close();\n that.$choice.focus();\n break;\n }\n });\n this.$done.off('click').on('click', function () {\n that.close();\n that.$choice.focus();\n return;\n });\n this.$searchInput\n .off('keydown')\n .on('keydown', function (e) {\n // Ensure shift-tab causes lost focus from filter as with clicking away\n if (e.keyCode === 9 && e.shiftKey) {\n that.close();\n }\n })\n .off('keyup')\n .on('keyup', function (e) {\n // enter or space\n // Avoid selecting/deselecting if no choices made\n if (that.options.filterAcceptOnEnter && (e.which === 13 || e.which == 32) && that.$searchInput.val()) {\n that.$selectAll.click();\n that.close();\n that.focus();\n return;\n }\n that.filter();\n });\n\n this.$selectAll.off('click').on('click', function () {\n var checked = $(this).prop('checked'),\n $items = that.$selectItems.filter(':visible');\n\n if ($items.length === that.$selectItems.length) {\n that[checked ? 'checkAll' : 'uncheckAll']();\n } else {\n // when the filter option is true\n that.$selectGroups.prop('checked', checked);\n $items.prop('checked', checked);\n that.options[checked ? 'onCheckAll' : 'onUncheckAll']();\n that.update();\n }\n });\n this.$selectGroups.off('click').on('click', function () {\n var group = $(this).parent().attr('data-group'),\n $items = that.$selectItems.filter(':visible'),\n $children = $items.filter(sprintf('[data-group=\"%s\"]', group)),\n checked = $children.length !== $children.filter(':checked').length;\n\n $children.prop('checked', checked);\n that.updateSelectAll();\n that.update();\n that.options.onOptgroupClick({\n label: $(this).parent().text(),\n checked: checked,\n children: $children.get(),\n instance: that,\n });\n });\n this.$selectItems.off('click').on('click', function () {\n that.updateSelectAll();\n that.update();\n that.updateOptGroupSelect();\n that.options.onClick({\n label: $(this).parent().text(),\n value: $(this).val(),\n checked: $(this).prop('checked'),\n instance: that,\n });\n\n if (that.options.single && that.options.isOpen && !that.options.keepOpen) {\n that.close();\n }\n\n if (that.options.single) {\n var clickedVal = $(this).val();\n that.$selectItems\n .filter(function () {\n return $(this).val() !== clickedVal;\n })\n .each(function () {\n $(this).prop('checked', false);\n });\n that.update();\n }\n });\n },\n\n open: function () {\n if (this.$choice.hasClass('disabled')) {\n return;\n }\n this.options.isOpen = true;\n this.$choice.find('>div').addClass('open');\n this.$drop[this.animateMethod('show')]();\n\n // fix filter bug: no results show\n this.$selectAll.parent().show();\n this.$noResults.hide();\n\n // Fix #77: 'All selected' when no options\n if (!this.$el.children().length) {\n this.$selectAll.parent().hide();\n this.$noResults.show();\n }\n\n if (this.options.container) {\n var offset = this.$drop.offset();\n this.$drop.appendTo($(this.options.container));\n this.$drop.offset({\n top: offset.top,\n left: offset.left,\n });\n }\n\n if (this.options.filter) {\n this.$searchInput.val('');\n this.$searchInput.focus();\n this.filter();\n }\n this.options.onOpen();\n },\n\n close: function () {\n this.options.isOpen = false;\n this.$choice.find('>div').removeClass('open');\n this.$drop[this.animateMethod('hide')]();\n if (this.options.container) {\n this.$parent.append(this.$drop);\n this.$drop.css({\n top: 'auto',\n left: 'auto',\n });\n }\n this.options.onClose();\n },\n\n animateMethod: function (method) {\n var methods = {\n show: {\n fade: 'fadeIn',\n slide: 'slideDown',\n },\n hide: {\n fade: 'fadeOut',\n slide: 'slideUp',\n },\n };\n\n return methods[method][this.options.animate] || method;\n },\n\n update: function (isInit) {\n var selects = this.options.displayValues ? this.getSelects() : this.getSelects('text'),\n $span = this.$choice.find('>span'),\n sl = selects.length;\n\n if (sl === 0) {\n $span.addClass('placeholder').html(this.options.placeholder);\n } else if (this.options.allSelected && sl === this.$selectItems.length + this.$disableItems.length) {\n $span.removeClass('placeholder').html(this.options.allSelected);\n } else if (this.options.ellipsis && sl > this.options.minimumCountSelected) {\n $span\n .removeClass('placeholder')\n .text(selects.slice(0, this.options.minimumCountSelected).join(this.options.delimiter) + '...');\n } else if (this.options.countSelected && sl > this.options.minimumCountSelected) {\n $span\n .removeClass('placeholder')\n .html(\n this.options.countSelected\n .replace('#', selects.length)\n .replace('%', this.$selectItems.length + this.$disableItems.length)\n );\n } else {\n $span.removeClass('placeholder').text(selects.join(this.options.delimiter));\n }\n\n if (this.options.addTitle) {\n $span.prop('title', this.getSelects('text'));\n }\n\n // set selects to select\n this.$el.val(this.getSelects()).trigger('change');\n\n // add selected class to selected li\n this.$drop.find('li').removeClass('selected');\n this.$drop.find('input:checked').each(function () {\n $(this).parents('li').first().addClass('selected');\n });\n this.$drop.find('input').each(function () {\n $(this).trigger('change');\n });\n\n // trigger \" +\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// 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\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// 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\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\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\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(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\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\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\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\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\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\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\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!compilerCache[ 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\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\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}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\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\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\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\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\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\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\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\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] || match[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\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\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] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\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\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\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() { return true; } :\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 + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\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\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};\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\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\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\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\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 ] || (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\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\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\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\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 || elem.innerText || 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\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 && (!document.hasFocus || document.hasFocus()) && !!(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\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) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\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\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\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 || attr.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 ? argument + length : argument;\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\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\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\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\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 ] || (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\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( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\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\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\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\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\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\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\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).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\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\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\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\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\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\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\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( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\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\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].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\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 ) || context\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\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\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\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 return 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 (#9521)\n\t// Strict HTML recognition (#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 if ( nodeName( elem, \"iframe\" ) ) {\n return elem.contentDocument;\n }\n\n // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n // Treat the template element as a regular one in browsers that\n // don't support it.\n if ( nodeName( elem, \"template\" ) ) {\n elem = elem.content || elem;\n }\n\n return 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 master Deferred\n\t\t\tmaster = 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\tmaster.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, master.done( updateFunc( i ) ).resolve, master.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 ( master.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.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 ), master.reject );\n\t\t}\n\n\t\treturn master.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 #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\tvalue :\n\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 (#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 #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 (#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 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\tjQuery.contains( elem.ownerDocument, elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\nvar swap = function( elem, options, callback, args ) {\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.apply( elem, args || [] );\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\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 = ( 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// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE <=9 only\n\toption: [ 1, \"\" ],\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\n// Support: IE <=9 only\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\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 (#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, contains, 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 (#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\tcontains = jQuery.contains( elem.ownerDocument, 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 ( contains ) {\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\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 (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#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} )();\nvar documentElement = document.documentElement;\n\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 only\n// See #13393 for more info\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// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\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 = {};\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\t// Make a writable jQuery.Event from the native event object\n\t\tvar event = jQuery.event.fix( nativeEvent );\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ 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// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.rnamespace || event.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 (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #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 (#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\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\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\tfocus: {\n\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this.type === \"checkbox\" && this.click && nodeName( this, \"input\" ) ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn nodeName( event.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\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 (#504, #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\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\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\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/* eslint-disable max-len */\n\n\t// See https://github.com/eslint/eslint/issues/3229\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,\n\n\t/* eslint-enable */\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, pdataCur, 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.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.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 = concat.apply( [], 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 (#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 ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), doc, node );\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 && jQuery.contains( node.ownerDocument, 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.replace( rxhtmlTag, \"<$1>\" );\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 = jQuery.contains( elem.ownerDocument, 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 getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #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 rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\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\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = div.offsetWidth === 36 || \"absolute\";\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\treliableMarginLeftVal,\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 (#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\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\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, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument, 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\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\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t},\n\n\tcssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style;\n\n// Return a css property mapped to a potentially vendor prefixed property\nfunction vendorPropName( name ) {\n\n\t// Shortcut for names that are not vendor prefixed\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\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 property mapped along what jQuery.cssProps suggests or to\n// a vendor prefixed property.\nfunction finalPropName( name ) {\n\tvar ret = jQuery.cssProps[ name ];\n\tif ( !ret ) {\n\t\tret = jQuery.cssProps[ name ] = vendorPropName( name ) || name;\n\t}\n\treturn ret;\n}\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\t\t) );\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\t\tval = curCSS( elem, dimension, styles ),\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox;\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\t// Check for style in case a browser which returns unreliable values\n\t// for getComputedStyle silently falls back to the reliable elem.style\n\tvalueIsBorderBox = valueIsBorderBox &&\n\t\t( support.boxSizingReliable() || val === elem.style[ dimension ] );\n\n\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t// This happens for inline elements with no explicit setting (gh-3571)\n\t// Support: Android <=4.1 - 4.3 only\n\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\tif ( val === \"auto\" ||\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) {\n\n\t\tval = elem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ];\n\n\t\t// offsetWidth/offsetHeight provide border-box values\n\t\tvalueIsBorderBox = true;\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\"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 (#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 #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 (#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\tif ( type === \"number\" ) {\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\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t\t} ) :\n\t\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\t\t\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra && boxModelAdjustment(\n\t\t\t\t\telem,\n\t\t\t\t\tdimension,\n\t\t\t\t\textra,\n\t\t\t\t\tisBorderBox,\n\t\t\t\t\tstyles\n\t\t\t\t);\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 && support.scrollboxSize() === styles.position ) {\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\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\t( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ) ) {\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/* 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 )` (#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\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\t\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 && type !== false ) {\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.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\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// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#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 classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\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\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\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\telem.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 classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\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\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\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\telem.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 type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\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\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\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = 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\"\" :\n\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\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 (#14686, #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 (#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 (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#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\" ) || {} )[ 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 (#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\t\t\t\tvar doc = this.ownerDocument || 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,\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 = Date.now();\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\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\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\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\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} )\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} )\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// #7653, #8125, #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 (#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\toriginAnchor.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 #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\t\tjQuery( callbackContext ) :\n\t\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() ] = 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;\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 (#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 #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 (#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// #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++ ) + uncached;\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// 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\n\njQuery._evalUrl = function( url ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\t\t\"throws\": true\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// #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 #8605, #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// #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 requests\n\tif ( s.crossDomain ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"