{
  "version": 3,
  "sources": ["../../../../../shared/node_modules/jquery/dist-module/jquery.module.js", "../../javascript/appos/application.js", "../../javascript/appos/component_loader.js", "../../javascript/appos/namespaced_console.js", "../../javascript/appos/simple_events.js", "../../javascript/appos/debugger.js", "../../javascript/appos/appos.js", "../../javascript/appos/lib/cursor_timeout.js", "../../javascript/sot_loading.js"],
  "sourcesContent": ["/*!\n * jQuery JavaScript Library v4.0.0\n * https://jquery.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.com/license/\n *\n * Date: 2026-01-18T00:20Z\n */\n// For ECMAScript module environments where a proper `window`\n// is present, execute the factory and get jQuery.\nfunction jQueryFactory( window, noGlobal ) {\n\nif ( typeof window === \"undefined\" || !window.document ) {\n\tthrow new Error( \"jQuery requires a window with a document\" );\n}\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\n// Support: IE 11+\n// IE doesn't have Array#flat; provide a fallback.\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\n// [[Class]] -> type pairs\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\n// All support tests are defined in their respective modules.\nvar support = {};\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\treturn typeof obj === \"object\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n\nfunction isWindow( obj ) {\n\treturn obj != null && obj === obj.window;\n}\n\nfunction isArrayLike( obj ) {\n\n\tvar length = !!obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( typeof obj === \"function\" || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\n\nvar document$1 = window.document;\n\nvar preservedScriptAttributes = {\n\ttype: true,\n\tsrc: true,\n\tnonce: true,\n\tnoModule: true\n};\n\nfunction DOMEval( code, node, doc ) {\n\tdoc = doc || document$1;\n\n\tvar i,\n\t\tscript = doc.createElement( \"script\" );\n\n\tscript.text = code;\n\tfor ( i in preservedScriptAttributes ) {\n\t\tif ( node && node[ i ] ) {\n\t\t\tscript[ i ] = node[ i ];\n\t\t}\n\t}\n\n\tif ( doc.head.appendChild( script ).parentNode ) {\n\t\tscript.parentNode.removeChild( script );\n\t}\n}\n\nvar version = \"4.0.0\",\n\n\trhtmlSuffix = /HTML$/i,\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t}\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && typeof target !== \"function\" ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\n\t// Retrieve the text value of an array of DOM nodes\n\ttext: function( elem ) {\n\t\tvar node,\n\t\t\tret = \"\",\n\t\t\ti = 0,\n\t\t\tnodeType = elem.nodeType;\n\n\t\tif ( !nodeType ) {\n\n\t\t\t// If no nodeType, this is expected to be an array\n\t\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t\t// Do not traverse comment nodes\n\t\t\t\tret += jQuery.text( node );\n\t\t\t}\n\t\t}\n\t\tif ( nodeType === 1 || nodeType === 11 ) {\n\t\t\treturn elem.textContent;\n\t\t}\n\t\tif ( nodeType === 9 ) {\n\t\t\treturn elem.documentElement.textContent;\n\t\t}\n\t\tif ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\n\t\t// Do not include comment or processing instruction nodes\n\n\t\treturn ret;\n\t},\n\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\tisXMLDoc: function( elem ) {\n\t\tvar namespace = elem && elem.namespaceURI,\n\t\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t\t// Assume HTML when documentElement doesn't yet exist, such as inside\n\t\t// document fragments.\n\t\treturn !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n\t},\n\n\t// Note: an element does not contain itself\n\tcontains: function( a, b ) {\n\t\tvar bup = b && b.parentNode;\n\n\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\n\t\t\t// Support: IE 9 - 11+\n\t\t\t// IE doesn't have `contains` on SVG.\n\t\t\ta.contains ?\n\t\t\t\ta.contains( bup ) :\n\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t) );\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction nodeName( elem, name ) {\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n}\n\nvar pop = arr.pop;\n\n// https://www.w3.org/TR/css3-selectors/#whitespace\nvar whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n\nvar isIE = document$1.documentMode;\n\nvar rbuggyQSA = isIE && new RegExp(\n\n\t// Support: IE 9 - 11+\n\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\":enabled|:disabled|\" +\n\n\t// Support: IE 11+\n\t// IE 11 doesn't find elements on a `[name='']` query in some cases.\n\t// Adding a temporary attribute to the document before the selection works\n\t// around the issue.\n\t\"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\twhitespace + \"*(?:''|\\\"\\\")\"\n\n);\n\nvar rtrimCSS = new RegExp(\n\t\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\",\n\t\"g\"\n);\n\n// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\nvar identifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\";\n\nvar rleadingCombinator = new RegExp( \"^\" + whitespace + \"*([>+~]|\" +\n\twhitespace + \")\" + whitespace + \"*\" );\n\nvar rdescend = new RegExp( whitespace + \"|>\" );\n\nvar rsibling = /[+~]/;\n\nvar documentElement$1 = document$1.documentElement;\n\n// Support: IE 9 - 11+\n// IE requires a prefix.\nvar matches = documentElement$1.matches || documentElement$1.msMatchesSelector;\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties\n\t\t// (see https://github.com/jquery/sizzle/issues/157)\n\t\tif ( keys.push( key + \" \" ) > jQuery.expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Checks a node for validity as a jQuery selector context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors\nvar attributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t// Operator (capture 2)\n\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\twhitespace + \"*\\\\]\";\n\nvar pseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t// 2. simple (capture 6)\n\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t// 3. anything else (capture 2)\n\t\".*\" +\n\t\")\\\\)|)\";\n\nvar filterMatchExpr = {\n\tID: new RegExp( \"^#(\" + identifier + \")\" ),\n\tCLASS: new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\tTAG: new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\tATTR: new RegExp( \"^\" + attributes ),\n\tPSEUDO: new RegExp( \"^\" + pseudos ),\n\tCHILD: new RegExp(\n\t\t\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" )\n};\n\nvar rpseudo = new RegExp( pseudos );\n\n// CSS escapes\n// https://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\nvar runescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\tif ( nonHex ) {\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\treturn nonHex;\n\t\t}\n\n\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t// Support: IE <=11+\n\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t// surrogate pair\n\t\treturn high < 0 ?\n\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t};\n\nfunction unescapeSelector( sel ) {\n\treturn sel.replace( runescape, funescape );\n}\n\nfunction selectorError( msg ) {\n\tjQuery.error( \"Syntax error, unrecognized expression: \" + msg );\n}\n\nvar rcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" );\n\nvar tokenCache = createCache();\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 = jQuery.expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rleadingCombinator.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrimCSS, \" \" )\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 filterMatchExpr ) {\n\t\t\tif ( ( match = jQuery.expr.match[ 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\tif ( parseOnly ) {\n\t\treturn soFar.length;\n\t}\n\n\treturn soFar ?\n\t\tselectorError( selector ) :\n\n\t\t// Cache the tokens\n\t\ttokenCache( selector, groups ).slice( 0 );\n}\n\nvar preFilter = {\n\tATTR: function( match ) {\n\t\tmatch[ 1 ] = unescapeSelector( match[ 1 ] );\n\n\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\tmatch[ 3 ] = unescapeSelector( match[ 3 ] || match[ 4 ] || match[ 5 ] || \"\" );\n\n\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t}\n\n\t\treturn match.slice( 0, 4 );\n\t},\n\n\tCHILD: function( match ) {\n\n\t\t/* matches from filterMatchExpr[\"CHILD\"]\n\t\t\t1 type (only|nth|...)\n\t\t\t2 what (child|of-type)\n\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t5 sign of xn-component\n\t\t\t6 x of xn-component\n\t\t\t7 sign of y-component\n\t\t\t8 y of y-component\n\t\t*/\n\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t// nth-* requires argument\n\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\tselectorError( match[ 0 ] );\n\t\t\t}\n\n\t\t\t// numeric x and y parameters for jQuery.expr.filter.CHILD\n\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" )\n\t\t\t);\n\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t// other types prohibit arguments\n\t\t} else if ( match[ 3 ] ) {\n\t\t\tselectorError( match[ 0 ] );\n\t\t}\n\n\t\treturn match;\n\t},\n\n\tPSEUDO: function( match ) {\n\t\tvar excess,\n\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\tif ( filterMatchExpr.CHILD.test( match[ 0 ] ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Accept quoted arguments as-is\n\t\tif ( match[ 3 ] ) {\n\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t// Strip excess characters from unquoted arguments\n\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t// Get excess from tokenize (recursively)\n\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t// advance to the next closing parenthesis\n\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) -\n\t\t\t\tunquoted.length ) ) {\n\n\t\t\t// excess is a negative index\n\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t}\n\n\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\treturn match.slice( 0, 3 );\n\t}\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\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nfunction access( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( typeof value !== \"function\" ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n}\n\n// Only count HTML whitespace\n// Other whitespace should count in values\n// https://infra.spec.whatwg.org/#ascii-whitespace\nvar rnothtmlwhite = /[^\\x20\\t\\r\\n\\f]+/g;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ||\n\n\t\t\t\t// For compat with previous handling of boolean attributes,\n\t\t\t\t// remove when `false` passed. For ARIA attributes -\n\t\t\t\t// many of which recognize a `\"false\"` value - continue to\n\t\t\t\t// set the `\"false\"` value as jQuery <4 did.\n\t\t\t\t( value === false && name.toLowerCase().indexOf( \"aria-\" ) !== 0 ) ) {\n\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = elem.getAttribute( name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Support: IE <=11+\n// An input loses its value after becoming a radio\nif ( isIE ) {\n\tjQuery.attrHooks.type = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( value === \"radio\" && nodeName( elem, \"input\" ) ) {\n\t\t\t\tvar val = elem.value;\n\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\tif ( val ) {\n\t\t\t\t\telem.value = val;\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t};\n}\n\n// CSS string/identifier serialization\n// https://drafts.csswg.org/cssom/#common-serializing-idioms\nvar rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\n\nfunction fcssescape( ch, asCodePoint ) {\n\tif ( asCodePoint ) {\n\n\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\tif ( ch === \"\\0\" ) {\n\t\t\treturn \"\\uFFFD\";\n\t\t}\n\n\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t}\n\n\t// Other potentially-special ASCII characters get backslash-escaped\n\treturn \"\\\\\" + ch;\n}\n\njQuery.escapeSelector = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nvar sort = arr.sort;\n\nvar splice = arr.splice;\n\nvar hasDuplicate;\n\n// Document order sorting\nfunction sortOrder( a, b ) {\n\n\t// Flag for duplicate removal\n\tif ( a === b ) {\n\t\thasDuplicate = true;\n\t\treturn 0;\n\t}\n\n\t// Sort on method existence if only one input has compareDocumentPosition\n\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\tif ( compare ) {\n\t\treturn compare;\n\t}\n\n\t// Calculate position if both inputs belong to the same document\n\t// Support: IE 11+\n\t// IE sometimes throws a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\ta.compareDocumentPosition( b ) :\n\n\t\t// Otherwise we know they are disconnected\n\t\t1;\n\n\t// Disconnected nodes\n\tif ( compare & 1 ) {\n\n\t\t// Choose the first element that is related to the document\n\t\t// Support: IE 11+\n\t\t// IE sometimes throws a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tif ( a == document$1 || a.ownerDocument == document$1 &&\n\t\t\tjQuery.contains( document$1, a ) ) {\n\t\t\treturn -1;\n\t\t}\n\n\t\t// Support: IE 11+\n\t\t// IE sometimes throws a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tif ( b == document$1 || b.ownerDocument == document$1 &&\n\t\t\tjQuery.contains( document$1, b ) ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Maintain original order\n\t\treturn 0;\n\t}\n\n\treturn compare & 4 ? -1 : 1;\n}\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\njQuery.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\thasDuplicate = false;\n\n\tsort.call( results, 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\tsplice.call( results, duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\treturn results;\n};\n\njQuery.fn.uniqueSort = function() {\n\treturn this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) );\n};\n\nvar i,\n\toutermostContext,\n\n\t// Local document vars\n\tdocument,\n\tdocumentElement,\n\tdocumentIsHTML,\n\n\t// Instance-specific data\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\n\t// Regular expressions\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = jQuery.extend( {\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\tneedsContext: new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t}, filterMatchExpr ),\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr$1 = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\t// Used for iframes; see `setDocument`.\n\t// Support: IE 9 - 11+\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE.\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && nodeName( elem, \"fieldset\" );\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\nfunction find( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr$1.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn results;\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tjQuery.contains( context, elem ) ) {\n\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && context.getElementsByClassName ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( !nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rleadingCombinator.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) &&\n\t\t\t\t\t\ttestContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// Outside of IE, if we're not changing the context we can\n\t\t\t\t\t// use :scope instead of an ID.\n\t\t\t\t\t// Support: IE 11+\n\t\t\t\t\t// IE sometimes throws a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( newContext != context || isIE ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = jQuery.escapeSelector( nid );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = jQuery.expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === jQuery.expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrimCSS, \"$1\" ), context, results, seed );\n}\n\n/**\n * Mark a function for special use by jQuery selector module\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ jQuery.expando ] = true;\n\treturn fn;\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\treturn nodeName( elem, \"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\treturn ( nodeName( elem, \"input\" ) || nodeName( elem, \"button\" ) ) &&\n\t\t\telem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11+\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [node] An element or document object to use to set the document\n */\nfunction setDocument( node ) {\n\tvar subWindow,\n\t\tdoc = node ? node.ownerDocument || node : document$1;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+\n\t// IE sometimes throws a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 ) {\n\t\treturn;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocumentElement = document.documentElement;\n\tdocumentIsHTML = !jQuery.isXMLDoc( document );\n\n\t// Support: IE 9 - 11+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (see trac-13936)\n\t// Support: IE 11+\n\t// IE sometimes throws a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( isIE && document$1 != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\t\tsubWindow.addEventListener( \"unload\", unloadHandler );\n\t}\n}\n\nfind.matches = function( expr, elements ) {\n\treturn find( expr, null, null, elements );\n};\n\nfind.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\treturn matches.call( elem, expr );\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn find( expr, document, null, [ elem ] ).length > 0;\n};\n\njQuery.expr = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tfind: {\n\t\tID: function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t},\n\n\t\tTAG: function( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t},\n\n\t\tCLASS: function( className, context ) {\n\t\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\t\treturn context.getElementsByClassName( className );\n\t\t\t}\n\t\t}\n\t},\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: preFilter,\n\n\tfilter: {\n\t\tID: function( id ) {\n\t\t\tvar attrId = unescapeSelector( id );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t},\n\n\t\tTAG: function( nodeNameSelector ) {\n\t\t\tvar expectedNodeName = unescapeSelector( nodeNameSelector ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn nodeName( elem, expectedNodeName );\n\t\t\t\t};\n\t\t},\n\n\t\tCLASS: 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 +\n\t\t\t\t\t\"(\" + whitespace + \"|$)\" ) ) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\tATTR: function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = jQuery.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\tif ( operator === \"=\" ) {\n\t\t\t\t\treturn result === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"!=\" ) {\n\t\t\t\t\treturn result !== check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"^=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) === 0;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"*=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"$=\" ) {\n\t\t\t\t\treturn check && result.slice( -check.length ) === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"~=\" ) {\n\t\t\t\t\treturn ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" )\n\t\t\t\t\t\t.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"|=\" ) {\n\t\t\t\t\treturn result === check || result.slice( 0, check.length + 1 ) === check + \"-\";\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t};\n\t\t},\n\n\t\tCHILD: 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, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ jQuery.expando ] ||\n\t\t\t\t\t\t\t\t( parent[ jQuery.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 = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\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} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\touterCache = elem[ jQuery.expando ] ||\n\t\t\t\t\t\t\t\t\t( elem[ jQuery.expando ] = {} );\n\t\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ jQuery.expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ jQuery.expando ] = {} );\n\t\t\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\tPSEUDO: function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// https://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 fn = jQuery.expr.pseudos[ pseudo ] ||\n\t\t\t\tjQuery.expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\tselectorError( \"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 jQuery does\n\t\t\tif ( fn[ jQuery.expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\tnot: markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrimCSS, \"$1\" ) );\n\n\t\t\treturn matcher[ jQuery.expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element\n\t\t\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\thas: markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn find( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\tcontains: markFunction( function( text ) {\n\t\t\ttext = unescapeSelector( text );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || jQuery.text( 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// https://www.w3.org/TR/selectors/#lang-pseudo\n\t\tlang: markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tselectorError( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = unescapeSelector( lang ).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\ttarget: 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\troot: function( elem ) {\n\t\t\treturn elem === documentElement;\n\t\t},\n\n\t\tfocus: function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\tdocument.hasFocus() &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\tenabled: createDisabledPseudo( false ),\n\t\tdisabled: createDisabledPseudo( true ),\n\n\t\tchecked: function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\treturn ( nodeName( elem, \"input\" ) && !!elem.checked ) ||\n\t\t\t\t( nodeName( elem, \"option\" ) && !!elem.selected );\n\t\t},\n\n\t\tselected: function( elem ) {\n\n\t\t\t// Support: IE <=11+\n\t\t\t// Accessing the selectedIndex property\n\t\t\t// forces the browser to treat the default option as\n\t\t\t// selected when in an optgroup.\n\t\t\tif ( isIE && elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\tempty: function( elem ) {\n\n\t\t\t// https://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t//   but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !jQuery.expr.pseudos.empty( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\theader: function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"button\" ||\n\t\t\t\tnodeName( elem, \"button\" );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"text\";\n\t\t},\n\n\t\t// Position-in-collection\n\t\tfirst: createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\tlast: createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\teq: createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\teven: 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\todd: 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\tlt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i;\n\n\t\t\tif ( argument < 0 ) {\n\t\t\t\ti = argument + length;\n\t\t\t} else if ( argument > length ) {\n\t\t\t\ti = length;\n\t\t\t} else {\n\t\t\t\ti = argument;\n\t\t\t}\n\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\tgt: 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\njQuery.expr.pseudos.nth = jQuery.expr.pseudos.eq;\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tjQuery.expr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tjQuery.expr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = jQuery.expr.pseudos;\njQuery.expr.setFilters = new setFilters();\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ jQuery.expando ] || ( elem[ jQuery.expando ] = {} );\n\n\t\t\t\t\t\tif ( skip && nodeName( elem, skip ) ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = outerCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tfind( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ jQuery.expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ jQuery.expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem, matcherOut,\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 ||\n\t\t\t\tmultipleContexts( selector || \"*\",\n\t\t\t\t\tcontext.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\tif ( matcher ) {\n\n\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter\n\t\t\t// or preexisting results,\n\t\t\tmatcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t[] :\n\n\t\t\t\t// ...otherwise use results directly\n\t\t\t\tresults;\n\n\t\t\t// Find primary matches\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t} else {\n\t\t\tmatcherOut = matcherIn;\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf.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 = jQuery.expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || jQuery.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\n\t\t\t// Support: IE 11+\n\t\t\t// IE sometimes throws a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tvar ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element\n\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = jQuery.expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = jQuery.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[ jQuery.expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( jQuery.expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t\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 )\n\t\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrimCSS, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && jQuery.expr.find.TAG( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 );\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+\n\t\t\t\t// IE sometimes throws a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\tfor ( ; ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+\n\t\t\t\t\t// IE sometimes throws a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tjQuery.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\nfunction compile( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ jQuery.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,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n}\n\n/**\n * A low-level selection function that works with jQuery's compiled\n *  selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n *  selector function built with jQuery selector compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nfunction select( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML &&\n\t\t\t\tjQuery.expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( jQuery.expr.find.ID(\n\t\t\t\tunescapeSelector( token.matches[ 0 ] ),\n\t\t\t\tcontext\n\t\t\t) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr.needsContext.test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( jQuery.expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = jQuery.expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\tunescapeSelector( token.matches[ 0 ] ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) &&\n\t\t\t\t\t\ttestContext( context.parentNode ) || context\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n}\n\n// Initialize against the default document\nsetDocument();\n\njQuery.find = find;\n\n// These have always been private, but they used to be documented as part of\n// Sizzle so let's maintain them for now for backwards compatibility purposes.\nfind.compile = compile;\nfind.select = select;\nfind.setDocument = setDocument;\nfind.tokenize = tokenize;\n\nfunction dir( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n}\n\nfunction siblings( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n}\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n// rsingleTag matches a string consisting of a single HTML element with no attributes\n// and captures the element's name\nvar rsingleTag = /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i;\n\nfunction isObviousHtml( input ) {\n\treturn input[ 0 ] === \"<\" &&\n\t\tinput[ input.length - 1 ] === \">\" &&\n\t\tinput.length >= 3;\n}\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( typeof qualifier === \"function\" ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n// Initialize a jQuery object\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521)\n\t// Strict HTML recognition (trac-11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context ) {\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: $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( typeof selector === \"function\" ) {\n\t\t\treturn rootjQuery.ready !== undefined ?\n\t\t\t\trootjQuery.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\n\t\t} else {\n\n\t\t\t// Handle obvious HTML strings\n\t\t\tmatch = selector + \"\";\n\t\t\tif ( isObviousHtml( match ) ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip\n\t\t\t\t// the regex check. This also handles browser-supported HTML wrappers\n\t\t\t\t// like TrustedHTML.\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t// Handle HTML strings or selectors\n\t\t\t} else if ( typeof selector === \"string\" ) {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t} else {\n\t\t\t\treturn jQuery.makeArray( selector, this );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\t// Note: match[1] may be a string or a TrustedHTML wrapper\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document$1,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( typeof this[ match ] === \"function\" ) {\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$1.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr) & $(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\t\t}\n\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document$1 );\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to jQuery#find\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// <object> elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11+\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( typeof arg === \"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 && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && typeof( method = value.promise ) === \"function\" ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && typeof( method = value.then ) === \"function\" ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\t\treject( value );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tcatch: function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = typeof fns[ tuple[ 4 ] ] === \"function\" &&\n\t\t\t\t\t\t\t\tfns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && typeof returned.promise === \"function\" ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( typeof then === \"function\" ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.error );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the error, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getErrorHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getErrorHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\ttypeof onProgress === \"function\" ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\ttypeof onFulfilled === \"function\" ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\ttypeof onRejected === \"function\" ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\ttypeof( resolveValues[ i ] && resolveValues[ i ].then ) === \"function\" ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\n// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error\n// captured before the async barrier to get the original error cause\n// which may otherwise be hidden.\njQuery.Deferred.exceptionHook = function( error, asyncError ) {\n\n\tif ( error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn(\n\t\t\t\"jQuery.Deferred exception\",\n\t\t\terror,\n\t\t\tasyncError\n\t\t);\n\t}\n};\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See trac-6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document$1, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument$1.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\nif ( document$1.readyState !== \"loading\" ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument$1.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n// Matches dashed string for camelizing\nvar rdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase\nfunction camelCase( string ) {\n\treturn string.replace( rdashAlpha, fcamelCase );\n}\n\n/**\n * Determines whether an object can have data\n */\nfunction acceptData( owner ) {\n\n\t// Accepts only:\n\t//  - Node\n\t//    - Node.ELEMENT_NODE\n\t//    - Node.DOCUMENT_NODE\n\t//  - Object\n\t//    - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n}\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = Object.create( null );\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see trac-8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn value;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t//   1. No key was specified\n\t\t//   2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t//   1. The entire cache object\n\t\t//   2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t//   1. An object of properties\n\t\t//   2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\n\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11+\n\t\t\t\t\t\t// The attrs elements can be null (trac-14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.set( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.set( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\n\nvar pnum = /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\n// isHiddenWithinTree reports if an element has a non-\"none\" display style (inline and/or\n// through the CSS cascade), which is useful in deciding whether or not to make it visible.\n// It differs from the :hidden selector (jQuery.expr.pseudos.hidden) in two important ways:\n// * A hidden ancestor does not force an element to be classified as hidden.\n// * Being disconnected from the document does not force an element to be classified as hidden.\n// These differences improve the behavior of .toggle() et al. when applied to elements that are\n// detached or contained within hidden ancestors (gh-2404, gh-2863).\nfunction isHiddenWithinTree( elem, el ) {\n\n\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t// in that case, element will be second argument\n\telem = el || elem;\n\n\t// Inline style trumps all\n\treturn elem.style.display === \"none\" ||\n\t\telem.style.display === \"\" &&\n\t\tjQuery.css( elem, \"display\" ) === \"none\";\n}\n\nvar ralphaStart = /^[a-z]/,\n\n\t// The regex visualized:\n\t//\n\t//                         /----------\\\n\t//                        |            |    /-------\\\n\t//                        |  / Top  \\  |   |         |\n\t//         /--- Border ---+-| Right  |-+---+- Width -+---\\\n\t//        |                 | Bottom |                    |\n\t//        |                  \\ Left /                     |\n\t//        |                                               |\n\t//        |                              /----------\\     |\n\t//        |          /-------------\\    |            |    |- END\n\t//        |         |               |   |  / Top  \\  |    |\n\t//        |         |  / Margin  \\  |   | | Right  | |    |\n\t//        |---------+-|           |-+---+-| Bottom |-+----|\n\t//        |            \\ Padding /         \\ Left /       |\n\t// BEGIN -|                                               |\n\t//        |                /---------\\                    |\n\t//        |               |           |                   |\n\t//        |               |  / Min \\  |    / Width  \\     |\n\t//         \\--------------+-|       |-+---|          |---/\n\t//                           \\ Max /       \\ Height /\n\trautoPx = /^(?:Border(?:Top|Right|Bottom|Left)?(?:Width|)|(?:Margin|Padding)?(?:Top|Right|Bottom|Left)?|(?:Min|Max)?(?:Width|Height))$/;\n\nfunction isAutoPx( prop ) {\n\n\t// The first test is used to ensure that:\n\t// 1. The prop starts with a lowercase letter (as we uppercase it for the second regex).\n\t// 2. The prop is not empty.\n\treturn ralphaStart.test( prop ) &&\n\t\trautoPx.test( prop[ 0 ].toUpperCase() + prop.slice( 1 ) );\n}\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( isAutoPx( prop ) ? \"px\" : \"\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( !isAutoPx( prop ) || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54 - 66+\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/;\n\n// Convert dashed to camelCase, handle vendor prefixes.\n// Used by the css & effects modules.\n// Support: IE <=9 - 11+\n// Microsoft forgot to hump their vendor prefix (trac-9572)\nfunction cssCamelCase( string ) {\n\treturn camelCase( string.replace( rmsPrefix, \"ms-\" ) );\n}\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\n\nvar isAttached = function( elem ) {\n\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t},\n\tcomposed = { composed: true };\n\n// Support: IE 9 - 11+\n// Check attachment across shadow DOM boundaries when possible (gh-3504).\n// Provide a fallback for browsers without Shadow DOM v1 support.\nif ( !documentElement$1.getRootNode ) {\n\tisAttached = function( elem ) {\n\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t};\n}\n\n// rtagName captures the name from the first start tag in a string of HTML\n// https://html.spec.whatwg.org/multipage/syntax.html#tag-open-state\n// https://html.spec.whatwg.org/multipage/syntax.html#tag-name-state\nvar rtagName = /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i;\n\nvar wrapMap = {\n\n\t// Table parts need to be wrapped with `<table>` or they're\n\t// stripped to their contents when put in a div.\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do, so we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ \"table\" ],\n\tcol: [ \"colgroup\", \"table\" ],\n\ttr: [ \"tbody\", \"table\" ],\n\ttd: [ \"tr\", \"tbody\", \"table\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11+\n\t// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\n\t\t// Use slice to snapshot the live collection from gEBTN\n\t\tret = arr.slice.call( context.getElementsByTagName( tag || \"*\" ) );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\nvar rscriptType = /^$|^module$|\\/(?:java|ecma)script/i;\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" && ( elem.nodeType || isArrayLike( elem ) ) ) {\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || arr;\n\n\t\t\t\t// Create wrappers & descend into them.\n\t\t\t\tj = wrap.length;\n\t\t\t\twhile ( --j > -1 ) {\n\t\t\t\t\ttmp = tmp.appendChild( context.createElement( wrap[ j ] ) );\n\t\t\t\t}\n\n\t\t\t\ttmp.innerHTML = jQuery.htmlPrefilter( elem );\n\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (trac-12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = typeof value === \"function\";\n\n\tif ( valueIsFunction ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (trac-8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Re-enable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.get( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase()  !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce,\n\t\t\t\t\t\t\t\t\tcrossOrigin: node.crossOrigin\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent, node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nvar rcheckableType = /^(?:checkbox|radio)$/i;\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement$1, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: Firefox <=42 - 66+\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11+\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (trac-13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: typeof hook === \"function\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: jQuery.extend( Object.create( null ), {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", true );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\t\t\t\tif ( event.result !== undefined ) {\n\n\t\t\t\t\t// Setting `event.originalEvent.returnValue` in modern\n\t\t\t\t\t// browsers does the same as just calling `preventDefault()`,\n\t\t\t\t\t// the browsers ignore the value anyway.\n\t\t\t\t\t// Incidentally, IE 11 is the only browser from our supported\n\t\t\t\t\t// ones which respects the value returned from a `beforeunload`\n\t\t\t\t\t// handler attached by `addEventListener`; other browsers do\n\t\t\t\t\t// so only for inline handlers, so not setting the value\n\t\t\t\t\t// directly shouldn't reduce any functionality.\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} )\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, isSetup ) {\n\n\t// Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !isSetup ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\t// This controller function is invoked under multiple circumstances,\n\t\t\t// differentiated by the stored value in `saved`:\n\t\t\t// 1. For an outer synthetic `.trigger()`ed event (detected by\n\t\t\t//    `event.isTrigger & 1` and non-array `saved`), it records arguments\n\t\t\t//    as an array and fires an [inner] native event to prompt state\n\t\t\t//    changes that should be observed by registered listeners (such as\n\t\t\t//    checkbox toggling and focus updating), then clears the stored value.\n\t\t\t// 2. For an [inner] native event (detected by `saved` being\n\t\t\t//    an array), it triggers an inner synthetic event, records the\n\t\t\t//    result, and preempts propagation to further jQuery listeners.\n\t\t\t// 3. For an inner synthetic event (detected by `event.isTrigger & 1` and\n\t\t\t//    array `saved`), it prevents double-propagation of surrogate events\n\t\t\t//    but otherwise allows everything to proceed (particularly including\n\t\t\t//    further listeners).\n\t\t\t// Possible `saved` data shapes: `[...], `{ value }`, `false`.\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object),\n\t\t\t\t\t// so this array will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tdataPriv.set( this, type, false );\n\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Support: Chrome 86+\n\t\t\t\t\t\t// In Chrome, if an element having a focusout handler is\n\t\t\t\t\t\t// blurred by clicking outside of it, it invokes the handler\n\t\t\t\t\t\t// synchronously. If that handler calls `.remove()` on\n\t\t\t\t\t\t// the element, the data is cleared, leaving `result`\n\t\t\t\t\t\t// undefined. We need to guard against this.\n\t\t\t\t\t\treturn result && result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling\n\t\t\t\t// surrogate (focus or blur), assume that the surrogate already\n\t\t\t\t// propagated from triggering the native event and prevent that\n\t\t\t\t// from happening again here.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order.\n\t\t\t// Fire an inner synthetic event with the original arguments.\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\t\t\t\t\t\tsaved[ 0 ],\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event by all jQuery handlers while allowing\n\t\t\t\t// native handlers on the same element to run. On target, this is achieved\n\t\t\t\t// by stopping immediate propagation just on the jQuery event. However,\n\t\t\t\t// the native event is re-wrapped by a jQuery one on each level of the\n\t\t\t\t// propagation so the only way to stop it for jQuery is to stop it for\n\t\t\t\t// everyone via native `stopPropagation()`. This is not a problem for\n\t\t\t\t// focus/blur which don't bubble, but it does also stop click on checkboxes\n\t\t\t\t// and radios. We accept this limitation.\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.isImmediatePropagationStopped = returnTrue;\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\tthis.target = src.target;\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\n\t// Support: IE 11+\n\t// Attach a single focusin/focusout handler on the document while someone wants focus/blur.\n\t// This is because the former are synchronous in IE while the latter are async. In other\n\t// browsers, all those handlers are invoked synchronously.\n\tfunction focusMappedHandler( nativeEvent ) {\n\n\t\t// `eventHandle` would already wrap the event, but we need to change the `type` here.\n\t\tvar event = jQuery.event.fix( nativeEvent );\n\t\tevent.type = nativeEvent.type === \"focusin\" ? \"focus\" : \"blur\";\n\t\tevent.isSimulated = true;\n\n\t\t// focus/blur don't bubble while focusin/focusout do; simulate the former by only\n\t\t// invoking the handler at the lower level.\n\t\tif ( event.target === event.currentTarget ) {\n\n\t\t\t// The setup part calls `leverageNative`, which, in turn, calls\n\t\t\t// `jQuery.event.add`, so event handle will already have been set\n\t\t\t// by this point.\n\t\t\tdataPriv.get( this, \"handle\" )( event );\n\t\t}\n\t}\n\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, true );\n\n\t\t\tif ( isIE ) {\n\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t} else {\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tif ( isIE ) {\n\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t} else {\n\n\t\t\t\t// Return false to indicate standard teardown should be applied\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t// Suppress native focus or blur if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\nvar\n\n\t// Support: IE <=10 - 11+\n\t// In IE using regex groups here causes severe slowdowns.\n\trnoInnerhtml = /<script|<style|<link/i;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar type, i, l,\n\t\tevents = dataPriv.get( src, \"events\" );\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( events ) {\n\t\tdataPriv.remove( dest, \"handle events\" );\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// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tdataUser.set( dest, jQuery.extend( {}, dataUser.get( src ) ) );\n\t}\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( isIE && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew jQuery#find here for performance reasons:\n\t\t\t// https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\n\t\t\t\t// Support: IE <=11+\n\t\t\t\t// IE fails to set the defaultValue to the correct value when\n\t\t\t\t// cloning textareas.\n\t\t\t\tif ( nodeName( destElements[ i ], \"textarea\" ) ) {\n\t\t\t\t\tdestElements[ i ].defaultValue = srcElements[ i ].defaultValue;\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, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\t\t\tpush.apply( ret, elems );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\n\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar rcustomProp = /^--/;\n\nfunction getStyles( elem ) {\n\n\t// Support: IE <=11+ (trac-14150)\n\t// In IE popup's `window` is the opener window which makes `window.getComputedStyle( elem )`\n\t// break. Using `elem.ownerDocument.defaultView` avoids the issue.\n\tvar view = elem.ownerDocument.defaultView;\n\n\t// `document.implementation.createHTMLDocument( \"\" )` has a `null` `defaultView`\n\t// property; check `defaultView` truthiness to fallback to window in such a case.\n\tif ( !view ) {\n\t\tview = window;\n\t}\n\n\treturn view.getComputedStyle( elem );\n}\n\n// A method for quickly swapping in/out CSS properties to get correct calculations.\nfunction swap( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n}\n\nfunction curCSS( elem, name, computed ) {\n\tvar ret,\n\t\tisCustomProp = rcustomProp.test( name );\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for `.css('--customProperty')` (gh-3144)\n\tif ( computed ) {\n\n\t\t// A fallback to direct property access is needed as `computed`, being\n\t\t// the output of `getComputedStyle`, contains camelCased keys and\n\t\t// `getPropertyValue` requires kebab-case ones.\n\t\t//\n\t\t// Support: IE <=9 - 11+\n\t\t// IE only supports `\"float\"` in `getPropertyValue`; in computed styles\n\t\t// it's only available as `\"cssFloat\"`. We no longer modify properties\n\t\t// sent to `.css()` apart from camelCasing, so we need to check both.\n\t\t// Normally, this would create difference in behavior: if\n\t\t// `getPropertyValue` returns an empty string, the value returned\n\t\t// by `.css()` would be `undefined`. This is usually the case for\n\t\t// disconnected elements. However, in IE even disconnected elements\n\t\t// with no styles return `\"none\"` for `getPropertyValue( \"float\" )`\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( isCustomProp && ret ) {\n\n\t\t\t// Support: Firefox 105 - 135+\n\t\t\t// Spec requires trimming whitespace for custom properties (gh-4926).\n\t\t\t// Firefox only trims leading whitespace.\n\t\t\t//\n\t\t\t// Fall back to `undefined` if empty string returned.\n\t\t\t// This collapses a missing definition with property defined\n\t\t\t// and set to an empty string but there's no standard API\n\t\t\t// allowing us to differentiate them without a performance penalty\n\t\t\t// and returning `undefined` aligns with older jQuery.\n\t\t\t//\n\t\t\t// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" ) || undefined;\n\t\t}\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11+\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document$1.createElement( \"div\" ).style;\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped vendor prefixed property\nfunction finalPropName( name ) {\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorPropName( name ) || name;\n}\n\nvar reliableTrDimensionsVal, reliableColDimensionsVal,\n\ttable = document$1.createElement( \"table\" );\n\n// Executing table tests requires only one layout, so they're executed\n// at the same time to save the second computation.\nfunction computeTableStyleTests() {\n\tif (\n\n\t\t// This is a singleton, we need to execute it only once\n\t\t!table ||\n\n\t\t// Finish early in limited (non-browser) environments\n\t\t!table.style\n\t) {\n\t\treturn;\n\t}\n\n\tvar trStyle,\n\t\tcol = document$1.createElement( \"col\" ),\n\t\ttr = document$1.createElement( \"tr\" ),\n\t\ttd = document$1.createElement( \"td\" );\n\n\ttable.style.cssText = \"position:absolute;left:-11111px;\" +\n\t\t\"border-collapse:separate;border-spacing:0\";\n\ttr.style.cssText = \"box-sizing:content-box;border:1px solid;height:1px\";\n\ttd.style.cssText = \"height:9px;width:9px;padding:0\";\n\n\tcol.span = 2;\n\n\tdocumentElement$1\n\t\t.appendChild( table )\n\t\t.appendChild( col )\n\t\t.parentNode\n\t\t.appendChild( tr )\n\t\t.appendChild( td )\n\t\t.parentNode\n\t\t.appendChild( td.cloneNode( true ) );\n\n\t// Don't run until window is visible\n\tif ( table.offsetWidth === 0 ) {\n\t\tdocumentElement$1.removeChild( table );\n\t\treturn;\n\t}\n\n\ttrStyle = window.getComputedStyle( tr );\n\n\t// Support: Firefox 135+\n\t// Firefox always reports computed width as if `span` was 1.\n\t// Support: Safari 18.3+\n\t// In Safari, computed width for columns is always 0.\n\t// In both these browsers, using `offsetWidth` solves the issue.\n\t// Support: IE 11+\n\t// In IE, `<col>` computed width is `\"auto\"` unless `width` is set\n\t// explicitly via CSS so measurements there remain incorrect. Because of\n\t// the lack of a proper workaround, we accept this limitation, treating\n\t// IE as passing the test.\n\treliableColDimensionsVal = isIE || Math.round( parseFloat(\n\t\twindow.getComputedStyle( col ).width )\n\t) === 18;\n\n\t// Support: IE 10 - 11+\n\t// IE misreports `getComputedStyle` of table rows with width/height\n\t// set in CSS while `offset*` properties report correct values.\n\t// Support: Firefox 70 - 135+\n\t// Only Firefox includes border widths\n\t// in computed dimensions for table rows. (gh-4529)\n\treliableTrDimensionsVal = Math.round( parseFloat( trStyle.height ) +\n\t\tparseFloat( trStyle.borderTopWidth ) +\n\t\tparseFloat( trStyle.borderBottomWidth ) ) === tr.offsetHeight;\n\n\tdocumentElement$1.removeChild( table );\n\n\t// Nullify the table so it wouldn't be stored in the memory;\n\t// it will also be a sign that checks were already performed.\n\ttable = null;\n}\n\njQuery.extend( support, {\n\treliableTrDimensions: function() {\n\t\tcomputeTableStyleTests();\n\t\treturn reliableTrDimensionsVal;\n\t},\n\n\treliableColDimensions: function() {\n\t\tcomputeTableStyleTests();\n\t\treturn reliableColDimensionsVal;\n\t}\n} );\n\nvar cssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0,\n\t\tmarginDelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\t// Count margin delta separately to only add it after scroll gutter adjustment.\n\t\t// This is needed to make negative margins work with `outerHeight( true )` (gh-3982).\n\t\tif ( box === \"margin\" ) {\n\t\t\tmarginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta + marginDelta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = isIE || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\tif (\n\t\t(\n\n\t\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\t\tval === \"auto\" ||\n\n\t\t\t// Support: IE 9 - 11+\n\t\t\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t\t\t// In those cases, the computed value can be trusted to be border-box.\n\t\t\t( isIE && isBorderBox ) ||\n\n\t\t\t( !support.reliableColDimensions() && nodeName( elem, \"col\" ) ) ||\n\n\t\t\t( !support.reliableTrDimensions() && nodeName( elem, \"tr\" ) )\n\t\t) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = cssCamelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug trac-9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (trac-7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If the value is a number, add `px` for certain CSS properties\n\t\t\tif ( type === \"number\" ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( isAutoPx( origName ) ? \"px\" : \"\" );\n\t\t\t}\n\n\t\t\t// Support: IE <=9 - 11+\n\t\t\t// background-* props of a cloned element affect the source element (trac-8908)\n\t\t\tif ( isIE && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = cssCamelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Elements with `display: none` can have dimension info if\n\t\t\t\t// we invisibly show them.\n\t\t\t\treturn jQuery.css( elem, \"display\" ) === \"none\" ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tisBorderBox = extra &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( isAutoPx( prop ) ? \"px\" : \"\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document$1.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, 13 );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11+\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.set( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t// eslint-disable-next-line no-loop-func\n\t\t\tanim.done( function() {\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = cssCamelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\tpercent = 1 - ( remaining / animation.duration || 0 ),\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( typeof result.stop === \"function\" ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( typeof animation.opts.start === \"function\" ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( typeof props === \"function\" ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || easing ||\n\t\t\ttypeof speed === \"function\" && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && typeof easing !== \"function\" && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( typeof opt.old === \"function\" ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n// Based off of the plugin by Clint Helfers, with permission.\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// Use proper attribute retrieval (trac-12072)\n\t\t\t\tvar tabindex = elem.getAttribute( \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\n\t\t\t\t\t// href-less anchor's `tabIndex` property value is `0` and\n\t\t\t\t\t// the `tabindex` attribute value: `null`. We want `-1`.\n\t\t\t\t\trclickable.test( elem.nodeName ) && elem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11+\n// Accessing the selectedIndex property forces the browser to respect\n// setting selected on the option. The getter ensures a default option\n// is selected when in an optgroup. ESLint rule \"no-unused-expressions\"\n// is disabled for this code since it considers such accessions noop.\nif ( isIE ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n// Strip and collapse whitespace according to HTML spec\n// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\nfunction stripAndCollapse( value ) {\n\tvar tokens = value.match( rnothtmlwhite ) || [];\n\treturn tokens.join( \" \" );\n}\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( typeof value === \"function\" ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( typeof value === \"function\" ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar classNames, className, i, self;\n\n\t\tif ( typeof value === \"function\" ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof stateVal === \"boolean\" ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = typeof value === \"function\";\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\tif ( option.selected &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\tif ( ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery( option ).val(), values ) > -1\n\t\t\t\t\t) ) {\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\nif ( isIE ) {\n\tjQuery.valHooks.option = {\n\t\tget: function( elem ) {\n\n\t\t\tvar val = elem.getAttribute( \"value\" );\n\t\t\treturn val != null ?\n\t\t\t\tval :\n\n\t\t\t\t// Support: IE <=10 - 11+\n\t\t\t\t// option.text throws exceptions (trac-14686, trac-14858)\n\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t}\n\t};\n}\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n} );\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document$1 ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document$1;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document$1 ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (trac-6170)\n\t\t\t\tif ( ontype && typeof elem[ type ] === \"function\" && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = /\\?/;\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11+\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = typeof valueOrFunction === \"function\" ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// trac-7653, trac-8125, trac-8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document$1.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( typeof func === \"function\" ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes trac-9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\n\t\t\t\t\t\t\t\t// Support: IE 11+\n\t\t\t\t\t\t\t\t// `getResponseHeader( key )` in IE doesn't combine all header\n\t\t\t\t\t\t\t\t// values for the provided key into a single result with values\n\t\t\t\t\t\t\t\t// joined by commas as other browsers do. Instead, it returns\n\t\t\t\t\t\t\t\t// them on separate lines.\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (trac-10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket trac-12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document$1.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11+\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11+\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an ESM-usage scenario (trac-15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// trac-9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" +\n\t\t\t\t\t( nonce.guid++ ) + uncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted.\n\t\t// Handle the null callback placeholder.\n\t\tif ( typeof data === \"function\" || data === null ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (trac-11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\t\tscriptAttrs: options.crossOrigin ? { \"crossOrigin\": options.crossOrigin } : undefined,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( typeof html === \"function\" ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( typeof html === \"function\" ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = typeof html === \"function\";\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\njQuery.ajaxSettings.xhr = function() {\n\treturn new window.XMLHttpRequest();\n};\n\nvar xhrSuccessStatus = {\n\n\t// File protocol always yields status code 0, assume 200\n\t0: 200\n};\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback;\n\n\treturn {\n\t\tsend: function( headers, complete ) {\n\t\t\tvar i,\n\t\t\t\txhr = options.xhr();\n\n\t\t\txhr.open(\n\t\t\t\toptions.type,\n\t\t\t\toptions.url,\n\t\t\t\toptions.async,\n\t\t\t\toptions.username,\n\t\t\t\toptions.password\n\t\t\t);\n\n\t\t\t// Apply custom fields if provided\n\t\t\tif ( options.xhrFields ) {\n\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override mime type if needed\n\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t}\n\n\t\t\t// X-Requested-With header\n\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t}\n\n\t\t\t// Set headers\n\t\t\tfor ( i in headers ) {\n\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t}\n\n\t\t\t// Callback\n\t\t\tcallback = function( type ) {\n\t\t\t\treturn function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback = xhr.onload = xhr.onerror = xhr.onabort = xhr.ontimeout = null;\n\n\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see trac-8605, trac-14207\n\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) === \"text\" ?\n\t\t\t\t\t\t\t\t\t{ text: xhr.responseText } :\n\t\t\t\t\t\t\t\t\t{ binary: xhr.response },\n\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\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\n\t\t\t// Listen to events\n\t\t\txhr.onload = callback();\n\t\t\txhr.onabort = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t// Create the abort callback\n\t\t\tcallback = callback( \"abort\" );\n\n\t\t\ttry {\n\n\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// trac-14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tabort: function() {\n\t\t\tif ( callback ) {\n\t\t\t\tcallback();\n\t\t\t}\n\t\t}\n\t};\n} );\n\nfunction canUseScriptTag( s ) {\n\n\t// A script tag can only be used for async, cross domain or forced-by-attrs requests.\n\t// Requests with headers cannot use a script tag. However, when both `scriptAttrs` &\n\t// `headers` options are specified, both are impossible to satisfy together; we\n\t// prefer `scriptAttrs` then.\n\t// Sync requests remain handled differently to preserve strict script ordering.\n\treturn s.scriptAttrs || (\n\t\t!s.headers &&\n\t\t(\n\t\t\ts.crossDomain ||\n\n\t\t\t// When dealing with JSONP (`s.dataTypes` include \"json\" then)\n\t\t\t// don't use a script tag so that error responses still may have\n\t\t\t// `responseJSON` set. Continue using a script tag for JSONP requests that:\n\t\t\t//   * are cross-domain as AJAX requests won't work without a CORS setup\n\t\t\t//   * have `scriptAttrs` set as that's a script-only functionality\n\t\t\t// Note that this means JSONP requests violate strict CSP script-src settings.\n\t\t\t// A proper solution is to migrate from using JSONP to a CORS setup.\n\t\t\t( s.async && jQuery.inArray( \"json\", s.dataTypes ) < 0 )\n\t\t)\n\t);\n}\n\n// Install script dataType. Don't specify `contents.script` so that an explicit\n// `dataType: \"script\"` is required (see gh-2432, gh-4822)\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\n\t// These types of requests are handled via a script tag\n\t// so force their methods to GET.\n\tif ( canUseScriptTag( s ) ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\tif ( canUseScriptTag( s ) ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument$1.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce.guid++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Get callback name, remembering preexisting value associated with it\n\tcallbackName = s.jsonpCallback = typeof s.jsonpCallback === \"function\" ?\n\t\ts.jsonpCallback() :\n\t\ts.jsonpCallback;\n\n\t// Insert callback into url or form data\n\tif ( jsonProp ) {\n\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t} else if ( s.jsonp !== false ) {\n\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t}\n\n\t// Use data converter to retrieve json after script execution\n\ts.converters[ \"script json\" ] = function() {\n\t\tif ( !responseContainer ) {\n\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t}\n\t\treturn responseContainer[ 0 ];\n\t};\n\n\t// Force json dataType\n\ts.dataTypes[ 0 ] = \"json\";\n\n\t// Install callback\n\toverwritten = window[ callbackName ];\n\twindow[ callbackName ] = function() {\n\t\tresponseContainer = arguments;\n\t};\n\n\t// Clean-up function (fires after converters)\n\tjqXHR.always( function() {\n\n\t\t// If previous value didn't exist - remove it\n\t\tif ( overwritten === undefined ) {\n\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t// Otherwise restore preexisting value\n\t\t} else {\n\t\t\twindow[ callbackName ] = overwritten;\n\t\t}\n\n\t\t// Save back as free\n\t\tif ( s[ callbackName ] ) {\n\n\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t// Save the callback name for future use\n\t\t\toldCallbacks.push( callbackName );\n\t\t}\n\n\t\t// Call if it was a function and we have a response\n\t\tif ( responseContainer && typeof overwritten === \"function\" ) {\n\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t}\n\n\t\tresponseContainer = overwritten = undefined;\n\t} );\n\n\t// Delegate to script\n\treturn \"script\";\n} );\n\njQuery.ajaxPrefilter( function( s, origOptions ) {\n\n\t// Binary data needs to be passed to XHR as-is without stringification.\n\tif ( typeof s.data !== \"string\" && !jQuery.isPlainObject( s.data ) &&\n\t\t\t!Array.isArray( s.data ) &&\n\n\t\t\t// Don't disable data processing if explicitly set by the user.\n\t\t\t!( \"processData\" in origOptions ) ) {\n\t\ts.processData = false;\n\t}\n\n\t// `Content-Type` for requests with `FormData` bodies needs to be set\n\t// by the browser as it needs to append the `boundary` it generated.\n\tif ( s.data instanceof window.FormData ) {\n\t\ts.contentType = false;\n\t}\n} );\n\n// Argument \"data\" should be string of html or a TrustedHTML wrapper of obvious HTML\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" && !isObviousHtml( data + \"\" ) ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using DOMParser\n\t\tcontext = ( new window.DOMParser() )\n\t\t\t.parseFromString( \"\", \"text/html\" );\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( typeof params === \"function\" ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( typeof options === \"function\" ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11+\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\toffsetParent !== doc.documentElement &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.offsetParent || doc.documentElement;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) !== \"static\" ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t//    documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement$1;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( {\n\t\tpadding: \"inner\" + name,\n\t\tcontent: type,\n\t\t\"\": \"outer\" + name\n\t}, function( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( _i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this\n\t\t\t.on( \"mouseenter\", fnOver )\n\t\t\t.on( \"mouseleave\", fnOut || fnOver );\n\t}\n} );\n\njQuery.each(\n\t( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( _i, name ) {\n\n\t\t// Handle event binding\n\t\tjQuery.fn[ name ] = function( data, fn ) {\n\t\t\treturn arguments.length > 0 ?\n\t\t\t\tthis.on( name, null, data, fn ) :\n\t\t\t\tthis.trigger( name );\n\t\t};\n\t}\n);\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( typeof fn !== \"function\" ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\n\njQuery.expr[ \":\" ] = jQuery.expr.filters = jQuery.expr.pseudos;\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\nvar\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\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (trac-7102#comment:10, gh-557)\n// and CommonJS for browser emulators (trac-13566)\nif ( typeof noGlobal === \"undefined\" ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\nreturn jQuery;\n\n}\n\nvar jQuery = jQueryFactory( window, true );\n\nexport { jQuery, jQuery as $ };\n\nexport default jQuery;\n", "import * as AppOS from \"./appos\"\n\nclass Application {\n  static availableComponents = []\n\n  static boot(opts) {\n    return AppOS.boot(new this(opts))\n  }\n\n  static DEFAULT_EVENTS = [\n    \"init\",\n    \"boot\",\n    \"documentLoad\",\n    \"pageLoad\",\n  ]\n\n  static DEFAULT_OPTIONS = {\n    instance: null,\n    init: null,\n    debug: false,\n    data: {},\n    turbolinks: false,\n    turbo: false,\n    defaultBoot: app => {\n      if (window.Turbo || window.Turbolinks) {\n        document.addEventListener('DOMContentLoaded', _ => app.fire(\"documentLoad\", app), { once: true })\n        if(window.Turbo) {\n          app.debug(\"detected Turbo\")\n          document.addEventListener('turbo:load', _ => app.fire(\"pageLoad\", app), false)\n        }\n        if(window.Turbolinks) {\n          app.debug(\"detected Turbolinks\")\n          document.addEventListener('turbolinks:load', _ => app.fire(\"pageLoad\", app), false)\n        }\n      } else {\n        document.addEventListener('DOMContentLoaded', _ => {\n          app.fire(\"documentLoad\", app)\n          app.fire(\"pageLoad\", app)\n        }, false)\n      }\n    }\n  }\n\n  constructor(opts = {}) {\n    this.app = this\n    this.loadedComponents = []\n    this.opts = Object.assign({}, this.constructor.DEFAULT_OPTIONS, opts)\n\n    // namespaced console\n    AppOS.NamespacedConsole.applyOn(this, {\n      debugConfig: this.opts,\n      namespaces: [\"AppOS\", [this, \"instance\"]],\n    })\n\n    // debugger\n    this.dev = new AppOS.Debugger(this).getProxy()\n\n    // register events\n    AppOS.SimpleEvents.applyOn(this, this.constructor.DEFAULT_EVENTS, this.opts)\n\n    this.constructor.DEFAULT_EVENTS.forEach(efn => {\n      if(typeof this[efn] == \"function\") this.on(efn, this[efn])\n    })\n  }\n\n  use(imp, opts) {\n    const ins = new imp(this, opts ?? this.opts[imp.id])\n    this.debug(\"using component \", ins.name)\n    this.loadedComponents.push(ins)\n    ins.init?.()\n    return ins\n  }\n\n  get components() {\n    const res = {}\n    this.loadedComponents.forEach(cins => {\n      res[cins.name] = cins\n    })\n    return res\n  }\n\n  get componentLoader() {\n    return window.__appos_core_component_loader\n  }\n\n  // ===============\n  // = API methods =\n  // ===============\n  // init() {}\n  // boot() {}\n  // documentLoad() {}\n  // pageLoad() {}\n}\n\nexport { Application }\n", "export class ComponentLoader {\n  constructor(app) {\n    this.app = app\n    this.promises = new Map()\n    this.sourceMap = new Map()\n    this.exports = new Map()\n  }\n\n  destroy() {\n    delete this.promises\n    delete this.sourceMap\n    delete this.exports\n  }\n\n  refreshSources() {\n    this.sourceMap = new Map()\n    if(document.body?.dataset.apposComponentMap) {\n      this.sourceMap = new Map(Object.entries(JSON.parse(document.body.dataset.apposComponentMap)))\n    }\n    return this\n  }\n\n  signal(comp, exps = {}, use = []) {\n    if(!this.exports.has(comp)) this.exports.set(comp, new Map())\n    const emap = this.exports.get(comp)\n    Object.entries(exps).forEach(([name, exp]) => emap.set(name, exp))\n\n    document.body.dispatchEvent(\n      new CustomEvent(\"appos:component:loaded\", {\n        bubbles: true,\n        detail: { component: comp, exports: exps },\n      }),\n    )\n\n    use.forEach(exp => {\n      const ins = this.app?.use(exp)\n      ins.boot?.()\n      ins.documentLoad?.()\n      ins.pageLoad?.()\n    })\n  }\n\n  ensure() {\n    this.refreshSources()\n    const promises = new Map()\n    document.querySelectorAll(`[data-appos-require-component]`).forEach(el => {\n      if(!el.dataset.apposRequireComponent) return undefined\n      el.dataset.apposRequireComponent.split(\" \").forEach(comp => {\n        if(comp && !promises.has(comp)) promises.set(comp, this.load(comp))\n      })\n    })\n    return Promise.all(promises.values())\n  }\n\n  load(component) {\n    if(!this.promises.has(component)) {\n      if(this.sourceMap.has(component)) {\n        this.promises.set(component, this.loadComponentWithScriptTag(component, this.sourceMap.get(component)))\n      } else {\n        console.warn(`[AppOS] failed to load component, not in map:`, component)\n      }\n    }\n    return this.promises.get(component)\n  }\n\n  loadComponentWithScriptTag(component, src) {\n    return new Promise((resolve, reject) => {\n      const script = document.createElement(\"script\")\n      script.type = \"text/javascript\"\n      script.src = src\n      script.defer = true\n      script.setAttribute(\"data-appos-component\", component)\n      // script.setAttribute(\"data-turbo-track\", \"reload\")\n      script.onload = ev => resolve([component, this.exports.get(component), src, script, ev])\n      document.head.append(script)\n    })\n  }\n}\n", "class NamespacedConsole {\n  static applyOn(target, opts = {}) {\n    const bconfig = opts.base?.__namespaced_console_opts\n    if (bconfig) {\n      opts.namespaces = bconfig.namespaces.slice(0)\n      opts.nsFallback = bconfig.nsFallback\n      opts.debug = bconfig.debug\n      opts.debugConfig = bconfig.debugConfig\n      opts.debugConfigKey = bconfig.debugConfigKey\n    }\n\n    opts.debug ??= false\n    opts.debugConfigKey ??= \"debug\"\n    opts.nsFallback ??= \"?\"\n    opts.namespaces ??= []\n    if (opts.namespace) opts.namespaces.push(opts.namespace)\n\n    opts.doDebugProc = _ => {\n      return opts.debugConfig ? opts.debugConfig[opts.debugConfigKey] : opts.debug\n    }\n\n    const nsStrProc = _ => {\n      if(!opts.namespaces) return false\n      let nsStr = \"\"\n      opts.namespaces.forEach(el => {\n        nsStr += `[${(Array.isArray(el) ? el[0][el[1]] : (typeof el == \"function\" ? el() : el)) ?? opts.nsFallback}]`\n      })\n      return nsStr\n    }\n\n    target.__namespaced_console_opts = opts\n\n    target.debug = (function (...msg) {\n      if(!opts.doDebugProc()) return\n      msg.unshift(nsStrProc())\n      if(!msg[0]) msg.shift()\n      console.debug.apply(console, msg)\n    }).bind(target)\n\n    target.info = (function (...msg) {\n      msg.unshift(nsStrProc())\n      if(!msg[0]) msg.shift()\n      console.info.apply(console, msg)\n    }).bind(target)\n\n    target.warning = (function (...msg) {\n      msg.unshift(nsStrProc())\n      if(!msg[0]) msg.shift()\n      console.warn.apply(console, msg)\n    }).bind(target)\n\n    target.error = (function (...msg) {\n      msg.unshift(nsStrProc())\n      if(!msg[0]) msg.shift()\n      console.error.apply(console, msg)\n    }).bind(target)\n  }\n}\n\nexport { NamespacedConsole }\n", "class SimpleEvents {\n  static applyOn(target, events = [], opts) {\n    if(!Array.isArray(target)) target = Array(target)\n    if(target.length == 1) target.push(\"events\")\n    if(!target[0][target[1]]) target[0][target[1]] = new SimpleEvents.Events(target[0])\n\n    const tev = target[0][target[1]]\n    target[0].on = tev.on.bind(tev)\n    target[0].off = tev.off.bind(tev)\n    target[0].fire = tev.fire.bind(tev)\n\n    events.forEach(evn => target[0][target[1]].register(evn, opts))\n  }\n}\n\nSimpleEvents.Events = class {\n  constructor(target) {\n    this.target = target\n    this.callbacks = {}\n  }\n\n  on(evn, cb) {\n    if(!this.callbacks[evn]) throw(`no such event ${evn}`)\n    this.callbacks[evn].push(cb)\n    cb.detach = _ => this.off(evn, cb)\n    return this.target\n  }\n\n  off(evn, cb) {\n    if(!this.callbacks[evn]) throw(`no such event ${evn}`)\n    const index = this.callbacks[evn].indexOf(cb)\n    if(index < 0) throw(`no such handler on ${evn}`)\n    this.callbacks[evn].splice(index, 1)\n    return this.target\n  }\n\n  fire(evn, ...args) {\n    if(!this.callbacks[evn]) throw(`no such event ${evn}`)\n    this.callbacks[evn].forEach(fn => fn.apply(this.target, args))\n    return this.target\n  }\n\n  register(evn, opts) {\n    if(!this.callbacks[evn]) this.callbacks[evn] = []\n    if(opts) {\n      const capitalized = `${evn[0].toUpperCase()}${evn.slice(1)}`\n      if(opts[`on${capitalized}`]) this.on(evn, opts[`on${capitalized}`])\n    }\n  }\n\n  // bindSub(bindOn, ...args) {\n  //   let prefix = false\n  //   let events = args[0]\n  //   if(args.length == 2) {\n  //     prefix = args[0]\n  //     events = args[1]\n  //   }\n  //   Object.keys(this.callbacks).forEach(evn => {\n  //     if (prefix) {\n  //       this.target.on(evn, bindOn[`${prefix}${evn[0].toUpperCase()}${evn.slice(1)}`].bind(bindOn))\n  //     } else {\n  //       this.target.on(evn, bindOn[evn].bind(bindOn))\n  //     }\n  //   })\n  //   return target\n  // }\n}\n\nexport { SimpleEvents }\n", "import * as AppOS from \"./appos\"\n\nclass Debugger {\n  constructor(app) {\n    this.app = app\n    this.namespaces = {}\n    AppOS.NamespacedConsole.applyOn(this, { base: this.app, namespace: \"Debugger\" })\n  }\n\n  getProxy() {\n    this.proxy = new Proxy(this, {\n      get(target, name, receiver) {\n        if(typeof target[name] == \"function\") return target[name].bind(target)\n        if(name == \"__parent\") return target\n        let rv = Reflect.get(target.namespaces, name, receiver)\n        return rv ? rv.getProxy() : rv\n      }\n    })\n\n    return this.proxy\n  }\n\n  _register(ns, attr, vklass) {\n    if(!this.namespaces[ns]) {\n      this.namespaces[ns] = new Debugger.Namespace(ns, this)\n    }\n    this.namespaces[ns]._registerValue(attr, vklass)\n  }\n\n  enable() {\n    Object.entries(this.namespaces).forEach(([name, ns]) => {\n      Object.entries(ns.values).forEach(([name, v]) => v.set(true))\n    })\n  }\n\n  disable() {\n    Object.entries(this.namespaces).forEach(([name, ns]) => {\n      Object.entries(ns.values).forEach(([name, v]) => v.set(false))\n    })\n  }\n}\n\nDebugger.Namespace = class {\n  constructor(name, deb) {\n    this.app = deb.app\n    this.name = name\n    this.deb = deb\n    this.values = {}\n  }\n\n  getProxy() {\n    return this.proxy = new Proxy(this, {\n      get(target, name, receiver) {\n        return Reflect.get(target.values, name, receiver)\n      },\n      set(target, name, val) {\n        let rv = Reflect.get(target.values, name)\n        rv ? rv.set(val) : console.error(\"invalid value name\", name, \"for NS\", target)\n      }\n    })\n  }\n\n  _registerValue(attr, vklass) {\n    const inst = new vklass(this, attr)\n    this.values[attr] = inst\n    inst.init?.()\n  }\n}\n\nDebugger.Value = class {\n  constructor(ns, name) {\n    this.app = ns.app\n    this.ns = ns\n    this.name = name\n    this.value = false\n    AppOS.SimpleEvents.applyOn(this, [\"change\"])\n    AppOS.NamespacedConsole.applyOn(this, { base: this.ns.deb, namespace: _ => [this.ns.name, this.name].join(\".\") })\n  }\n\n  set(v) {\n    if (this.value != v) {\n      this.events.fire(\"change\", this, v, this.value)\n      this.change?.(v, this.value)\n      this.value = v\n    }\n  }\n\n  true() { this.set(true) }\n  yes() { this.set(true) }\n  false() { this.set(false) }\n  no() { this.set(false) }\n}\n\nexport { Debugger }\n", "import {Application} from \"./application\"\n// import {DomObserver} from \"./dom_observer\"\nimport {ComponentLoader} from \"./component_loader\"\nimport {Component} from \"./component\"\nimport {NamespacedConsole} from \"./namespaced_console\"\nimport {SimpleEvents} from \"./simple_events\"\nimport {Debugger} from \"./debugger\"\nimport {Util} from \"./util\"\n\nclass AppOS {\n  static boot(app) {\n    app.events.fire(\"init\", this)\n    app.opts.defaultBoot?.apply(app, [app])\n\n    AppOS.setupTemplateHooksSingleton(app)\n    // AppOS.setupDomObserverSingleton(app)\n    AppOS.setupComponentLoaderSingleton(app)\n\n    app.events.fire(\"boot\", app)\n    return app\n  }\n\n  static setupTemplateHooksSingleton(app) {\n    if(!window.__appos_core_template_hooks_registered) {\n      this.setupTemplateHooks(app)\n      window.__appos_core_template_hooks_registered = true\n    }\n  }\n\n  static setupTemplateHooks(app) {\n    app.events.on(\"boot\", _ => { AppOS.runTemplateHooks(\"app-boot\", { app: app }) })\n    app.events.on(\"documentLoad\", _ => { AppOS.runTemplateHooks(\"document-load\", { app: app }) })\n    app.events.on(\"pageLoad\", _ => { AppOS.runTemplateHooks(\"page-load\", { app: app }) })\n  }\n\n  static setupComponentLoaderSingleton(app) {\n    if(!window.__appos_core_component_loader) {\n      this.setupComponentLoader(app)\n    }\n  }\n\n  static setupComponentLoader(app) {\n    window.__appos_core_component_loader?.destroy()\n    window.__appos_core_component_loader = new ComponentLoader(app)\n    window.__appos_component_loaded = window.__appos_core_component_loader.signal.bind(window.__appos_core_component_loader)\n    app?.events.on(\"pageLoad\", _ => { window.__appos_core_component_loader.ensure() })\n  }\n\n  // static setupDomObserverSingleton(app) {\n  //   if(!window.__appos_core_dom_observer) {\n  //     this.setupDomObserver(app)\n  //   }\n  // }\n\n  // static setupDomObserver(app) {\n  //   window.__appos_core_dom_observer?.destroy()\n  //   window.__appos_core_dom_observer = new DomObserver(document.documentElement)\n  //   app.events.on(\"documentLoad\", _ => window.__appos_core_dom_observer?.start())\n  //   return window.__appos_core_dom_observer\n  // }\n\n  static runTemplateHooks(type, env = {}) {\n    document.querySelectorAll(`template[appos-${type}]`).forEach(tpl => {\n      const f = new Function('env', tpl.content.firstElementChild.textContent)\n      if(typeof env?.app?.debug == \"function\") env.app.debug(\"running tpl-hook\", type, tpl)\n      f(env)\n      tpl.remove()\n    })\n  }\n\n  static mergeClasses(...bases) {\n    class Bases {\n      constructor() {\n        bases.forEach(base => Object.assign(this, new base()));\n      }\n    }\n    bases.forEach(base => {\n      Object.getOwnPropertyNames(base.prototype)\n      .filter(prop => prop != 'constructor')\n      .forEach(prop => Bases.prototype[prop] = base.prototype[prop])\n    })\n    return Bases;\n  }\n\n  static mergeClassesAsModule(...bases) {\n    class Bases {}\n    bases.forEach(base => {\n      Object.getOwnPropertyNames(base.prototype)\n      .filter(prop => prop != 'constructor')\n      .forEach(prop => Bases.prototype[prop] = base.prototype[prop])\n    })\n    return Bases;\n  }\n\n  static html(str) {\n    const template = document.createElement(\"template\")\n    template.innerHTML = str\n    return template.content.firstElementChild\n  }\n\n  static htmlAll(str) {\n    const template = document.createElement(\"template\")\n    template.innerHTML = str\n    return template.content.childNodes\n  }\n}\n\nconst bootFunction = AppOS.boot\nconst mergeClassesFunction = AppOS.mergeClasses\nconst mergeClassesAsModuleFunction = AppOS.mergeClassesAsModule\n\nexport {\n  bootFunction as boot,\n  mergeClassesFunction as mergeClasses,\n  mergeClassesAsModuleFunction as mergeClassesAsModule,\n  AppOS,\n  Debugger,\n  Application,\n  Component,\n  SimpleEvents,\n  NamespacedConsole,\n  Util,\n}\n", "import * as AppOS from \"../appos\"\n\nclass CursorTimeout {\n  constructor(target, opts = {}) {\n    this.target = target\n    this.opts = Object.assign({}, {\n      hideDelay: 3000,\n      useClass: null,\n    }, opts)\n\n    this.enabled = false\n    this.cursorHidden = false\n    this.cursorWas = null\n\n    this._on()\n  }\n\n  destroy() {\n    this.stop()\n    this._off()\n  }\n\n  _on() {\n    this.target.addEventListener(\"mouseenter\", this._f_mouseEnter = this.enter.bind(this))\n    this.target.addEventListener(\"mouseleave\", this._f_mouseLeave = this.leave.bind(this))\n    this.target.addEventListener(\"mousemove\", this._f_mouseMove = this.reset.bind(this))\n    this.target.addEventListener(\"click\", this._f_mouseMove)\n  }\n\n  _off() {\n    this.target.removeEventListener(\"mouseenter\", this._f_mouseEnter)\n    this.target.removeEventListener(\"mouseleave\", this._f_mouseLeave)\n    this.target.removeEventListener(\"mousemove\", this._f_mouseMove)\n    this.target.removeEventListener(\"click\", this._f_mouseMove)\n  }\n\n  start(startHidden = false) {\n    if(!this.enabled) {\n      this.enabled = true\n      if(startHidden && this.entered) this.hideCursor()\n    }\n    return this\n  }\n\n  stop() {\n    if(this.enabled) {\n      this.enabled = false\n      this.stopTimer()\n    }\n    return this\n  }\n\n  startTimer() {\n    if(!this.enabled) return\n    this.timeout = setTimeout(_ => this.hideCursor(), this.opts.hideDelay)\n  }\n\n  stopTimer() {\n    if(this.timeout) {\n      clearTimeout(this.timeout)\n      delete this.timeout\n    }\n    if(this.cursorHidden) {\n      this.showCursor()\n    }\n  }\n\n  enter() {\n    this.entered = true\n    this.startTimer()\n  }\n\n  leave() {\n    this.entered = false\n    this.stopTimer()\n  }\n\n  reset(ev) {\n    this.stopTimer()\n    if(!this.entered) return\n    this.startTimer()\n  }\n\n  showCursor(force = false) {\n    if(!this.cursorHidden) {\n      if(force) this.hideCursor(); else return\n    }\n    this.cursorHidden = false\n\n    if(this.opts.useClass) {\n      this.target.classList.remove(this.opts.useClass)\n    } else {\n      this.target.style.cursor = this.cursorWas\n      delete this.cursorWas\n    }\n  }\n\n  hideCursor(force = false) {\n    if(this.cursorHidden) {\n      if(force) this.showCursor(); else return\n    }\n    this.cursorHidden = true\n\n    if(this.opts.useClass) {\n      this.target.classList.add(this.opts.useClass)\n    } else {\n      this.cursorWas = this.target.style.cursor\n      this.target.style.cursor = \"none\"\n    }\n  }\n}\n\nexport { CursorTimeout }\n", "// make jquery globally available\nimport jQuery from \"jquery\"\nwindow.$ = window.jQuery = jQuery\n\nimport * as AppOS from \"./appos/appos\"\nimport {CursorTimeout} from \"./appos/lib/cursor_timeout\"\n\nclass SotLoadingApp extends AppOS.Application {\n  instance = \"SotLoadingApp\"\n\n  init() {}\n\n  boot() {}\n\n  documentLoad() {\n    this.ls = new LoadingScreen(this).init()\n  }\n\n  pageLoad() {\n    this.ls?.attach($(\"#sot-loading-screen\"))?.start()\n  }\n}\n\nclass LoadingScreen {\n  constructor(app) {\n    this.app = app\n    this.backgroundErrors = 0\n    this.derandomize = 0.5\n    AppOS.NamespacedConsole.applyOn(this, { base: this.app, namespace: \"LoadingScreen\" })\n  }\n\n  init() {\n    this.hookKeyboardControls()\n    return this\n  }\n\n  LSsave(key, value) {\n    return localStorage.setItem(`soundtag_${key}`, JSON.stringify(value))\n  }\n\n  LSload(key, defVal) {\n    try {\n      return JSON.parse(localStorage.getItem(`soundtag_${key}`)) ?? defVal\n    } catch(e) {\n      this.error(e)\n      return defVal\n    }\n  }\n\n  audioIconFromAudio(audio) {\n    if(audio.muted) return \"volume-mute\"\n    if(audio.volume <= 0.3) {\n      return \"volume-down-align\"\n    } else if (audio.volume >= 0.7) {\n      return \"volume-up\"\n    } else {\n      return \"volume-mid-align\"\n    }\n  }\n\n  audioVolume() {\n    return (this.audio.volume * 100).toFixed() + \"%\"\n  }\n\n  hookKeyboardControls() {\n    $(document).keydown(ev => {\n      // console.log(ev.key, ev.keyCode)\n      if(ev.key == \" \" && this.audio) {\n        this.audio.muted = !this.audio.muted\n        this.notifyIcon(this.audioIconFromAudio(this.audio), this.audio.muted ? \"muted\" : this.audioVolume())\n        return false\n      } else if (ev.key == \"ArrowUp\") {\n        this.LSsave(\"sot-loading-volume\", Math.min(1, this.LSload(\"sot-loading-volume\", 1.0) + 0.1))\n        if(this.audio) this.audio.volume = this.LSload(\"sot-loading-volume\", 0.7)\n        this.notifyIcon(this.audioIconFromAudio(this.audio), this.audioVolume())\n        return false\n      } else if (ev.key == \"ArrowDown\") {\n        const currentVolume = this.LSload(\"sot-loading-volume\", 1.0)\n        this.LSsave(\"sot-loading-volume\", Math.max(0.1, currentVolume - 0.1))\n        if(this.audio) this.audio.volume = this.LSload(\"sot-loading-volume\", 0.7)\n        if(currentVolume.toFixed(2) == \"0.10\") {\n          this.notifyIcon(this.audioIconFromAudio(this.audio), \"space to mute\")\n        } else {\n          this.notifyIcon(this.audioIconFromAudio(this.audio), this.audioVolume())\n        }\n        return false\n      } else if (ev.key == \"f\") {\n        if (document.fullscreenElement) {\n          document.exitFullscreen()\n        } else {\n          this.ctn.get(0).requestFullscreen()\n          .catch(e => {\n            this.notifyIcon(\"exclamation-triangle\", \"fullscreen failed :/\", `#E74C3C`)\n            console.error(\"could not fullscreen\", e)\n          })\n        }\n        return false\n      }\n      return true\n    })\n  }\n\n  notifyIcon(ico, text, txtColor, delay = 1000) {\n    clearTimeout(this.iconNotificationTimeout)\n    let startHidden = true\n    if(this.iconNotification) {\n      this.iconNotification.remove()\n      delete this.iconNotification\n      startHidden = false\n    }\n    this.iconNotification = $(\"<div>\").addClass(\"notification-icon\").hide().appendTo(this.ctn)\n\n    if(txtColor)\n      this.iconNotification.css({color: txtColor})\n\n    const tpl = $(`template[icon=\"${ico}\"]`)\n    if(tpl.length) {\n      const clone = tpl.get(0).content.cloneNode(true)\n      this.iconNotification.get(0).append(clone)\n    }\n    $(\"<span>\").html(text ?? \"&nbsp;\").appendTo(this.iconNotification)\n\n    startHidden ? this.iconNotification.fadeIn(250) : this.iconNotification.show()\n    this.iconNotificationTimeout = setTimeout(_ => {\n      this.iconNotification.fadeOut(250, _ => this.iconNotification.remove())\n    }, delay)\n  }\n\n  preloadImage(url) {\n    return new Promise((resolve, reject) => {\n      const img = new Image()\n      img.onload = resolve\n      img.onerror = reject\n      img.src = url\n    })\n  }\n\n  loadSpinner() {\n    return new Promise((resolve, reject) => {\n      this.preloadImage(this.spinnerUrl).then(_ => {\n        this.spinner.attr(\"src\", this.spinnerUrl).fadeIn(500)\n        resolve()\n      })\n    })\n  }\n\n  initAudio(src) {\n    return new Promise((resolve, reject) => {\n      this.audio?.remove()\n      const audio = new Audio(src)\n      audio.volume = this.LSload(\"sot-loading-volume\", 0.7)\n\n      // workaround for mobile safari\n      audio.addEventListener('loadedmetadata', event => {\n        setTimeout(_ => { resolve(audio, event) }, 2000)\n      })\n      audio.addEventListener('canplaythrough', event => resolve(audio, event))\n      audio.addEventListener('ended', event => {\n        // audio.currentTime = 0.256\n        audio.currentTime = 0.347\n        audio.play()\n      })\n      audio.addEventListener('error', event => reject(audio, event))\n      this.audio = audio\n    })\n  }\n\n  randomMessage(last) {\n    if(!this.messages || !this.messages.length) return\n    if(this.messages.length < 2) return this.messages[0]\n    let pick = last\n    while(pick == last) {\n      pick = this.messages[Math.floor(Math.random() * this.messages.length)]\n    }\n    return pick\n  }\n\n  messageForBackground(background) {\n    if(!this.messages) return\n    const chunks = background.split(\"/\")\n    const fn = chunks.pop()\n    const pack = chunks.pop()\n    const nchunks = fn.split(\"-\")\n    nchunks.pop() // remove digest and extension\n    const name = nchunks.join(\"-\")\n    const messages = this.messages[`${pack}/${name}`]\n    return messages[Math.floor(Math.random() * messages.length)]\n  }\n\n  checkMessages() {\n    let misses = 0\n    let ok = 0\n    this.backgrounds.forEach(bg => {\n      if (this.messageForBackground(bg)) {\n        console.log(\"OK\", bg)\n        ok += 1\n      } else {\n        console.error(\"MISS\", bg)\n        misses += 1\n      }\n    })\n    if(misses) {\n      console.error(ok, \"OK\", misses, \"MISSES\")\n    } else {\n      console.log(ok, \"OK\", misses, \"MISSES\")\n    }\n  }\n\n  resolveFeature() {\n    if(!this.feature) return null\n    const escapedFeature = this.feature.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n    const res = this.backgrounds.filter(bg => bg.match(new RegExp(escapedFeature, \"i\")))\n    if(!res.length) return null\n    return res[Math.floor(Math.random() * res.length)]\n  }\n\n  randomBackground(last) {\n    if(!this.backgrounds || !this.backgrounds.length) return\n    if(this.backgrounds.length < 2) return this.backgrounds[0]\n\n    let reroll = []\n\n    if(last && this.derandomizeMargin) {\n      while(this.derandomizeMem.length >= this.derandomizeMargin) this.derandomizeMem.shift()\n      this.derandomizeMem.push(last)\n      reroll = this.derandomizeMem\n    } else if (last) {\n      reroll.push(last)\n    }\n\n    const eligible = this.backgrounds.filter(n => !reroll.includes(n))\n    return eligible[Math.floor(Math.random() * eligible.length)]\n\n    // let pick = last\n    // while(reroll.indexOf(pick) >= 0) {\n    //   pick = this.backgrounds[Math.floor(Math.random() * this.backgrounds.length)]\n    //   if(reroll.indexOf(pick) >= 0) {\n    //     console.log(\"rerolling\", pick)\n    //   }\n    // }\n    // return pick\n  }\n\n  queueNextBackground()  {\n    this.nextBG = this.randomBackground(this.nextBG)\n    this.nextBGPromise = this.preloadImage(this.nextBG)\n    .then(_ => {\n      this.backgroundErrors = 0\n    })\n    .catch(e => {\n      console.error(e)\n      this.backgroundErrors += 1\n      if(this.backgroundErrors > 10) {\n        throw \"too many consecutive background load errors, giving up\"\n      } else {\n        this.queueNextBackground()\n      }\n    })\n\n    return this.nextBGPromise\n  }\n\n  fadeToNextBackground(startAgain = true) {\n    this.nextBGPromise\n    .then(_ => {\n      this.footer.fadeOut(750)\n      setTimeout(_ => {\n        this.bg2.css({ \"background-image\": `url(\"${this.nextBG}\")` }).fadeIn(750, _ => {\n          //this.footer.html(this.randomMessage(this.footer.html())).fadeIn(750)\n          this.footer.html(this.messageForBackground(this.nextBG)).fadeIn(750)\n          this.bg1.css({ \"background-image\": `url(\"${this.nextBG}\")` })\n          this.bg2.fadeOut(100)\n          if(startAgain) this.startTimer()\n        })\n      }, 1000)\n    })\n    .catch(e => {\n      console.error(e)\n      if(startAgain) this.startTimer()\n    })\n  }\n\n  buildDOM() {\n    this.bg1 = $(\"<div>\").addClass(\"background\").hide().appendTo(this.ctn)\n    this.bg2 = $(\"<div>\").addClass(\"background\").hide().appendTo(this.ctn)\n    this.spinner = $(\"<img>\").addClass(\"spinner\").hide().appendTo(this.ctn)\n    this.interactionInfo = $(\"<div>\").addClass(\"interaction-info\").hide().appendTo(this.ctn)\n    this.interactionInfo.html(`please ${\"ontouchstart\" in document.documentElement ? \"touch\" : \"click\"} anywhere`)\n    this.footer = $(\"<div>\").addClass(\"msg-footer\").hide().appendTo(this.ctn)\n\n    this.ctn.click(ev => {\n      if (this.playHasFailed) this.postStart()\n    })\n  }\n\n  attach(ctn) {\n    if(!ctn.length) return\n    this.ctn = ctn\n    this.backgrounds = this.ctn.data(\"backgrounds\")\n    this.spinnerUrl = this.ctn.data(\"spinner\")\n    this.audioUrl = this.ctn.data(\"audio\")\n    this.messages = this.ctn.data(\"messages\")\n    this.feature = this.ctn.data(\"feature\")\n    // this.checkMessages()\n    this.cursorTimeout = new CursorTimeout(this.ctn.get(0))\n\n    // initialize derandomize\n    this.derandomizeMargin = Math.floor(this.backgrounds.length * Math.max(Math.min(this.derandomize, 1), 0))\n    if (this.derandomizeMargin >= this.backgrounds.length - 1) this.derandomizeMargin -= 1\n    this.derandomizeMem = []\n\n    return this\n  }\n\n  start(withDOM = true) {\n    if(withDOM) this.buildDOM()\n\n    if(!this.loadingInfoTimer) {\n      this.loadingInfoTimer = setTimeout(_ => {\n        this.loadingInfo = $(\"<div>\").addClass(\"loading-info\").appendTo(this.ctn).hide().fadeIn(500)\n        this.loadingInfo.html(`\u2026 loading \u2026`)\n      }, 750)\n    }\n\n    this.loadSpinner()\n    .then(_ => {\n      // load audio & first image\n      this.nextBG = this.resolveFeature() ?? this.randomBackground()\n      this.footer.html(this.messageForBackground(this.nextBG))\n      const bg_done = this.preloadImage(this.nextBG)\n      const audio_done = this.initAudio(this.audioUrl)\n\n      Promise.all([bg_done, audio_done])\n      .then(_ => {\n        if(this.loadingInfoTimer) {\n          clearTimeout(this.loadingInfoTimer)\n          delete this.loadingInfoTimer\n        }\n\n        if(this.loadingInfo) {\n          this.loadingInfo.fadeOut(500, _ => {\n            this.loadingInfo.remove()\n            delete this.loadingInfo\n            this.postStart()\n          })\n        } else {\n          this.postStart()\n        }\n      })\n      .catch(e => {\n        console.error(e)\n        setTimeout(_ => this.start(false), 1000)\n      })\n    })\n  }\n\n  postStart() {\n    if (this.playHasFailed) {\n      this.audio.play()\n      this.audio.pause()\n      this.playHasFailed = false\n      this.ctn.removeClass(\"cursor-pointer\")\n      this.interactionInfo.fadeOut(500, _ => this.postStart())\n      return\n    }\n\n    this.audio.play()\n    .then(_ => {\n      this.cursorTimeout.start(true)\n      this.bg1.css({ \"background-image\": `url(\"${this.nextBG}\")` }).fadeIn(750)\n      this.footer.fadeIn(750)\n      this.startTimer()\n    })\n    .catch((e) => {\n      console.error(e)\n      this.playHasFailed = true\n      this.ctn.addClass(\"cursor-pointer\")\n      this.interactionInfo.fadeIn(500)\n    })\n  }\n\n  startTimer() {\n    if(this.timer) this.stopTimer()\n    this.queueNextBackground()\n    this.timer = setTimeout(_ => this.fadeToNextBackground(), 7000)\n    return this\n  }\n\n  stopTimer() {\n    clearInterval(this.timer)\n    delete this.timer\n    return this\n  }\n}\n\nwindow.app = SotLoadingApp.boot({ debug: true })\n"],
  "mappings": "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",
  "names": ["jQueryFactory", "window", "noGlobal", "arr", "getProto", "slice", "flat", "array", "push", "indexOf", "class2type", "toString", "hasOwn", "fnToString", "ObjectFunctionString", "support", "toType", "obj", "isWindow", "isArrayLike", "length", "type", "document$1", "preservedScriptAttributes", "DOMEval", "code", "node", "doc", "script", "version", "rhtmlSuffix", "jQuery", "selector", "context", "num", "elems", "ret", "callback", "elem", "i", "_elem", "len", "j", "options", "name", "src", "copy", "copyIsArray", "clone", "target", "deep", "msg", "proto", "Ctor", "nodeType", "results", "namespace", "docElem", "a", "b", "bup", "first", "second", "invert", "callbackInverse", "matches", "callbackExpect", "arg", "value", "_i", "nodeName", "pop", "whitespace", "isIE", "rbuggyQSA", "rtrimCSS", "identifier", "rleadingCombinator", "rdescend", "rsibling", "documentElement$1", "createCache", "keys", "cache", "key", "testContext", "attributes", "pseudos", "filterMatchExpr", "rpseudo", "runescape", "funescape", "escape", "nonHex", "high", "unescapeSelector", "sel", "selectorError", "rcomma", "tokenCache", "tokenize", "parseOnly", "matched", "match", "tokens", "soFar", "groups", "preFilters", "cached", "preFilter", "excess", "unquoted", "toSelector", "access", "fn", "chainable", "emptyGet", "raw", "bulk", "_key", "rnothtmlwhite", "hooks", "nType", "attrNames", "val", "rcssescape", "fcssescape", "ch", "asCodePoint", "sort", "splice", "hasDuplicate", "sortOrder", "compare", "duplicates", "outermostContext", "document", "documentElement", "documentIsHTML", "dirruns", "done", "classCache", "compilerCache", "nonnativeSelectorCache", "rwhitespace", "ridentifier", "matchExpr", "rinputs", "rheader", "rquickExpr$1", "unloadHandler", "setDocument", "inDisabledFieldset", "addCombinator", "find", "seed", "m", "nid", "newSelector", "newContext", "select", "markFunction", "createInputPseudo", "createButtonPseudo", "createDisabledPseudo", "disabled", "createPositionalPseudo", "argument", "matchIndexes", "subWindow", "expr", "elements", "id", "tag", "className", "attrId", "nodeNameSelector", "expectedNodeName", "pattern", "operator", "check", "result", "what", "_argument", "last", "simple", "forward", "ofType", "_context", "xml", "outerCache", "nodeIndex", "start", "dir", "parent", "useCache", "diff", "pseudo", "input", "matcher", "compile", "unmatched", "text", "lang", "elemLang", "hash", "_matchIndexes", "setFilters", "combinator", "base", "skip", "checkNonElements", "doneName", "oldCache", "newCache", "elementMatcher", "matchers", "multipleContexts", "contexts", "condense", "map", "filter", "newUnmatched", "mapped", "setMatcher", "postFilter", "postFinder", "postSelector", "temp", "matcherOut", "preMap", "postMap", "preexisting", "matcherIn", "matcherFromTokens", "checkContext", "leadingRelative", "implicitRelative", "matchContext", "matchAnyContext", "matcherFromGroupMatchers", "elementMatchers", "setMatchers", "bySet", "byElement", "superMatcher", "outermost", "matchedCount", "setMatched", "contextBackup", "dirrunsUnique", "token", "compiled", "until", "truncate", "siblings", "n", "rneedsContext", "rsingleTag", "isObviousHtml", "winnow", "qualifier", "not", "self", "rootjQuery", "rquickExpr", "init", "rparentsprev", "guaranteedUnique", "targets", "l", "selectors", "cur", "sibling", "createOptions", "object", "_", "flag", "firing", "memory", "fired", "locked", "list", "queue", "firingIndex", "fire", "add", "args", "index", "Identity", "v", "Thrower", "ex", "adoptValue", "resolve", "reject", "noValue", "method", "func", "tuples", "state", "promise", "deferred", "fns", "newDefer", "tuple", "returned", "onFulfilled", "onRejected", "onProgress", "maxDepth", "depth", "handler", "special", "that", "mightThrow", "then", "process", "e", "stateString", "singleValue", "remaining", "resolveContexts", "resolveValues", "primary", "updateFunc", "rerrorNames", "error", "asyncError", "readyList", "wait", "completed", "rdashAlpha", "fcamelCase", "_all", "letter", "camelCase", "string", "acceptData", "owner", "Data", "data", "prop", "dataPriv", "dataUser", "rbrace", "rmultiDash", "getData", "dataAttr", "attrs", "startLength", "next", "setter", "tmp", "count", "defer", "pnum", "rcssNum", "cssExpand", "isHiddenWithinTree", "el", "ralphaStart", "rautoPx", "isAutoPx", "adjustCSS", "valueParts", "tween", "adjusted", "scale", "maxIterations", "currentValue", "initial", "unit", "initialInUnit", "rmsPrefix", "cssCamelCase", "defaultDisplayMap", "getDefaultDisplay", "display", "showHide", "show", "values", "isAttached", "composed", "rtagName", "wrapMap", "getAll", "rscriptType", "setGlobalEval", "refElements", "rhtml", "buildFragment", "scripts", "selection", "ignored", "wrap", "attached", "fragment", "nodes", "disableScript", "restoreScript", "domManip", "collection", "hasScripts", "iNoClone", "valueIsFunction", "rcheckableType", "rtypenamespace", "returnTrue", "returnFalse", "on", "types", "one", "origFn", "event", "handleObjIn", "eventHandle", "events", "t", "handleObj", "handlers", "namespaces", "origType", "elemData", "mappedTypes", "origCount", "nativeEvent", "handlerQueue", "matchedHandlers", "matchedSelectors", "delegateCount", "hook", "originalEvent", "leverageNative", "isSetup", "saved", "handle", "props", "delegateType", "focusMappedHandler", "orig", "fix", "related", "rnoInnerhtml", "manipulationTarget", "content", "cloneCopyEvent", "dest", "remove", "keepData", "html", "dataAndEvents", "deepDataAndEvents", "srcElements", "destElements", "inPage", "original", "insert", "rnumnonpx", "rcustomProp", "getStyles", "view", "swap", "old", "curCSS", "computed", "isCustomProp", "cssPrefixes", "emptyStyle", "vendorPropName", "capName", "finalPropName", "reliableTrDimensionsVal", "reliableColDimensionsVal", "table", "computeTableStyleTests", "trStyle", "col", "tr", "td", "cssShow", "cssNormalTransform", "setPositiveNumber", "subtract", "boxModelAdjustment", "dimension", "box", "isBorderBox", "styles", "computedVal", "extra", "delta", "marginDelta", "getWidthOrHeight", "boxSizingNeeded", "valueIsBorderBox", "offsetProp", "origName", "style", "prefix", "suffix", "expanded", "parts", "Tween", "end", "easing", "percent", "eased", "p", "fxNow", "inProgress", "rfxtypes", "rrun", "schedule", "createFxNow", "genFx", "includeWidth", "which", "createTween", "animation", "Animation", "defaultPrefilter", "opts", "toggle", "oldfire", "propTween", "restoreDisplay", "isBox", "anim", "hidden", "dataShow", "propFilter", "specialEasing", "properties", "stopped", "tick", "currentTime", "gotoEnd", "prepend", "speed", "opt", "to", "empty", "optall", "doAnimation", "clearQueue", "stopQueue", "stop", "dequeue", "timers", "cssFn", "timer", "time", "timeout", "rfocusable", "rclickable", "tabindex", "stripAndCollapse", "getClass", "classesToArray", "classNames", "curValue", "finalValue", "stateVal", "option", "max", "optionSet", "rfocusMorph", "stopPropagationCallback", "onlyHandlers", "bubbleType", "ontype", "lastElement", "eventPath", "location", "nonce", "rquery", "parserErrorElem", "rbracket", "rCRLF", "rsubmitterTypes", "rsubmittable", "buildParams", "traditional", "s", "valueOrFunction", "r20", "rhash", "rantiCache", "rheaders", "rlocalProtocol", "rnoContent", "rprotocol", "prefilters", "transports", "allTypes", "originAnchor", "addToPrefiltersOrTransports", "structure", "dataTypeExpression", "dataType", "dataTypes", "inspectPrefiltersOrTransports", "originalOptions", "jqXHR", "inspected", "seekingTransport", "inspect", "selected", "prefilterOrFactory", "dataTypeOrTransport", "ajaxExtend", "flatOptions", "ajaxHandleResponses", "responses", "ct", "finalDataType", "firstDataType", "contents", "ajaxConvert", "response", "isSuccess", "conv2", "current", "conv", "prev", "converters", "settings", "url", "transport", "cacheURL", "responseHeadersString", "responseHeaders", "timeoutTimer", "urlAnchor", "fireGlobals", "uncached", "callbackContext", "globalEventContext", "completeDeferred", "statusCode", "requestHeaders", "requestHeadersNames", "strAbort", "statusText", "finalText", "status", "nativeStatusText", "headers", "success", "modified", "htmlIsFunction", "xhrSuccessStatus", "complete", "xhr", "canUseScriptTag", "evt", "oldCallbacks", "rjsonp", "originalSettings", "callbackName", "overwritten", "responseContainer", "jsonProp", "origOptions", "keepScripts", "parsed", "params", "off", "responseText", "curPosition", "curLeft", "curCSSTop", "curTop", "curOffset", "curCSSLeft", "calculatePosition", "position", "curElem", "rect", "win", "offsetParent", "offset", "parentOffset", "top", "defaultExtra", "funcName", "margin", "fnOver", "fnOut", "proxy", "hold", "_jQuery", "_$", "jquery_module_default", "jQuery", "Application", "opts", "bootFunction", "app", "_", "NamespacedConsole", "Debugger", "SimpleEvents", "efn", "imp", "ins", "res", "cins", "ComponentLoader", "app", "comp", "exps", "use", "emap", "name", "exp", "ins", "promises", "el", "component", "src", "resolve", "reject", "script", "ev", "NamespacedConsole", "target", "opts", "bconfig", "_", "nsStrProc", "nsStr", "el", "msg", "SimpleEvents", "_SimpleEvents", "target", "events", "opts", "tev", "evn", "cb", "_", "index", "args", "fn", "capitalized", "Debugger", "_Debugger", "app", "NamespacedConsole", "target", "name", "receiver", "rv", "ns", "attr", "vklass", "deb", "val", "inst", "SimpleEvents", "_", "v", "AppOS", "_AppOS", "app", "_", "ComponentLoader", "type", "env", "tpl", "f", "bases", "Bases", "base", "prop", "str", "template", "bootFunction", "mergeClassesFunction", "mergeClassesAsModuleFunction", "CursorTimeout", "target", "opts", "startHidden", "_", "ev", "force", "jquery_module_default", "SotLoadingApp", "Application", "LoadingScreen", "app", "NamespacedConsole", "key", "value", "defVal", "e", "audio", "ev", "currentVolume", "ico", "text", "txtColor", "delay", "startHidden", "tpl", "clone", "_", "url", "resolve", "reject", "img", "src", "event", "last", "pick", "background", "chunks", "fn", "pack", "nchunks", "name", "messages", "misses", "ok", "bg", "escapedFeature", "res", "reroll", "eligible", "n", "startAgain", "ctn", "CursorTimeout", "withDOM", "bg_done", "audio_done"]
}
