!function(window, undefined) { var readyList, rootjQuery, document = window.document, location = window.location, _jQuery = window.jQuery, _$ = window.$, class2type = { }, core_deletedIds = [], core_concat = core_deletedIds.concat, core_push = core_deletedIds.push, core_slice = core_deletedIds.slice, core_indexOf = core_deletedIds.indexOf, core_toString = class2type.toString, core_hasOwn = class2type.hasOwnProperty, core_trim = "1.9.1".trim, jQuery = function(selector, context) { return new jQuery.fn.init(selector, context, rootjQuery); }, core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, core_rnotwhite = /\S+/g, rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, rquickExpr = /^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/, rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, rvalidchars = /^[\],:{}\s]*$/, rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g, rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g, rmsPrefix = /^-ms-/, rdashAlpha = /-([\da-z])/gi, completed = function(event) { (document.addEventListener || "load" === event.type || "complete" === document.readyState) && (detach(), jQuery.ready()); }, detach = function() { document.addEventListener ? (document.removeEventListener("DOMContentLoaded", completed, !1), window.removeEventListener("load", completed, !1)) : (document.detachEvent("onreadystatechange", completed), window.detachEvent("onload", completed)); }; function isArraylike(obj) { var length = obj.length, type = jQuery.type(obj); return !jQuery.isWindow(obj) && (1 === obj.nodeType && !!length || "array" === type || "function" !== type && (0 === length || "number" == typeof length && length > 0 && length - 1 in obj)); } jQuery.fn = jQuery.prototype = { jquery: "1.9.1", constructor: jQuery, init: function(selector, context, rootjQuery) { var match, elem; if (!selector) return this; if ("string" == typeof selector) { if ((match = "<" === selector.charAt(0) && ">" === selector.charAt(selector.length - 1) && selector.length >= 3 ? [ null, selector, null ] : rquickExpr.exec(selector)) && (match[1] || !context)) { if (match[1]) { if (context = context instanceof jQuery ? context[0] : context, jQuery.merge(this, jQuery.parseHTML(match[1], context && context.nodeType ? context.ownerDocument || context : document, !0)), rsingleTag.test(match[1]) && jQuery.isPlainObject(context)) for(match in context)jQuery.isFunction(this[match]) ? this[match](context[match]) : this.attr(match, context[match]); return this; } if ((elem = document.getElementById(match[2])) && elem.parentNode) { if (elem.id !== match[2]) return rootjQuery.find(selector); this.length = 1, this[0] = elem; } return this.context = document, this.selector = selector, this; } return !context || context.jquery ? (context || rootjQuery).find(selector) : this.constructor(context).find(selector); } return selector.nodeType ? (this.context = this[0] = selector, this.length = 1, this) : jQuery.isFunction(selector) ? rootjQuery.ready(selector) : (undefined !== selector.selector && (this.selector = selector.selector, this.context = selector.context), jQuery.makeArray(selector, this)); }, selector: "", length: 0, size: function() { return this.length; }, toArray: function() { return core_slice.call(this); }, get: function(num) { return null == num ? this.toArray() : num < 0 ? this[this.length + num] : this[num]; }, pushStack: function(elems) { var ret = jQuery.merge(this.constructor(), elems); return ret.prevObject = this, ret.context = this.context, ret; }, each: function(callback, args) { return jQuery.each(this, callback, args); }, ready: function(fn) { return jQuery.ready.promise().done(fn), this; }, slice: function() { return this.pushStack(core_slice.apply(this, arguments)); }, first: function() { return this.eq(0); }, last: function() { return this.eq(-1); }, eq: function(i) { var len = this.length, j = +i + (i < 0 ? len : 0); return this.pushStack(j >= 0 && j < len ? [ this[j] ] : []); }, map: function(callback) { return this.pushStack(jQuery.map(this, function(elem, i) { return callback.call(elem, i, elem); })); }, end: function() { return this.prevObject || this.constructor(null); }, push: core_push, sort: [].sort, splice: [].splice }, jQuery.fn.init.prototype = jQuery.fn, jQuery.extend = jQuery.fn.extend = function() { var src, copyIsArray, copy, name, options, clone, target = arguments[0] || { }, i = 1, length = arguments.length, deep = !1; for("boolean" == typeof target && (deep = target, target = arguments[1] || { }, i = 2), "object" == typeof target || jQuery.isFunction(target) || (target = { }), length === i && (target = this, --i); i < length; i++)if (null != (options = arguments[i])) for(name in options)src = target[name], target !== (copy = options[name]) && (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy))) ? (copyIsArray ? (copyIsArray = !1, clone = src && jQuery.isArray(src) ? src : []) : clone = src && jQuery.isPlainObject(src) ? src : { }, target[name] = jQuery.extend(deep, clone, copy)) : copy !== undefined && (target[name] = copy)); return target; }, jQuery.extend({ noConflict: function(deep) { return window.$ === jQuery && (window.$ = _$), deep && window.jQuery === jQuery && (window.jQuery = _jQuery), jQuery; }, isReady: !1, readyWait: 1, holdReady: function(hold) { hold ? jQuery.readyWait++ : jQuery.ready(!0); }, ready: function(wait) { if (!(!0 === wait ? --jQuery.readyWait : jQuery.isReady)) { if (!document.body) return setTimeout(jQuery.ready); jQuery.isReady = !0, !0 !== wait && --jQuery.readyWait > 0 || (readyList.resolveWith(document, [ jQuery ]), jQuery.fn.trigger && jQuery(document).trigger("ready").off("ready")); } }, isFunction: function(obj) { return "function" === jQuery.type(obj); }, isArray: Array.isArray || function(obj) { return "array" === jQuery.type(obj); }, isWindow: function(obj) { return null != obj && obj == obj.window; }, isNumeric: function(obj) { return !isNaN(parseFloat(obj)) && isFinite(obj); }, type: function(obj) { return null == obj ? String(obj) : "object" == typeof obj || "function" == typeof obj ? class2type[core_toString.call(obj)] || "object" : typeof obj; }, isPlainObject: function(obj) { if (!obj || "object" !== jQuery.type(obj) || obj.nodeType || jQuery.isWindow(obj)) return !1; try { if (obj.constructor && !core_hasOwn.call(obj, "constructor") && !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf")) return !1; } catch (e) { return !1; } var key; for(key in obj); return key === undefined || core_hasOwn.call(obj, key); }, isEmptyObject: function(obj) { var name; for(name in obj)return !1; return !0; }, error: function(msg) { throw new Error(msg); }, parseHTML: function(data, context, keepScripts) { if (!data || "string" != typeof data) return null; "boolean" == typeof context && (keepScripts = context, context = !1), context = context || document; var parsed = rsingleTag.exec(data), scripts = !keepScripts && []; return parsed ? [ context.createElement(parsed[1]) ] : (parsed = jQuery.buildFragment([ data ], context, scripts), scripts && jQuery(scripts).remove(), jQuery.merge([], parsed.childNodes)); }, parseJSON: function(data) { return window.JSON && window.JSON.parse ? window.JSON.parse(data) : null === data ? data : "string" == typeof data && (data = jQuery.trim(data)) && rvalidchars.test(data.replace(rvalidescape, "@").replace(rvalidtokens, "]").replace(rvalidbraces, "")) ? new Function("return " + data)() : void jQuery.error("Invalid JSON: " + data); }, parseXML: function(data) { var xml; if (!data || "string" != typeof data) return null; try { window.DOMParser ? xml = new DOMParser().parseFromString(data, "text/xml") : ((xml = new ActiveXObject("Microsoft.XMLDOM")).async = "false", xml.loadXML(data)); } catch (e) { xml = undefined; } return xml && xml.documentElement && !xml.getElementsByTagName("parsererror").length || jQuery.error("Invalid XML: " + data), xml; }, noop: function() { }, globalEval: function(data) { data && jQuery.trim(data) && (window.execScript || function(data) { window.eval.call(window, data); })(data); }, camelCase: function(string) { return string.replace(rmsPrefix, "ms-").replace(rdashAlpha, function(all, letter) { return letter.toUpperCase(); }); }, nodeName: function(elem, name) { return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); }, each: function(obj, callback, args) { var i = 0, length = obj.length, isArray = isArraylike(obj); if (args) { if (isArray) for(; i < length && !1 !== callback.apply(obj[i], args); i++); else for(i in obj)if (!1 === callback.apply(obj[i], args)) break; } else if (isArray) for(; i < length && !1 !== callback.call(obj[i], i, obj[i]); i++); else for(i in obj)if (!1 === callback.call(obj[i], i, obj[i])) break; return obj; }, trim: core_trim && !core_trim.call("\xa0") ? function(text) { return null == text ? "" : core_trim.call(text); } : function(text) { return null == text ? "" : (text + "").replace(rtrim, ""); }, makeArray: function(arr, results) { var ret = results || []; return null != arr && (isArraylike(Object(arr)) ? jQuery.merge(ret, "string" == typeof arr ? [ arr ] : arr) : core_push.call(ret, arr)), ret; }, inArray: function(elem, arr, i) { var len; if (arr) { if (core_indexOf) return core_indexOf.call(arr, elem, i); for(len = arr.length, i = i ? i < 0 ? Math.max(0, len + i) : i : 0; i < len; i++)if (i in arr && arr[i] === elem) return i; } return -1; }, merge: function(first, second) { var l = second.length, i = first.length, j = 0; if ("number" == typeof l) for(; j < l; j++)first[i++] = second[j]; else for(; undefined !== second[j];)first[i++] = second[j++]; return first.length = i, first; }, grep: function(elems, callback, inv) { var ret = [], i = 0, length = elems.length; for(inv = !!inv; i < length; i++)!!callback(elems[i], i) !== inv && ret.push(elems[i]); return ret; }, map: function(elems, callback, arg) { var value, i = 0, length = elems.length, isArray = isArraylike(elems), ret = []; if (isArray) for(; i < length; i++)null != (value = callback(elems[i], i, arg)) && (ret[ret.length] = value); else for(i in elems)null != (value = callback(elems[i], i, arg)) && (ret[ret.length] = value); return core_concat.apply([], ret); }, guid: 1, proxy: function(fn, context) { var args, proxy, tmp; if ("string" == typeof context && (tmp = fn[context], context = fn, fn = tmp), jQuery.isFunction(fn)) return args = core_slice.call(arguments, 2), (proxy = function() { return fn.apply(context || this, args.concat(core_slice.call(arguments))); }).guid = fn.guid = fn.guid || jQuery.guid++, proxy; }, access: function(elems, fn, key, value, chainable, emptyGet, raw) { var i = 0, length = elems.length, bulk = null == key; if ("object" === jQuery.type(key)) for(i in chainable = !0, key)jQuery.access(elems, fn, i, key[i], !0, emptyGet, raw); else if (value !== undefined && (chainable = !0, jQuery.isFunction(value) || (raw = !0), bulk && (raw ? (fn.call(elems, value), fn = null) : fn = function(elem, key, value) { return (bulk = fn).call(jQuery(elem), value); }), fn)) for(; i < length; i++)fn(elems[i], key, raw ? value : value.call(elems[i], i, fn(elems[i], key))); return chainable ? elems : bulk ? fn.call(elems) : length ? fn(elems[0], key) : emptyGet; }, now: function() { return new Date().getTime(); } }), jQuery.ready.promise = function(obj) { if (!readyList) if (readyList = jQuery.Deferred(), "complete" === document.readyState) setTimeout(jQuery.ready); else if (document.addEventListener) document.addEventListener("DOMContentLoaded", completed, !1), window.addEventListener("load", completed, !1); else { document.attachEvent("onreadystatechange", completed), window.attachEvent("onload", completed); var top = !1; try { top = null == window.frameElement && document.documentElement; } catch (e) { } top && top.doScroll && (function doScrollCheck() { if (!jQuery.isReady) { try { top.doScroll("left"); } catch (e) { return setTimeout(doScrollCheck, 50); } detach(), jQuery.ready(); } })(); } return readyList.promise(obj); }, jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { class2type["[object " + name + "]"] = name.toLowerCase(); }), rootjQuery = jQuery(document); var optionsCache = { }; function createOptions(options) { var object = optionsCache[options] = { }; return jQuery.each(options.match(core_rnotwhite) || [], function(_, flag) { object[flag] = !0; }), object; } jQuery.Callbacks = function(options) { options = "string" == typeof options ? optionsCache[options] || createOptions(options) : jQuery.extend({ }, options); var firing, memory, fired, firingLength, firingIndex, firingStart, list = [], stack = !options.once && [], fire = function(data) { for(memory = options.memory && data, fired = !0, firingIndex = firingStart || 0, firingStart = 0, firingLength = list.length, firing = !0; list && firingIndex < firingLength; firingIndex++)if (!1 === list[firingIndex].apply(data[0], data[1]) && options.stopOnFalse) { memory = !1; break; } firing = !1, list && (stack ? stack.length && fire(stack.shift()) : memory ? list = [] : self.disable()); }, self = { add: function() { if (list) { var start = list.length; (function add(args) { jQuery.each(arguments, function(_, arg) { var type = jQuery.type(arg); "function" === type ? options.unique && self.has(arg) || list.push(arg) : arg && arg.length && "string" !== type && add(arg); }); })(arguments), firing ? firingLength = list.length : memory && (firingStart = start, fire(memory)); } return this; }, remove: function() { return list && jQuery.each(arguments, function(_, arg) { for(var index; (index = jQuery.inArray(arg, list, index)) > -1;)list.splice(index, 1), firing && (index <= firingLength && firingLength--, index <= firingIndex && firingIndex--); }), this; }, has: function(fn) { return fn ? jQuery.inArray(fn, list) > -1 : !!(list && list.length); }, empty: function() { return list = [], this; }, disable: function() { return list = stack = memory = undefined, this; }, disabled: function() { return !list; }, lock: function() { return stack = undefined, memory || self.disable(), this; }, locked: function() { return !stack; }, fireWith: function(context, args) { return args = [ context, (args = args || []).slice ? args.slice() : args ], list && (!fired || stack) && (firing ? stack.push(args) : fire(args)), this; }, fire: function() { return self.fireWith(this, arguments), this; }, fired: function() { return !!fired; } }; return self; }, jQuery.extend({ Deferred: function(func) { var tuples = [ [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], [ "notify", "progress", jQuery.Callbacks("memory") ] ], state = "pending", promise = { state: function() { return state; }, always: function() { return deferred.done(arguments).fail(arguments), this; }, then: function() { var fns = arguments; return jQuery.Deferred(function(newDefer) { jQuery.each(tuples, function(i, tuple) { var action = tuple[0], fn = jQuery.isFunction(fns[i]) && fns[i]; deferred[tuple[1]](function() { var returned = fn && fn.apply(this, arguments); returned && jQuery.isFunction(returned.promise) ? returned.promise().done(newDefer.resolve).fail(newDefer.reject).progress(newDefer.notify) : newDefer[action + "With"](this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments); }); }), fns = null; }).promise(); }, promise: function(obj) { return null != obj ? jQuery.extend(obj, promise) : promise; } }, deferred = { }; return promise.pipe = promise.then, jQuery.each(tuples, function(i, tuple) { var list = tuple[2], stateString = tuple[3]; promise[tuple[1]] = list.add, stateString && list.add(function() { state = stateString; }, tuples[1 ^ i][2].disable, tuples[2][2].lock), deferred[tuple[0]] = function() { return deferred[tuple[0] + "With"](this === deferred ? promise : this, arguments), this; }, deferred[tuple[0] + "With"] = list.fireWith; }), promise.promise(deferred), func && func.call(deferred, deferred), deferred; }, when: function(subordinate) { var progressValues, progressContexts, resolveContexts, i = 0, resolveValues = core_slice.call(arguments), length = resolveValues.length, remaining = 1 !== length || subordinate && jQuery.isFunction(subordinate.promise) ? length : 0, deferred = 1 === remaining ? subordinate : jQuery.Deferred(), updateFunc = function(i, contexts, values) { return function(value) { contexts[i] = this, values[i] = arguments.length > 1 ? core_slice.call(arguments) : value, values === progressValues ? deferred.notifyWith(contexts, values) : --remaining || deferred.resolveWith(contexts, values); }; }; if (length > 1) for(progressValues = new Array(length), progressContexts = new Array(length), resolveContexts = new Array(length); i < length; i++)resolveValues[i] && jQuery.isFunction(resolveValues[i].promise) ? resolveValues[i].promise().done(updateFunc(i, resolveContexts, resolveValues)).fail(deferred.reject).progress(updateFunc(i, progressContexts, progressValues)) : --remaining; return remaining || deferred.resolveWith(resolveContexts, resolveValues), deferred.promise(); } }), jQuery.support = (function() { var support, all, a, input, select, fragment, opt, eventName, isSupported, i, div = document.createElement("div"); if (div.setAttribute("className", "t"), div.innerHTML = "
a", all = div.getElementsByTagName("*"), a = div.getElementsByTagName("a")[0], !all || !a || !all.length) return { }; opt = (select = document.createElement("select")).appendChild(document.createElement("option")), input = div.getElementsByTagName("input")[0], a.style.cssText = "top:1px;float:left;opacity:.5", support = { getSetAttribute: "t" !== div.className, leadingWhitespace: 3 === div.firstChild.nodeType, tbody: !div.getElementsByTagName("tbody").length, htmlSerialize: !!div.getElementsByTagName("link").length, style: /top/.test(a.getAttribute("style")), hrefNormalized: "/a" === a.getAttribute("href"), opacity: /^0.5/.test(a.style.opacity), cssFloat: !!a.style.cssFloat, checkOn: !!input.value, optSelected: opt.selected, enctype: !!document.createElement("form").enctype, html5Clone: "<:nav>" !== document.createElement("nav").cloneNode(!0).outerHTML, boxModel: "CSS1Compat" === document.compatMode, deleteExpando: !0, noCloneEvent: !0, inlineBlockNeedsLayout: !1, shrinkWrapBlocks: !1, reliableMarginRight: !0, boxSizingReliable: !0, pixelPosition: !1 }, input.checked = !0, support.noCloneChecked = input.cloneNode(!0).checked, select.disabled = !0, support.optDisabled = !opt.disabled; try { delete div.test; } catch (e) { support.deleteExpando = !1; } for(i in (input = document.createElement("input")).setAttribute("value", ""), support.input = "" === input.getAttribute("value"), input.value = "t", input.setAttribute("type", "radio"), support.radioValue = "t" === input.value, input.setAttribute("checked", "t"), input.setAttribute("name", "t"), (fragment = document.createDocumentFragment()).appendChild(input), support.appendChecked = input.checked, support.checkClone = fragment.cloneNode(!0).cloneNode(!0).lastChild.checked, div.attachEvent && (div.attachEvent("onclick", function() { support.noCloneEvent = !1; }), div.cloneNode(!0).click()), { submit: !0, change: !0, focusin: !0 })div.setAttribute(eventName = "on" + i, "t"), support[i + "Bubbles"] = eventName in window || !1 === div.attributes[eventName].expando; return div.style.backgroundClip = "content-box", div.cloneNode(!0).style.backgroundClip = "", support.clearCloneStyle = "content-box" === div.style.backgroundClip, jQuery(function() { var container, marginDiv, tds, body = document.getElementsByTagName("body")[0]; body && ((container = document.createElement("div")).style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px", body.appendChild(container).appendChild(div), div.innerHTML = "
t
", (tds = div.getElementsByTagName("td"))[0].style.cssText = "padding:0;margin:0;border:0;display:none", isSupported = 0 === tds[0].offsetHeight, tds[0].style.display = "", tds[1].style.display = "none", support.reliableHiddenOffsets = isSupported && 0 === tds[0].offsetHeight, div.innerHTML = "", div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;", support.boxSizing = 4 === div.offsetWidth, support.doesNotIncludeMarginInBodyOffset = 1 !== body.offsetTop, window.getComputedStyle && (support.pixelPosition = "1%" !== (window.getComputedStyle(div, null) || { }).top, support.boxSizingReliable = "4px" === (window.getComputedStyle(div, null) || { width: "4px" }).width, (marginDiv = div.appendChild(document.createElement("div"))).style.cssText = div.style.cssText = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;", marginDiv.style.marginRight = marginDiv.style.width = "0", div.style.width = "1px", support.reliableMarginRight = !parseFloat((window.getComputedStyle(marginDiv, null) || { }).marginRight)), void 0 !== div.style.zoom && (div.innerHTML = "", div.style.cssText = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;width:1px;padding:1px;display:inline;zoom:1", support.inlineBlockNeedsLayout = 3 === div.offsetWidth, div.style.display = "block", div.innerHTML = "
", div.firstChild.style.width = "5px", support.shrinkWrapBlocks = 3 !== div.offsetWidth, support.inlineBlockNeedsLayout && (body.style.zoom = 1)), body.removeChild(container), container = div = tds = marginDiv = null); }), all = select = fragment = opt = a = input = null, support; })(); var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/, rmultiDash = /([A-Z])/g; function internalData(elem, name, data, pvt) { if (jQuery.acceptData(elem)) { var thisCache, ret, internalKey = jQuery.expando, getByName = "string" == typeof name, isNode = elem.nodeType, cache = isNode ? jQuery.cache : elem, id = isNode ? elem[internalKey] : elem[internalKey] && internalKey; if (id && cache[id] && (pvt || cache[id].data) || !getByName || data !== undefined) return id || (isNode ? elem[internalKey] = id = core_deletedIds.pop() || jQuery.guid++ : id = internalKey), cache[id] || (cache[id] = { }, isNode || (cache[id].toJSON = jQuery.noop)), ("object" == typeof name || "function" == typeof name) && (pvt ? cache[id] = jQuery.extend(cache[id], name) : cache[id].data = jQuery.extend(cache[id].data, name)), thisCache = cache[id], pvt || (thisCache.data || (thisCache.data = { }), thisCache = thisCache.data), data !== undefined && (thisCache[jQuery.camelCase(name)] = data), getByName ? null == (ret = thisCache[name]) && (ret = thisCache[jQuery.camelCase(name)]) : ret = thisCache, ret; } } function internalRemoveData(elem, name, pvt) { if (jQuery.acceptData(elem)) { var i, l, thisCache, isNode = elem.nodeType, cache = isNode ? jQuery.cache : elem, id = isNode ? elem[jQuery.expando] : jQuery.expando; if (cache[id]) { if (name && (thisCache = pvt ? cache[id] : cache[id].data)) { for(i = 0, l = (name = jQuery.isArray(name) ? name.concat(jQuery.map(name, jQuery.camelCase)) : (name in thisCache) ? [ name ] : ((name = jQuery.camelCase(name)) in thisCache) ? [ name ] : name.split(" ")).length; i < l; i++)delete thisCache[name[i]]; if (!(pvt ? isEmptyDataObject : jQuery.isEmptyObject)(thisCache)) return; } (pvt || (delete cache[id].data, isEmptyDataObject(cache[id]))) && (isNode ? jQuery.cleanData([ elem ], !0) : jQuery.support.deleteExpando || cache != cache.window ? delete cache[id] : cache[id] = null); } } } function dataAttr(elem, key, data) { if (data === undefined && 1 === elem.nodeType) { var name = "data-" + key.replace(rmultiDash, "-$1").toLowerCase(); if ("string" == typeof (data = elem.getAttribute(name))) { try { data = "true" === data || "false" !== data && ("null" === data ? null : +data + "" === data ? +data : rbrace.test(data) ? jQuery.parseJSON(data) : data); } catch (e) { } jQuery.data(elem, key, data); } else data = undefined; } return data; } function isEmptyDataObject(obj) { var name; for(name in obj)if (!("data" === name && jQuery.isEmptyObject(obj[name])) && "toJSON" !== name) return !1; return !0; } jQuery.extend({ cache: { }, expando: "jQuery" + ("1.9.1" + Math.random()).replace(/\D/g, ""), noData: { embed: !0, object: "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", applet: !0 }, hasData: function(elem) { return !!(elem = elem.nodeType ? jQuery.cache[elem[jQuery.expando]] : elem[jQuery.expando]) && !isEmptyDataObject(elem); }, data: function(elem, name, data) { return internalData(elem, name, data); }, removeData: function(elem, name) { return internalRemoveData(elem, name); }, _data: function(elem, name, data) { return internalData(elem, name, data, !0); }, _removeData: function(elem, name) { return internalRemoveData(elem, name, !0); }, acceptData: function(elem) { if (elem.nodeType && 1 !== elem.nodeType && 9 !== elem.nodeType) return !1; var noData = elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]; return !noData || !0 !== noData && elem.getAttribute("classid") === noData; } }), jQuery.fn.extend({ data: function(key, value) { var attrs, name, elem = this[0], i = 0, data = null; if (key === undefined) { if (this.length && (data = jQuery.data(elem), 1 === elem.nodeType && !jQuery._data(elem, "parsedAttrs"))) { for(attrs = elem.attributes; i < attrs.length; i++)(name = attrs[i].name).indexOf("data-") || dataAttr(elem, name = jQuery.camelCase(name.slice(5)), data[name]); jQuery._data(elem, "parsedAttrs", !0); } return data; } return "object" == typeof key ? this.each(function() { jQuery.data(this, key); }) : jQuery.access(this, function(value) { if (value === undefined) return elem ? dataAttr(elem, key, jQuery.data(elem, key)) : null; this.each(function() { jQuery.data(this, key, value); }); }, null, value, arguments.length > 1, null, !0); }, removeData: function(key) { return this.each(function() { jQuery.removeData(this, key); }); } }), jQuery.extend({ queue: function(elem, type, data) { var queue; if (elem) return type = (type || "fx") + "queue", queue = jQuery._data(elem, type), data && (!queue || jQuery.isArray(data) ? queue = jQuery._data(elem, type, jQuery.makeArray(data)) : queue.push(data)), queue || []; }, dequeue: function(elem, type) { type = type || "fx"; var queue = jQuery.queue(elem, type), startLength = queue.length, fn = queue.shift(), hooks = jQuery._queueHooks(elem, type); "inprogress" === fn && (fn = queue.shift(), startLength--), hooks.cur = fn, fn && ("fx" === type && queue.unshift("inprogress"), delete hooks.stop, fn.call(elem, function() { jQuery.dequeue(elem, type); }, hooks)), !startLength && hooks && hooks.empty.fire(); }, _queueHooks: function(elem, type) { var key = type + "queueHooks"; return jQuery._data(elem, key) || jQuery._data(elem, key, { empty: jQuery.Callbacks("once memory").add(function() { jQuery._removeData(elem, type + "queue"), jQuery._removeData(elem, key); }) }); } }), jQuery.fn.extend({ queue: function(type, data) { var setter = 2; return ("string" != typeof type && (data = type, type = "fx", setter--), arguments.length < setter) ? jQuery.queue(this[0], type) : data === undefined ? this : this.each(function() { jQuery._queueHooks(this, type), "fx" === type && "inprogress" !== jQuery.queue(this, type, data)[0] && jQuery.dequeue(this, type); }); }, dequeue: function(type) { return this.each(function() { jQuery.dequeue(this, type); }); }, delay: function(time, type) { return time = jQuery.fx ? jQuery.fx.speeds[time] || time : time, type = type || "fx", this.queue(type, function(next, hooks) { var timeout = setTimeout(next, time); hooks.stop = function() { clearTimeout(timeout); }; }); }, clearQueue: function(type) { return this.queue(type || "fx", []); }, promise: function(type, obj) { var tmp, count = 1, defer = jQuery.Deferred(), elements = this, i = this.length, resolve = function() { --count || defer.resolveWith(elements, [ elements ]); }; for("string" != typeof type && (obj = type, type = undefined), type = type || "fx"; i--;)(tmp = jQuery._data(elements[i], type + "queueHooks")) && tmp.empty && (count++, tmp.empty.add(resolve)); return resolve(), defer.promise(obj); } }); var nodeHook, boolHook, rclass = /[\t\r\n]/g, rreturn = /\r/g, rfocusable = /^(?:input|select|textarea|button|object)$/i, rclickable = /^(?:a|area)$/i, rboolean = /^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i, ruseDefault = /^(?:checked|selected)$/i, getSetAttribute = jQuery.support.getSetAttribute, getSetInput = jQuery.support.input; jQuery.fn.extend({ attr: function(name, value) { return jQuery.access(this, jQuery.attr, name, value, arguments.length > 1); }, removeAttr: function(name) { return this.each(function() { jQuery.removeAttr(this, name); }); }, prop: function(name, value) { return jQuery.access(this, jQuery.prop, name, value, arguments.length > 1); }, removeProp: function(name) { return name = jQuery.propFix[name] || name, this.each(function() { try { this[name] = undefined, delete this[name]; } catch (e) { } }); }, addClass: function(value) { var classes, elem, cur, clazz, j, i = 0, len = this.length; if (jQuery.isFunction(value)) return this.each(function(j) { jQuery(this).addClass(value.call(this, j, this.className)); }); if ("string" == typeof value && value) { for(classes = (value || "").match(core_rnotwhite) || []; i < len; i++)if (cur = 1 === (elem = this[i]).nodeType && (elem.className ? (" " + elem.className + " ").replace(rclass, " ") : " ")) { for(; clazz = classes[j++];)0 > cur.indexOf(" " + clazz + " ") && (cur += clazz + " "); elem.className = jQuery.trim(cur); } } return this; }, removeClass: function(value) { var classes, elem, cur, clazz, j, i = 0, len = this.length, proceed = 0 === arguments.length || "string" == typeof value && value; if (jQuery.isFunction(value)) return this.each(function(j) { jQuery(this).removeClass(value.call(this, j, this.className)); }); if (proceed) { for(classes = (value || "").match(core_rnotwhite) || []; i < len; i++)if (cur = 1 === (elem = this[i]).nodeType && (elem.className ? (" " + elem.className + " ").replace(rclass, " ") : "")) { for(; clazz = classes[j++];)for(; cur.indexOf(" " + clazz + " ") >= 0;)cur = cur.replace(" " + clazz + " ", " "); elem.className = value ? jQuery.trim(cur) : ""; } } return this; }, toggleClass: function(value, stateVal) { var type = typeof value, isBool = "boolean" == typeof stateVal; return jQuery.isFunction(value) ? this.each(function(i) { jQuery(this).toggleClass(value.call(this, i, this.className, stateVal), stateVal); }) : this.each(function() { if ("string" === type) for(var className, i = 0, self = jQuery(this), state = stateVal, classNames = value.match(core_rnotwhite) || []; className = classNames[i++];)self[(state = isBool ? state : !self.hasClass(className)) ? "addClass" : "removeClass"](className); else ("undefined" === type || "boolean" === type) && (this.className && jQuery._data(this, "__className__", this.className), this.className = this.className || !1 === value ? "" : jQuery._data(this, "__className__") || ""); }); }, hasClass: function(selector) { for(var className = " " + selector + " ", i = 0, l = this.length; i < l; i++)if (1 === this[i].nodeType && (" " + this[i].className + " ").replace(rclass, " ").indexOf(className) >= 0) return !0; return !1; }, val: function(value) { var ret, hooks, isFunction, elem = this[0]; return arguments.length ? (isFunction = jQuery.isFunction(value), this.each(function(i) { var val; 1 === this.nodeType && (null == (val = isFunction ? value.call(this, i, jQuery(this).val()) : value) ? val = "" : "number" == typeof val ? val += "" : jQuery.isArray(val) && (val = jQuery.map(val, function(value) { return null == value ? "" : value + ""; })), (hooks = jQuery.valHooks[this.type] || jQuery.valHooks[this.nodeName.toLowerCase()]) && "set" in hooks && undefined !== hooks.set(this, val, "value") || (this.value = val)); })) : elem ? (hooks = jQuery.valHooks[elem.type] || jQuery.valHooks[elem.nodeName.toLowerCase()]) && "get" in hooks && undefined !== (ret = hooks.get(elem, "value")) ? ret : "string" == typeof (ret = elem.value) ? ret.replace(rreturn, "") : null == ret ? "" : ret : void 0; } }), jQuery.extend({ valHooks: { option: { get: function(elem) { var val = elem.attributes.value; return !val || val.specified ? elem.value : elem.text; } }, select: { get: function(elem) { for(var value, option, options = elem.options, index = elem.selectedIndex, one = "select-one" === elem.type || index < 0, values = one ? null : [], max = one ? index + 1 : options.length, i = index < 0 ? max : one ? index : 0; i < max; i++)if (((option = options[i]).selected || i === index) && (jQuery.support.optDisabled ? !option.disabled : null === option.getAttribute("disabled")) && (!option.parentNode.disabled || !jQuery.nodeName(option.parentNode, "optgroup"))) { if (value = jQuery(option).val(), one) return value; values.push(value); } return values; }, set: function(elem, value) { var values = jQuery.makeArray(value); return jQuery(elem).find("option").each(function() { this.selected = jQuery.inArray(jQuery(this).val(), values) >= 0; }), values.length || (elem.selectedIndex = -1), values; } } }, attr: function(elem, name, value) { var hooks, notxml, ret, nType = elem.nodeType; if (elem && 3 !== nType && 8 !== nType && 2 !== nType) return void 0 === elem.getAttribute ? jQuery.prop(elem, name, value) : ((notxml = 1 !== nType || !jQuery.isXMLDoc(elem)) && (name = name.toLowerCase(), hooks = jQuery.attrHooks[name] || (rboolean.test(name) ? boolHook : nodeHook)), value !== undefined) ? null === value ? void jQuery.removeAttr(elem, name) : hooks && notxml && "set" in hooks && undefined !== (ret = hooks.set(elem, value, name)) ? ret : (elem.setAttribute(name, value + ""), value) : hooks && notxml && "get" in hooks && null !== (ret = hooks.get(elem, name)) ? ret : (void 0 !== elem.getAttribute && (ret = elem.getAttribute(name)), null == ret ? undefined : ret); }, removeAttr: function(elem, value) { var name, propName, i = 0, attrNames = value && value.match(core_rnotwhite); if (attrNames && 1 === elem.nodeType) for(; name = attrNames[i++];)propName = jQuery.propFix[name] || name, rboolean.test(name) ? !getSetAttribute && ruseDefault.test(name) ? elem[jQuery.camelCase("default-" + name)] = elem[propName] = !1 : elem[propName] = !1 : jQuery.attr(elem, name, ""), elem.removeAttribute(getSetAttribute ? name : propName); }, attrHooks: { type: { set: function(elem, value) { if (!jQuery.support.radioValue && "radio" === value && jQuery.nodeName(elem, "input")) { var val = elem.value; return elem.setAttribute("type", value), val && (elem.value = val), value; } } } }, propFix: { tabindex: "tabIndex", readonly: "readOnly", "for": "htmlFor", "class": "className", maxlength: "maxLength", cellspacing: "cellSpacing", cellpadding: "cellPadding", rowspan: "rowSpan", colspan: "colSpan", usemap: "useMap", frameborder: "frameBorder", contenteditable: "contentEditable" }, prop: function(elem, name, value) { var ret, hooks, nType = elem.nodeType; if (elem && 3 !== nType && 8 !== nType && 2 !== nType) return (1 === nType && jQuery.isXMLDoc(elem) || (name = jQuery.propFix[name] || name, hooks = jQuery.propHooks[name]), value !== undefined) ? hooks && "set" in hooks && undefined !== (ret = hooks.set(elem, value, name)) ? ret : elem[name] = value : hooks && "get" in hooks && null !== (ret = hooks.get(elem, name)) ? ret : elem[name]; }, propHooks: { tabIndex: { get: function(elem) { var attributeNode = elem.getAttributeNode("tabindex"); return attributeNode && attributeNode.specified ? parseInt(attributeNode.value, 10) : rfocusable.test(elem.nodeName) || rclickable.test(elem.nodeName) && elem.href ? 0 : undefined; } } } }), boolHook = { get: function(elem, name) { var prop = jQuery.prop(elem, name), attr = "boolean" == typeof prop && elem.getAttribute(name), detail = "boolean" == typeof prop ? getSetInput && getSetAttribute ? null != attr : ruseDefault.test(name) ? elem[jQuery.camelCase("default-" + name)] : !!attr : elem.getAttributeNode(name); return detail && !1 !== detail.value ? name.toLowerCase() : undefined; }, set: function(elem, value, name) { return !1 === value ? jQuery.removeAttr(elem, name) : getSetInput && getSetAttribute || !ruseDefault.test(name) ? elem.setAttribute(!getSetAttribute && jQuery.propFix[name] || name, name) : elem[jQuery.camelCase("default-" + name)] = elem[name] = !0, name; } }, getSetInput && getSetAttribute || (jQuery.attrHooks.value = { get: function(elem, name) { var ret = elem.getAttributeNode(name); return jQuery.nodeName(elem, "input") ? elem.defaultValue : ret && ret.specified ? ret.value : undefined; }, set: function(elem, value, name) { if (!jQuery.nodeName(elem, "input")) return nodeHook && nodeHook.set(elem, value, name); elem.defaultValue = value; } }), getSetAttribute || (nodeHook = jQuery.valHooks.button = { get: function(elem, name) { var ret = elem.getAttributeNode(name); return ret && ("id" === name || "name" === name || "coords" === name ? "" !== ret.value : ret.specified) ? ret.value : undefined; }, set: function(elem, value, name) { var ret = elem.getAttributeNode(name); return ret || elem.setAttributeNode(ret = elem.ownerDocument.createAttribute(name)), ret.value = value += "", "value" === name || value === elem.getAttribute(name) ? value : undefined; } }, jQuery.attrHooks.contenteditable = { get: nodeHook.get, set: function(elem, value, name) { nodeHook.set(elem, "" !== value && value, name); } }, jQuery.each([ "width", "height" ], function(i, name) { jQuery.attrHooks[name] = jQuery.extend(jQuery.attrHooks[name], { set: function(elem, value) { if ("" === value) return elem.setAttribute(name, "auto"), value; } }); })), jQuery.support.hrefNormalized || (jQuery.each([ "href", "src", "width", "height" ], function(i, name) { jQuery.attrHooks[name] = jQuery.extend(jQuery.attrHooks[name], { get: function(elem) { var ret = elem.getAttribute(name, 2); return null == ret ? undefined : ret; } }); }), jQuery.each([ "href", "src" ], function(i, name) { jQuery.propHooks[name] = { get: function(elem) { return elem.getAttribute(name, 4); } }; })), jQuery.support.style || (jQuery.attrHooks.style = { get: function(elem) { return elem.style.cssText || undefined; }, set: function(elem, value) { return elem.style.cssText = value + ""; } }), jQuery.support.optSelected || (jQuery.propHooks.selected = jQuery.extend(jQuery.propHooks.selected, { get: function(elem) { var parent = elem.parentNode; return parent && (parent.selectedIndex, parent.parentNode && parent.parentNode.selectedIndex), null; } })), jQuery.support.enctype || (jQuery.propFix.enctype = "encoding"), jQuery.support.checkOn || jQuery.each([ "radio", "checkbox" ], function() { jQuery.valHooks[this] = { get: function(elem) { return null === elem.getAttribute("value") ? "on" : elem.value; } }; }), jQuery.each([ "radio", "checkbox" ], function() { jQuery.valHooks[this] = jQuery.extend(jQuery.valHooks[this], { set: function(elem, value) { if (jQuery.isArray(value)) return elem.checked = jQuery.inArray(jQuery(elem).val(), value) >= 0; } }); }); var rformElems = /^(?:input|select|textarea)$/i, rkeyEvent = /^key/, rmouseEvent = /^(?:mouse|contextmenu)|click/, rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; function returnTrue() { return !0; } function returnFalse() { return !1; } jQuery.event = { global: { }, add: function(elem, types, handler, data, selector) { var tmp, events, t, handleObjIn, special, eventHandle, handleObj, handlers, type, namespaces, origType, elemData = jQuery._data(null); if (elemData) for(handler.handler && (handler = (handleObjIn = handler).handler, selector = handleObjIn.selector), handler.guid || (handler.guid = jQuery.guid++), (events = elemData.events) || (events = elemData.events = { }), (eventHandle = elemData.handle) || ((eventHandle = elemData.handle = function(e) { }).elem = null), t = (types = (types || "").match(core_rnotwhite) || [ "" ]).length; t--;)type = origType = (tmp = rtypenamespace.exec(types[t]) || [])[1], namespaces = (tmp[2] || "").split(".").sort(), special = jQuery.event.special[type] || { }, type = (selector ? special.delegateType : special.bindType) || type, special = jQuery.event.special[type] || { }, handleObj = jQuery.extend({ type: type, origType: origType, data: data, handler: handler, guid: handler.guid, selector: selector, needsContext: selector && jQuery.expr.match.needsContext.test(selector), namespace: namespaces.join(".") }, handleObjIn), (handlers = events[type]) || ((handlers = events[type] = []).delegateCount = 0, (!special.setup || !1 === special.setup.call(null, data, namespaces, eventHandle)) && (null.addEventListener ? null.addEventListener(type, eventHandle, !1) : null.attachEvent && null.attachEvent("on" + type, eventHandle))), special.add && (special.add.call(null, handleObj), handleObj.handler.guid || (handleObj.handler.guid = handler.guid)), selector ? handlers.splice(handlers.delegateCount++, 0, handleObj) : handlers.push(handleObj), jQuery.event.global[type] = !0; }, remove: function(elem, types, handler, selector, mappedTypes) { var j, handleObj, tmp, origCount, t, events, special, handlers, type, namespaces, origType, elemData = jQuery.hasData(elem) && jQuery._data(elem); if (elemData && (events = elemData.events)) { for(t = (types = (types || "").match(core_rnotwhite) || [ "" ]).length; t--;){ if (type = origType = (tmp = rtypenamespace.exec(types[t]) || [])[1], namespaces = (tmp[2] || "").split(".").sort(), !type) { for(type in events)jQuery.event.remove(elem, type + types[t], handler, selector, !0); continue; } for(special = jQuery.event.special[type] || { }, handlers = events[type = (selector ? special.delegateType : special.bindType) || type] || [], tmp = tmp[2] && new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)"), origCount = j = handlers.length; j--;)handleObj = handlers[j], (mappedTypes || origType === handleObj.origType) && (!handler || handler.guid === handleObj.guid) && (!tmp || tmp.test(handleObj.namespace)) && (!selector || selector === handleObj.selector || "**" === selector && handleObj.selector) && (handlers.splice(j, 1), handleObj.selector && handlers.delegateCount--, special.remove && special.remove.call(elem, handleObj)); origCount && !handlers.length && (special.teardown && !1 !== special.teardown.call(elem, namespaces, elemData.handle) || jQuery.removeEvent(elem, type, elemData.handle), delete events[type]); } jQuery.isEmptyObject(events) && (delete elemData.handle, jQuery._removeData(elem, "events")); } }, trigger: function(event, data, elem, onlyHandlers) { var handle, ontype, cur, bubbleType, special, tmp, i, eventPath = [ elem || document ], type = core_hasOwn.call(event, "type") ? event.type : event, namespaces = core_hasOwn.call(event, "namespace") ? event.namespace.split(".") : []; if (cur = tmp = elem = elem || document, 3 !== elem.nodeType && 8 !== elem.nodeType && !rfocusMorph.test(type + jQuery.event.triggered) && (type.indexOf(".") >= 0 && (type = (namespaces = type.split(".")).shift(), namespaces.sort()), ontype = 0 > type.indexOf(":") && "on" + type, (event = event[jQuery.expando] ? event : new jQuery.Event(type, "object" == typeof event && event)).isTrigger = !0, event.namespace = namespaces.join("."), event.namespace_re = event.namespace ? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, event.result = undefined, event.target || (event.target = elem), data = null == data ? [ event ] : jQuery.makeArray(data, [ event ]), special = jQuery.event.special[type] || { }, onlyHandlers || !special.trigger || !1 !== special.trigger.apply(elem, data))) { if (!onlyHandlers && !special.noBubble && !jQuery.isWindow(elem)) { for(bubbleType = special.delegateType || type, rfocusMorph.test(bubbleType + type) || (cur = cur.parentNode); cur; cur = cur.parentNode)eventPath.push(cur), tmp = cur; tmp === (elem.ownerDocument || document) && eventPath.push(tmp.defaultView || tmp.parentWindow || window); } for(i = 0; (cur = eventPath[i++]) && !event.isPropagationStopped();)event.type = i > 1 ? bubbleType : special.bindType || type, (handle = (jQuery._data(cur, "events") || { })[event.type] && jQuery._data(cur, "handle")) && handle.apply(cur, data), (handle = ontype && cur[ontype]) && jQuery.acceptData(cur) && handle.apply && !1 === handle.apply(cur, data) && event.preventDefault(); if (event.type = type, !onlyHandlers && !event.isDefaultPrevented() && (!special._default || !1 === special._default.apply(elem.ownerDocument, data)) && !("click" === type && jQuery.nodeName(elem, "a")) && jQuery.acceptData(elem) && ontype && elem[type] && !jQuery.isWindow(elem)) { (tmp = elem[ontype]) && (elem[ontype] = null), jQuery.event.triggered = type; try { elem[type](); } catch (e) { } jQuery.event.triggered = undefined, tmp && (elem[ontype] = tmp); } return event.result; } }, dispatch: function(event) { event = jQuery.event.fix(event); var i, ret, handleObj, matched, j, handlerQueue = [], args = core_slice.call(arguments), handlers = (jQuery._data(this, "events") || { })[event.type] || [], special = jQuery.event.special[event.type] || { }; if (args[0] = event, event.delegateTarget = this, !special.preDispatch || !1 !== special.preDispatch.call(this, event)) { for(handlerQueue = jQuery.event.handlers.call(this, event, handlers); (matched = handlerQueue[i++]) && !event.isPropagationStopped();)for(event.currentTarget = matched.elem; (handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped();)(!event.namespace_re || event.namespace_re.test(handleObj.namespace)) && (event.handleObj = handleObj, event.data = handleObj.data, undefined !== (ret = ((jQuery.event.special[handleObj.origType] || { }).handle || handleObj.handler).apply(matched.elem, args)) && !1 === (event.result = ret) && (event.preventDefault(), event.stopPropagation())); return special.postDispatch && special.postDispatch.call(this, event), event.result; } }, handlers: function(event, handlers) { var sel, handleObj, matches, i, handlerQueue = [], delegateCount = handlers.delegateCount, cur = event.target; if (delegateCount && cur.nodeType && (!event.button || "click" !== event.type)) { for(; cur != this; cur = cur.parentNode || this)if (1 === cur.nodeType && (!0 !== cur.disabled || "click" !== event.type)) { for(i = 0, matches = []; i < delegateCount; i++)undefined === matches[sel = (handleObj = handlers[i]).selector + " "] && (matches[sel] = handleObj.needsContext ? jQuery(sel, this).index(cur) >= 0 : jQuery.find(sel, this, null, [ cur ]).length), matches[sel] && matches.push(handleObj); matches.length && handlerQueue.push({ elem: cur, handlers: matches }); } } return delegateCount < handlers.length && handlerQueue.push({ elem: this, handlers: handlers.slice(delegateCount) }), handlerQueue; }, fix: function(event) { if (event[jQuery.expando]) return event; var i, prop, copy, type = event.type, originalEvent = event, fixHook = this.fixHooks[type]; for(fixHook || (this.fixHooks[type] = fixHook = rmouseEvent.test(type) ? this.mouseHooks : rkeyEvent.test(type) ? this.keyHooks : { }), copy = fixHook.props ? this.props.concat(fixHook.props) : this.props, event = new jQuery.Event(originalEvent), i = copy.length; i--;)event[prop = copy[i]] = originalEvent[prop]; return event.target || (event.target = originalEvent.srcElement || document), 3 === event.target.nodeType && (event.target = event.target.parentNode), event.metaKey = !!event.metaKey, fixHook.filter ? fixHook.filter(event, originalEvent) : event; }, props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), fixHooks: { }, keyHooks: { props: "char charCode key keyCode".split(" "), filter: function(event, original) { return null == event.which && (event.which = null != original.charCode ? original.charCode : original.keyCode), event; } }, mouseHooks: { props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), filter: function(event, original) { var body, eventDoc, doc, button = original.button, fromElement = original.fromElement; return null == event.pageX && null != original.clientX && (doc = (eventDoc = event.target.ownerDocument || document).documentElement, body = eventDoc.body, event.pageX = original.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0), event.pageY = original.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0)), !event.relatedTarget && fromElement && (event.relatedTarget = fromElement === event.target ? original.toElement : fromElement), event.which || button === undefined || (event.which = 1 & button ? 1 : 2 & button ? 3 : 4 & button ? 2 : 0), event; } }, special: { load: { noBubble: !0 }, click: { trigger: function() { if (jQuery.nodeName(this, "input") && "checkbox" === this.type && this.click) return this.click(), !1; } }, focus: { trigger: function() { if (this !== document.activeElement && this.focus) try { return this.focus(), !1; } catch (e) { } }, delegateType: "focusin" }, blur: { trigger: function() { if (this === document.activeElement && this.blur) return this.blur(), !1; }, delegateType: "focusout" }, beforeunload: { postDispatch: function(event) { undefined !== event.result && (event.originalEvent.returnValue = event.result); } } }, simulate: function(type, elem, event, bubble) { var e = jQuery.extend(new jQuery.Event(), event, { type: type, isSimulated: !0, originalEvent: { } }); bubble ? jQuery.event.trigger(e, null, elem) : jQuery.event.dispatch.call(elem, e), e.isDefaultPrevented() && event.preventDefault(); } }, jQuery.removeEvent = document.removeEventListener ? function(elem, type, handle) { elem.removeEventListener && elem.removeEventListener(type, handle, !1); } : function(elem, type, handle) { var name = "on" + type; elem.detachEvent && (void 0 === elem[name] && (elem[name] = null), elem.detachEvent(name, handle)); }, jQuery.Event = function(src, props) { if (!(this instanceof jQuery.Event)) return new jQuery.Event(src, props); src && src.type ? (this.originalEvent = src, this.type = src.type, this.isDefaultPrevented = src.defaultPrevented || !1 === src.returnValue || src.getPreventDefault && src.getPreventDefault() ? returnTrue : returnFalse) : this.type = src, props && jQuery.extend(this, props), this.timeStamp = src && src.timeStamp || jQuery.now(), this[jQuery.expando] = !0; }, jQuery.Event.prototype = { isDefaultPrevented: returnFalse, isPropagationStopped: returnFalse, isImmediatePropagationStopped: returnFalse, preventDefault: function() { var e = this.originalEvent; this.isDefaultPrevented = returnTrue, e && (e.preventDefault ? e.preventDefault() : e.returnValue = !1); }, stopPropagation: function() { var e = this.originalEvent; this.isPropagationStopped = returnTrue, e && (e.stopPropagation && e.stopPropagation(), e.cancelBubble = !0); }, stopImmediatePropagation: function() { this.isImmediatePropagationStopped = returnTrue, this.stopPropagation(); } }, jQuery.each({ mouseenter: "mouseover", mouseleave: "mouseout" }, function(orig, fix) { jQuery.event.special[orig] = { delegateType: fix, bindType: fix, handle: function(event) { var ret, related = event.relatedTarget, handleObj = event.handleObj; return related && (related === this || jQuery.contains(this, related)) || (event.type = handleObj.origType, ret = handleObj.handler.apply(this, arguments), event.type = fix), ret; } }; }), jQuery.support.submitBubbles || (jQuery.event.special.submit = { setup: function() { if (jQuery.nodeName(this, "form")) return !1; jQuery.event.add(this, "click._submit keypress._submit", function(e) { var elem = e.target, form = jQuery.nodeName(elem, "input") || jQuery.nodeName(elem, "button") ? elem.form : undefined; form && !jQuery._data(form, "submitBubbles") && (jQuery.event.add(form, "submit._submit", function(event) { event._submit_bubble = !0; }), jQuery._data(form, "submitBubbles", !0)); }); }, postDispatch: function(event) { event._submit_bubble && (delete event._submit_bubble, this.parentNode && !event.isTrigger && jQuery.event.simulate("submit", this.parentNode, event, !0)); }, teardown: function() { if (jQuery.nodeName(this, "form")) return !1; jQuery.event.remove(this, "._submit"); } }), jQuery.support.changeBubbles || (jQuery.event.special.change = { setup: function() { if (rformElems.test(this.nodeName)) return ("checkbox" === this.type || "radio" === this.type) && (jQuery.event.add(this, "propertychange._change", function(event) { "checked" === event.originalEvent.propertyName && (this._just_changed = !0); }), jQuery.event.add(this, "click._change", function(event) { this._just_changed && !event.isTrigger && (this._just_changed = !1), jQuery.event.simulate("change", this, event, !0); })), !1; jQuery.event.add(this, "beforeactivate._change", function(e) { var elem = e.target; rformElems.test(elem.nodeName) && !jQuery._data(elem, "changeBubbles") && (jQuery.event.add(elem, "change._change", function(event) { !this.parentNode || event.isSimulated || event.isTrigger || jQuery.event.simulate("change", this.parentNode, event, !0); }), jQuery._data(elem, "changeBubbles", !0)); }); }, handle: function(event) { var elem = event.target; if (this !== elem || event.isSimulated || event.isTrigger || "radio" !== elem.type && "checkbox" !== elem.type) return event.handleObj.handler.apply(this, arguments); }, teardown: function() { return jQuery.event.remove(this, "._change"), !rformElems.test(this.nodeName); } }), jQuery.support.focusinBubbles || jQuery.each({ focus: "focusin", blur: "focusout" }, function(orig, fix) { var attaches = 0, handler = function(event) { jQuery.event.simulate(fix, event.target, jQuery.event.fix(event), !0); }; jQuery.event.special[fix] = { setup: function() { 0 == attaches++ && document.addEventListener(orig, handler, !0); }, teardown: function() { 0 == --attaches && document.removeEventListener(orig, handler, !0); } }; }), jQuery.fn.extend({ on: function(types, selector, data, fn, one) { var type, origFn; if ("object" == typeof types) { for(type in "string" != typeof selector && (data = data || selector, selector = undefined), types)this.on(type, selector, data, types[type], one); return this; } return (null == data && null == fn ? (fn = selector, data = selector = undefined) : null == fn && ("string" == typeof selector ? (fn = data, data = undefined) : (fn = data, data = selector, selector = undefined)), !1 === fn) ? void (fn = returnFalse) : fn ? (1 === one && ((fn = function(event) { return jQuery().off(event), (origFn = fn).apply(this, arguments); }).guid = origFn.guid || (origFn.guid = jQuery.guid++)), this.each(function() { jQuery.event.add(this, types, fn, data, selector); })) : this; }, one: function(types, selector, data, fn) { return this.on(types, selector, data, fn, 1); }, off: function(types, selector, fn) { var handleObj, type; if (types && types.preventDefault && types.handleObj) return handleObj = types.handleObj, jQuery(types.delegateTarget).off(handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler), this; if ("object" == typeof types) { for(type in types)this.off(type, selector, types[type]); return this; } return (!1 === selector || "function" == typeof selector) && (fn = selector, selector = undefined), !1 === fn && (fn = returnFalse), this.each(function() { jQuery.event.remove(this, types, fn, selector); }); }, bind: function(types, data, fn) { return this.on(types, null, data, fn); }, unbind: function(types, fn) { return this.off(types, null, fn); }, delegate: function(selector, types, data, fn) { return this.on(types, selector, data, fn); }, undelegate: function(selector, types, fn) { return 1 === arguments.length ? this.off(selector, "**") : this.off(types, selector || "**", fn); }, trigger: function(type, data) { return this.each(function() { jQuery.event.trigger(type, data, this); }); }, triggerHandler: function(type, data) { var elem = this[0]; if (elem) return jQuery.event.trigger(type, data, elem, !0); } }), (function(window, undefined) { var i, cachedruns, Expr, getText, isXML, compile, hasDuplicate, outermostContext, setDocument, document, docElem, documentIsXML, rbuggyQSA, rbuggyMatches, matches, contains, sortOrder, expando = "sizzle" + -new Date(), preferredDoc = window.document, support = { }, dirruns = 0, done = 0, classCache = createCache(), tokenCache = createCache(), compilerCache = createCache(), arr = [], pop = arr.pop, push = arr.push, slice = arr.slice, indexOf = arr.indexOf || function(elem) { for(var i = 0, len = this.length; i < len; i++)if (this[i] === elem) return i; return -1; }, whitespace = "[\\x20\\t\\r\\n\\f]", characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", identifier = characterEncoding.replace("w", "w#"), attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace + "*(?:([*^$|!~]?=)" + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]", pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace(3, 8) + ")*)|.*)\\)|)", rtrim = new RegExp("^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g"), rcomma = new RegExp("^" + whitespace + "*," + whitespace + "*"), rcombinators = new RegExp("^" + whitespace + "*([\\x20\\t\\r\\n\\f>+~])" + whitespace + "*"), rpseudo = new RegExp(pseudos), ridentifier = new RegExp("^" + identifier + "$"), matchExpr = { ID: new RegExp("^#(" + characterEncoding + ")"), CLASS: new RegExp("^\\.(" + characterEncoding + ")"), NAME: new RegExp("^\\[name=['\"]?(" + characterEncoding + ")['\"]?\\]"), TAG: new RegExp("^(" + characterEncoding.replace("w", "w*") + ")"), ATTR: new RegExp("^" + attributes), PSEUDO: new RegExp("^" + pseudos), CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i"), needsContext: new RegExp("^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i") }, rsibling = /[\x20\t\r\n\f]*[+~]/, rnative = /^[^{]+\{\s*\[native code/, rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, rinputs = /^(?:input|select|textarea|button)$/i, rheader = /^h\d$/i, rescape = /'|\\/g, rattributeQuotes = /\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g, runescape = /\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g, funescape = function(_, escaped) { var high = "0x" + escaped - 65536; return high != high ? escaped : high < 0 ? String.fromCharCode(high + 65536) : String.fromCharCode(high >> 10 | 55296, 1023 & high | 56320); }; try { slice.call(preferredDoc.documentElement.childNodes, 0)[0].nodeType; } catch (e) { slice = function(i) { for(var elem, results = []; elem = this[i++];)results.push(elem); return results; }; } function isNative(fn) { return rnative.test(fn + ""); } function createCache() { var cache, keys = []; return cache = function(key, value) { return keys.push(key += " ") > Expr.cacheLength && delete cache[keys.shift()], cache[key] = value; }; } function markFunction(fn) { return fn[expando] = !0, fn; } function assert(fn) { document.createElement("div"); try { return fn(null); } catch (e) { return !1; } finally{ } } function Sizzle(selector, context, results, seed) { var match, elem, m, nodeType, i, groups, old, nid, newContext, newSelector; if ((context ? context.ownerDocument || context : preferredDoc) !== document && setDocument(context), context = context || document, results = results || [], !selector || "string" != typeof selector) return results; if (1 !== (nodeType = context.nodeType) && 9 !== nodeType) return []; if (!documentIsXML && !seed) { if (match = rquickExpr.exec(selector)) { if (m = match[1]) { if (9 === nodeType) return (elem = context.getElementById(m)) && elem.parentNode ? elem.id === m ? (results.push(elem), results) : void 0 : results; else if (context.ownerDocument && (elem = context.ownerDocument.getElementById(m)) && contains(context, elem) && elem.id === m) return results.push(elem), results; } else if (match[2]) return push.apply(results, slice.call(context.getElementsByTagName(selector), 0)), results; else if ((m = match[3]) && support.getByClassName && context.getElementsByClassName) return push.apply(results, slice.call(context.getElementsByClassName(m), 0)), results; } if (support.qsa && !rbuggyQSA.test(selector)) { if (old = !0, nid = expando, newContext = context, newSelector = 9 === nodeType && selector, 1 === nodeType && "object" !== context.nodeName.toLowerCase()) { for(groups = tokenize(selector), (old = context.getAttribute("id")) ? nid = old.replace(rescape, "\\$&") : context.setAttribute("id", nid), nid = "[id='" + nid + "'] ", i = groups.length; i--;)groups[i] = nid + toSelector(groups[i]); newContext = rsibling.test(selector) && context.parentNode || context, newSelector = groups.join(","); } if (newSelector) try { return push.apply(results, slice.call(newContext.querySelectorAll(newSelector), 0)), results; } catch (qsaError) { } finally{ old || context.removeAttribute("id"); } } } return select(selector.replace(rtrim, "$1"), context, results, seed); } function siblingCheck(a, b) { var cur = b && a, diff = cur && (~b.sourceIndex || -2147483648) - (~a.sourceIndex || -2147483648); if (diff) return diff; if (cur) { for(; cur = cur.nextSibling;)if (cur === b) return -1; } return a ? 1 : -1; } function createInputPseudo(type) { return function(elem) { return "input" === elem.nodeName.toLowerCase() && elem.type === type; }; } function createButtonPseudo(type) { return function(elem) { var name = elem.nodeName.toLowerCase(); return ("input" === name || "button" === name) && elem.type === type; }; } function createPositionalPseudo(fn) { return markFunction(function(argument) { return markFunction(function(seed, matches) { for(var j, matchIndexes = fn([], seed.length, argument = +argument), i = matchIndexes.length; i--;)seed[j = matchIndexes[i]] && (seed[j] = !(matches[j] = seed[j])); }); }); } for(i in isXML = Sizzle.isXML = function(elem) { var documentElement = elem && (elem.ownerDocument || elem).documentElement; return !!documentElement && "HTML" !== documentElement.nodeName; }, setDocument = Sizzle.setDocument = function(node) { var doc = node ? node.ownerDocument || node : preferredDoc; return doc !== document && 9 === doc.nodeType && doc.documentElement && (document = doc, docElem = doc.documentElement, documentIsXML = isXML(doc), support.tagNameNoComments = assert(function(div) { return div.appendChild(doc.createComment("")), !div.getElementsByTagName("*").length; }), support.attributes = assert(function(div) { div.innerHTML = ""; var type = typeof div.lastChild.getAttribute("multiple"); return "boolean" !== type && "string" !== type; }), support.getByClassName = assert(function(div) { return div.innerHTML = "", !!div.getElementsByClassName && !!div.getElementsByClassName("e").length && (div.lastChild.className = "e", 2 === div.getElementsByClassName("e").length); }), support.getByName = assert(function(div) { div.id = expando + 0, div.innerHTML = "
", docElem.insertBefore(div, docElem.firstChild); var pass = doc.getElementsByName && doc.getElementsByName(expando).length === 2 + doc.getElementsByName(expando + 0).length; return support.getIdNotName = !doc.getElementById(expando), docElem.removeChild(div), pass; }), Expr.attrHandle = assert(function(div) { return div.innerHTML = "", div.firstChild && void 0 !== div.firstChild.getAttribute && "#" === div.firstChild.getAttribute("href"); }) ? { } : { href: function(elem) { return elem.getAttribute("href", 2); }, type: function(elem) { return elem.getAttribute("type"); } }, support.getIdNotName ? (Expr.find.ID = function(id, context) { if (void 0 !== context.getElementById && !documentIsXML) { var m = context.getElementById(id); return m && m.parentNode ? [ m ] : []; } }, Expr.filter.ID = function(id) { var attrId = id.replace(runescape, funescape); return function(elem) { return elem.getAttribute("id") === attrId; }; }) : (Expr.find.ID = function(id, context) { if (void 0 !== context.getElementById && !documentIsXML) { var m = context.getElementById(id); return m ? m.id === id || void 0 !== m.getAttributeNode && m.getAttributeNode("id").value === id ? [ m ] : undefined : []; } }, Expr.filter.ID = function(id) { var attrId = id.replace(runescape, funescape); return function(elem) { var node = void 0 !== elem.getAttributeNode && elem.getAttributeNode("id"); return node && node.value === attrId; }; }), Expr.find.TAG = support.tagNameNoComments ? function(tag, context) { if (void 0 !== context.getElementsByTagName) return context.getElementsByTagName(tag); } : function(tag, context) { var elem, tmp = [], i = 0, results = context.getElementsByTagName(tag); if ("*" === tag) { for(; elem = results[i++];)1 === elem.nodeType && tmp.push(elem); return tmp; } return results; }, Expr.find.NAME = support.getByName && function(tag, context) { if (void 0 !== context.getElementsByName) return context.getElementsByName(name); }, Expr.find.CLASS = support.getByClassName && function(className, context) { if (void 0 !== context.getElementsByClassName && !documentIsXML) return context.getElementsByClassName(className); }, rbuggyMatches = [], rbuggyQSA = [ ":focus" ], (support.qsa = isNative(doc.querySelectorAll)) && (assert(function(div) { div.innerHTML = "", div.querySelectorAll("[selected]").length || rbuggyQSA.push("\\[" + whitespace + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)"), div.querySelectorAll(":checked").length || rbuggyQSA.push(":checked"); }), assert(function(div) { div.innerHTML = "", div.querySelectorAll("[i^='']").length && rbuggyQSA.push("[*^$]=" + whitespace + "*(?:\"\"|'')"), div.querySelectorAll(":enabled").length || rbuggyQSA.push(":enabled", ":disabled"), div.querySelectorAll("*,:x"), rbuggyQSA.push(",.*:"); })), (support.matchesSelector = isNative(matches = docElem.matchesSelector || docElem.mozMatchesSelector || docElem.webkitMatchesSelector || docElem.oMatchesSelector || docElem.msMatchesSelector)) && assert(function(div) { support.disconnectedMatch = matches.call(div, "div"), matches.call(div, "[s!='']:x"), rbuggyMatches.push("!=", pseudos); }), rbuggyQSA = new RegExp(rbuggyQSA.join("|")), rbuggyMatches = new RegExp(rbuggyMatches.join("|")), contains = isNative(docElem.contains) || docElem.compareDocumentPosition ? function(a, b) { var adown = 9 === a.nodeType ? a.documentElement : a, bup = b && b.parentNode; return a === bup || !!(bup && 1 === bup.nodeType && (adown.contains ? adown.contains(bup) : a.compareDocumentPosition && 16 & a.compareDocumentPosition(bup))); } : function(a, b) { if (b) { for(; b = b.parentNode;)if (b === a) return !0; } return !1; }, sortOrder = docElem.compareDocumentPosition ? function(a, b) { var compare; return a === b ? (hasDuplicate = !0, 0) : (compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition(b)) ? 1 & compare || a.parentNode && 11 === a.parentNode.nodeType ? a === doc || contains(preferredDoc, a) ? -1 : b === doc || contains(preferredDoc, b) ? 1 : 0 : 4 & compare ? -1 : 1 : a.compareDocumentPosition ? -1 : 1; } : function(a, b) { var cur, i = 0, aup = a.parentNode, bup = b.parentNode, ap = [ a ], bp = [ b ]; if (a === b) return hasDuplicate = !0, 0; if (!aup || !bup) return a === doc ? -1 : b === doc ? 1 : aup ? -1 : bup ? 1 : 0; if (aup === bup) return siblingCheck(a, b); for(cur = a; cur = cur.parentNode;)ap.unshift(cur); for(cur = b; cur = cur.parentNode;)bp.unshift(cur); for(; ap[i] === bp[i];)i++; return i ? siblingCheck(ap[i], bp[i]) : ap[i] === preferredDoc ? -1 : bp[i] === preferredDoc ? 1 : 0; }, hasDuplicate = !1, [ 0, 0 ].sort(sortOrder), support.detectDuplicates = hasDuplicate), document; }, Sizzle.matches = function(expr, elements) { return Sizzle(expr, null, null, elements); }, Sizzle.matchesSelector = function(elem, expr) { if ((elem.ownerDocument || elem) !== document && setDocument(elem), expr = expr.replace(rattributeQuotes, "='$1']"), support.matchesSelector && !documentIsXML && (!rbuggyMatches || !rbuggyMatches.test(expr)) && !rbuggyQSA.test(expr)) try { var ret = matches.call(elem, expr); if (ret || support.disconnectedMatch || elem.document && 11 !== elem.document.nodeType) return ret; } catch (e) { } return Sizzle(expr, document, null, [ elem ]).length > 0; }, Sizzle.contains = function(context, elem) { return (context.ownerDocument || context) !== document && setDocument(context), contains(context, elem); }, Sizzle.attr = function(elem, name) { var val; return ((elem.ownerDocument || elem) !== document && setDocument(elem), documentIsXML || (name = name.toLowerCase()), val = Expr.attrHandle[name]) ? val(elem) : documentIsXML || support.attributes ? elem.getAttribute(name) : ((val = elem.getAttributeNode(name)) || elem.getAttribute(name)) && !0 === elem[name] ? name : val && val.specified ? val.value : null; }, Sizzle.error = function(msg) { throw new Error("Syntax error, unrecognized expression: " + msg); }, Sizzle.uniqueSort = function(results) { var elem, duplicates = [], i = 1, j = 0; if (hasDuplicate = !support.detectDuplicates, results.sort(sortOrder), hasDuplicate) { for(; elem = results[i]; i++)elem === results[i - 1] && (j = duplicates.push(i)); for(; j--;)results.splice(duplicates[j], 1); } return results; }, getText = Sizzle.getText = function(elem) { var node, ret = "", i = 0, nodeType = elem.nodeType; if (nodeType) { if (1 === nodeType || 9 === nodeType || 11 === nodeType) { if ("string" == typeof elem.textContent) return elem.textContent; for(elem = elem.firstChild; elem; elem = elem.nextSibling)ret += getText(elem); } else if (3 === nodeType || 4 === nodeType) return elem.nodeValue; } else for(; node = elem[i]; i++)ret += getText(node); return ret; }, Expr = Sizzle.selectors = { cacheLength: 50, createPseudo: markFunction, match: matchExpr, find: { }, relative: { ">": { dir: "parentNode", first: !0 }, " ": { dir: "parentNode" }, "+": { dir: "previousSibling", first: !0 }, "~": { dir: "previousSibling" } }, preFilter: { ATTR: function(match) { return match[1] = match[1].replace(runescape, funescape), match[3] = (match[4] || match[5] || "").replace(runescape, funescape), "~=" === match[2] && (match[3] = " " + match[3] + " "), match.slice(0, 4); }, CHILD: function(match) { return match[1] = match[1].toLowerCase(), "nth" === match[1].slice(0, 3) ? (match[3] || Sizzle.error(match[0]), match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * ("even" === match[3] || "odd" === match[3])), match[5] = +(match[7] + match[8] || "odd" === match[3])) : match[3] && Sizzle.error(match[0]), match; }, PSEUDO: function(match) { var excess, unquoted = !match[5] && match[2]; return matchExpr.CHILD.test(match[0]) ? null : (match[4] ? match[2] = match[4] : unquoted && rpseudo.test(unquoted) && (excess = tokenize(unquoted, !0)) && (excess = unquoted.indexOf(")", unquoted.length - excess) - unquoted.length) && (match[0] = match[0].slice(0, excess), match[2] = unquoted.slice(0, excess)), match.slice(0, 3)); } }, filter: { TAG: function(nodeName) { return "*" === nodeName ? function() { return !0; } : function(elem) { return elem.nodeName && elem.nodeName.toLowerCase() === (nodeName = nodeName.replace(runescape, funescape).toLowerCase()); }; }, CLASS: function(className) { var pattern = classCache[className + " "]; return pattern || classCache(className, function(elem) { return (pattern = new RegExp("(^|" + whitespace + ")" + className + "(" + whitespace + "|$)")).test(elem.className || void 0 !== elem.getAttribute && elem.getAttribute("class") || ""); }); }, ATTR: function(name, operator, check) { return function(elem) { var result = Sizzle.attr(elem, name); return null == result ? "!=" === operator : !operator || (result += "", "=" === operator ? result === check : "!=" === operator ? result !== check : "^=" === operator ? check && 0 === result.indexOf(check) : "*=" === operator ? check && result.indexOf(check) > -1 : "$=" === operator ? check && result.slice(-check.length) === check : "~=" === operator ? (" " + result + " ").indexOf(check) > -1 : "|=" === operator && (result === check || result.slice(0, check.length + 1) === check + "-")); }; }, CHILD: function(type, what, argument, first, last) { var simple = "nth" !== type.slice(0, 3), forward = "last" !== type.slice(-4), ofType = "of-type" === what; return 1 === first && 0 === last ? function(elem) { return !!elem.parentNode; } : function(elem, context, xml) { var cache, outerCache, node, diff, nodeIndex, start, dir = simple !== forward ? "nextSibling" : "previousSibling", parent = elem.parentNode, name = ofType && elem.nodeName.toLowerCase(), useCache = !xml && !ofType; if (parent) { if (simple) { for(; dir;){ for(node = elem; node = node[dir];)if (ofType ? node.nodeName.toLowerCase() === name : 1 === node.nodeType) return !1; start = dir = "only" === type && !start && "nextSibling"; } return !0; } if (start = [ forward ? parent.firstChild : parent.lastChild ], forward && useCache) { for(nodeIndex = (cache = (outerCache = parent[expando] || (parent[expando] = { }))[type] || [])[0] === dirruns && cache[1], diff = cache[0] === dirruns && cache[2], node = nodeIndex && parent.childNodes[nodeIndex]; node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop();)if (1 === node.nodeType && ++diff && node === elem) { outerCache[type] = [ dirruns, nodeIndex, diff ]; break; } } else if (useCache && (cache = (elem[expando] || (elem[expando] = { }))[type]) && cache[0] === dirruns) diff = cache[1]; else for(; (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) && (!((ofType ? node.nodeName.toLowerCase() === name : 1 === node.nodeType) && ++diff) || (useCache && ((node[expando] || (node[expando] = { }))[type] = [ dirruns, diff ]), node !== elem));); return diff -= last, diff === first || diff % first == 0 && diff / first >= 0; } }; }, PSEUDO: function(pseudo, argument) { var args, fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || Sizzle.error("unsupported pseudo: " + pseudo); return fn[expando] ? fn(argument) : fn.length > 1 ? (args = [ pseudo, pseudo, "", argument ], Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function(seed, matches) { for(var idx, matched = fn(seed, argument), i = matched.length; i--;)seed[idx = indexOf.call(seed, matched[i])] = !(matches[idx] = matched[i]); }) : function(elem) { return fn(elem, 0, args); }) : fn; } }, pseudos: { not: markFunction(function(selector) { var input = [], results = [], matcher = compile(selector.replace(rtrim, "$1")); return matcher[expando] ? markFunction(function(seed, matches, context, xml) { for(var elem, unmatched = matcher(seed, null, xml, []), i = seed.length; i--;)(elem = unmatched[i]) && (seed[i] = !(matches[i] = elem)); }) : function(elem, context, xml) { return input[0] = elem, matcher(input, null, xml, results), !results.pop(); }; }), has: markFunction(function(selector) { return function(elem) { return Sizzle(selector, elem).length > 0; }; }), contains: markFunction(function(text) { return function(elem) { return (elem.textContent || elem.innerText || getText(elem)).indexOf(text) > -1; }; }), lang: markFunction(function(lang) { return ridentifier.test(lang || "") || Sizzle.error("unsupported lang: " + lang), lang = lang.replace(runescape, funescape).toLowerCase(), function(elem) { var elemLang; do if (elemLang = documentIsXML ? elem.getAttribute("xml:lang") || elem.getAttribute("lang") : elem.lang) return (elemLang = elemLang.toLowerCase()) === lang || 0 === elemLang.indexOf(lang + "-"); while ((elem = elem.parentNode) && 1 === elem.nodeType) return !1; }; }), target: function(elem) { var hash = window.location && window.location.hash; return hash && hash.slice(1) === elem.id; }, root: function(elem) { return elem === docElem; }, focus: function(elem) { return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); }, enabled: function(elem) { return !1 === elem.disabled; }, disabled: function(elem) { return !0 === elem.disabled; }, checked: function(elem) { var nodeName = elem.nodeName.toLowerCase(); return "input" === nodeName && !!elem.checked || "option" === nodeName && !!elem.selected; }, selected: function(elem) { return elem.parentNode && elem.parentNode.selectedIndex, !0 === elem.selected; }, empty: function(elem) { for(elem = elem.firstChild; elem; elem = elem.nextSibling)if (elem.nodeName > "@" || 3 === elem.nodeType || 4 === elem.nodeType) return !1; return !0; }, parent: function(elem) { return !Expr.pseudos.empty(elem); }, header: function(elem) { return rheader.test(elem.nodeName); }, input: function(elem) { return rinputs.test(elem.nodeName); }, button: function(elem) { var name = elem.nodeName.toLowerCase(); return "input" === name && "button" === elem.type || "button" === name; }, text: function(elem) { var attr; return "input" === elem.nodeName.toLowerCase() && "text" === elem.type && (null == (attr = elem.getAttribute("type")) || attr.toLowerCase() === elem.type); }, first: createPositionalPseudo(function() { return [ 0 ]; }), last: createPositionalPseudo(function(matchIndexes, length) { return [ length - 1 ]; }), eq: createPositionalPseudo(function(matchIndexes, length, argument) { return [ argument < 0 ? argument + length : argument ]; }), even: createPositionalPseudo(function(matchIndexes, length) { for(var i = 0; i < length; i += 2)matchIndexes.push(i); return matchIndexes; }), odd: createPositionalPseudo(function(matchIndexes, length) { for(var i = 1; i < length; i += 2)matchIndexes.push(i); return matchIndexes; }), lt: createPositionalPseudo(function(matchIndexes, length, argument) { for(var i = argument < 0 ? argument + length : argument; --i >= 0;)matchIndexes.push(i); return matchIndexes; }), gt: createPositionalPseudo(function(matchIndexes, length, argument) { for(var i = argument < 0 ? argument + length : argument; ++i < length;)matchIndexes.push(i); return matchIndexes; }) } }, { radio: !0, checkbox: !0, file: !0, password: !0, image: !0 })Expr.pseudos[i] = createInputPseudo(i); for(i in { submit: !0, reset: !0 })Expr.pseudos[i] = createButtonPseudo(i); function tokenize(selector, parseOnly) { var matched, match, tokens, type, soFar, groups, preFilters, cached = tokenCache[selector + " "]; if (cached) return parseOnly ? 0 : cached.slice(0); for(soFar = selector, groups = [], preFilters = Expr.preFilter; soFar;){ for(type in (!matched || (match = rcomma.exec(soFar))) && (match && (soFar = soFar.slice(match[0].length) || soFar), groups.push(tokens = [])), matched = !1, (match = rcombinators.exec(soFar)) && (matched = match.shift(), tokens.push({ value: matched, type: match[0].replace(rtrim, " ") }), soFar = soFar.slice(matched.length)), Expr.filter)(match = matchExpr[type].exec(soFar)) && (!preFilters[type] || (match = preFilters[type](match))) && (matched = match.shift(), tokens.push({ value: matched, type: type, matches: match }), soFar = soFar.slice(matched.length)); if (!matched) break; } return parseOnly ? soFar.length : soFar ? Sizzle.error(selector) : tokenCache(selector, groups).slice(0); } function toSelector(tokens) { for(var i = 0, len = tokens.length, selector = ""; i < len; i++)selector += tokens[i].value; return selector; } function addCombinator(matcher, combinator, base) { var dir = combinator.dir, checkNonElements = base && "parentNode" === dir, doneName = done++; return combinator.first ? function(elem, context, xml) { for(; elem = elem[dir];)if (1 === elem.nodeType || checkNonElements) return matcher(elem, context, xml); } : function(elem, context, xml) { var data, cache, outerCache, dirkey = dirruns + " " + doneName; if (xml) { for(; elem = elem[dir];)if ((1 === elem.nodeType || checkNonElements) && matcher(elem, context, xml)) return !0; } else for(; elem = elem[dir];)if (1 === elem.nodeType || checkNonElements) { if ((cache = (outerCache = elem[expando] || (elem[expando] = { }))[dir]) && cache[0] === dirkey) { if (!0 === (data = cache[1]) || data === cachedruns) return !0 === data; } else if ((cache = outerCache[dir] = [ dirkey ])[1] = matcher(elem, context, xml) || cachedruns, !0 === cache[1]) return !0; } }; } function elementMatcher(matchers) { return matchers.length > 1 ? function(elem, context, xml) { for(var i = matchers.length; i--;)if (!matchers[i](elem, context, xml)) return !1; return !0; } : matchers[0]; } function condense(unmatched, map, filter, context, xml) { for(var elem, newUnmatched = [], i = 0, len = unmatched.length, mapped = null != map; i < len; i++)(elem = unmatched[i]) && (!filter || filter(elem, context, xml)) && (newUnmatched.push(elem), mapped && map.push(i)); return newUnmatched; } function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) { return postFilter && !postFilter[expando] && (postFilter = setMatcher(postFilter)), postFinder && !postFinder[expando] && (postFinder = setMatcher(postFinder, postSelector)), markFunction(function(seed, results, context, xml) { var temp, i, elem, preMap = [], postMap = [], preexisting = results.length, elems = seed || multipleContexts(selector || "*", context.nodeType ? [ context ] : context, []), matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems, matcherOut = matcher ? postFinder || (seed ? preFilter : preexisting || postFilter) ? [] : results : matcherIn; if (matcher && matcher(matcherIn, matcherOut, context, xml), postFilter) for(postFilter(temp = condense(matcherOut, postMap), [], context, xml), i = temp.length; i--;)(elem = temp[i]) && (matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem)); if (seed) { if (postFinder || preFilter) { if (postFinder) { for(temp = [], i = matcherOut.length; i--;)(elem = matcherOut[i]) && temp.push(matcherIn[i] = elem); postFinder(null, matcherOut = [], temp, xml); } for(i = matcherOut.length; i--;)(elem = matcherOut[i]) && (temp = postFinder ? indexOf.call(seed, elem) : preMap[i]) > -1 && (seed[temp] = !(results[temp] = elem)); } } else matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut), postFinder ? postFinder(null, results, matcherOut, xml) : push.apply(results, matcherOut); }); } function matcherFromTokens(tokens) { for(var checkContext, matcher, j, len = tokens.length, leadingRelative = Expr.relative[tokens[0].type], implicitRelative = leadingRelative || Expr.relative[" "], i = leadingRelative ? 1 : 0, matchContext = addCombinator(function(elem) { return elem === checkContext; }, implicitRelative, !0), matchAnyContext = addCombinator(function(elem) { return indexOf.call(checkContext, elem) > -1; }, implicitRelative, !0), matchers = [function(elem, context, xml) { return !leadingRelative && (xml || context !== outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml)); }]; i < len; i++)if (matcher = Expr.relative[tokens[i].type]) matchers = [ addCombinator(elementMatcher(matchers), matcher) ]; else { if ((matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches))[expando]) { for(j = ++i; j < len && !Expr.relative[tokens[j].type]; j++); return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector(tokens.slice(0, i - 1)).replace(rtrim, "$1"), matcher, i < j && matcherFromTokens(tokens.slice(i, j)), j < len && matcherFromTokens(tokens = tokens.slice(j)), j < len && toSelector(tokens)); } matchers.push(matcher); } return elementMatcher(matchers); } function matcherFromGroupMatchers(elementMatchers, setMatchers) { var matcherCachedRuns = 0, bySet = setMatchers.length > 0, byElement = elementMatchers.length > 0, superMatcher = function(seed, context, xml, results, expandContext) { var elem, j, matcher, setMatched = [], matchedCount = 0, i = "0", unmatched = seed && [], outermost = null != expandContext, contextBackup = outermostContext, elems = seed || byElement && Expr.find.TAG("*", expandContext && context.parentNode || context), dirrunsUnique = dirruns += null == contextBackup ? 1 : Math.random() || 0.1; for(outermost && (outermostContext = context !== document && context, cachedruns = matcherCachedRuns); null != (elem = elems[i]); i++){ if (byElement && elem) { for(; matcher = elementMatchers[j++];)if (matcher(elem, context, xml)) { results.push(elem); break; } outermost && (dirruns = dirrunsUnique, cachedruns = ++matcherCachedRuns); } bySet && ((elem = !matcher && elem) && matchedCount--, seed && unmatched.push(elem)); } if (matchedCount += i, bySet && i !== matchedCount) { for(; matcher = setMatchers[j++];)matcher(unmatched, setMatched, context, xml); if (seed) { if (matchedCount > 0) for(; i--;)unmatched[i] || setMatched[i] || (setMatched[i] = pop.call(results)); setMatched = condense(setMatched); } push.apply(results, setMatched), outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1 && Sizzle.uniqueSort(results); } return outermost && (dirruns = dirrunsUnique, outermostContext = contextBackup), unmatched; }; return bySet ? markFunction(superMatcher) : superMatcher; } function multipleContexts(selector, contexts, results) { for(var i = 0, len = contexts.length; i < len; i++)Sizzle(selector, contexts[i], results); return results; } function select(selector, context, results, seed) { var i, tokens, token, type, find, match = tokenize(selector); if (!seed && 1 === match.length) { if ((tokens = match[0] = match[0].slice(0)).length > 2 && "ID" === (token = tokens[0]).type && 9 === context.nodeType && !documentIsXML && Expr.relative[tokens[1].type]) { if (!(context = Expr.find.ID(token.matches[0].replace(runescape, funescape), context)[0])) return results; selector = selector.slice(tokens.shift().value.length); } for(i = matchExpr.needsContext.test(selector) ? 0 : tokens.length; i--;){ if (token = tokens[i], Expr.relative[type = token.type]) break; if ((find = Expr.find[type]) && (seed = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && context.parentNode || context))) { if (tokens.splice(i, 1), !(selector = seed.length && toSelector(tokens))) return push.apply(results, slice.call(seed, 0)), results; break; } } } return compile(selector, match)(seed, context, documentIsXML, results, rsibling.test(selector)), results; } function setFilters() { } compile = Sizzle.compile = function(selector, group) { var i, setMatchers = [], elementMatchers = [], cached = compilerCache[selector + " "]; if (!cached) { for(group || (group = tokenize(selector)), i = group.length; i--;)(cached = matcherFromTokens(group[i]))[expando] ? setMatchers.push(cached) : elementMatchers.push(cached); cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers)); } return cached; }, Expr.pseudos.nth = Expr.pseudos.eq, Expr.filters = setFilters.prototype = Expr.pseudos, Expr.setFilters = new setFilters(), setDocument(), Sizzle.attr = jQuery.attr, jQuery.find = Sizzle, jQuery.expr = Sizzle.selectors, jQuery.expr[":"] = jQuery.expr.pseudos, jQuery.unique = Sizzle.uniqueSort, jQuery.text = Sizzle.getText, jQuery.isXMLDoc = Sizzle.isXML, jQuery.contains = Sizzle.contains; })(window); var runtil = /Until$/, rparentsprev = /^(?:parents|prev(?:Until|All))/, isSimple = /^.[^:#\[\.,]*$/, rneedsContext = jQuery.expr.match.needsContext, guaranteedUnique = { children: !0, contents: !0, next: !0, prev: !0 }; function sibling(cur, dir) { do cur = cur[dir]; while (cur && 1 !== cur.nodeType) return cur; } function winnow(elements, qualifier, keep) { if (qualifier = qualifier || 0, jQuery.isFunction(qualifier)) return jQuery.grep(elements, function(elem, i) { return !!qualifier.call(elem, i, elem) === keep; }); if (qualifier.nodeType) return jQuery.grep(elements, function(elem) { return elem === qualifier === keep; }); if ("string" == typeof qualifier) { var filtered = jQuery.grep(elements, function(elem) { return 1 === elem.nodeType; }); if (isSimple.test(qualifier)) return jQuery.filter(qualifier, filtered, !keep); qualifier = jQuery.filter(qualifier, filtered); } return jQuery.grep(elements, function(elem) { return jQuery.inArray(elem, qualifier) >= 0 === keep; }); } function createSafeFragment(document) { var list = nodeNames.split("|"), safeFrag = document.createDocumentFragment(); if (safeFrag.createElement) for(; list.length;)safeFrag.createElement(list.pop()); return safeFrag; } jQuery.fn.extend({ find: function(selector) { var i, ret, self, len = this.length; if ("string" != typeof selector) return self = this, this.pushStack(jQuery(selector).filter(function() { for(i = 0; i < len; i++)if (jQuery.contains(self[i], this)) return !0; })); for(i = 0, ret = []; i < len; i++)jQuery.find(selector, this[i], ret); return (ret = this.pushStack(len > 1 ? jQuery.unique(ret) : ret)).selector = (this.selector ? this.selector + " " : "") + selector, ret; }, has: function(target) { var i, targets = jQuery(target, this), len = targets.length; return this.filter(function() { for(i = 0; i < len; i++)if (jQuery.contains(this, targets[i])) return !0; }); }, not: function(selector) { return this.pushStack(winnow(this, selector, !1)); }, filter: function(selector) { return this.pushStack(winnow(this, selector, !0)); }, is: function(selector) { return !!selector && ("string" == typeof selector ? rneedsContext.test(selector) ? jQuery(selector, this.context).index(this[0]) >= 0 : jQuery.filter(selector, this).length > 0 : this.filter(selector).length > 0); }, closest: function(selectors, context) { for(var cur, i = 0, l = this.length, ret = [], pos = rneedsContext.test(selectors) || "string" != typeof selectors ? jQuery(selectors, context || this.context) : 0; i < l; i++)for(cur = this[i]; cur && cur.ownerDocument && cur !== context && 11 !== cur.nodeType;){ if (pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors)) { ret.push(cur); break; } cur = cur.parentNode; } return this.pushStack(ret.length > 1 ? jQuery.unique(ret) : ret); }, index: function(elem) { return elem ? "string" == typeof elem ? jQuery.inArray(this[0], jQuery(elem)) : jQuery.inArray(elem.jquery ? elem[0] : elem, this) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1; }, add: function(selector, context) { var set = "string" == typeof selector ? jQuery(selector, context) : jQuery.makeArray(selector && selector.nodeType ? [ selector ] : selector), all = jQuery.merge(this.get(), set); return this.pushStack(jQuery.unique(all)); }, addBack: function(selector) { return this.add(null == selector ? this.prevObject : this.prevObject.filter(selector)); } }), jQuery.fn.andSelf = jQuery.fn.addBack, jQuery.each({ parent: function(elem) { var parent = elem.parentNode; return parent && 11 !== parent.nodeType ? parent : null; }, parents: function(elem) { return jQuery.dir(elem, "parentNode"); }, parentsUntil: function(elem, i, until) { return jQuery.dir(elem, "parentNode", until); }, next: function(elem) { return sibling(elem, "nextSibling"); }, prev: function(elem) { return sibling(elem, "previousSibling"); }, nextAll: function(elem) { return jQuery.dir(elem, "nextSibling"); }, prevAll: function(elem) { return jQuery.dir(elem, "previousSibling"); }, nextUntil: function(elem, i, until) { return jQuery.dir(elem, "nextSibling", until); }, prevUntil: function(elem, i, until) { return jQuery.dir(elem, "previousSibling", until); }, siblings: function(elem) { return jQuery.sibling((elem.parentNode || { }).firstChild, elem); }, children: function(elem) { return jQuery.sibling(elem.firstChild); }, contents: function(elem) { return jQuery.nodeName(elem, "iframe") ? elem.contentDocument || elem.contentWindow.document : jQuery.merge([], elem.childNodes); } }, function(name, fn) { jQuery.fn[name] = function(until, selector) { var ret = jQuery.map(this, fn, until); return runtil.test(name) || (selector = until), selector && "string" == typeof selector && (ret = jQuery.filter(selector, ret)), ret = this.length > 1 && !guaranteedUnique[name] ? jQuery.unique(ret) : ret, this.length > 1 && rparentsprev.test(name) && (ret = ret.reverse()), this.pushStack(ret); }; }), jQuery.extend({ filter: function(expr, elems, not) { return not && (expr = ":not(" + expr + ")"), 1 === elems.length ? jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : jQuery.find.matches(expr, elems); }, dir: function(elem, dir, until) { for(var matched = [], cur = elem[dir]; cur && 9 !== cur.nodeType && (until === undefined || 1 !== cur.nodeType || !jQuery(cur).is(until));)1 === cur.nodeType && matched.push(cur), cur = cur[dir]; return matched; }, sibling: function(n, elem) { for(var r = []; n; n = n.nextSibling)1 === n.nodeType && n !== elem && r.push(n); return r; } }); var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"), rleadingWhitespace = /^\s+/, rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, rtagName = /<([\w:]+)/, rtbody = /\s*$/g, wrapMap = { option: [ 1, "" ], legend: [ 1, "
", "
" ], area: [ 1, "", "" ], param: [ 1, "", "" ], thead: [ 1, "", "
" ], tr: [ 2, "", "
" ], col: [ 2, "", "
" ], td: [ 3, "", "
" ], _default: jQuery.support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X
", "
" ] }, fragmentDiv = createSafeFragment(document).appendChild(document.createElement("div")); function findOrAppend(elem, tag) { return elem.getElementsByTagName(tag)[0] || elem.appendChild(elem.ownerDocument.createElement(tag)); } function disableScript(elem) { var attr = elem.getAttributeNode("type"); return elem.type = (attr && attr.specified) + "/" + elem.type, elem; } function restoreScript(elem) { var match = rscriptTypeMasked.exec(elem.type); return match ? elem.type = match[1] : elem.removeAttribute("type"), elem; } function setGlobalEval(elems, refElements) { for(var elem, i = 0; null != (elem = elems[i]); i++)jQuery._data(elem, "globalEval", !refElements || jQuery._data(refElements[i], "globalEval")); } function cloneCopyEvent(src, dest) { if (1 === dest.nodeType && jQuery.hasData(src)) { var type, i, l, oldData = jQuery._data(src), curData = jQuery._data(dest, oldData), events = oldData.events; if (events) for(type in delete curData.handle, curData.events = { }, events)for(i = 0, l = events[type].length; i < l; i++)jQuery.event.add(dest, type, events[type][i]); curData.data && (curData.data = jQuery.extend({ }, curData.data)); } } function fixCloneNodeIssues(src, dest) { var nodeName, e, data; if (1 === dest.nodeType) { if (nodeName = dest.nodeName.toLowerCase(), !jQuery.support.noCloneEvent && dest[jQuery.expando]) { for(e in (data = jQuery._data(dest)).events)jQuery.removeEvent(dest, e, data.handle); dest.removeAttribute(jQuery.expando); } "script" === nodeName && dest.text !== src.text ? (disableScript(dest).text = src.text, restoreScript(dest)) : "object" === nodeName ? (dest.parentNode && (dest.outerHTML = src.outerHTML), jQuery.support.html5Clone && src.innerHTML && !jQuery.trim(dest.innerHTML) && (dest.innerHTML = src.innerHTML)) : "input" === nodeName && manipulation_rcheckableType.test(src.type) ? (dest.defaultChecked = dest.checked = src.checked, dest.value !== src.value && (dest.value = src.value)) : "option" === nodeName ? dest.defaultSelected = dest.selected = src.defaultSelected : ("input" === nodeName || "textarea" === nodeName) && (dest.defaultValue = src.defaultValue); } } function getAll(context, tag) { var elems, elem, i = 0, found = void 0 !== context.getElementsByTagName ? context.getElementsByTagName(tag || "*") : void 0 !== context.querySelectorAll ? context.querySelectorAll(tag || "*") : undefined; if (!found) for(found = [], elems = context.childNodes || context; null != (elem = elems[i]); i++)!tag || jQuery.nodeName(elem, tag) ? found.push(elem) : jQuery.merge(found, getAll(elem, tag)); return tag === undefined || tag && jQuery.nodeName(context, tag) ? jQuery.merge([ context ], found) : found; } function fixDefaultChecked(elem) { manipulation_rcheckableType.test(elem.type) && (elem.defaultChecked = elem.checked); } wrapMap.optgroup = wrapMap.option, wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead, wrapMap.th = wrapMap.td, jQuery.fn.extend({ text: function(value) { return jQuery.access(this, function(value) { return value === undefined ? jQuery.text(this) : this.empty().append((this[0] && this[0].ownerDocument || document).createTextNode(value)); }, null, value, arguments.length); }, wrapAll: function(html) { if (jQuery.isFunction(html)) return this.each(function(i) { jQuery(this).wrapAll(html.call(this, i)); }); if (this[0]) { var wrap = jQuery(html, this[0].ownerDocument).eq(0).clone(!0); this[0].parentNode && wrap.insertBefore(this[0]), wrap.map(function() { for(var elem = this; elem.firstChild && 1 === elem.firstChild.nodeType;)elem = elem.firstChild; return elem; }).append(this); } return this; }, wrapInner: function(html) { return jQuery.isFunction(html) ? this.each(function(i) { jQuery(this).wrapInner(html.call(this, i)); }) : this.each(function() { var self = jQuery(this), contents = self.contents(); contents.length ? contents.wrapAll(html) : self.append(html); }); }, wrap: function(html) { var isFunction = jQuery.isFunction(html); return this.each(function(i) { jQuery(this).wrapAll(isFunction ? html.call(this, i) : html); }); }, unwrap: function() { return this.parent().each(function() { jQuery.nodeName(this, "body") || jQuery(this).replaceWith(this.childNodes); }).end(); }, append: function() { return this.domManip(arguments, !0, function(elem) { (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) && this.appendChild(elem); }); }, prepend: function() { return this.domManip(arguments, !0, function(elem) { (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) && this.insertBefore(elem, this.firstChild); }); }, before: function() { return this.domManip(arguments, !1, function(elem) { this.parentNode && this.parentNode.insertBefore(elem, this); }); }, after: function() { return this.domManip(arguments, !1, function(elem) { this.parentNode && this.parentNode.insertBefore(elem, this.nextSibling); }); }, remove: function(selector, keepData) { for(var elem, i = 0; null != (elem = this[i]); i++)(!selector || jQuery.filter(selector, [ elem ]).length > 0) && (keepData || 1 !== elem.nodeType || jQuery.cleanData(getAll(elem)), elem.parentNode && (keepData && jQuery.contains(elem.ownerDocument, elem) && setGlobalEval(getAll(elem, "script")), elem.parentNode.removeChild(elem))); return this; }, empty: function() { for(var elem, i = 0; null != (elem = this[i]); i++){ for(1 === elem.nodeType && jQuery.cleanData(getAll(elem, !1)); elem.firstChild;)elem.removeChild(elem.firstChild); elem.options && jQuery.nodeName(elem, "select") && (elem.options.length = 0); } return this; }, clone: function(dataAndEvents, deepDataAndEvents) { return dataAndEvents = null != dataAndEvents && dataAndEvents, deepDataAndEvents = null == deepDataAndEvents ? dataAndEvents : deepDataAndEvents, this.map(function() { return jQuery.clone(this, dataAndEvents, deepDataAndEvents); }); }, html: function(value) { return jQuery.access(this, function(value) { var elem = this[0] || { }, i = 0, l = this.length; if (value === undefined) return 1 === elem.nodeType ? elem.innerHTML.replace(rinlinejQuery, "") : undefined; if ("string" == typeof value && !rnoInnerhtml.test(value) && (jQuery.support.htmlSerialize || !rnoshimcache.test(value)) && (jQuery.support.leadingWhitespace || !rleadingWhitespace.test(value)) && !wrapMap[(rtagName.exec(value) || [ "", "" ])[1].toLowerCase()]) { value = value.replace(rxhtmlTag, "<$1>"); try { for(; i < l; i++)elem = this[i] || { }, 1 === elem.nodeType && (jQuery.cleanData(getAll(elem, !1)), elem.innerHTML = value); elem = 0; } catch (e) { } } elem && this.empty().append(value); }, null, value, arguments.length); }, replaceWith: function(value) { return jQuery.isFunction(value) || "string" == typeof value || (value = jQuery(value).not(this).detach()), this.domManip([ value ], !0, function(elem) { var next = this.nextSibling, parent = this.parentNode; parent && (jQuery(this).remove(), parent.insertBefore(elem, next)); }); }, detach: function(selector) { return this.remove(selector, !0); }, domManip: function(args, table, callback) { args = core_concat.apply([], args); var first, node, hasScripts, scripts, doc, fragment, i = 0, l = this.length, set = this, iNoClone = l - 1, value = args[0], isFunction = jQuery.isFunction(value); if (isFunction || !(l <= 1 || "string" != typeof value || jQuery.support.checkClone || !rchecked.test(value))) return this.each(function(index) { var self = set.eq(index); isFunction && (args[0] = value.call(this, index, table ? self.html() : undefined)), self.domManip(args, table, callback); }); if (l && (first = (fragment = jQuery.buildFragment(args, this[0].ownerDocument, !1, this)).firstChild, 1 === fragment.childNodes.length && (fragment = first), first)) { for(table = table && jQuery.nodeName(first, "tr"), hasScripts = (scripts = jQuery.map(getAll(fragment, "script"), disableScript)).length; i < l; i++)node = fragment, i !== iNoClone && (node = jQuery.clone(node, !0, !0), hasScripts && jQuery.merge(scripts, getAll(node, "script"))), callback.call(table && jQuery.nodeName(this[i], "table") ? findOrAppend(this[i], "tbody") : this[i], node, i); if (hasScripts) for(doc = scripts[scripts.length - 1].ownerDocument, jQuery.map(scripts, restoreScript), i = 0; i < hasScripts; i++)node = scripts[i], rscriptType.test(node.type || "") && !jQuery._data(node, "globalEval") && jQuery.contains(doc, node) && (node.src ? jQuery.ajax({ url: node.src, type: "GET", dataType: "script", async: !1, global: !1, "throws": !0 }) : jQuery.globalEval((node.text || node.textContent || node.innerHTML || "").replace(rcleanScript, ""))); fragment = first = null; } return this; } }), jQuery.each({ appendTo: "append", prependTo: "prepend", insertBefore: "before", insertAfter: "after", replaceAll: "replaceWith" }, function(name, original) { jQuery.fn[name] = function(selector) { for(var elems, i = 0, ret = [], insert = jQuery(selector), last = insert.length - 1; i <= last; i++)elems = i === last ? this : this.clone(!0), jQuery(insert[i])[original](elems), core_push.apply(ret, elems.get()); return this.pushStack(ret); }; }), jQuery.extend({ clone: function(elem, dataAndEvents, deepDataAndEvents) { var destElements, node, clone, i, srcElements, inPage = jQuery.contains(elem.ownerDocument, elem); if (jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test("<" + elem.nodeName + ">") ? clone = elem.cloneNode(!0) : (fragmentDiv.innerHTML = elem.outerHTML, fragmentDiv.removeChild(clone = fragmentDiv.firstChild)), (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) && (1 === elem.nodeType || 11 === elem.nodeType) && !jQuery.isXMLDoc(elem)) for(i = 0, destElements = getAll(clone), srcElements = getAll(elem); null != (node = srcElements[i]); ++i)destElements[i] && fixCloneNodeIssues(node, destElements[i]); if (dataAndEvents) if (deepDataAndEvents) for(i = 0, srcElements = srcElements || getAll(elem), destElements = destElements || getAll(clone); null != (node = srcElements[i]); i++)cloneCopyEvent(node, destElements[i]); else cloneCopyEvent(elem, clone); return (destElements = getAll(clone, "script")).length > 0 && setGlobalEval(destElements, !inPage && getAll(elem, "script")), destElements = srcElements = node = null, clone; }, buildFragment: function(elems, context, scripts, selection) { for(var j, elem, contains, tmp, tag, tbody, wrap, l = elems.length, safe = createSafeFragment(context), nodes = [], i = 0; i < l; i++)if ((elem = elems[i]) || 0 === elem) if ("object" === jQuery.type(elem)) jQuery.merge(nodes, elem.nodeType ? [ elem ] : elem); else if (rhtml.test(elem)) { for(tmp = tmp || safe.appendChild(context.createElement("div")), wrap = wrapMap[tag = (rtagName.exec(elem) || [ "", "" ])[1].toLowerCase()] || wrapMap._default, tmp.innerHTML = wrap[1] + elem.replace(rxhtmlTag, "<$1>") + wrap[2], j = wrap[0]; j--;)tmp = tmp.lastChild; if (!jQuery.support.leadingWhitespace && rleadingWhitespace.test(elem) && nodes.push(context.createTextNode(rleadingWhitespace.exec(elem)[0])), !jQuery.support.tbody) for(j = (elem = "table" !== tag || rtbody.test(elem) ? "" !== wrap[1] || rtbody.test(elem) ? 0 : tmp : tmp.firstChild) && elem.childNodes.length; j--;)jQuery.nodeName(tbody = elem.childNodes[j], "tbody") && !tbody.childNodes.length && elem.removeChild(tbody); for(jQuery.merge(nodes, tmp.childNodes), tmp.textContent = ""; tmp.firstChild;)tmp.removeChild(tmp.firstChild); tmp = safe.lastChild; } else nodes.push(context.createTextNode(elem)); for(tmp && safe.removeChild(tmp), jQuery.support.appendChecked || jQuery.grep(getAll(nodes, "input"), fixDefaultChecked), i = 0; elem = nodes[i++];)if ((!selection || -1 === jQuery.inArray(elem, selection)) && (contains = jQuery.contains(elem.ownerDocument, elem), tmp = getAll(safe.appendChild(elem), "script"), contains && setGlobalEval(tmp), scripts)) for(j = 0; elem = tmp[j++];)rscriptType.test(elem.type || "") && scripts.push(elem); return tmp = null, safe; }, cleanData: function(elems, acceptData) { for(var elem, type, id, data, i = 0, internalKey = jQuery.expando, cache = jQuery.cache, deleteExpando = jQuery.support.deleteExpando, special = jQuery.event.special; null != (elem = elems[i]); i++)if ((acceptData || jQuery.acceptData(elem)) && (data = (id = elem[internalKey]) && cache[id])) { if (data.events) for(type in data.events)special[type] ? jQuery.event.remove(elem, type) : jQuery.removeEvent(elem, type, data.handle); cache[id] && (delete cache[id], deleteExpando ? delete elem[internalKey] : void 0 !== elem.removeAttribute ? elem.removeAttribute(internalKey) : elem[internalKey] = null, core_deletedIds.push(id)); } } }); var iframe, getStyles, curCSS, ralpha = /alpha\([^)]*\)/i, ropacity = /opacity\s*=\s*([^)]*)/, rposition = /^(top|right|bottom|left)$/, rdisplayswap = /^(none|table(?!-c[ea]).+)/, rmargin = /^margin/, rnumsplit = new RegExp("^(" + core_pnum + ")(.*)$", "i"), rnumnonpx = new RegExp("^(" + core_pnum + ")(?!px)[a-z%]+$", "i"), rrelNum = new RegExp("^([+-])=(" + core_pnum + ")", "i"), elemdisplay = { BODY: "block" }, cssShow = { position: "absolute", visibility: "hidden", display: "block" }, cssNormalTransform = { letterSpacing: 0, fontWeight: 400 }, cssExpand = [ "Top", "Right", "Bottom", "Left" ], cssPrefixes = [ "Webkit", "O", "Moz", "ms" ]; function vendorPropName(style, name) { if (name in style) return name; for(var capName = name.charAt(0).toUpperCase() + name.slice(1), i = cssPrefixes.length; i--;)if ((name = cssPrefixes[i] + capName) in style) return name; return name; } function isHidden(elem, el) { return elem = el || elem, "none" === jQuery.css(elem, "display") || !jQuery.contains(elem.ownerDocument, elem); } function showHide(elements, show) { for(var display, elem, hidden, values = [], index = 0, length = elements.length; index < length; index++)!!(elem = elements[index]).style && (values[index] = jQuery._data(elem, "olddisplay"), display = elem.style.display, show ? (values[index] || "none" !== display || (elem.style.display = ""), "" === elem.style.display && isHidden(elem) && (values[index] = jQuery._data(elem, "olddisplay", css_defaultDisplay(elem.nodeName)))) : values[index] || (hidden = isHidden(elem), (display && "none" !== display || !hidden) && jQuery._data(elem, "olddisplay", hidden ? display : jQuery.css(elem, "display")))); for(index = 0; index < length; index++)!!(elem = elements[index]).style && (show && "none" !== elem.style.display && "" !== elem.style.display || (elem.style.display = show ? values[index] || "" : "none")); return elements; } function setPositiveNumber(elem, value, subtract) { var matches = rnumsplit.exec(value); return matches ? Math.max(0, matches[1] - (subtract || 0)) + (matches[2] || "px") : value; } function augmentWidthOrHeight(elem, name, extra, isBorderBox, styles) { for(var i = extra === (isBorderBox ? "border" : "content") ? 4 : "width" === name ? 1 : 0, val = 0; i < 4; i += 2)"margin" === extra && (val += jQuery.css(elem, extra + cssExpand[i], !0, styles)), isBorderBox ? ("content" === extra && (val -= jQuery.css(elem, "padding" + cssExpand[i], !0, styles)), "margin" !== extra && (val -= jQuery.css(elem, "border" + cssExpand[i] + "Width", !0, styles))) : (val += jQuery.css(elem, "padding" + cssExpand[i], !0, styles), "padding" !== extra && (val += jQuery.css(elem, "border" + cssExpand[i] + "Width", !0, styles))); return val; } function getWidthOrHeight(elem, name, extra) { var valueIsBorderBox = !0, val = "width" === name ? elem.offsetWidth : elem.offsetHeight, styles = getStyles(elem), isBorderBox = jQuery.support.boxSizing && "border-box" === jQuery.css(elem, "boxSizing", !1, styles); if (val <= 0 || null == val) { if (((val = curCSS(elem, name, styles)) < 0 || null == val) && (val = elem.style[name]), rnumnonpx.test(val)) return val; valueIsBorderBox = isBorderBox && (jQuery.support.boxSizingReliable || val === elem.style[name]), val = parseFloat(val) || 0; } return val + augmentWidthOrHeight(elem, name, extra || (isBorderBox ? "border" : "content"), valueIsBorderBox, styles) + "px"; } function css_defaultDisplay(nodeName) { var doc = document, display = elemdisplay[nodeName]; return display || ("none" !== (display = actualDisplay(nodeName, doc)) && display || ((doc = ((iframe = (iframe || jQuery("