{"version":3,"sources":["webpack://App.[name]/./vendor/jquery/jquery-1.10.2.js","webpack://App.[name]/(webpack)/buildin/module.js","webpack://App.[name]/(webpack)/buildin/global.js","webpack://App.[name]/./vendor/jquery/jquery-1.10.2.js-exposed","webpack://App.[name]/./reports/asAppOverview.js","webpack://App.[name]/./vendor/jquery/jquery-1.10.2.js-exposed?978e"],"names":["window","undefined","readyList","rootjQuery","location","document","docElem","documentElement","_jQuery","_$","$","class2type","core_deletedIds","core_concat","concat","core_push","push","core_slice","slice","core_indexOf","indexOf","core_toString","toString","core_hasOwn","hasOwnProperty","core_trim","trim","jQuery","selector","context","fn","init","core_pnum","source","core_rnotwhite","rtrim","rquickExpr","rsingleTag","rvalidchars","rvalidbraces","rvalidescape","rvalidtokens","rmsPrefix","rdashAlpha","fcamelCase","all","letter","toUpperCase","completed","event","addEventListener","type","readyState","detach","ready","removeEventListener","detachEvent","isArraylike","obj","length","isWindow","nodeType","prototype","jquery","constructor","match","elem","this","charAt","exec","find","merge","parseHTML","ownerDocument","test","isPlainObject","isFunction","attr","getElementById","parentNode","id","makeArray","toArray","call","get","num","pushStack","elems","ret","prevObject","each","callback","args","promise","done","apply","arguments","first","eq","last","i","len","j","map","end","sort","splice","extend","src","copyIsArray","copy","name","options","clone","target","deep","isArray","expando","Math","random","replace","noConflict","isReady","readyWait","holdReady","hold","wait","body","setTimeout","resolveWith","trigger","off","Array","isNumeric","isNaN","parseFloat","isFinite","String","key","e","support","ownLast","isEmptyObject","error","msg","Error","data","keepScripts","parsed","scripts","createElement","buildFragment","remove","childNodes","parseJSON","JSON","parse","Function","parseXML","xml","DOMParser","parseFromString","ActiveXObject","async","loadXML","getElementsByTagName","noop","globalEval","execScript","camelCase","string","nodeName","toLowerCase","text","arr","results","Object","inArray","max","second","l","grep","inv","arg","value","guid","proxy","tmp","access","chainable","emptyGet","raw","bulk","now","Date","getTime","swap","old","style","Deferred","attachEvent","top","frameElement","doScroll","doScrollCheck","split","cachedruns","Expr","getText","isXML","compile","outermostContext","sortInput","setDocument","documentIsHTML","rbuggyQSA","rbuggyMatches","matches","contains","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","hasDuplicate","sortOrder","a","b","hasOwn","pop","push_native","booleans","whitespace","characterEncoding","identifier","attributes","pseudos","RegExp","rcomma","rcombinators","rsibling","rattributeQuotes","rpseudo","ridentifier","matchExpr","rnative","rinputs","rheader","rescape","runescape","funescape","_","escaped","escapedWhitespace","high","fromCharCode","els","Sizzle","seed","m","groups","nid","newContext","newSelector","getElementsByClassName","qsa","tokenize","getAttribute","setAttribute","toSelector","join","querySelectorAll","qsaError","removeAttribute","tokens","token","getById","relative","shift","select","keys","cache","cacheLength","markFunction","assert","div","removeChild","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","node","doc","parent","defaultView","className","appendChild","createComment","innerHTML","firstChild","getElementsByName","filter","attrId","getAttributeNode","tag","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","val","specified","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","nodeValue","selectors","createPseudo","dir","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","simple","forward","ofType","outerCache","nodeIndex","start","useCache","lastChild","pseudo","setFilters","idx","matched","matcher","unmatched","innerText","lang","elemLang","hash","activeElement","hasFocus","href","tabIndex","disabled","checked","selected","selectedIndex","radio","checkbox","file","password","image","submit","reset","parseOnly","soFar","preFilters","cached","addCombinator","combinator","base","checkNonElements","doneName","dirkey","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","group","setMatchers","elementMatchers","matcherCachedRuns","bySet","byElement","superMatcher","expandContext","setMatched","matchedCount","outermost","contextBackup","dirrunsUnique","matcherFromGroupMatchers","div1","defaultValue","unique","isXMLDoc","optionsCache","Callbacks","object","flag","createOptions","firing","memory","fired","firingLength","firingIndex","firingStart","list","stack","once","fire","stopOnFalse","self","disable","add","has","index","empty","lock","locked","fireWith","func","tuples","state","always","deferred","fail","then","fns","newDefer","tuple","action","returned","resolve","reject","progress","notify","pipe","stateString","when","subordinate","progressValues","progressContexts","resolveContexts","resolveValues","remaining","updateFunc","values","notifyWith","fragment","opt","eventName","isSupported","cssText","getSetAttribute","leadingWhitespace","tbody","htmlSerialize","hrefNormalized","opacity","cssFloat","checkOn","optSelected","enctype","html5Clone","cloneNode","outerHTML","inlineBlockNeedsLayout","shrinkWrapBlocks","pixelPosition","deleteExpando","noCloneEvent","reliableMarginRight","boxSizingReliable","noCloneChecked","optDisabled","radioValue","createDocumentFragment","appendChecked","checkClone","click","change","focusin","backgroundClip","clearCloneStyle","container","marginDiv","tds","divReset","offsetHeight","display","reliableHiddenOffsets","zoom","boxSizing","offsetWidth","getComputedStyle","width","marginRight","rbrace","rmultiDash","internalData","pvt","acceptData","thisCache","internalKey","isNode","toJSON","internalRemoveData","isEmptyDataObject","cleanData","dataAttr","noData","hasData","removeData","_data","_removeData","queue","dequeue","startLength","hooks","_queueHooks","stop","setter","delay","time","fx","speeds","next","timeout","clearTimeout","clearQueue","count","defer","nodeHook","boolHook","rclass","rreturn","rfocusable","rclickable","ruseDefault","getSetInput","removeAttr","prop","removeProp","propFix","addClass","classes","clazz","proceed","removeClass","toggleClass","stateVal","classNames","hasClass","valHooks","set","option","one","optionSet","nType","attrHooks","bool","propName","attrNames","propHooks","tabindex","parseInt","getter","setAttributeNode","createAttribute","coords","button","contenteditable","rformElems","rkeyEvent","rmouseEvent","rfocusMorph","rtypenamespace","returnTrue","returnFalse","safeActiveElement","err","global","types","events","t","handleObjIn","special","eventHandle","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","delegateType","bindType","needsContext","namespace","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","onlyHandlers","ontype","bubbleType","eventPath","Event","isTrigger","namespace_re","noBubble","parentWindow","isPropagationStopped","preventDefault","isDefaultPrevented","_default","fix","handlerQueue","delegateTarget","preDispatch","currentTarget","isImmediatePropagationStopped","stopPropagation","postDispatch","sel","originalEvent","fixHook","fixHooks","mouseHooks","keyHooks","props","srcElement","metaKey","original","which","charCode","keyCode","eventDoc","fromElement","pageX","clientX","scrollLeft","clientLeft","pageY","clientY","scrollTop","clientTop","relatedTarget","toElement","load","focus","blur","beforeunload","returnValue","simulate","bubble","isSimulated","defaultPrevented","getPreventDefault","timeStamp","cancelBubble","stopImmediatePropagation","mouseenter","mouseleave","orig","related","submitBubbles","form","_submit_bubble","changeBubbles","propertyName","_just_changed","focusinBubbles","attaches","on","origFn","triggerHandler","isSimple","rparentsprev","rneedsContext","guaranteedUnique","children","contents","prev","sibling","winnow","qualifier","not","createSafeFragment","nodeNames","safeFrag","targets","is","closest","pos","prevAll","addBack","parents","parentsUntil","until","nextAll","nextUntil","prevUntil","siblings","contentDocument","contentWindow","reverse","n","r","rinlinejQuery","rnoshimcache","rleadingWhitespace","rxhtmlTag","rtagName","rtbody","rhtml","rnoInnerhtml","manipulation_rcheckableType","rchecked","rscriptType","rscriptTypeMasked","rcleanScript","wrapMap","legend","area","param","thead","tr","col","td","fragmentDiv","manipulationTarget","content","disableScript","restoreScript","setGlobalEval","refElements","cloneCopyEvent","dest","oldData","curData","fixCloneNodeIssues","defaultChecked","defaultSelected","getAll","found","fixDefaultChecked","optgroup","tfoot","colgroup","caption","th","append","createTextNode","domManip","prepend","insertBefore","before","after","keepData","dataAndEvents","deepDataAndEvents","html","replaceWith","allowIntersection","hasScripts","iNoClone","_evalUrl","appendTo","prependTo","insertAfter","replaceAll","insert","destElements","srcElements","inPage","selection","wrap","safe","nodes","url","ajax","dataType","wrapAll","wrapInner","unwrap","iframe","getStyles","curCSS","ralpha","ropacity","rposition","rdisplayswap","rmargin","rnumsplit","rnumnonpx","rrelNum","elemdisplay","BODY","cssShow","position","visibility","cssNormalTransform","letterSpacing","fontWeight","cssExpand","cssPrefixes","vendorPropName","capName","origName","isHidden","el","css","showHide","show","hidden","css_defaultDisplay","setPositiveNumber","subtract","augmentWidthOrHeight","extra","isBorderBox","styles","getWidthOrHeight","valueIsBorderBox","actualDisplay","write","close","hide","toggle","cssHooks","computed","cssNumber","cssProps","_computed","minWidth","maxWidth","getPropertyValue","currentStyle","left","rs","rsLeft","runtimeStyle","pixelLeft","$1","visible","margin","padding","border","prefix","suffix","expand","expanded","parts","r20","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","v","serialize","serializeArray","s","encodeURIComponent","ajaxSettings","hover","fnOver","fnOut","bind","unbind","delegate","undelegate","ajaxLocParts","ajaxLocation","ajax_nonce","ajax_rquery","rhash","rts","rheaders","rnoContent","rprotocol","rurl","_load","prefilters","transports","allTypes","addToPrefiltersOrTransports","structure","dataTypeExpression","dataTypes","inspectPrefiltersOrTransports","originalOptions","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","params","response","responseText","complete","status","active","lastModified","etag","isLocal","processData","contentType","accepts","json","responseFields","converters","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","cacheURL","responseHeadersString","timeoutTimer","fireGlobals","transport","responseHeaders","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","lname","overrideMimeType","mimeType","code","abort","statusText","finalText","success","method","crossDomain","hasContent","ifModified","headers","beforeSend","send","nativeStatusText","responses","isSuccess","modified","firstDataType","ct","finalDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","ajaxConvert","rejectWith","getJSON","getScript","script","head","scriptCharset","charset","onload","onreadystatechange","isAbort","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","xhrCallbacks","xhrSupported","xhrId","xhrOnUnloadAbort","createStandardXHR","XMLHttpRequest","xhr","createActiveXHR","cors","username","open","xhrFields","firefoxAccessException","unload","fxNow","timerId","rfxtypes","rfxnum","rrun","animationPrefilters","opts","tween","oldfire","anim","dataShow","unqueued","overflow","overflowX","overflowY","createTween","tweeners","unit","scale","maxIterations","createFxNow","animation","collection","Animation","properties","stopped","tick","currentTime","startTime","duration","percent","tweens","run","specialEasing","originalProperties","Tween","easing","gotoEnd","propFilter","timer","genFx","includeWidth","height","getWindow","tweener","prefilter","eased","step","cssFn","speed","animate","fadeTo","to","optall","doAnimation","finish","stopQueue","timers","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","linear","p","swing","cos","PI","interval","setInterval","clearInterval","slow","fast","animated","offset","setOffset","win","box","getBoundingClientRect","pageYOffset","pageXOffset","curTop","curLeft","curElem","curOffset","curCSSTop","curCSSLeft","curPosition","using","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","size","andSelf","module","exports","webpackPolyfill","deprecate","paths","defineProperty","enumerable","g","main","analytics","demographics","$appPromo","startHeight","endHeight","dblCheckEndHeight","demo_results","render"],"mappings":"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","file":"9.chunk.js?v=5bc56585c65a021fc053","sourcesContent":["/*!\n * jQuery JavaScript Library v1.10.2\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2013-07-03T13:48Z\n */\n(function( window, undefined ) {\n\n// Can't do this because several apps including ASP.NET trace\n// the stack via arguments.caller.callee and Firefox dies if\n// you try to trace through \"use strict\" call chains. (#13335)\n// Support: Firefox 18+\n//\"use strict\";\nvar\n\t// The deferred used on DOM ready\n\treadyList,\n\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// Support: IE<10\n\t// For `typeof xmlNode.method` instead of `xmlNode.method !== undefined`\n\tcore_strundefined = typeof undefined,\n\n\t// Use the correct document accordingly with window argument (sandbox)\n\tlocation = window.location,\n\tdocument = window.document,\n\tdocElem = document.documentElement,\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// [[Class]] -> type pairs\n\tclass2type = {},\n\n\t// List of deleted data cache ids, so we can reuse them\n\tcore_deletedIds = [],\n\n\tcore_version = \"1.10.2\",\n\n\t// Save a reference to some core methods\n\tcore_concat = core_deletedIds.concat,\n\tcore_push = core_deletedIds.push,\n\tcore_slice = core_deletedIds.slice,\n\tcore_indexOf = core_deletedIds.indexOf,\n\tcore_toString = class2type.toString,\n\tcore_hasOwn = class2type.hasOwnProperty,\n\tcore_trim = core_version.trim,\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context, rootjQuery );\n\t},\n\n\t// Used for matching numbers\n\tcore_pnum = /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source,\n\n\t// Used for splitting on whitespace\n\tcore_rnotwhite = /\\S+/g,\n\n\t// Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE)\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\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\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,\n\n\t// JSON RegExp\n\trvalidchars = /^[\\],:{}\\s]*$/,\n\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n\trvalidescape = /\\\\(?:[\"\\\\\\/bfnrt]|u[\\da-fA-F]{4})/g,\n\trvalidtokens = /\"[^\"\\\\\\r\\n]*\"|true|false|null|-?(?:\\d+\\.|)\\d+(?:[eE][+-]?\\d+|)/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([\\da-z])/gi,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t},\n\n\t// The ready event handler\n\tcompleted = function( event ) {\n\n\t\t// readyState === \"complete\" is good enough for us to call the dom ready in oldIE\n\t\tif ( document.addEventListener || event.type === \"load\" || document.readyState === \"complete\" ) {\n\t\t\tdetach();\n\t\t\tjQuery.ready();\n\t\t}\n\t},\n\t// Clean-up method for dom ready events\n\tdetach = function() {\n\t\tif ( document.addEventListener ) {\n\t\t\tdocument.removeEventListener( \"DOMContentLoaded\", completed, false );\n\t\t\twindow.removeEventListener( \"load\", completed, false );\n\n\t\t} else {\n\t\t\tdocument.detachEvent( \"onreadystatechange\", completed );\n\t\t\twindow.detachEvent( \"onload\", completed );\n\t\t}\n\t};\n\njQuery.fn = jQuery.prototype = {\n\t// The current version of jQuery being used\n\tjquery: core_version,\n\n\tconstructor: jQuery,\n\tinit: function( selector, context, rootjQuery ) {\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// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector.charAt(0) === \"<\" && selector.charAt( selector.length - 1 ) === \">\" && selector.length >= 3 ) {\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// scripts is true for back-compat\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\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( jQuery.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\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\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 || rootjQuery ).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.context = this[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 ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn core_slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\t\tret.context = this.context;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tready: function( fn ) {\n\t\t// Add the callback\n\t\tjQuery.ready.promise().done( fn );\n\n\t\treturn this;\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( core_slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: core_push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar src, copyIsArray, copy, name, options, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\t// Unique for each copy of jQuery on the page\n\t// Non-digits removed to match rinlinejQuery\n\texpando: \"jQuery\" + ( core_version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\tnoConflict: function( deep ) {\n\t\tif ( window.$ === jQuery ) {\n\t\t\twindow.$ = _$;\n\t\t}\n\n\t\tif ( deep && window.jQuery === jQuery ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\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// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\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// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( !document.body ) {\n\t\t\treturn setTimeout( jQuery.ready );\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\n\t\t// Trigger any bound ready events\n\t\tif ( jQuery.fn.trigger ) {\n\t\t\tjQuery( document ).trigger(\"ready\").off(\"ready\");\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\tisWindow: function( obj ) {\n\t\t/* jshint eqeqeq: false */\n\t\treturn obj != null && obj == obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\t\treturn !isNaN( parseFloat(obj) ) && isFinite( obj );\n\t},\n\n\ttype: function( obj ) {\n\t\tif ( obj == null ) {\n\t\t\treturn String( obj );\n\t\t}\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\t\tclass2type[ core_toString.call(obj) ] || \"object\" :\n\t\t\ttypeof obj;\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\tvar key;\n\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// Not own constructor property must be Object\n\t\t\tif ( obj.constructor &&\n\t\t\t\t!core_hasOwn.call(obj, \"constructor\") &&\n\t\t\t\t!core_hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\t// IE8,9 Will throw exceptions on certain host objects #9897\n\t\t\treturn false;\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Handle iteration over inherited properties before own properties.\n\t\tif ( jQuery.support.ownLast ) {\n\t\t\tfor ( key in obj ) {\n\t\t\t\treturn core_hasOwn.call( obj, key );\n\t\t\t}\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || core_hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\t// data: string of html\n\t// context (optional): If specified, the fragment will be created in this context, defaults to document\n\t// keepScripts (optional): If true, will include scripts passed in the html string\n\tparseHTML: function( data, context, keepScripts ) {\n\t\tif ( !data || typeof data !== \"string\" ) {\n\t\t\treturn null;\n\t\t}\n\t\tif ( typeof context === \"boolean\" ) {\n\t\t\tkeepScripts = context;\n\t\t\tcontext = false;\n\t\t}\n\t\tcontext = context || document;\n\n\t\tvar parsed = rsingleTag.exec( data ),\n\t\t\tscripts = !keepScripts && [];\n\n\t\t// Single tag\n\t\tif ( parsed ) {\n\t\t\treturn [ context.createElement( parsed[1] ) ];\n\t\t}\n\n\t\tparsed = jQuery.buildFragment( [ data ], context, scripts );\n\t\tif ( scripts ) {\n\t\t\tjQuery( scripts ).remove();\n\t\t}\n\t\treturn jQuery.merge( [], parsed.childNodes );\n\t},\n\n\tparseJSON: function( data ) {\n\t\t// Attempt to parse using the native JSON parser first\n\t\tif ( window.JSON && window.JSON.parse ) {\n\t\t\treturn window.JSON.parse( data );\n\t\t}\n\n\t\tif ( data === null ) {\n\t\t\treturn data;\n\t\t}\n\n\t\tif ( typeof data === \"string\" ) {\n\n\t\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\t\tdata = jQuery.trim( data );\n\n\t\t\tif ( data ) {\n\t\t\t\t// Make sure the incoming data is actual JSON\n\t\t\t\t// Logic borrowed from http://json.org/json2.js\n\t\t\t\tif ( rvalidchars.test( data.replace( rvalidescape, \"@\" )\n\t\t\t\t\t.replace( rvalidtokens, \"]\" )\n\t\t\t\t\t.replace( rvalidbraces, \"\")) ) {\n\n\t\t\t\t\treturn ( new Function( \"return \" + data ) )();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t},\n\n\t// Cross-browser xml parsing\n\tparseXML: function( data ) {\n\t\tvar xml, tmp;\n\t\tif ( !data || typeof data !== \"string\" ) {\n\t\t\treturn null;\n\t\t}\n\t\ttry {\n\t\t\tif ( window.DOMParser ) { // Standard\n\t\t\t\ttmp = new DOMParser();\n\t\t\t\txml = tmp.parseFromString( data , \"text/xml\" );\n\t\t\t} else { // IE\n\t\t\t\txml = new ActiveXObject( \"Microsoft.XMLDOM\" );\n\t\t\t\txml.async = \"false\";\n\t\t\t\txml.loadXML( data );\n\t\t\t}\n\t\t} catch( e ) {\n\t\t\txml = undefined;\n\t\t}\n\t\tif ( !xml || !xml.documentElement || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\t\tjQuery.error( \"Invalid XML: \" + data );\n\t\t}\n\t\treturn xml;\n\t},\n\n\tnoop: function() {},\n\n\t// Evaluates a script in a global context\n\t// Workarounds based on findings by Jim Driscoll\n\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\n\tglobalEval: function( data ) {\n\t\tif ( data && jQuery.trim( data ) ) {\n\t\t\t// We use execScript on Internet Explorer\n\t\t\t// We use an anonymous function so that context is window\n\t\t\t// rather than jQuery in Firefox\n\t\t\t( window.execScript || function( data ) {\n\t\t\t\twindow[ \"eval\" ].call( window, data );\n\t\t\t} )( data );\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( obj, callback, args ) {\n\t\tvar value,\n\t\t\ti = 0,\n\t\t\tlength = obj.length,\n\t\t\tisArray = isArraylike( obj );\n\n\t\tif ( args ) {\n\t\t\tif ( isArray ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tvalue = callback.apply( obj[ i ], args );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( i in obj ) {\n\t\t\t\t\tvalue = callback.apply( obj[ i ], args );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isArray ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tvalue = callback.call( obj[ i ], i, obj[ i ] );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( i in obj ) {\n\t\t\t\t\tvalue = callback.call( obj[ i ], i, obj[ i ] );\n\n\t\t\t\t\tif ( value === false ) {\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 obj;\n\t},\n\n\t// Use native String.trim function wherever possible\n\ttrim: core_trim && !core_trim.call(\"\\uFEFF\\xA0\") ?\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\tcore_trim.call( text );\n\t\t} :\n\n\t\t// Otherwise use our own trimming functionality\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArraylike( Object(arr) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tcore_push.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\tvar len;\n\n\t\tif ( arr ) {\n\t\t\tif ( core_indexOf ) {\n\t\t\t\treturn core_indexOf.call( arr, elem, i );\n\t\t\t}\n\n\t\t\tlen = arr.length;\n\t\t\ti = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t// Skip accessing in sparse arrays\n\t\t\t\tif ( i in arr && arr[ i ] === elem ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar l = second.length,\n\t\t\ti = first.length,\n\t\t\tj = 0;\n\n\t\tif ( typeof l === \"number\" ) {\n\t\t\tfor ( ; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar retVal,\n\t\t\tret = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length;\n\t\tinv = !!inv;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tretVal = !!callback( elems[ i ], i );\n\t\t\tif ( inv !== retVal ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar value,\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tisArray = isArraylike( elems ),\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their\n\t\tif ( isArray ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn core_concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar args, proxy, tmp;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = core_slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context || this, args.concat( core_slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\t// Multifunctional method to get and set values of a collection\n\t// The value/s can optionally be executed if it's a function\n\taccess: function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\t\tvar i = 0,\n\t\t\tlength = elems.length,\n\t\t\tbulk = key == null;\n\n\t\t// Sets many values\n\t\tif ( jQuery.type( key ) === \"object\" ) {\n\t\t\tchainable = true;\n\t\t\tfor ( i in key ) {\n\t\t\t\tjQuery.access( elems, fn, i, key[i], true, emptyGet, raw );\n\t\t\t}\n\n\t\t// Sets one value\n\t\t} else if ( value !== undefined ) {\n\t\t\tchainable = true;\n\n\t\t\tif ( !jQuery.isFunction( value ) ) {\n\t\t\t\traw = true;\n\t\t\t}\n\n\t\t\tif ( bulk ) {\n\t\t\t\t// Bulk operations run against the entire set\n\t\t\t\tif ( raw ) {\n\t\t\t\t\tfn.call( elems, value );\n\t\t\t\t\tfn = null;\n\n\t\t\t\t// ...except when executing function values\n\t\t\t\t} else {\n\t\t\t\t\tbulk = fn;\n\t\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( fn ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tfn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn chainable ?\n\t\t\telems :\n\n\t\t\t// Gets\n\t\t\tbulk ?\n\t\t\t\tfn.call( elems ) :\n\t\t\t\tlength ? fn( elems[0], key ) : emptyGet;\n\t},\n\n\tnow: function() {\n\t\treturn ( new Date() ).getTime();\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations.\n\t// Note: this method belongs to the css module but it's needed here for the support module.\n\t// If support gets modularized, this method should be moved back to the css module.\n\tswap: function( elem, options, callback, args ) {\n\t\tvar ret, name,\n\t\t\told = {};\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tret = callback.apply( elem, args || [] );\n\n\t\t// Revert the old values\n\t\tfor ( name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\n\t\treturn ret;\n\t}\n});\n\njQuery.ready.promise = function( obj ) {\n\tif ( !readyList ) {\n\n\t\treadyList = jQuery.Deferred();\n\n\t\t// Catch cases where $(document).ready() is called after the browser event has already occurred.\n\t\t// we once tried to use readyState \"interactive\" here, but it caused issues like the one\n\t\t// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\tsetTimeout( jQuery.ready );\n\n\t\t// Standards-based browsers support DOMContentLoaded\n\t\t} else if ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", completed, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", completed, false );\n\n\t\t// If IE event model is used\n\t\t} else {\n\t\t\t// Ensure firing before onload, maybe late but safe also for iframes\n\t\t\tdocument.attachEvent( \"onreadystatechange\", completed );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", completed );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar top = false;\n\n\t\t\ttry {\n\t\t\t\ttop = window.frameElement == null && document.documentElement;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( top && top.doScroll ) {\n\t\t\t\t(function doScrollCheck() {\n\t\t\t\t\tif ( !jQuery.isReady ) {\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t// Use the trick by Diego Perini\n\t\t\t\t\t\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\t\t\t\t\t\ttop.doScroll(\"left\");\n\t\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t\treturn setTimeout( doScrollCheck, 50 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// detach all dom ready events\n\t\t\t\t\t\tdetach();\n\n\t\t\t\t\t\t// and execute any waiting functions\n\t\t\t\t\t\tjQuery.ready();\n\t\t\t\t\t}\n\t\t\t\t})();\n\t\t\t}\n\t\t}\n\t}\n\treturn readyList.promise( obj );\n};\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nfunction isArraylike( obj ) {\n\tvar length = obj.length,\n\t\ttype = jQuery.type( obj );\n\n\tif ( jQuery.isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\tif ( obj.nodeType === 1 && length ) {\n\t\treturn true;\n\t}\n\n\treturn type === \"array\" || type !== \"function\" &&\n\t\t( length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj );\n}\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n/*!\n * Sizzle CSS Selector Engine v1.10.2\n * http://sizzlejs.com/\n *\n * Copyright 2013 jQuery Foundation, Inc. and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2013-07-03\n */\n(function( window, undefined ) {\n\nvar i,\n\tsupport,\n\tcachedruns,\n\tExpr,\n\tgetText,\n\tisXML,\n\tcompile,\n\toutermostContext,\n\tsortInput,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + -(new Date()),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\thasDuplicate = false,\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// General-purpose constants\n\tstrundefined = typeof undefined,\n\tMAX_NEGATIVE = 1 << 31,\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf if we can't use a native one\n\tindexOf = arr.indexOf || function( elem ) {\n\t\tvar i = 0,\n\t\t\tlen = this.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( this[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\t// http://www.w3.org/TR/css3-syntax/#characters\n\tcharacterEncoding = \"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",\n\n\t// Loosely modeled on CSS identifier characters\n\t// An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors\n\t// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = characterEncoding.replace( \"w\", \"w#\" ),\n\n\t// Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + characterEncoding + \")\" + whitespace +\n\t\t\"*(?:([*^$|!~]?=)\" + whitespace + \"*(?:(['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\3|(\" + identifier + \")|)|)\" + whitespace + \"*\\\\]\",\n\n\t// Prefer arguments quoted,\n\t// then not containing pseudos/brackets,\n\t// then attribute selectors/non-parenthetical expressions,\n\t// then anything else\n\t// These preferences are here to reduce the number of selectors\n\t// needing tokenize in the PSEUDO preFilter\n\tpseudos = \":(\" + characterEncoding + \")(?:\\\\(((['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\3|((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes.replace( 3, 8 ) + \")*)|.*)\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trsibling = new RegExp( whitespace + \"*[+~]\" ),\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + characterEncoding + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + characterEncoding + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + characterEncoding.replace( \"w\", \"w*\" ) + \")\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trescape = /'|\\\\/g,\n\n\t// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\t// BMP codepoint\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t};\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar match, elem, m, nodeType,\n\t\t// QSA vars\n\t\ti, groups, old, nid, newContext, newSelector;\n\n\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\n\tcontext = context || document;\n\tresults = results || [];\n\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tif ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\n\tif ( documentIsHTML && !seed ) {\n\n\t\t// Shortcuts\n\t\tif ( (match = rquickExpr.exec( selector )) ) {\n\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\tif ( (m = match[1]) ) {\n\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\telem = context.getElementById( m );\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE, Opera, and Webkit return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Context is not a document\n\t\t\t\t\tif ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&\n\t\t\t\t\t\tcontains( context, elem ) && elem.id === m ) {\n\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t} else if ( match[2] ) {\n\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\treturn results;\n\n\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) {\n\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\treturn results;\n\t\t\t}\n\t\t}\n\n\t\t// QSA path\n\t\tif ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\t\t\tnid = old = expando;\n\t\t\tnewContext = context;\n\t\t\tnewSelector = nodeType === 9 && selector;\n\n\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t// IE 8 doesn't work on object elements\n\t\t\tif ( nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\tgroups = tokenize( selector );\n\n\t\t\t\tif ( (old = context.getAttribute(\"id\")) ) {\n\t\t\t\t\tnid = old.replace( rescape, \"\\\\$&\" );\n\t\t\t\t} else {\n\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t}\n\t\t\t\tnid = \"[id='\" + nid + \"'] \";\n\n\t\t\t\ti = groups.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tgroups[i] = nid + toSelector( groups[i] );\n\t\t\t\t}\n\t\t\t\tnewContext = rsibling.test( selector ) && context.parentNode || context;\n\t\t\t\tnewSelector = groups.join(\",\");\n\t\t\t}\n\n\t\t\tif ( newSelector ) {\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch(qsaError) {\n\t\t\t\t} finally {\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.removeAttribute(\"id\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {Function(string, Object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key += \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created div and expects a boolean result\n */\nfunction assert( fn ) {\n\tvar div = document.createElement(\"div\");\n\n\ttry {\n\t\treturn !!fn( div );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( div.parentNode ) {\n\t\t\tdiv.parentNode.removeChild( div );\n\t\t}\n\t\t// release memory in IE\n\t\tdiv = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = attrs.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\t( ~b.sourceIndex || MAX_NEGATIVE ) -\n\t\t\t( ~a.sourceIndex || MAX_NEGATIVE );\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect xml\n * @param {Element|Object} elem An element or a document\n */\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar doc = node ? node.ownerDocument || node : preferredDoc,\n\t\tparent = doc.defaultView;\n\n\t// If no document and documentElement is available, return\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Set our document\n\tdocument = doc;\n\tdocElem = doc.documentElement;\n\n\t// Support tests\n\tdocumentIsHTML = !isXML( doc );\n\n\t// Support: IE>8\n\t// If iframe document is assigned to \"document\" variable and if iframe has been reloaded,\n\t// IE will throw \"permission denied\" error when accessing \"document\" variable, see jQuery #13936\n\t// IE6-8 do not support the defaultView property so parent will be undefined\n\tif ( parent && parent.attachEvent && parent !== parent.top ) {\n\t\tparent.attachEvent( \"onbeforeunload\", function() {\n\t\t\tsetDocument();\n\t\t});\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans)\n\tsupport.attributes = assert(function( div ) {\n\t\tdiv.className = \"i\";\n\t\treturn !div.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( div ) {\n\t\tdiv.appendChild( doc.createComment(\"\") );\n\t\treturn !div.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Check if getElementsByClassName can be trusted\n\tsupport.getElementsByClassName = assert(function( div ) {\n\t\tdiv.innerHTML = \"
\";\n\n\t\t// Support: Safari<4\n\t\t// Catch class over-caching\n\t\tdiv.firstChild.className = \"i\";\n\t\t// Support: Opera<10\n\t\t// Catch gEBCN failure to find non-leading classes\n\t\treturn div.getElementsByClassName(\"i\").length === 2;\n\t});\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( div ) {\n\t\tdocElem.appendChild( div ).id = expando;\n\t\treturn !doc.getElementsByName || !doc.getElementsByName( expando ).length;\n\t});\n\n\t// ID find and filter\n\tif ( support.getById ) {\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== strundefined && documentIsHTML ) {\n\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [m] : [];\n\t\t\t}\n\t\t};\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t} else {\n\t\t// Support: IE6/7\n\t\t// getElementById is not reliable as a find shortcut\n\t\tdelete Expr.find[\"ID\"];\n\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== strundefined ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\t\t\t}\n\t\t} :\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See http://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( div ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// http://bugs.jquery.com/ticket/12359\n\t\t\tdiv.innerHTML = \"\";\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !div.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\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 ( !div.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\n\n\t\t\t// Support: Opera 10-12/IE8\n\t\t\t// ^= $= *= and empty values\n\t\t\t// Should not select anything\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type attribute is restricted during .innerHTML assignment\n\t\t\tvar input = doc.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tdiv.appendChild( input ).setAttribute( \"t\", \"\" );\n\n\t\t\tif ( div.querySelectorAll(\"[t^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + 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 ( !div.querySelectorAll(\":enabled\").length ) {\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\tdiv.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( div ) {\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( div, \"div\" );\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( div, \"[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\n\t// Element contains another\n\t// Purposefully does not implement inclusive descendent\n\t// As in, an element does not contain itself\n\tcontains = rnative.test( docElem.contains ) || docElem.compareDocumentPosition ?\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 = docElem.compareDocumentPosition ?\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\tvar compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b );\n\n\t\tif ( compare ) {\n\t\t\t// Disconnected nodes\n\t\t\tif ( compare & 1 ||\n\t\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t\tif ( a === doc || contains(preferredDoc, a) ) {\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\tif ( b === doc || contains(preferredDoc, b) ) {\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\n\t\t\t\t// Maintain original order\n\t\t\t\treturn sortInput ?\n\t\t\t\t\t( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :\n\t\t\t\t\t0;\n\t\t\t}\n\n\t\t\treturn compare & 4 ? -1 : 1;\n\t\t}\n\n\t\t// Not directly comparable, sort on existence of method\n\t\treturn a.compareDocumentPosition ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\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// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\t} else if ( !aup || !bup ) {\n\t\t\treturn a === doc ? -1 :\n\t\t\t\tb === doc ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf.call( sortInput, a ) - indexOf.call( 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 doc;\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( !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\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\t\tval;\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\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\tfor ( ; (node = elem[i]); 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 (see #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[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[5] && 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] && match[4] !== undefined ) {\n\t\t\t\tmatch[2] = match[4];\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 !== strundefined && 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 + \" \" ).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, outerCache, node, diff, 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\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 ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {\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\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || (parent[ expando ] = {});\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[0] === dirruns && cache[1];\n\t\t\t\t\t\t\tdiff = cache[0] === dirruns && 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\touterCache[ 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// Use previously-cached element index if available\n\t\t\t\t\t\t} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {\n\t\t\t\t\t\t\tdiff = cache[1];\n\n\t\t\t\t\t\t// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t} else {\n\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\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\tif ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {\n\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\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\tbreak;\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.call( 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\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\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\": function( elem ) {\n\t\t\treturn elem.disabled === false;\n\t\t},\n\n\t\t\"disabled\": function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\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 only affected by element nodes and content nodes(including text(3), cdata(4)),\n\t\t\t// not comment, processing instructions, or others\n\t\t\t// Thanks to Diego Perini for the nodeName shortcut\n\t\t\t// Greater than \"@\" means alpha characters (specifically not starting with \"#\" or \"?\")\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeName > \"@\" || elem.nodeType === 3 || elem.nodeType === 4 ) {\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\t// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)\n\t\t\t// use getAttribute instead to test this case\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === elem.type );\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\nfunction tokenize( 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\tcheckNonElements = base && dir === \"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} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar data, cache, outerCache,\n\t\t\t\tdirkey = dirruns + \" \" + doneName;\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from dir 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\t\t\t\t\t\tif ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) {\n\t\t\t\t\t\t\tif ( (data = cache[1]) === true || data === cachedruns ) {\n\t\t\t\t\t\t\t\treturn data === true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcache = outerCache[ dir ] = [ dirkey ];\n\t\t\t\t\t\t\tcache[1] = matcher( elem, context, xml ) || cachedruns;\n\t\t\t\t\t\t\tif ( cache[1] === true ) {\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};\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 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.call( 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.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\treturn ( !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} ];\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\t// A counter to specify which element is currently being matched\n\tvar matcherCachedRuns = 0,\n\t\tbySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, expandContext ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tsetMatched = [],\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\toutermost = expandContext != null,\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", expandContext && context.parentNode || context ),\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\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context !== document && context;\n\t\t\t\tcachedruns = matcherCachedRuns;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Keep `i` a string if there are no elements so `matchedCount` will be \"00\" below\n\t\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context, 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\tcachedruns = ++matcherCachedRuns;\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// Apply set filters to unmatched elements\n\t\t\tmatchedCount += i;\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, group /* 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 ( !group ) {\n\t\t\tgroup = tokenize( selector );\n\t\t}\n\t\ti = group.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( group[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\t}\n\treturn cached;\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 select( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tmatch = tokenize( selector );\n\n\tif ( !seed ) {\n\t\t// Try to minimize operations if there is only one group\n\t\tif ( match.length === 1 ) {\n\n\t\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t\ttokens = match[0] = match[0].slice( 0 );\n\t\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\t\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\n\t\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\t\tif ( !context ) {\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t\t}\n\n\t\t\t// Fetch a seed set for right-to-left matching\n\t\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\ttoken = tokens[i];\n\n\t\t\t\t// Abort if we hit a combinator\n\t\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\t\tif ( (seed = find(\n\t\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\t\trsibling.test( tokens[0].type ) && context.parentNode || context\n\t\t\t\t\t)) ) {\n\n\t\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\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\t}\n\n\t// Compile and execute a filtering function\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\tcompile( selector, match )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\trsibling.test( selector )\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\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( div1 ) {\n\t// Should return 1, but returns 4 (following)\n\treturn div1.compareDocumentPosition( document.createElement(\"div\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( div ) {\n\tdiv.innerHTML = \"\";\n\treturn div.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( div ) {\n\tdiv.innerHTML = \"\";\n\tdiv.firstChild.setAttribute( \"value\", \"\" );\n\treturn div.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( div ) {\n\treturn div.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn (val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\telem[ name ] === true ? name.toLowerCase() : null;\n\t\t}\n\t});\n}\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.pseudos;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n})( window );\n// String to Object options format cache\nvar optionsCache = {};\n\n// Convert String-formatted options into Object-formatted ones and store in cache\nfunction createOptions( options ) {\n\tvar object = optionsCache[ options ] = {};\n\tjQuery.each( options.match( core_rnotwhite ) || [], 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\t( optionsCache[ options ] || createOptions( options ) ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\t\t// Last fire value (for non-forgettable lists)\n\t\tmemory,\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\t\t// End of the loop when firing\n\t\tfiringLength,\n\t\t// Index of currently firing callback (modified by remove if needed)\n\t\tfiringIndex,\n\t\t// First callback to fire (used internally by add and fireWith)\n\t\tfiringStart,\n\t\t// Actual callback list\n\t\tlist = [],\n\t\t// Stack of fire calls for repeatable lists\n\t\tstack = !options.once && [],\n\t\t// Fire callbacks\n\t\tfire = function( data ) {\n\t\t\tmemory = options.memory && data;\n\t\t\tfired = true;\n\t\t\tfiringIndex = firingStart || 0;\n\t\t\tfiringStart = 0;\n\t\t\tfiringLength = list.length;\n\t\t\tfiring = true;\n\t\t\tfor ( ; list && firingIndex < firingLength; firingIndex++ ) {\n\t\t\t\tif ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {\n\t\t\t\t\tmemory = false; // To prevent further calls using add\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfiring = false;\n\t\t\tif ( list ) {\n\t\t\t\tif ( stack ) {\n\t\t\t\t\tif ( stack.length ) {\n\t\t\t\t\t\tfire( stack.shift() );\n\t\t\t\t\t}\n\t\t\t\t} else if ( memory ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t} else {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Actual Callbacks object\n\t\tself = {\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\t\t\t\t\t// First, we save the current length\n\t\t\t\t\tvar start = list.length;\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\tvar type = jQuery.type( arg );\n\t\t\t\t\t\t\tif ( type === \"function\" ) {\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 && type !== \"string\" ) {\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\t\t\t\t\t// Do we need to add the callbacks to the\n\t\t\t\t\t// current firing batch?\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tfiringLength = list.length;\n\t\t\t\t\t// With memory, if we're not firing then\n\t\t\t\t\t// we should call right away\n\t\t\t\t\t} else if ( memory ) {\n\t\t\t\t\t\tfiringStart = start;\n\t\t\t\t\t\tfire( memory );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\t\tvar index;\n\t\t\t\t\t\twhile( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\t\tlist.splice( index, 1 );\n\t\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\t\t\tif ( index <= firingLength ) {\n\t\t\t\t\t\t\t\t\tfiringLength--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\t\t\tfiringIndex--;\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\t\t\t\treturn this;\n\t\t\t},\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 ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );\n\t\t\t},\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tlist = [];\n\t\t\t\tfiringLength = 0;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Have the list do nothing anymore\n\t\t\tdisable: function() {\n\t\t\t\tlist = stack = memory = undefined;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it disabled?\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\t\t\t// Lock the list in its current state\n\t\t\tlock: function() {\n\t\t\t\tstack = undefined;\n\t\t\t\tif ( !memory ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it locked?\n\t\t\tlocked: function() {\n\t\t\t\treturn !stack;\n\t\t\t},\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 ( list && ( !fired || stack ) ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tstack.push( args );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfire( args );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\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\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};\njQuery.extend({\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\t\t\t\t// action, add listener, listener list, final state\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks(\"once memory\"), \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks(\"once memory\"), \"rejected\" ],\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks(\"memory\") ]\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\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\t\t\t\t\treturn jQuery.Deferred(function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\t\t\t\t\tvar action = tuple[ 0 ],\n\t\t\t\t\t\t\t\tfn = jQuery.isFunction( fns[ i ] ) && fns[ i ];\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\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 && jQuery.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.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\t\t.progress( newDefer.notify );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ action + \"With\" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );\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\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// Keep pipe for back-compat\n\t\tpromise.pipe = promise.then;\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[ 3 ];\n\n\t\t\t// promise[ done | fail | progress ] = 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(function() {\n\t\t\t\t\t// state = [ resolved | rejected ]\n\t\t\t\t\tstate = stateString;\n\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n\t\t\t}\n\n\t\t\t// deferred[ resolve | reject | notify ]\n\t\t\tdeferred[ tuple[0] ] = function() {\n\t\t\t\tdeferred[ tuple[0] + \"With\" ]( this === deferred ? promise : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\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( subordinate /* , ..., subordinateN */ ) {\n\t\tvar i = 0,\n\t\t\tresolveValues = core_slice.call( arguments ),\n\t\t\tlength = resolveValues.length,\n\n\t\t\t// the count of uncompleted subordinates\n\t\t\tremaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\n\n\t\t\t// the master Deferred. If resolveValues consist of only a single Deferred, just use that.\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n\n\t\t\t// Update function for both resolve and progress values\n\t\t\tupdateFunc = function( i, contexts, values ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tcontexts[ i ] = this;\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value;\n\t\t\t\t\tif( values === progressValues ) {\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\n\t\t\t\t\t} else if ( !( --remaining ) ) {\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tprogressValues, progressContexts, resolveContexts;\n\n\t\t// add listeners to Deferred subordinates; treat others as resolved\n\t\tif ( length > 1 ) {\n\t\t\tprogressValues = new Array( length );\n\t\t\tprogressContexts = new Array( length );\n\t\t\tresolveContexts = new Array( length );\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\n\t\t\t\t\tresolveValues[ i ].promise()\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\n\t\t\t\t\t\t.fail( deferred.reject )\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) );\n\t\t\t\t} else {\n\t\t\t\t\t--remaining;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// if we're not waiting on anything, resolve the master\n\t\tif ( !remaining ) {\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\n\t\t}\n\n\t\treturn deferred.promise();\n\t}\n});\njQuery.support = (function( support ) {\n\n\tvar all, a, input, select, fragment, opt, eventName, isSupported, i,\n\t\tdiv = document.createElement(\"div\");\n\n\t// Setup\n\tdiv.setAttribute( \"className\", \"t\" );\n\tdiv.innerHTML = \"
a\";\n\n\t// Finish early in limited (non-browser) environments\n\tall = div.getElementsByTagName(\"*\") || [];\n\ta = div.getElementsByTagName(\"a\")[ 0 ];\n\tif ( !a || !a.style || !all.length ) {\n\t\treturn support;\n\t}\n\n\t// First batch of tests\n\tselect = document.createElement(\"select\");\n\topt = select.appendChild( document.createElement(\"option\") );\n\tinput = div.getElementsByTagName(\"input\")[ 0 ];\n\n\ta.style.cssText = \"top:1px;float:left;opacity:.5\";\n\n\t// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)\n\tsupport.getSetAttribute = div.className !== \"t\";\n\n\t// IE strips leading whitespace when .innerHTML is used\n\tsupport.leadingWhitespace = div.firstChild.nodeType === 3;\n\n\t// Make sure that tbody elements aren't automatically inserted\n\t// IE will insert them into empty tables\n\tsupport.tbody = !div.getElementsByTagName(\"tbody\").length;\n\n\t// Make sure that link elements get serialized correctly by innerHTML\n\t// This requires a wrapper element in IE\n\tsupport.htmlSerialize = !!div.getElementsByTagName(\"link\").length;\n\n\t// Get the style information from getAttribute\n\t// (IE uses .cssText instead)\n\tsupport.style = /top/.test( a.getAttribute(\"style\") );\n\n\t// Make sure that URLs aren't manipulated\n\t// (IE normalizes it by default)\n\tsupport.hrefNormalized = a.getAttribute(\"href\") === \"/a\";\n\n\t// Make sure that element opacity exists\n\t// (IE uses filter instead)\n\t// Use a regex to work around a WebKit issue. See #5145\n\tsupport.opacity = /^0.5/.test( a.style.opacity );\n\n\t// Verify style float existence\n\t// (IE uses styleFloat instead of cssFloat)\n\tsupport.cssFloat = !!a.style.cssFloat;\n\n\t// Check the default checkbox/radio value (\"\" on WebKit; \"on\" elsewhere)\n\tsupport.checkOn = !!input.value;\n\n\t// Make sure that a selected-by-default option has a working selected property.\n\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\tsupport.optSelected = opt.selected;\n\n\t// Tests for enctype support on a form (#6743)\n\tsupport.enctype = !!document.createElement(\"form\").enctype;\n\n\t// Makes sure cloning an html5 element does not cause problems\n\t// Where outerHTML is undefined, this still works\n\tsupport.html5Clone = document.createElement(\"nav\").cloneNode( true ).outerHTML !== \"<:nav>\";\n\n\t// Will be defined later\n\tsupport.inlineBlockNeedsLayout = false;\n\tsupport.shrinkWrapBlocks = false;\n\tsupport.pixelPosition = false;\n\tsupport.deleteExpando = true;\n\tsupport.noCloneEvent = true;\n\tsupport.reliableMarginRight = true;\n\tsupport.boxSizingReliable = true;\n\n\t// Make sure checked status is properly cloned\n\tinput.checked = true;\n\tsupport.noCloneChecked = input.cloneNode( true ).checked;\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as disabled)\n\tselect.disabled = true;\n\tsupport.optDisabled = !opt.disabled;\n\n\t// Support: IE<9\n\ttry {\n\t\tdelete div.test;\n\t} catch( e ) {\n\t\tsupport.deleteExpando = false;\n\t}\n\n\t// Check if we can trust getAttribute(\"value\")\n\tinput = document.createElement(\"input\");\n\tinput.setAttribute( \"value\", \"\" );\n\tsupport.input = input.getAttribute( \"value\" ) === \"\";\n\n\t// Check if an input maintains its value after becoming a radio\n\tinput.value = \"t\";\n\tinput.setAttribute( \"type\", \"radio\" );\n\tsupport.radioValue = input.value === \"t\";\n\n\t// #11217 - WebKit loses check when the name is after the checked attribute\n\tinput.setAttribute( \"checked\", \"t\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tfragment = document.createDocumentFragment();\n\tfragment.appendChild( input );\n\n\t// Check if a disconnected checkbox will retain its checked\n\t// value of true after appended to the DOM (IE6/7)\n\tsupport.appendChecked = input.checked;\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE<9\n\t// Opera does not clone events (and typeof div.attachEvent === undefined).\n\t// IE9-10 clones events bound via attachEvent, but they don't trigger with .click()\n\tif ( div.attachEvent ) {\n\t\tdiv.attachEvent( \"onclick\", function() {\n\t\t\tsupport.noCloneEvent = false;\n\t\t});\n\n\t\tdiv.cloneNode( true ).click();\n\t}\n\n\t// Support: IE<9 (lack submit/change bubble), Firefox 17+ (lack focusin event)\n\t// Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP)\n\tfor ( i in { submit: true, change: true, focusin: true }) {\n\t\tdiv.setAttribute( eventName = \"on\" + i, \"t\" );\n\n\t\tsupport[ i + \"Bubbles\" ] = eventName in window || div.attributes[ eventName ].expando === false;\n\t}\n\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\t// Support: IE<9\n\t// Iteration over object's inherited properties before its own.\n\tfor ( i in jQuery( support ) ) {\n\t\tbreak;\n\t}\n\tsupport.ownLast = i !== \"0\";\n\n\t// Run tests that need a body at doc ready\n\tjQuery(function() {\n\t\tvar container, marginDiv, tds,\n\t\t\tdivReset = \"padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;\",\n\t\t\tbody = document.getElementsByTagName(\"body\")[0];\n\n\t\tif ( !body ) {\n\t\t\t// Return for frameset docs that don't have a body\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer = document.createElement(\"div\");\n\t\tcontainer.style.cssText = \"border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px\";\n\n\t\tbody.appendChild( container ).appendChild( div );\n\n\t\t// Support: IE8\n\t\t// Check if table cells still have offsetWidth/Height when they are set\n\t\t// to display:none and there are still other visible table cells in a\n\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t\t// determining if an element has been hidden directly using\n\t\t// display:none (it is still safe to use offsets if a parent element is\n\t\t// hidden; don safety goggles and see bug #4512 for more information).\n\t\tdiv.innerHTML = \"
t
\";\n\t\ttds = div.getElementsByTagName(\"td\");\n\t\ttds[ 0 ].style.cssText = \"padding:0;margin:0;border:0;display:none\";\n\t\tisSupported = ( tds[ 0 ].offsetHeight === 0 );\n\n\t\ttds[ 0 ].style.display = \"\";\n\t\ttds[ 1 ].style.display = \"none\";\n\n\t\t// Support: IE8\n\t\t// Check if empty table cells still have offsetWidth/Height\n\t\tsupport.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );\n\n\t\t// Check box-sizing and margin behavior.\n\t\tdiv.innerHTML = \"\";\n\t\tdiv.style.cssText = \"box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;\";\n\n\t\t// Workaround failing boxSizing test due to offsetWidth returning wrong value\n\t\t// with some non-1 values of body zoom, ticket #13543\n\t\tjQuery.swap( body, body.style.zoom != null ? { zoom: 1 } : {}, function() {\n\t\t\tsupport.boxSizing = div.offsetWidth === 4;\n\t\t});\n\n\t\t// Use window.getComputedStyle because jsdom on node.js will break without it.\n\t\tif ( window.getComputedStyle ) {\n\t\t\tsupport.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== \"1%\";\n\t\t\tsupport.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: \"4px\" } ).width === \"4px\";\n\n\t\t\t// Check if div with explicit width and no margin-right incorrectly\n\t\t\t// gets computed margin-right based on width of container. (#3333)\n\t\t\t// Fails in WebKit before Feb 2011 nightlies\n\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\tmarginDiv = div.appendChild( document.createElement(\"div\") );\n\t\t\tmarginDiv.style.cssText = div.style.cssText = divReset;\n\t\t\tmarginDiv.style.marginRight = marginDiv.style.width = \"0\";\n\t\t\tdiv.style.width = \"1px\";\n\n\t\t\tsupport.reliableMarginRight =\n\t\t\t\t!parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight );\n\t\t}\n\n\t\tif ( typeof div.style.zoom !== core_strundefined ) {\n\t\t\t// Support: IE<8\n\t\t\t// Check if natively block-level elements act like inline-block\n\t\t\t// elements when setting their display to 'inline' and giving\n\t\t\t// them layout\n\t\t\tdiv.innerHTML = \"\";\n\t\t\tdiv.style.cssText = divReset + \"width:1px;padding:1px;display:inline;zoom:1\";\n\t\t\tsupport.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );\n\n\t\t\t// Support: IE6\n\t\t\t// Check if elements with layout shrink-wrap their children\n\t\t\tdiv.style.display = \"block\";\n\t\t\tdiv.innerHTML = \"
\";\n\t\t\tdiv.firstChild.style.width = \"5px\";\n\t\t\tsupport.shrinkWrapBlocks = ( div.offsetWidth !== 3 );\n\n\t\t\tif ( support.inlineBlockNeedsLayout ) {\n\t\t\t\t// Prevent IE 6 from affecting layout for positioned elements #11048\n\t\t\t\t// Prevent IE from shrinking the body in IE 7 mode #12869\n\t\t\t\t// Support: IE<8\n\t\t\t\tbody.style.zoom = 1;\n\t\t\t}\n\t\t}\n\n\t\tbody.removeChild( container );\n\n\t\t// Null elements to avoid leaks in IE\n\t\tcontainer = div = tds = marginDiv = null;\n\t});\n\n\t// Null elements to avoid leaks in IE\n\tall = select = fragment = opt = a = input = null;\n\n\treturn support;\n})({});\n\nvar rbrace = /(?:\\{[\\s\\S]*\\}|\\[[\\s\\S]*\\])$/,\n\trmultiDash = /([A-Z])/g;\n\nfunction internalData( elem, name, data, pvt /* Internal Use Only */ ){\n\tif ( !jQuery.acceptData( elem ) ) {\n\t\treturn;\n\t}\n\n\tvar ret, thisCache,\n\t\tinternalKey = jQuery.expando,\n\n\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t// can't GC object references properly across the DOM-JS boundary\n\t\tisNode = elem.nodeType,\n\n\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t// attached directly to the object so GC can occur automatically\n\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\tid = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;\n\n\t// Avoid doing any more work than we need to when trying to get data on an\n\t// object that has no data at all\n\tif ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === \"string\" ) {\n\t\treturn;\n\t}\n\n\tif ( !id ) {\n\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t// ends up in the global cache\n\t\tif ( isNode ) {\n\t\t\tid = elem[ internalKey ] = core_deletedIds.pop() || jQuery.guid++;\n\t\t} else {\n\t\t\tid = internalKey;\n\t\t}\n\t}\n\n\tif ( !cache[ id ] ) {\n\t\t// Avoid exposing jQuery metadata on plain JS objects when the object\n\t\t// is serialized using JSON.stringify\n\t\tcache[ id ] = isNode ? {} : { toJSON: jQuery.noop };\n\t}\n\n\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t// shallow copied over onto the existing cache\n\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\tif ( pvt ) {\n\t\t\tcache[ id ] = jQuery.extend( cache[ id ], name );\n\t\t} else {\n\t\t\tcache[ id ].data = jQuery.extend( cache[ id ].data, name );\n\t\t}\n\t}\n\n\tthisCache = cache[ id ];\n\n\t// jQuery data() is stored in a separate object inside the object's internal data\n\t// cache in order to avoid key collisions between internal data and user-defined\n\t// data.\n\tif ( !pvt ) {\n\t\tif ( !thisCache.data ) {\n\t\t\tthisCache.data = {};\n\t\t}\n\n\t\tthisCache = thisCache.data;\n\t}\n\n\tif ( data !== undefined ) {\n\t\tthisCache[ jQuery.camelCase( name ) ] = data;\n\t}\n\n\t// Check for both converted-to-camel and non-converted data property names\n\t// If a data property was specified\n\tif ( typeof name === \"string\" ) {\n\n\t\t// First Try to find as-is property data\n\t\tret = thisCache[ name ];\n\n\t\t// Test for null|undefined property data\n\t\tif ( ret == null ) {\n\n\t\t\t// Try to find the camelCased property\n\t\t\tret = thisCache[ jQuery.camelCase( name ) ];\n\t\t}\n\t} else {\n\t\tret = thisCache;\n\t}\n\n\treturn ret;\n}\n\nfunction internalRemoveData( elem, name, pvt ) {\n\tif ( !jQuery.acceptData( elem ) ) {\n\t\treturn;\n\t}\n\n\tvar thisCache, i,\n\t\tisNode = elem.nodeType,\n\n\t\t// See jQuery.data for more information\n\t\tcache = isNode ? jQuery.cache : elem,\n\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t// If there is already no cache entry for this object, there is no\n\t// purpose in continuing\n\tif ( !cache[ id ] ) {\n\t\treturn;\n\t}\n\n\tif ( name ) {\n\n\t\tthisCache = pvt ? cache[ id ] : cache[ id ].data;\n\n\t\tif ( thisCache ) {\n\n\t\t\t// Support array or space separated string names for data keys\n\t\t\tif ( !jQuery.isArray( name ) ) {\n\n\t\t\t\t// try the string as a key before any manipulation\n\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\tname = [ name ];\n\t\t\t\t} else {\n\n\t\t\t\t\t// split the camel cased version by spaces unless a key with the spaces exists\n\t\t\t\t\tname = jQuery.camelCase( name );\n\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tname = name.split(\" \");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// If \"name\" is an array of keys...\n\t\t\t\t// When data is initially created, via (\"key\", \"val\") signature,\n\t\t\t\t// keys will be converted to camelCase.\n\t\t\t\t// Since there is no way to tell _how_ a key was added, remove\n\t\t\t\t// both plain key and camelCase key. #12786\n\t\t\t\t// This will only penalize the array argument path.\n\t\t\t\tname = name.concat( jQuery.map( name, jQuery.camelCase ) );\n\t\t\t}\n\n\t\t\ti = name.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete thisCache[ name[i] ];\n\t\t\t}\n\n\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t// and let the cache object itself get destroyed\n\t\t\tif ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\t// See jQuery.data for more information\n\tif ( !pvt ) {\n\t\tdelete cache[ id ].data;\n\n\t\t// Don't destroy the parent cache unless the internal data object\n\t\t// had been the only thing left in it\n\t\tif ( !isEmptyDataObject( cache[ id ] ) ) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// Destroy the cache\n\tif ( isNode ) {\n\t\tjQuery.cleanData( [ elem ], true );\n\n\t// Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)\n\t/* jshint eqeqeq: false */\n\t} else if ( jQuery.support.deleteExpando || cache != cache.window ) {\n\t\t/* jshint eqeqeq: true */\n\t\tdelete cache[ id ];\n\n\t// When all else fails, null\n\t} else {\n\t\tcache[ id ] = null;\n\t}\n}\n\njQuery.extend({\n\tcache: {},\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"applet\": true,\n\t\t\"embed\": true,\n\t\t// Ban all objects except for Flash (which handle expandos)\n\t\t\"object\": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn internalData( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\treturn internalRemoveData( elem, name );\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn internalData( elem, name, data, true );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\treturn internalRemoveData( elem, name, true );\n\t},\n\n\t// A method for determining if a DOM node can handle the data expando\n\tacceptData: function( elem ) {\n\t\t// Do not set data on non-element because it will not be cleared (#8335).\n\t\tif ( elem.nodeType && elem.nodeType !== 1 && elem.nodeType !== 9 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ];\n\n\t\t// nodes accept data unless otherwise specified; rejection can be conditional\n\t\treturn !noData || noData !== true && elem.getAttribute(\"classid\") === noData;\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar attrs, name,\n\t\t\tdata = null,\n\t\t\ti = 0,\n\t\t\telem = this[0];\n\n\t\t// Special expections of .data basically thwart jQuery.access,\n\t\t// so implement the relevant behavior ourselves\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !jQuery._data( elem, \"parsedAttrs\" ) ) {\n\t\t\t\t\tattrs = elem.attributes;\n\t\t\t\t\tfor ( ; i < attrs.length; i++ ) {\n\t\t\t\t\t\tname = attrs[i].name;\n\n\t\t\t\t\t\tif ( name.indexOf(\"data-\") === 0 ) {\n\t\t\t\t\t\t\tname = jQuery.camelCase( name.slice(5) );\n\n\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tjQuery._data( elem, \"parsedAttrs\", 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\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\treturn arguments.length > 1 ?\n\n\t\t\t// Sets one value\n\t\t\tthis.each(function() {\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t}) :\n\n\t\t\t// Gets one value\n\t\t\t// Try to fetch any internally stored data first\n\t\t\telem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : null;\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\nfunction dataAttr( elem, key, data ) {\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\n\t\tvar name = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\n\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\t\tdata === \"false\" ? false :\n\t\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t\t+data + \"\" === data ? +data :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\t\tdata;\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\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// checks a cache object for emptiness\nfunction isEmptyDataObject( obj ) {\n\tvar name;\n\tfor ( name in obj ) {\n\n\t\t// if the public data object is empty, the private is still empty\n\t\tif ( name === \"data\" && jQuery.isEmptyObject( obj[name] ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\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 = jQuery._data( 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 || jQuery.isArray(data) ) {\n\t\t\t\t\tqueue = jQuery._data( 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 intended for public consumption - generates a queueHooks object, or returns the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn jQuery._data( elem, key ) || jQuery._data( elem, key, {\n\t\t\tempty: jQuery.Callbacks(\"once memory\").add(function() {\n\t\t\t\tjQuery._removeData( elem, type + \"queue\" );\n\t\t\t\tjQuery._removeData( elem, 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\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function( next, hooks ) {\n\t\t\tvar timeout = setTimeout( next, time );\n\t\t\thooks.stop = function() {\n\t\t\t\tclearTimeout( timeout );\n\t\t\t};\n\t\t});\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\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 = jQuery._data( 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 nodeHook, boolHook,\n\trclass = /[\\t\\r\\n\\f]/g,\n\trreturn = /\\r/g,\n\trfocusable = /^(?:input|select|textarea|button|object)$/i,\n\trclickable = /^(?:a|area)$/i,\n\truseDefault = /^(?:checked|selected)$/i,\n\tgetSetAttribute = jQuery.support.getSetAttribute,\n\tgetSetInput = jQuery.support.input;\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn jQuery.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\tprop: function( name, value ) {\n\t\treturn jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\tname = jQuery.propFix[ name ] || name;\n\t\treturn this.each(function() {\n\t\t\t// try/catch handles cases where IE balks (such as removing a property on window)\n\t\t\ttry {\n\t\t\t\tthis[ name ] = undefined;\n\t\t\t\tdelete this[ name ];\n\t\t\t} catch( e ) {}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, clazz, j,\n\t\t\ti = 0,\n\t\t\tlen = this.length,\n\t\t\tproceed = typeof value === \"string\" && value;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, this.className ) );\n\t\t\t});\n\t\t}\n\n\t\tif ( proceed ) {\n\t\t\t// The disjunction here is for better compressibility (see removeClass)\n\t\t\tclasses = ( value || \"\" ).match( core_rnotwhite ) || [];\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\telem = this[ i ];\n\t\t\t\tcur = elem.nodeType === 1 && ( elem.className ?\n\t\t\t\t\t( \" \" + elem.className + \" \" ).replace( rclass, \" \" ) :\n\t\t\t\t\t\" \"\n\t\t\t\t);\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\t\t\t\t\telem.className = jQuery.trim( cur );\n\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, clazz, j,\n\t\t\ti = 0,\n\t\t\tlen = this.length,\n\t\t\tproceed = arguments.length === 0 || typeof value === \"string\" && value;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, this.className ) );\n\t\t\t});\n\t\t}\n\t\tif ( proceed ) {\n\t\t\tclasses = ( value || \"\" ).match( core_rnotwhite ) || [];\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\telem = this[ i ];\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( elem.className ?\n\t\t\t\t\t( \" \" + elem.className + \" \" ).replace( rclass, \" \" ) :\n\t\t\t\t\t\"\"\n\t\t\t\t);\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\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) >= 0 ) {\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\t\t\t\t\telem.className = value ? jQuery.trim( cur ) : \"\";\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\n\t\tif ( typeof stateVal === \"boolean\" && type === \"string\" ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tclassNames = value.match( core_rnotwhite ) || [];\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\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 ( type === core_strundefined || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery._data( this, \"__className__\", this.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\tthis.className = this.className || value === false ? \"\" : jQuery._data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \",\n\t\t\ti = 0,\n\t\t\tl = this.length;\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tif ( this[i].nodeType === 1 && (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) >= 0 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tvar ret, hooks, isFunction,\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 ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, \"value\" )) !== undefined ) {\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\treturn typeof ret === \"string\" ?\n\t\t\t\t\t// handle most common string cases\n\t\t\t\t\tret.replace(rreturn, \"\") :\n\t\t\t\t\t// handle cases where value is null/undef or number\n\t\t\t\t\tret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tisFunction = jQuery.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 ( isFunction ) {\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\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.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\t\t\t\t// Use proper attribute retrieval(#6932, #12072)\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\t\t\t\t\telem.text;\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option,\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\" || index < 0,\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length,\n\t\t\t\t\ti = index < 0 ?\n\t\t\t\t\t\tmax :\n\t\t\t\t\t\tone ? index : 0;\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// oldIE doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\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( jQuery.support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null ) &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled || !jQuery.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\t\t\t\t\tif ( (option.selected = jQuery.inArray( jQuery(option).val(), values ) >= 0) ) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\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\tattr: function( elem, name, value ) {\n\t\tvar hooks, ret,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || 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 === core_strundefined ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// All attributes are lowercase\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\tname = name.toLowerCase();\n\t\t\thooks = jQuery.attrHooks[ name ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\n\t\t\t} else if ( hooks && \"set\" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t} else if ( hooks && \"get\" in hooks && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\treturn ret;\n\n\t\t} else {\n\t\t\tret = jQuery.find.attr( elem, name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn ret == null ?\n\t\t\t\tundefined :\n\t\t\t\tret;\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name, propName,\n\t\t\ti = 0,\n\t\t\tattrNames = value && value.match( core_rnotwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( (name = attrNames[i++]) ) {\n\t\t\t\tpropName = jQuery.propFix[ name ] || name;\n\n\t\t\t\t// Boolean attributes get special treatment (#10870)\n\t\t\t\tif ( jQuery.expr.match.bool.test( name ) ) {\n\t\t\t\t\t// Set corresponding property to false\n\t\t\t\t\tif ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {\n\t\t\t\t\t\telem[ propName ] = false;\n\t\t\t\t\t// Support: IE<9\n\t\t\t\t\t// Also clear defaultChecked/defaultSelected (if appropriate)\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem[ jQuery.camelCase( \"default-\" + name ) ] =\n\t\t\t\t\t\t\telem[ propName ] = false;\n\t\t\t\t\t}\n\n\t\t\t\t// See #9699 for explanation of this approach (setting first, then removal)\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.attr( elem, name, \"\" );\n\t\t\t\t}\n\n\t\t\t\telem.removeAttribute( getSetAttribute ? name : propName );\n\t\t\t}\n\t\t}\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !jQuery.support.radioValue && value === \"radio\" && jQuery.nodeName(elem, \"input\") ) {\n\t\t\t\t\t// Setting the type on a radio button after the value resets the value in IE6-9\n\t\t\t\t\t// Reset value to default in case type is set after value during creation\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\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t},\n\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks, notxml,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set properties on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\tif ( notxml ) {\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\treturn hooks && \"set\" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?\n\t\t\t\tret :\n\t\t\t\t( elem[ name ] = value );\n\n\t\t} else {\n\t\t\treturn hooks && \"get\" in hooks && (ret = hooks.get( elem, name )) !== null ?\n\t\t\t\tret :\n\t\t\t\telem[ name ];\n\t\t}\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// 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\treturn tabindex ?\n\t\t\t\t\tparseInt( tabindex, 10 ) :\n\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\t-1;\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\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {\n\t\t\t// IE<8 needs the *property* name\n\t\t\telem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name );\n\n\t\t// Use defaultChecked and defaultSelected for oldIE\n\t\t} else {\n\t\t\telem[ jQuery.camelCase( \"default-\" + name ) ] = elem[ name ] = true;\n\t\t}\n\n\t\treturn name;\n\t}\n};\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\tvar getter = jQuery.expr.attrHandle[ name ] || jQuery.find.attr;\n\n\tjQuery.expr.attrHandle[ name ] = getSetInput && getSetAttribute || !ruseDefault.test( name ) ?\n\t\tfunction( elem, name, isXML ) {\n\t\t\tvar fn = jQuery.expr.attrHandle[ name ],\n\t\t\t\tret = isXML ?\n\t\t\t\t\tundefined :\n\t\t\t\t\t/* jshint eqeqeq: false */\n\t\t\t\t\t(jQuery.expr.attrHandle[ name ] = undefined) !=\n\t\t\t\t\t\tgetter( elem, name, isXML ) ?\n\n\t\t\t\t\t\tname.toLowerCase() :\n\t\t\t\t\t\tnull;\n\t\t\tjQuery.expr.attrHandle[ name ] = fn;\n\t\t\treturn ret;\n\t\t} :\n\t\tfunction( elem, name, isXML ) {\n\t\t\treturn isXML ?\n\t\t\t\tundefined :\n\t\t\t\telem[ jQuery.camelCase( \"default-\" + name ) ] ?\n\t\t\t\t\tname.toLowerCase() :\n\t\t\t\t\tnull;\n\t\t};\n});\n\n// fix oldIE attroperties\nif ( !getSetInput || !getSetAttribute ) {\n\tjQuery.attrHooks.value = {\n\t\tset: function( elem, value, name ) {\n\t\t\tif ( jQuery.nodeName( elem, \"input\" ) ) {\n\t\t\t\t// Does not return so that setAttribute is also used\n\t\t\t\telem.defaultValue = value;\n\t\t\t} else {\n\t\t\t\t// Use nodeHook if defined (#1954); otherwise setAttribute is fine\n\t\t\t\treturn nodeHook && nodeHook.set( elem, value, name );\n\t\t\t}\n\t\t}\n\t};\n}\n\n// IE6/7 do not support getting/setting some attributes with get/setAttribute\nif ( !getSetAttribute ) {\n\n\t// Use this for any attribute in IE6/7\n\t// This fixes almost every IE6/7 issue\n\tnodeHook = {\n\t\tset: function( elem, value, name ) {\n\t\t\t// Set the existing or create a new attribute node\n\t\t\tvar ret = elem.getAttributeNode( name );\n\t\t\tif ( !ret ) {\n\t\t\t\telem.setAttributeNode(\n\t\t\t\t\t(ret = elem.ownerDocument.createAttribute( name ))\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tret.value = value += \"\";\n\n\t\t\t// Break association with cloned elements by also using setAttribute (#9646)\n\t\t\treturn name === \"value\" || value === elem.getAttribute( name ) ?\n\t\t\t\tvalue :\n\t\t\t\tundefined;\n\t\t}\n\t};\n\tjQuery.expr.attrHandle.id = jQuery.expr.attrHandle.name = jQuery.expr.attrHandle.coords =\n\t\t// Some attributes are constructed with empty-string values when not defined\n\t\tfunction( elem, name, isXML ) {\n\t\t\tvar ret;\n\t\t\treturn isXML ?\n\t\t\t\tundefined :\n\t\t\t\t(ret = elem.getAttributeNode( name )) && ret.value !== \"\" ?\n\t\t\t\t\tret.value :\n\t\t\t\t\tnull;\n\t\t};\n\tjQuery.valHooks.button = {\n\t\tget: function( elem, name ) {\n\t\t\tvar ret = elem.getAttributeNode( name );\n\t\t\treturn ret && ret.specified ?\n\t\t\t\tret.value :\n\t\t\t\tundefined;\n\t\t},\n\t\tset: nodeHook.set\n\t};\n\n\t// Set contenteditable to false on removals(#10429)\n\t// Setting to empty string throws an error as an invalid value\n\tjQuery.attrHooks.contenteditable = {\n\t\tset: function( elem, value, name ) {\n\t\t\tnodeHook.set( elem, value === \"\" ? false : value, name );\n\t\t}\n\t};\n\n\t// Set width and height to auto instead of 0 on empty string( Bug #8150 )\n\t// This is for removals\n\tjQuery.each([ \"width\", \"height\" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\telem.setAttribute( name, \"auto\" );\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n\n\n// Some attributes require a special call on IE\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !jQuery.support.hrefNormalized ) {\n\t// href/src property should get the full normalized URL (#10299/#12915)\n\tjQuery.each([ \"href\", \"src\" ], function( i, name ) {\n\t\tjQuery.propHooks[ name ] = {\n\t\t\tget: function( elem ) {\n\t\t\t\treturn elem.getAttribute( name, 4 );\n\t\t\t}\n\t\t};\n\t});\n}\n\nif ( !jQuery.support.style ) {\n\tjQuery.attrHooks.style = {\n\t\tget: function( elem ) {\n\t\t\t// Return undefined in the case of empty string\n\t\t\t// Note: IE uppercases css property names, but if we were to .toLowerCase()\n\t\t\t// .cssText, that would destroy case senstitivity in URL's, like in \"background\"\n\t\t\treturn elem.style.cssText || undefined;\n\t\t},\n\t\tset: function( elem, value ) {\n\t\t\treturn ( elem.style.cssText = value + \"\" );\n\t\t}\n\t};\n}\n\n// Safari mis-reports the default selected property of an option\n// Accessing the parent's selectedIndex property fixes it\nif ( !jQuery.support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t// Make sure that it also works with optgroups, see #5701\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\treturn null;\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// IE6/7 call enctype encoding\nif ( !jQuery.support.enctype ) {\n\tjQuery.propFix.enctype = \"encoding\";\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 ( jQuery.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !jQuery.support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\t// Support: Webkit\n\t\t\t// \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t};\n\t}\n});\nvar rformElems = /^(?:input|select|textarea)$/i,\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|contextmenu)|click/,\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)$/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\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\t\tvar tmp, events, t, handleObjIn,\n\t\t\tspecial, eventHandle, handleObj,\n\t\t\thandlers, type, namespaces, origType,\n\t\t\telemData = jQuery._data( 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// 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\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 !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ?\n\t\t\t\t\tjQuery.event.dispatch.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t\t// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events\n\t\t\teventHandle.elem = elem;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( core_rnotwhite ) || [\"\"];\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/attachEvent if the special events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + 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\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\t\tvar j, handleObj, tmp,\n\t\t\torigCount, t, events,\n\t\t\tspecial, handlers, type,\n\t\t\tnamespaces, origType,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( 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( core_rnotwhite ) || [\"\"];\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] && new 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 || selector === \"**\" && 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 || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {\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 the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdelete elemData.handle;\n\n\t\t\t// removeData also checks for emptiness and clears the expando if empty\n\t\t\t// so use it instead of delete\n\t\t\tjQuery._removeData( elem, \"events\" );\n\t\t}\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\t\tvar handle, ontype, cur,\n\t\t\tbubbleType, special, tmp, i,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = core_hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = core_hasOwn.call( event, \"namespace\" ) ? event.namespace.split(\".\") : [];\n\n\t\tcur = 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(\".\") >= 0 ) {\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.namespace_re = 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 && !jQuery.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\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 = ( jQuery._data( cur, \"events\" ) || {} )[ event.type ] && jQuery._data( 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 && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) {\n\t\t\t\tevent.preventDefault();\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 || special._default.apply( eventPath.pop(), data ) === false) &&\n\t\t\t\tjQuery.acceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n\t\t\t\t// Can't use an .isFunction() check here because IE6/7 fails that test.\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 && elem[ type ] && !jQuery.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\t\t\t\t\ttry {\n\t\t\t\t\t\telem[ type ]();\n\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t// IE<9 dies on focus/blur to hidden element (#1486,#12518)\n\t\t\t\t\t\t// only reproducible on winXP IE8 native, not IE9 in IE8 mode\n\t\t\t\t\t}\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\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event );\n\n\t\tvar i, ret, handleObj, matched, j,\n\t\t\thandlerQueue = [],\n\t\t\targs = core_slice.call( arguments ),\n\t\t\thandlers = ( jQuery._data( 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\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++ ]) && !event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or\n\t\t\t\t// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.namespace_re || event.namespace_re.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 || handleObj.handler )\n\t\t\t\t\t\t\t.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 sel, handleObj, matches, i,\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\t// Black-hole SVG instance trees (#13180)\n\t\t// Avoid non-left-click bubbling in Firefox (#3861)\n\t\tif ( delegateCount && cur.nodeType && (!event.button || event.type !== \"click\") ) {\n\n\t\t\t/* jshint eqeqeq: false */\n\t\t\tfor ( ; cur != this; cur = cur.parentNode || this ) {\n\t\t\t\t/* jshint eqeqeq: true */\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 && (cur.disabled !== true || event.type !== \"click\") ) {\n\t\t\t\t\tmatches = [];\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 ( matches[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatches[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) >= 0 :\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 ( matches[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push({ elem: cur, handlers: matches });\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\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop, copy,\n\t\t\ttype = event.type,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = this.fixHooks[ type ];\n\n\t\tif ( !fixHook ) {\n\t\t\tthis.fixHooks[ type ] = fixHook =\n\t\t\t\trmouseEvent.test( type ) ? this.mouseHooks :\n\t\t\t\trkeyEvent.test( type ) ? this.keyHooks :\n\t\t\t\t{};\n\t\t}\n\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = new jQuery.Event( originalEvent );\n\n\t\ti = copy.length;\n\t\twhile ( i-- ) {\n\t\t\tprop = copy[ i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Fix target property (#1925)\n\t\tif ( !event.target ) {\n\t\t\tevent.target = originalEvent.srcElement || document;\n\t\t}\n\n\t\t// Support: Chrome 23+, Safari?\n\t\t// Target should not be a text node (#504, #13143)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// For mouse/key events, metaKey==false if it's undefined (#3368, #11328)\n\t\tevent.metaKey = !!event.metaKey;\n\n\t\treturn fixHook.filter ? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\tprops: \"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: \"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\t\t\tvar body, eventDoc, doc,\n\t\t\t\tbutton = original.button,\n\t\t\t\tfromElement = original.fromElement;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );\n\t\t\t}\n\n\t\t\t// Add relatedTarget, if necessary\n\t\t\tif ( !event.relatedTarget && fromElement ) {\n\t\t\t\tevent.relatedTarget = fromElement === event.target ? original.toElement : fromElement;\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tspecial: {\n\t\tload: {\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\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\ttry {\n\t\t\t\t\t\tthis.focus();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t// Support: IE<9\n\t\t\t\t\t\t// If we error on focus to hidden element (#1486, #12518),\n\t\t\t\t\t\t// let .trigger() run the handlers\n\t\t\t\t\t}\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\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( jQuery.nodeName( this, \"input\" ) && this.type === \"checkbox\" && this.click ) {\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 jQuery.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// Even when returnValue equals to undefined Firefox will still show alert\n\t\t\t\tif ( event.result !== undefined ) {\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\tsimulate: function( type, elem, event, bubble ) {\n\t\t// Piggyback on a donor event to simulate a different one.\n\t\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t\t// simulated event prevents default then we do the same on the donor.\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\toriginalEvent: {}\n\t\t\t}\n\t\t);\n\t\tif ( bubble ) {\n\t\t\tjQuery.event.trigger( e, null, elem );\n\t\t} else {\n\t\t\tjQuery.event.dispatch.call( elem, e );\n\t\t}\n\t\tif ( e.isDefaultPrevented() ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n};\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tvar name = \"on\" + type;\n\n\t\tif ( elem.detachEvent ) {\n\n\t\t\t// #8545, #7054, preventing memory leaks for custom events in IE6-8\n\t\t\t// detachEvent needed property on element, by name of that event, to properly expose it to GC\n\t\t\tif ( typeof elem[ name ] === core_strundefined ) {\n\t\t\t\telem[ name ] = null;\n\t\t\t}\n\n\t\t\telem.detachEvent( name, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src, props ) {\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 || src.returnValue === false ||\n\t\t\tsrc.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;\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 || jQuery.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// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If preventDefault exists, run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// Support: IE\n\t\t// Otherwise set the returnValue property of the original event to false\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// If stopPropagation exists, run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\n\t\t// Support: IE\n\t\t// Set the cancelBubble property of the original event to true\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\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 mousenter/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\n// IE submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Lazy-add a submit handler when a descendant form may potentially be submitted\n\t\t\tjQuery.event.add( this, \"click._submit keypress._submit\", function( e ) {\n\t\t\t\t// Node name check avoids a VML-related crash in IE (#9807)\n\t\t\t\tvar elem = e.target,\n\t\t\t\t\tform = jQuery.nodeName( elem, \"input\" ) || jQuery.nodeName( elem, \"button\" ) ? elem.form : undefined;\n\t\t\t\tif ( form && !jQuery._data( form, \"submitBubbles\" ) ) {\n\t\t\t\t\tjQuery.event.add( form, \"submit._submit\", function( event ) {\n\t\t\t\t\t\tevent._submit_bubble = true;\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( form, \"submitBubbles\", true );\n\t\t\t\t}\n\t\t\t});\n\t\t\t// return undefined since we don't need an event listener\n\t\t},\n\n\t\tpostDispatch: function( event ) {\n\t\t\t// If form was submitted by the user, bubble the event up the tree\n\t\t\tif ( event._submit_bubble ) {\n\t\t\t\tdelete event._submit_bubble;\n\t\t\t\tif ( this.parentNode && !event.isTrigger ) {\n\t\t\t\t\tjQuery.event.simulate( \"submit\", this.parentNode, event, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Remove delegated handlers; cleanData eventually reaps submit handlers attached above\n\t\t\tjQuery.event.remove( this, \"._submit\" );\n\t\t}\n\t};\n}\n\n// IE change delegation and checkbox/radio fix\nif ( !jQuery.support.changeBubbles ) {\n\n\tjQuery.event.special.change = {\n\n\t\tsetup: function() {\n\n\t\t\tif ( rformElems.test( this.nodeName ) ) {\n\t\t\t\t// IE doesn't fire change on a check/radio until blur; trigger it on click\n\t\t\t\t// after a propertychange. Eat the blur-change in special.change.handle.\n\t\t\t\t// This still fires onchange a second time for check/radio after blur.\n\t\t\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t\t\tjQuery.event.add( this, \"propertychange._change\", function( event ) {\n\t\t\t\t\t\tif ( event.originalEvent.propertyName === \"checked\" ) {\n\t\t\t\t\t\t\tthis._just_changed = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery.event.add( this, \"click._change\", function( event ) {\n\t\t\t\t\t\tif ( this._just_changed && !event.isTrigger ) {\n\t\t\t\t\t\t\tthis._just_changed = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Allow triggered, simulated change events (#11500)\n\t\t\t\t\t\tjQuery.event.simulate( \"change\", this, event, true );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Delegated event; lazy-add a change handler on descendant inputs\n\t\t\tjQuery.event.add( this, \"beforeactivate._change\", function( e ) {\n\t\t\t\tvar elem = e.target;\n\n\t\t\t\tif ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, \"changeBubbles\" ) ) {\n\t\t\t\t\tjQuery.event.add( elem, \"change._change\", function( event ) {\n\t\t\t\t\t\tif ( this.parentNode && !event.isSimulated && !event.isTrigger ) {\n\t\t\t\t\t\t\tjQuery.event.simulate( \"change\", this.parentNode, event, true );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( elem, \"changeBubbles\", true );\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\thandle: function( event ) {\n\t\t\tvar elem = event.target;\n\n\t\t\t// Swallow native change events from checkbox/radio, we already triggered them above\n\t\t\tif ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== \"radio\" && elem.type !== \"checkbox\") ) {\n\t\t\t\treturn event.handleObj.handler.apply( this, arguments );\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tjQuery.event.remove( this, \"._change\" );\n\n\t\t\treturn !rformElems.test( this.nodeName );\n\t\t}\n\t};\n}\n\n// Create \"bubbling\" focus and blur events\nif ( !jQuery.support.focusinBubbles ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler while someone wants focusin/focusout\n\t\tvar attaches = 0,\n\t\t\thandler = function( event ) {\n\t\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );\n\t\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tif ( attaches++ === 0 ) {\n\t\t\t\t\tdocument.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tif ( --attaches === 0 ) {\n\t\t\t\t\tdocument.removeEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n\njQuery.fn.extend({\n\n\ton: function( types, selector, data, fn, /*INTERNAL*/ one ) {\n\t\tvar type, origFn;\n\n\t\t// Types can be a map of types/handlers\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-Object, selector, data )\n\t\t\tif ( typeof selector !== \"string\" ) {\n\t\t\t\t// ( types-Object, data )\n\t\t\t\tdata = data || selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.on( type, selector, data, types[ type ], one );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( data == null && fn == null ) {\n\t\t\t// ( types, fn )\n\t\t\tfn = selector;\n\t\t\tdata = selector = undefined;\n\t\t} else if ( fn == null ) {\n\t\t\tif ( typeof selector === \"string\" ) {\n\t\t\t\t// ( types, selector, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = undefined;\n\t\t\t} else {\n\t\t\t\t// ( types, data, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t} else if ( !fn ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( one === 1 ) {\n\t\t\torigFn = fn;\n\t\t\tfn = function( event ) {\n\t\t\t\t// Can use an empty set, since event contains the info\n\t\t\t\tjQuery().off( event );\n\t\t\t\treturn origFn.apply( this, arguments );\n\t\t\t};\n\t\t\t// Use same guid so caller can remove using origFn\n\t\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.add( this, types, fn, data, selector );\n\t\t});\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn this.on( 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\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 ? handleObj.origType + \".\" + handleObj.namespace : handleObj.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\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\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\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});\nvar isSimple = /^.[^:#\\[\\.,]*$/,\n\trparentsprev = /^(?:parents|prev(?:Until|All))/,\n\trneedsContext = jQuery.expr.match.needsContext,\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\tfind: function( selector ) {\n\t\tvar i,\n\t\t\tret = [],\n\t\t\tself = this,\n\t\t\tlen = self.length;\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\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\t// Needed because $( selector, context ) becomes $( context ).find( selector )\n\t\tret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );\n\t\tret.selector = this.selector ? this.selector + \" \" + selector : selector;\n\t\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar i,\n\t\t\ttargets = jQuery( target, this ),\n\t\t\tlen = targets.length;\n\n\t\treturn this.filter(function() {\n\t\t\tfor ( i = 0; i < len; 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\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector || [], true) );\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector || [], false) );\n\t},\n\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\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tret = [],\n\t\t\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tfor ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {\n\t\t\t\t// Always skip document fragments\n\t\t\t\tif ( cur.nodeType < 11 && (pos ?\n\t\t\t\t\tpos.index(cur) > -1 :\n\n\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\tjQuery.find.matchesSelector(cur, selectors)) ) {\n\n\t\t\t\t\tcur = ret.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( ret.length > 1 ? jQuery.unique( ret ) : ret );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\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 jQuery.inArray( this[0], jQuery( elem ) );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context ) :\n\t\t\t\tjQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( jQuery.unique(all) );\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\tdo {\n\t\tcur = cur[ dir ];\n\t} while ( cur && cur.nodeType !== 1 );\n\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 jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.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 jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = 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\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tret = jQuery.unique( ret );\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\tret = ret.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tvar elem = elems[ 0 ];\n\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn elems.length === 1 && elem.nodeType === 1 ?\n\t\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\n\t\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\t\t\treturn elem.nodeType === 1;\n\t\t\t}));\n\t},\n\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\t/* jshint -W018 */\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t});\n\n\t}\n\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t});\n\n\t}\n\n\tif ( typeof qualifier === \"string\" ) {\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter( qualifier, elements, not );\n\t\t}\n\n\t\tqualifier = jQuery.filter( qualifier, elements );\n\t}\n\n\treturn jQuery.grep( elements, function( elem ) {\n\t\treturn ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not;\n\t});\n}\nfunction createSafeFragment( document ) {\n\tvar list = nodeNames.split( \"|\" ),\n\t\tsafeFrag = document.createDocumentFragment();\n\n\tif ( safeFrag.createElement ) {\n\t\twhile ( list.length ) {\n\t\t\tsafeFrag.createElement(\n\t\t\t\tlist.pop()\n\t\t\t);\n\t\t}\n\t}\n\treturn safeFrag;\n}\n\nvar nodeNames = \"abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|\" +\n\t\t\"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",\n\trinlinejQuery = / jQuery\\d+=\"(?:null|\\d+)\"/g,\n\trnoshimcache = new RegExp(\"<(?:\" + nodeNames + \")[\\\\s/>]\", \"i\"),\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /\\s*$/g,\n\n\t// We have to close these tags to support XHTML (#13200)\n\twrapMap = {\n\t\toption: [ 1, \"\" ],\n\t\tlegend: [ 1, \"
\", \"
\" ],\n\t\tarea: [ 1, \"\", \"\" ],\n\t\tparam: [ 1, \"\", \"\" ],\n\t\tthead: [ 1, \"\", \"
\" ],\n\t\ttr: [ 2, \"\", \"
\" ],\n\t\tcol: [ 2, \"\", \"
\" ],\n\t\ttd: [ 3, \"\", \"
\" ],\n\n\t\t// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,\n\t\t// unless wrapped in a div with non-breaking characters in front of it.\n\t\t_default: jQuery.support.htmlSerialize ? [ 0, \"\", \"\" ] : [ 1, \"X
\", \"
\" ]\n\t},\n\tsafeFragment = createSafeFragment( document ),\n\tfragmentDiv = safeFragment.appendChild( document.createElement(\"div\") );\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\njQuery.fn.extend({\n\ttext: function( value ) {\n\t\treturn jQuery.access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip( 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 this.domManip( 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 this.domManip( 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 this.domManip( 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\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tvar elem,\n\t\t\telems = selector ? jQuery.filter( selector, this ) : this,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\n\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( getAll( elem ) );\n\t\t\t}\n\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\tif ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\t\t\tsetGlobalEval( getAll( elem, \"script\" ) );\n\t\t\t\t}\n\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\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\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\n\t\t\t// If this is a select, ensure that it displays empty (#12336)\n\t\t\t// Support: IE<9\n\t\t\tif ( elem.options && jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\telem.options.length = 0;\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 jQuery.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 ) {\n\t\t\t\treturn elem.nodeType === 1 ?\n\t\t\t\t\telem.innerHTML.replace( rinlinejQuery, \"\" ) :\n\t\t\t\t\tundefined;\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( jQuery.support.htmlSerialize || !rnoshimcache.test( value ) ) &&\n\t\t\t\t( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [\"\", \"\"] )[1].toLowerCase() ] ) {\n\n\t\t\t\tvalue = value.replace( rxhtmlTag, \"<$1>\" );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor (; i < l; i++ ) {\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\telem = this[i] || {};\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\n\t\t\t// Snapshot the DOM in case .domManip sweeps something relevant into its fragment\n\t\t\targs = jQuery.map( this, function( elem ) {\n\t\t\t\treturn [ elem.nextSibling, elem.parentNode ];\n\t\t\t}),\n\t\t\ti = 0;\n\n\t\t// Make the changes, replacing each context element with the new content\n\t\tthis.domManip( arguments, function( elem ) {\n\t\t\tvar next = args[ i++ ],\n\t\t\t\tparent = args[ i++ ];\n\n\t\t\tif ( parent ) {\n\t\t\t\t// Don't use the snapshot next if it has moved (#13810)\n\t\t\t\tif ( next && next.parentNode !== parent ) {\n\t\t\t\t\tnext = this.nextSibling;\n\t\t\t\t}\n\t\t\t\tjQuery( this ).remove();\n\t\t\t\tparent.insertBefore( elem, next );\n\t\t\t}\n\t\t// Allow new content to include elements from the context set\n\t\t}, true );\n\n\t\t// Force removal if there was no new content (e.g., from empty arguments)\n\t\treturn i ? this : this.remove();\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, callback, allowIntersection ) {\n\n\t\t// Flatten any nested arrays\n\t\targs = core_concat.apply( [], args );\n\n\t\tvar first, node, hasScripts,\n\t\t\tscripts, doc, fragment,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tset = this,\n\t\t\tiNoClone = l - 1,\n\t\t\tvalue = args[0],\n\t\t\tisFunction = jQuery.isFunction( value );\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( isFunction || !( l <= 1 || typeof value !== \"string\" || jQuery.support.checkClone || !rchecked.test( value ) ) ) {\n\t\t\treturn this.each(function( index ) {\n\t\t\t\tvar self = set.eq( index );\n\t\t\t\tif ( isFunction ) {\n\t\t\t\t\targs[0] = value.call( this, index, self.html() );\n\t\t\t\t}\n\t\t\t\tself.domManip( args, callback, allowIntersection );\n\t\t\t});\n\t\t}\n\n\t\tif ( l ) {\n\t\t\tfragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, !allowIntersection && this );\n\t\t\tfirst = fragment.firstChild;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfragment = first;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\t\thasScripts = scripts.length;\n\n\t\t\t\t// Use the original fragment for the last item instead of the first because it can end up\n\t\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\tnode = fragment;\n\n\t\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcallback.call( this[i], node, i );\n\t\t\t\t}\n\n\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t\t// Reenable scripts\n\t\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t\t!jQuery._data( node, \"globalEval\" ) && jQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\t\tif ( node.src ) {\n\t\t\t\t\t\t\t\t// Hope ajax is available...\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.globalEval( ( node.text || node.textContent || node.innerHTML || \"\" ).replace( rcleanScript, \"\" ) );\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// Fix #11809: Avoid leaking memory\n\t\t\t\tfragment = first = null;\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\n// Support: IE<8\n// Manipulating tables requires a tbody\nfunction manipulationTarget( elem, content ) {\n\treturn jQuery.nodeName( elem, \"table\" ) &&\n\t\tjQuery.nodeName( content.nodeType === 1 ? content : content.firstChild, \"tr\" ) ?\n\n\t\telem.getElementsByTagName(\"tbody\")[0] ||\n\t\t\telem.appendChild( elem.ownerDocument.createElement(\"tbody\") ) :\n\t\telem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = (jQuery.find.attr( elem, \"type\" ) !== null) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tvar match = rscriptTypeMasked.exec( elem.type );\n\tif ( match ) {\n\t\telem.type = match[1];\n\t} else {\n\t\telem.removeAttribute(\"type\");\n\t}\n\treturn elem;\n}\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar elem,\n\t\ti = 0;\n\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\tjQuery._data( elem, \"globalEval\", !refElements || jQuery._data( refElements[i], \"globalEval\" ) );\n\t}\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar type, i, l,\n\t\toldData = jQuery._data( src ),\n\t\tcurData = jQuery._data( dest, oldData ),\n\t\tevents = oldData.events;\n\n\tif ( events ) {\n\t\tdelete curData.handle;\n\t\tcurData.events = {};\n\n\t\tfor ( type in events ) {\n\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t}\n\t\t}\n\t}\n\n\t// make the cloned public data object a copy from the original\n\tif ( curData.data ) {\n\t\tcurData.data = jQuery.extend( {}, curData.data );\n\t}\n}\n\nfunction fixCloneNodeIssues( src, dest ) {\n\tvar nodeName, e, data;\n\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\tnodeName = dest.nodeName.toLowerCase();\n\n\t// IE6-8 copies events bound via attachEvent when using cloneNode.\n\tif ( !jQuery.support.noCloneEvent && dest[ jQuery.expando ] ) {\n\t\tdata = jQuery._data( dest );\n\n\t\tfor ( e in data.events ) {\n\t\t\tjQuery.removeEvent( dest, e, data.handle );\n\t\t}\n\n\t\t// Event data gets referenced instead of copied if the expando gets copied too\n\t\tdest.removeAttribute( jQuery.expando );\n\t}\n\n\t// IE blanks contents when cloning scripts, and tries to evaluate newly-set text\n\tif ( nodeName === \"script\" && dest.text !== src.text ) {\n\t\tdisableScript( dest ).text = src.text;\n\t\trestoreScript( dest );\n\n\t// IE6-10 improperly clones children of object elements using classid.\n\t// IE10 throws NoModificationAllowedError if parent is null, #12132.\n\t} else if ( nodeName === \"object\" ) {\n\t\tif ( dest.parentNode ) {\n\t\t\tdest.outerHTML = src.outerHTML;\n\t\t}\n\n\t\t// This path appears unavoidable for IE9. When cloning an object\n\t\t// element in IE9, the outerHTML strategy above is not sufficient.\n\t\t// If the src has innerHTML and the destination does not,\n\t\t// copy the src.innerHTML into the dest.innerHTML. #10324\n\t\tif ( jQuery.support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) {\n\t\t\tdest.innerHTML = src.innerHTML;\n\t\t}\n\n\t} else if ( nodeName === \"input\" && manipulation_rcheckableType.test( src.type ) ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\n\t\tdest.defaultChecked = dest.checked = src.checked;\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.defaultSelected = dest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\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\ti = 0,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1;\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// Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()\n\t\t\tcore_push.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n});\n\nfunction getAll( context, tag ) {\n\tvar elems, elem,\n\t\ti = 0,\n\t\tfound = typeof context.getElementsByTagName !== core_strundefined ? context.getElementsByTagName( tag || \"*\" ) :\n\t\t\ttypeof context.querySelectorAll !== core_strundefined ? context.querySelectorAll( tag || \"*\" ) :\n\t\t\tundefined;\n\n\tif ( !found ) {\n\t\tfor ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( !tag || jQuery.nodeName( elem, tag ) ) {\n\t\t\t\tfound.push( elem );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( found, getAll( elem, tag ) );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\n\t\tjQuery.merge( [ context ], found ) :\n\t\tfound;\n}\n\n// Used in buildFragment, fixes the defaultChecked property\nfunction fixDefaultChecked( elem ) {\n\tif ( manipulation_rcheckableType.test( elem.type ) ) {\n\t\telem.defaultChecked = elem.checked;\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar destElements, node, clone, i, srcElements,\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\tif ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( \"<\" + elem.nodeName + \">\" ) ) {\n\t\t\tclone = elem.cloneNode( true );\n\n\t\t// IE<=8 does not properly clone detached, unknown element nodes\n\t\t} else {\n\t\t\tfragmentDiv.innerHTML = elem.outerHTML;\n\t\t\tfragmentDiv.removeChild( clone = fragmentDiv.firstChild );\n\t\t}\n\n\t\tif ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\t// Fix all IE cloning issues\n\t\t\tfor ( i = 0; (node = srcElements[i]) != null; ++i ) {\n\t\t\t\t// Ensure that the destination node is not null; Fixes #9587\n\t\t\t\tif ( destElements[i] ) {\n\t\t\t\t\tfixCloneNodeIssues( node, destElements[i] );\n\t\t\t\t}\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; (node = srcElements[i]) != null; i++ ) {\n\t\t\t\t\tcloneCopyEvent( node, 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\tdestElements = srcElements = node = null;\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tbuildFragment: function( elems, context, scripts, selection ) {\n\t\tvar j, elem, contains,\n\t\t\ttmp, tag, tbody, wrap,\n\t\t\tl = elems.length,\n\n\t\t\t// Ensure a safe fragment\n\t\t\tsafe = createSafeFragment( context ),\n\n\t\t\tnodes = [],\n\t\t\ti = 0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\telem = elems[ i ];\n\n\t\t\tif ( elem || elem === 0 ) {\n\n\t\t\t\t// Add nodes directly\n\t\t\t\tif ( jQuery.type( elem ) === \"object\" ) {\n\t\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t\t// Convert non-html into a text node\n\t\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t\t// Convert html into DOM nodes\n\t\t\t\t} else {\n\t\t\t\t\ttmp = tmp || safe.appendChild( context.createElement(\"div\") );\n\n\t\t\t\t\t// Deserialize a standard representation\n\t\t\t\t\ttag = ( rtagName.exec( elem ) || [\"\", \"\"] )[1].toLowerCase();\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\n\t\t\t\t\ttmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, \"<$1>\" ) + wrap[2];\n\n\t\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\t\tj = wrap[0];\n\t\t\t\t\twhile ( j-- ) {\n\t\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Manually add leading whitespace removed by IE\n\t\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\t\tnodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove IE's autoinserted from table fragments\n\t\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t\t// String was a , *may* have spurious \n\t\t\t\t\t\telem = tag === \"table\" && !rtbody.test( elem ) ?\n\t\t\t\t\t\t\ttmp.firstChild :\n\n\t\t\t\t\t\t\t// String was a bare or \n\t\t\t\t\t\t\twrap[1] === \"
\" && !rtbody.test( elem ) ?\n\t\t\t\t\t\t\t\ttmp :\n\t\t\t\t\t\t\t\t0;\n\n\t\t\t\t\t\tj = elem && elem.childNodes.length;\n\t\t\t\t\t\twhile ( j-- ) {\n\t\t\t\t\t\t\tif ( jQuery.nodeName( (tbody = elem.childNodes[j]), \"tbody\" ) && !tbody.childNodes.length ) {\n\t\t\t\t\t\t\t\telem.removeChild( tbody );\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\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t\t// Fix #12392 for WebKit and IE > 9\n\t\t\t\t\ttmp.textContent = \"\";\n\n\t\t\t\t\t// Fix #12392 for oldIE\n\t\t\t\t\twhile ( tmp.firstChild ) {\n\t\t\t\t\t\ttmp.removeChild( tmp.firstChild );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remember the top-level container for proper cleanup\n\t\t\t\t\ttmp = safe.lastChild;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Fix #11356: Clear elements from fragment\n\t\tif ( tmp ) {\n\t\t\tsafe.removeChild( tmp );\n\t\t}\n\n\t\t// Reset defaultChecked for any radios and checkboxes\n\t\t// about to be appended to the DOM in IE 6/7 (#8060)\n\t\tif ( !jQuery.support.appendChecked ) {\n\t\t\tjQuery.grep( getAll( nodes, \"input\" ), fixDefaultChecked );\n\t\t}\n\n\t\ti = 0;\n\t\twhile ( (elem = nodes[ i++ ]) ) {\n\n\t\t\t// #4087 - If origin and destination elements are the same, and this is\n\t\t\t// that element, do not do anything\n\t\t\tif ( selection && jQuery.inArray( elem, selection ) !== -1 ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t\t// Append to fragment\n\t\t\ttmp = getAll( safe.appendChild( elem ), \"script\" );\n\n\t\t\t// Preserve script evaluation history\n\t\t\tif ( contains ) {\n\t\t\t\tsetGlobalEval( tmp );\n\t\t\t}\n\n\t\t\t// Capture executables\n\t\t\tif ( scripts ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (elem = tmp[ j++ ]) ) {\n\t\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\t\tscripts.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ttmp = null;\n\n\t\treturn safe;\n\t},\n\n\tcleanData: function( elems, /* internal */ acceptData ) {\n\t\tvar elem, type, id, data,\n\t\t\ti = 0,\n\t\t\tinternalKey = jQuery.expando,\n\t\t\tcache = jQuery.cache,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando,\n\t\t\tspecial = jQuery.event.special;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\n\t\t\tif ( acceptData || jQuery.acceptData( elem ) ) {\n\n\t\t\t\tid = elem[ internalKey ];\n\t\t\t\tdata = id && cache[ id ];\n\n\t\t\t\tif ( data ) {\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// Remove cache only if it was not already removed by jQuery.event.remove\n\t\t\t\t\tif ( cache[ id ] ) {\n\n\t\t\t\t\t\tdelete cache[ id ];\n\n\t\t\t\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t\t\t\t// we must handle all of these cases\n\t\t\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\t\t\tdelete elem[ internalKey ];\n\n\t\t\t\t\t\t} else if ( typeof elem.removeAttribute !== core_strundefined ) {\n\t\t\t\t\t\t\telem.removeAttribute( internalKey );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telem[ internalKey ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcore_deletedIds.push( id );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_evalUrl: function( url ) {\n\t\treturn jQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: \"GET\",\n\t\t\tdataType: \"script\",\n\t\t\tasync: false,\n\t\t\tglobal: false,\n\t\t\t\"throws\": true\n\t\t});\n\t}\n});\njQuery.fn.extend({\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = 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.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\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 ( jQuery.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 isFunction = jQuery.isFunction( html );\n\n\t\treturn this.each(function(i) {\n\t\t\tjQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t}\n});\nvar iframe, getStyles, curCSS,\n\tralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity\\s*=\\s*([^)]*)/,\n\trposition = /^(top|right|bottom|left)$/,\n\t// swappable if display is none or starts with table 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\trmargin = /^margin/,\n\trnumsplit = new RegExp( \"^(\" + core_pnum + \")(.*)$\", \"i\" ),\n\trnumnonpx = new RegExp( \"^(\" + core_pnum + \")(?!px)[a-z%]+$\", \"i\" ),\n\trrelNum = new RegExp( \"^([+-])=(\" + core_pnum + \")\", \"i\" ),\n\telemdisplay = { BODY: \"block\" },\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: 0,\n\t\tfontWeight: 400\n\t},\n\n\tcssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ],\n\tcssPrefixes = [ \"Webkit\", \"O\", \"Moz\", \"ms\" ];\n\n// return a css property mapped to a potentially vendor prefixed property\nfunction vendorPropName( style, name ) {\n\n\t// shortcut for names that are not vendor prefixed\n\tif ( name in style ) {\n\t\treturn name;\n\t}\n\n\t// check for vendor prefixed names\n\tvar capName = name.charAt(0).toUpperCase() + name.slice(1),\n\t\torigName = name,\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in style ) {\n\t\t\treturn name;\n\t\t}\n\t}\n\n\treturn origName;\n}\n\nfunction isHidden( elem, el ) {\n\t// isHidden might be called from jQuery#filter function;\n\t// in that case, element will be second argument\n\telem = el || elem;\n\treturn jQuery.css( elem, \"display\" ) === \"none\" || !jQuery.contains( elem.ownerDocument, elem );\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem, hidden,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\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\tvalues[ index ] = jQuery._data( elem, \"olddisplay\" );\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t// being hidden by cascaded rules or not\n\t\t\tif ( !values[ index ] && display === \"none\" ) {\n\t\t\t\telem.style.display = \"\";\n\t\t\t}\n\n\t\t\t// Set elements which have been overridden with display: none\n\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t// for such an element\n\t\t\tif ( elem.style.display === \"\" && isHidden( elem ) ) {\n\t\t\t\tvalues[ index ] = jQuery._data( elem, \"olddisplay\", css_defaultDisplay(elem.nodeName) );\n\t\t\t}\n\t\t} else {\n\n\t\t\tif ( !values[ index ] ) {\n\t\t\t\thidden = isHidden( elem );\n\n\t\t\t\tif ( display && display !== \"none\" || !hidden ) {\n\t\t\t\t\tjQuery._data( elem, \"olddisplay\", hidden ? display : jQuery.css( elem, \"display\" ) );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of most of the elements in a second loop\n\t// to avoid the constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( !show || elem.style.display === \"none\" || elem.style.display === \"\" ) {\n\t\t\telem.style.display = show ? values[ index ] || \"\" : \"none\";\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend({\n\tcss: function( name, value ) {\n\t\treturn jQuery.access( this, function( elem, name, value ) {\n\t\t\tvar len, styles,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( jQuery.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\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 ( isHidden( 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});\n\njQuery.extend({\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\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\"columnCount\": true,\n\t\t\"fillOpacity\": 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\t\t// normalize float css property\n\t\t\"float\": jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\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 = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style;\n\n\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );\n\n\t\t// gets hook for the prefixed version\n\t\t// followed by the 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 relative number strings (+= or -=) to relative numbers. #7345\n\t\t\tif ( type === \"string\" && (ret = rrelNum.exec( value )) ) {\n\t\t\t\tvalue = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );\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 NaN and null values aren't set. See: #7116\n\t\t\tif ( value == null || type === \"number\" && isNaN( value ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( type === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// Fixes #8908, it can be done more correctly by specifing setters in cssHooks,\n\t\t\t// but it would mean to define eight (for every problematic property) identical functions\n\t\t\tif ( !jQuery.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) || (value = hooks.set( elem, value, extra )) !== undefined ) {\n\n\t\t\t\t// Wrapped to prevent IE from throwing errors when 'invalid' values are provided\n\t\t\t\t// Fixes bug #5509\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\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 num, val, hooks,\n\t\t\torigName = jQuery.camelCase( name );\n\n\t\t// Make sure that we're working with the right name\n\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );\n\n\t\t// gets hook for the prefixed version\n\t\t// followed by the unprefixed version\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// Return, converting to number 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 || jQuery.isNumeric( num ) ? num || 0 : val;\n\t\t}\n\t\treturn val;\n\t}\n});\n\n// NOTE: we've included the \"window\" in window.getComputedStyle\n// because jsdom on node.js will break without it.\nif ( window.getComputedStyle ) {\n\tgetStyles = function( elem ) {\n\t\treturn window.getComputedStyle( elem, null );\n\t};\n\n\tcurCSS = function( elem, name, _computed ) {\n\t\tvar width, minWidth, maxWidth,\n\t\t\tcomputed = _computed || getStyles( elem ),\n\n\t\t\t// getPropertyValue is only needed for .css('filter') in IE9, see #12537\n\t\t\tret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined,\n\t\t\tstyle = elem.style;\n\n\t\tif ( computed ) {\n\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\n\t\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t\t// Chrome < 17 and Safari 5.0 uses \"computed value\" instead of \"used value\" for margin-right\n\t\t\t// Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels\n\t\t\t// this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values\n\t\t\tif ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {\n\n\t\t\t\t// Remember the original values\n\t\t\t\twidth = style.width;\n\t\t\t\tminWidth = style.minWidth;\n\t\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t\t// Put in the new values to get a computed value out\n\t\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\t\tret = computed.width;\n\n\t\t\t\t// Revert the changed values\n\t\t\t\tstyle.width = width;\n\t\t\t\tstyle.minWidth = minWidth;\n\t\t\t\tstyle.maxWidth = maxWidth;\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n} else if ( document.documentElement.currentStyle ) {\n\tgetStyles = function( elem ) {\n\t\treturn elem.currentStyle;\n\t};\n\n\tcurCSS = function( elem, name, _computed ) {\n\t\tvar left, rs, rsLeft,\n\t\t\tcomputed = _computed || getStyles( elem ),\n\t\t\tret = computed ? computed[ name ] : undefined,\n\t\t\tstyle = elem.style;\n\n\t\t// Avoid setting ret to empty string here\n\t\t// so we don't default to auto\n\t\tif ( ret == null && style && style[ name ] ) {\n\t\t\tret = style[ name ];\n\t\t}\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\t// but not position css attributes, as those are proportional to the parent element instead\n\t\t// and we can't measure the parent instead because it might trigger a \"stacking dolls\" problem\n\t\tif ( rnumnonpx.test( ret ) && !rposition.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\t\t\trs = elem.runtimeStyle;\n\t\t\trsLeft = rs && rs.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tif ( rsLeft ) {\n\t\t\t\trs.left = elem.currentStyle.left;\n\t\t\t}\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : ret;\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\tif ( rsLeft ) {\n\t\t\t\trs.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret === \"\" ? \"auto\" : ret;\n\t};\n}\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\tvar matches = rnumsplit.exec( value );\n\treturn matches ?\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {\n\tvar i = extra === ( isBorderBox ? \"border\" : \"content\" ) ?\n\t\t// If we already have the right measurement, avoid augmentation\n\t\t4 :\n\t\t// Otherwise initialize for horizontal or vertical properties\n\t\tname === \"width\" ? 1 : 0,\n\n\t\tval = 0;\n\n\tfor ( ; i < 4; i += 2 ) {\n\t\t// both box models exclude margin, so add it if we want it\n\t\tif ( extra === \"margin\" ) {\n\t\t\tval += jQuery.css( elem, extra + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\tif ( isBorderBox ) {\n\t\t\t// border-box includes padding, so remove it if we want content\n\t\t\tif ( extra === \"content\" ) {\n\t\t\t\tval -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// at this point, extra isn't border nor margin, so remove border\n\t\t\tif ( extra !== \"margin\" ) {\n\t\t\t\tval -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t} else {\n\t\t\t// at this point, extra isn't content, so add padding\n\t\t\tval += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// at this point, extra isn't content nor padding, so add border\n\t\t\tif ( extra !== \"padding\" ) {\n\t\t\t\tval += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn val;\n}\n\nfunction getWidthOrHeight( elem, name, extra ) {\n\n\t// Start with offset property, which is equivalent to the border-box value\n\tvar valueIsBorderBox = true,\n\t\tval = name === \"width\" ? elem.offsetWidth : elem.offsetHeight,\n\t\tstyles = getStyles( elem ),\n\t\tisBorderBox = jQuery.support.boxSizing && jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t// some non-html elements return undefined for offsetWidth, so check for null/undefined\n\t// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285\n\t// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668\n\tif ( val <= 0 || val == null ) {\n\t\t// Fall back to computed then uncomputed css if necessary\n\t\tval = curCSS( elem, name, styles );\n\t\tif ( val < 0 || val == null ) {\n\t\t\tval = elem.style[ name ];\n\t\t}\n\n\t\t// Computed unit is not pixels. Stop here and return.\n\t\tif ( rnumnonpx.test(val) ) {\n\t\t\treturn val;\n\t\t}\n\n\t\t// we need the check for style in case a browser which returns unreliable values\n\t\t// for getComputedStyle silently falls back to the reliable elem.style\n\t\tvalueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] );\n\n\t\t// Normalize \"\", auto, and prepare for extra\n\t\tval = parseFloat( val ) || 0;\n\t}\n\n\t// use the active box-sizing model to add/subtract irrelevant styles\n\treturn ( val +\n\t\taugmentWidthOrHeight(\n\t\t\telem,\n\t\t\tname,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles\n\t\t)\n\t) + \"px\";\n}\n\n// Try to determine the default display value of an element\nfunction css_defaultDisplay( nodeName ) {\n\tvar doc = document,\n\t\tdisplay = elemdisplay[ nodeName ];\n\n\tif ( !display ) {\n\t\tdisplay = actualDisplay( nodeName, doc );\n\n\t\t// If the simple way fails, read from inside an iframe\n\t\tif ( display === \"none\" || !display ) {\n\t\t\t// Use the already-created iframe if possible\n\t\t\tiframe = ( iframe ||\n\t\t\t\tjQuery(\"