开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 172|回复: 1
收起左侧

[已解决] JS 怎么改写

 关闭 [复制链接]
结帖率:96% (27/28)
发表于 前天 02:17 | 显示全部楼层 |阅读模式   四川省成都市
13精币

!function(e, t) {
    "object" == typeof module && "object" == typeof module.exports ? module.exports = e.document ? t(e, !0) : function(e) {
        if (!e.document)
            throw new Error("jQuery requires a window with a document");
        return t(e)
    }
    : t(e)
}("undefined" != typeof window ? window : this, function(e, t) {
    function n(e) {
        var t = !!e && "length"in e && e.length
          , n = Ft.type(e);
        return "function" !== n && !Ft.isWindow(e) && ("array" === n || 0 === t || "number" == typeof t && t > 0 && t - 1 in e)
    }
    function r(e, t, n) {
        if (Ft.isFunction(t))
            return Ft.grep(e, function(e, r) {
                return !!t.call(e, r, e) !== n
            });
        if (t.nodeType)
            return Ft.grep(e, function(e) {
                return e === t !== n
            });
        if ("string" == typeof t) {
            if (Z.test(t))
                return Ft.filter(t, e, n);
            t = Ft.filter(t, e)
        }
        return Ft.grep(e, function(e) {
            return At.call(t, e) > -1 !== n
        })
    }
    function i(e, t) {
        for (; (e = e[t]) && 1 !== e.nodeType; )
            ;
        return e
    }
    function o(e) {
        var t = {};
        return Ft.each(e.match(oe) || [], function(e, n) {
            t[n] = !0
        }),
        t
    }
    function s() {
        jt.removeEventListener("DOMContentLoaded", s),
        e.removeEventListener("load", s),
        Ft.ready()
    }
    function a() {
        this.expando = Ft.expando + a.uid++
    }
    function u(e, t, n) {
        var r;
        if (void 0 === n && 1 === e.nodeType)
            if (r = "data-" + t.replace(de, "-$&").toLowerCase(),
            n = e.getAttribute(r),
            "string" == typeof n) {
                try {
                    n = "true" === n || "false" !== n && ("null" === n ? null : +n + "" === n ? +n : fe.test(n) ? Ft.parseJSON(n) : n)
                } catch (e) {}
                le.set(e, t, n)
            } else
                n = void 0;
        return n
    }
    function c(e, t, n, r) {
        var i, o = 1, s = 20, a = r ? function() {
            return r.cur()
        }
        : function() {
            return Ft.css(e, t, "")
        }
        , u = a(), c = n && n[3] || (Ft.cssNumber[t] ? "" : "px"), l = (Ft.cssNumber[t] || "px" !== c && +u) && he.exec(Ft.css(e, t));
        if (l && l[3] !== c) {
            c = c || l[3],
            n = n || [],
            l = +u || 1;
            do
                o = o || ".5",
                l /= o,
                Ft.style(e, t, l + c);
            while (o !== (o = a() / u) && 1 !== o && --s)
        }
        return n && (l = +l || +u || 0,
        i = n[1] ? l + (n[1] + 1) * n[2] : +n[2],
        r && (r.unit = c,
        r.start = l,
        r.end = i)),
        i
    }
    function l(e, t) {
        var n = "undefined" != typeof e.getElementsByTagName ? e.getElementsByTagName(t || "*") : "undefined" != typeof e.querySelectorAll ? e.querySelectorAll(t || "*") : [];
        return void 0 === t || t && Ft.nodeName(e, t) ? Ft.merge([e], n) : n
    }
    function f(e, t) {
        for (var n = 0, r = e.length; r > n; n++)
            ce.set(e[n], "globalEval", !t || ce.get(t[n], "globalEval"))
    }
    function d(e, t, n, r, i) {
        for (var o, s, a, u, c, d, p = t.createDocumentFragment(), h = [], g = 0, v = e.length; v > g; g++)
            if (o = e[g],
            o || 0 === o)
                if ("object" === Ft.type(o))
                    Ft.merge(h, o.nodeType ? [o] : o);
                else if (xe.test(o)) {
                    for (s = s || p.appendChild(t.createElement("div")),
                    a = (ye.exec(o) || ["", ""])[1].toLowerCase(),
                    u = we[a] || we._default,
                    s.innerHTML = u[1] + Ft.htmlPrefilter(o) + u[2],
                    d = u[0]; d--; )
                        s = s.lastChild;
                    Ft.merge(h, s.childNodes),
                    s = p.firstChild,
                    s.textContent = ""
                } else
                    h.push(t.createTextNode(o));
        for (p.textContent = "",
        g = 0; o = h[g++]; )
            if (r && Ft.inArray(o, r) > -1)
                i && i.push(o);
            else if (c = Ft.contains(o.ownerDocument, o),
            s = l(p.appendChild(o), "script"),
            c && f(s),
            n)
                for (d = 0; o = s[d++]; )
                    be.test(o.type || "") && n.push(o);
        return p
    }
    function p() {
        return !0
    }
    function h() {
        return !1
    }
    function g() {
        try {
            return jt.activeElement
        } catch (e) {}
    }
    function v(e, t, n, r, i, o) {
        var s, a;
        if ("object" == typeof t) {
            "string" != typeof n && (r = r || n,
            n = void 0);
            for (a in t)
                v(e, a, n, r, t[a], o);
            return e
        }
        if (null == r && null == i ? (i = n,
        r = n = void 0) : null == i && ("string" == typeof n ? (i = r,
        r = void 0) : (i = r,
        r = n,
        n = void 0)),
        i === !1)
            i = h;
        else if (!i)
            return e;
        return 1 === o && (s = i,
        i = function(e) {
            return Ft().off(e),
            s.apply(this, arguments)
        }
        ,
        i.guid = s.guid || (s.guid = Ft.guid++)),
        e.each(function() {
            Ft.event.add(this, t, i, r, n)
        })
    }
    function m(e, t) {
        return Ft.nodeName(e, "table") && Ft.nodeName(11 !== t.nodeType ? t : t.firstChild, "tr") ? e.getElementsByTagName("tbody")[0] || e.appendChild(e.ownerDocument.createElement("tbody")) : e
    }
    function y(e) {
        return e.type = (null !== e.getAttribute("type")) + "/" + e.type,
        e
    }
    function b(e) {
        var t = qe.exec(e.type);
        return t ? e.type = t[1] : e.removeAttribute("type"),
        e
    }
    function w(e, t) {
        var n, r, i, o, s, a, u, c;
        if (1 === t.nodeType) {
            if (ce.hasData(e) && (o = ce.access(e),
            s = ce.set(t, o),
            c = o.events)) {
                delete s.handle,
                s.events = {};
                for (i in c)
                    for (n = 0,
                    r = c[i].length; r > n; n++)
                        Ft.event.add(t, i, c[i][n])
            }
            le.hasData(e) && (a = le.access(e),
            u = Ft.extend({}, a),
            le.set(t, u))
        }
    }
    function x(e, t) {
        var n = t.nodeName.toLowerCase();
        "input" === n && me.test(e.type) ? t.checked = e.checked : "input" !== n && "textarea" !== n || (t.defaultValue = e.defaultValue)
    }
    function T(e, t, n, r) {
        t = qt.apply([], t);
        var i, o, s, a, u, c, f = 0, p = e.length, h = p - 1, g = t[0], v = Ft.isFunction(g);
        if (v || p > 1 && "string" == typeof g && !Lt.checkClone && Se.test(g))
            return e.each(function(i) {
                var o = e.eq(i);
                v && (t[0] = g.call(this, i, o.html())),
                T(o, t, n, r)
            });
        if (p && (i = d(t, e[0].ownerDocument, !1, e, r),
        o = i.firstChild,
        1 === i.childNodes.length && (i = o),
        o || r)) {
            for (s = Ft.map(l(i, "script"), y),
            a = s.length; p > f; f++)
                u = i,
                f !== h && (u = Ft.clone(u, !0, !0),
                a && Ft.merge(s, l(u, "script"))),
                n.call(e[f], u, f);
            if (a)
                for (c = s[s.length - 1].ownerDocument,
                Ft.map(s, b),
                f = 0; a > f; f++)
                    u = s[f],
                    be.test(u.type || "") && !ce.access(u, "globalEval") && Ft.contains(c, u) && (u.src ? Ft._evalUrl && Ft._evalUrl(u.src) : Ft.globalEval(u.textContent.replace(Ee, "")))
        }
        return e
    }
    function C(e, t, n) {
        for (var r, i = t ? Ft.filter(t, e) : e, o = 0; null != (r = i[o]); o++)
            n || 1 !== r.nodeType || Ft.cleanData(l(r)),
            r.parentNode && (n && Ft.contains(r.ownerDocument, r) && f(l(r, "script")),
            r.parentNode.removeChild(r));
        return e
    }
    function _(e, t) {
        var n = Ft(t.createElement(e)).appendTo(t.body)
          , r = Ft.css(n[0], "display");
        return n.detach(),
        r
    }
    function k(e) {
        var t = jt
          , n = Ne[e];
        return n || (n = _(e, t),
        "none" !== n && n || (Ae = (Ae || Ft("<iframe frameborder='0' width='0' height='0'/>")).appendTo(t.documentElement),
        t = Ae[0].contentDocument,
        t.write(),
        t.close(),
        n = _(e, t),
        Ae.detach()),
        Ne[e] = n),
        n
    }
    function j(e, t, n) {
        var r, i, o, s, a = e.style;
        return n = n || Le(e),
        s = n ? n.getPropertyValue(t) || n[t] : void 0,
        "" !== s && void 0 !== s || Ft.contains(e.ownerDocument, e) || (s = Ft.style(e, t)),
        n && !Lt.pixelMarginRight() && He.test(s) && De.test(t) && (r = a.width,
        i = a.minWidth,
        o = a.maxWidth,
        a.minWidth = a.maxWidth = a.width = s,
        s = n.width,
        a.width = r,
        a.minWidth = i,
        a.maxWidth = o),
        void 0 !== s ? s + "" : s
    }
    function S(e, t) {
        return {
            get: function() {
                return e() ? void delete this.get : (this.get = t).apply(this, arguments)
            }
        }
    }
    function q(e) {
        if (e in Be)
            return e;
        for (var t = e[0].toUpperCase() + e.slice(1), n = Re.length; n--; )
            if (e = Re[n] + t,
            e in Be)
                return e
    }
    function E(e, t, n) {
        var r = he.exec(t);
        return r ? Math.max(0, r[2] - (n || 0)) + (r[3] || "px") : t
    }
    function A(e, t, n, r, i) {
        for (var o = n === (r ? "border" : "content") ? 4 : "width" === t ? 1 : 0, s = 0; 4 > o; o += 2)
            "margin" === n && (s += Ft.css(e, n + ge[o], !0, i)),
            r ? ("content" === n && (s -= Ft.css(e, "padding" + ge[o], !0, i)),
            "margin" !== n && (s -= Ft.css(e, "border" + ge[o] + "Width", !0, i))) : (s += Ft.css(e, "padding" + ge[o], !0, i),
            "padding" !== n && (s += Ft.css(e, "border" + ge[o] + "Width", !0, i)));
        return s
    }
    function N(e, t, n) {
        var r = !0
          , i = "width" === t ? e.offsetWidth : e.offsetHeight
          , o = Le(e)
          , s = "border-box" === Ft.css(e, "boxSizing", !1, o);
        if (0 >= i || null == i) {
            if (i = j(e, t, o),
            (0 > i || null == i) && (i = e.style[t]),
            He.test(i))
                return i;
            r = s && (Lt.boxSizingReliable() || i === e.style[t]),
            i = parseFloat(i) || 0
        }
        return i + A(e, t, n || (s ? "border" : "content"), r, o) + "px"
    }
    function D(e, t) {
        for (var n, r, i, o = [], s = 0, a = e.length; a > s; s++)
            r = e[s],
            r.style && (o[s] = ce.get(r, "olddisplay"),
            n = r.style.display,
            t ? (o[s] || "none" !== n || (r.style.display = ""),
            "" === r.style.display && ve(r) && (o[s] = ce.access(r, "olddisplay", k(r.nodeName)))) : (i = ve(r),
            "none" === n && i || ce.set(r, "olddisplay", i ? n : Ft.css(r, "display"))));
        for (s = 0; a > s; s++)
            r = e[s],
            r.style && (t && "none" !== r.style.display && "" !== r.style.display || (r.style.display = t ? o[s] || "" : "none"));
        return e
    }
    function H(e, t, n, r, i) {
        return new H.prototype.init(e,t,n,r,i)
    }
    function L() {
        return e.setTimeout(function() {
            We = void 0
        }),
        We = Ft.now()
    }
    function O(e, t) {
        var n, r = 0, i = {
            height: e
        };
        for (t = t ? 1 : 0; 4 > r; r += 2 - t)
            n = ge[r],
            i["margin" + n] = i["padding" + n] = e;
        return t && (i.opacity = i.width = e),
        i
    }
    function F(e, t, n) {
        for (var r, i = (M.tweeners[t] || []).concat(M.tweeners["*"]), o = 0, s = i.length; s > o; o++)
            if (r = i[o].call(n, t, e))
                return r
    }
    function I(e, t, n) {
        var r, i, o, s, a, u, c, l, f = this, d = {}, p = e.style, h = e.nodeType && ve(e), g = ce.get(e, "fxshow");
        n.queue || (a = Ft._queueHooks(e, "fx"),
        null == a.unqueued && (a.unqueued = 0,
        u = a.empty.fire,
        a.empty.fire = function() {
            a.unqueued || u()
        }
        ),
        a.unqueued++,
        f.always(function() {
            f.always(function() {
                a.unqueued--,
                Ft.queue(e, "fx").length || a.empty.fire()
            })
        })),
        1 === e.nodeType && ("height"in t || "width"in t) && (n.overflow = [p.overflow, p.overflowX, p.overflowY],
        c = Ft.css(e, "display"),
        l = "none" === c ? ce.get(e, "olddisplay") || k(e.nodeName) : c,
        "inline" === l && "none" === Ft.css(e, "float") && (p.display = "inline-block")),
        n.overflow && (p.overflow = "hidden",
        f.always(function() {
            p.overflow = n.overflow[0],
            p.overflowX = n.overflow[1],
            p.overflowY = n.overflow[2]
        }));
        for (r in t)
            if (i = t[r],
            ze.exec(i)) {
                if (delete t[r],
                o = o || "toggle" === i,
                i === (h ? "hide" : "show")) {
                    if ("show" !== i || !g || void 0 === g[r])
                        continue;
                    h = !0
                }
                d[r] = g && g[r] || Ft.style(e, r)
            } else
                c = void 0;
        if (Ft.isEmptyObject(d))
            "inline" === ("none" === c ? k(e.nodeName) : c) && (p.display = c);
        else {
            g ? "hidden"in g && (h = g.hidden) : g = ce.access(e, "fxshow", {}),
            o && (g.hidden = !h),
            h ? Ft(e).show() : f.done(function() {
                Ft(e).hide()
            }),
            f.done(function() {
                var t;
                ce.remove(e, "fxshow");
                for (t in d)
                    Ft.style(e, t, d[t])
            });
            for (r in d)
                s = F(h ? g[r] : 0, r, f),
                r in g || (g[r] = s.start,
                h && (s.end = s.start,
                s.start = "width" === r || "height" === r ? 1 : 0))
        }
    }
    function P(e, t) {
        var n, r, i, o, s;
        for (n in e)
            if (r = Ft.camelCase(n),
            i = t[r],
            o = e[n],
            Ft.isArray(o) && (i = o[1],
            o = e[n] = o[0]),
            n !== r && (e[r] = o,
            delete e[n]),
            s = Ft.cssHooks[r],
            s && "expand"in s) {
                o = s.expand(o),
                delete e[r];
                for (n in o)
                    n in e || (e[n] = o[n],
                    t[n] = i)
            } else
                t[r] = i
    }
    function M(e, t, n) {
        var r, i, o = 0, s = M.prefilters.length, a = Ft.Deferred().always(function() {
            delete u.elem
        }), u = function() {
            if (i)
                return !1;
            for (var t = We || L(), n = Math.max(0, c.startTime + c.duration - t), r = n / c.duration || 0, o = 1 - r, s = 0, u = c.tweens.length; u > s; s++)
                c.tweens[s].run(o);
            return a.notifyWith(e, [c, o, n]),
            1 > o && u ? n : (a.resolveWith(e, [c]),
            !1)
        }, c = a.promise({
            elem: e,
            props: Ft.extend({}, t),
            opts: Ft.extend(!0, {
                specialEasing: {},
                easing: Ft.easing._default
            }, n),
            originalProperties: t,
            originalOptions: n,
            startTime: We || L(),
            duration: n.duration,
            tweens: [],
            createTween: function(t, n) {
                var r = Ft.Tween(e, c.opts, t, n, c.opts.specialEasing[t] || c.opts.easing);
                return c.tweens.push(r),
                r
            },
            stop: function(t) {
                var n = 0
                  , r = t ? c.tweens.length : 0;
                if (i)
                    return this;
                for (i = !0; r > n; n++)
                    c.tweens[n].run(1);
                return t ? (a.notifyWith(e, [c, 1, 0]),
                a.resolveWith(e, [c, t])) : a.rejectWith(e, [c, t]),
                this
            }
        }), l = c.props;
        for (P(l, c.opts.specialEasing); s > o; o++)
            if (r = M.prefilters[o].call(c, e, l, c.opts))
                return Ft.isFunction(r.stop) && (Ft._queueHooks(c.elem, c.opts.queue).stop = Ft.proxy(r.stop, r)),
                r;
        return Ft.map(l, F, c),
        Ft.isFunction(c.opts.start) && c.opts.start.call(e, c),
        Ft.fx.timer(Ft.extend(u, {
            elem: e,
            anim: c,
            queue: c.opts.queue
        })),
        c.progress(c.opts.progress).done(c.opts.done, c.opts.complete).fail(c.opts.fail).always(c.opts.always)
    }
    function R(e) {
        return e.getAttribute && e.getAttribute("class") || ""
    }
    function B(e) {
        return function(t, n) {
            "string" != typeof t && (n = t,
            t = "*");
            var r, i = 0, o = t.toLowerCase().match(oe) || [];
            if (Ft.isFunction(n))
                for (; r = o[i++]; )
                    "+" === r[0] ? (r = r.slice(1) || "*",
                    (e[r] = e[r] || []).unshift(n)) : (e[r] = e[r] || []).push(n)
        }
    }
    function W(e, t, n, r) {
        function i(a) {
            var u;
            return o[a] = !0,
            Ft.each(e[a] || [], function(e, a) {
                var c = a(t, n, r);
                return "string" != typeof c || s || o[c] ? s ? !(u = c) : void 0 : (t.dataTypes.unshift(c),
                i(c),
                !1)
            }),
            u
        }
        var o = {}
          , s = e === lt;
        return i(t.dataTypes[0]) || !o["*"] && i("*")
    }
    function $(e, t) {
        var n, r, i = Ft.ajaxSettings.flatOptions || {};
        for (n in t)
            void 0 !== t[n] && ((i[n] ? e : r || (r = {}))[n] = t[n]);
        return r && Ft.extend(!0, e, r),
        e
    }
    function z(e, t, n) {
        for (var r, i, o, s, a = e.contents, u = e.dataTypes; "*" === u[0]; )
            u.shift(),
            void 0 === r && (r = e.mimeType || t.getResponseHeader("Content-Type"));
        if (r)
            for (i in a)
                if (a[i] && a[i].test(r)) {
                    u.unshift(i);
                    break
                }
        if (u[0]in n)
            o = u[0];
        else {
            for (i in n) {
                if (!u[0] || e.converters[i + " " + u[0]]) {
                    o = i;
                    break
                }
                s || (s = i)
            }
            o = o || s
        }
        return o ? (o !== u[0] && u.unshift(o),
        n[o]) : void 0
    }
    function X(e, t, n, r) {
        var i, o, s, a, u, c = {}, l = e.dataTypes.slice();
        if (l[1])
            for (s in e.converters)
                c[s.toLowerCase()] = e.converters[s];
        for (o = l.shift(); o; )
            if (e.responseFields[o] && (n[e.responseFields[o]] = t),
            !u && r && e.dataFilter && (t = e.dataFilter(t, e.dataType)),
            u = o,
            o = l.shift())
                if ("*" === o)
                    o = u;
                else if ("*" !== u && u !== o) {
                    if (s = c[u + " " + o] || c["* " + o],
                    !s)
                        for (i in c)
                            if (a = i.split(" "),
                            a[1] === o && (s = c[u + " " + a[0]] || c["* " + a[0]])) {
                                s === !0 ? s = c[i] : c[i] !== !0 && (o = a[0],
                                l.unshift(a[1]));
                                break
                            }
                    if (s !== !0)
                        if (s && e.throws)
                            t = s(t);
                        else
                            try {
                                t = s(t)
                            } catch (e) {
                                return {
                                    state: "parsererror",
                                    error: s ? e : "No conversion from " + u + " to " + o
                                }
                            }
                }
        return {
            state: "success",
            data: t
        }
    }
    function U(e, t, n, r) {
        var i;
        if (Ft.isArray(t))
            Ft.each(t, function(t, i) {
                n || ht.test(e) ? r(e, i) : U(e + "[" + ("object" == typeof i && null != i ? t : "") + "]", i, n, r)
            });
        else if (n || "object" !== Ft.type(t))
            r(e, t);
        else
            for (i in t)
                U(e + "[" + i + "]", t[i], n, r)
    }
    function V(e) {
        return Ft.isWindow(e) ? e : 9 === e.nodeType && e.defaultView
    }
    var Y, G, J, Q, K, Z, ee, te, ne, re, ie, oe, se, ae, ue, ce, le, fe, de, pe, he, ge, ve, me, ye, be, we, xe, Te, Ce, _e, ke, je, Se, qe, Ee, Ae, Ne, De, He, Le, Oe, Fe, Ie, Pe, Me, Re, Be, We, $e, ze, Xe, Ue, Ve, Ye, Ge, Je, Qe, Ke, Ze, et, tt, nt, rt, it, ot, st, at, ut, ct, lt, ft, dt, pt, ht, gt, vt, mt, yt, bt, wt, xt, Tt, Ct, _t, kt = [], jt = e.document, St = kt.slice, qt = kt.concat, Et = kt.push, At = kt.indexOf, Nt = {}, Dt = Nt.toString, Ht = Nt.hasOwnProperty, Lt = {}, Ot = "2.2.4", Ft = function(e, t) {
        return new Ft.fn.init(e,t)
    }, It = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, Pt = /^-ms-/, Mt = /-([\da-z])/gi, Rt = function(e, t) {
        return t.toUpperCase()
    };
    return Ft.fn = Ft.prototype = {
        jquery: Ot,
        constructor: Ft,
        selector: "",
        length: 0,
        toArray: function() {
            return St.call(this)
        },
        get: function(e) {
            return null != e ? 0 > e ? this[e + this.length] : this[e] : St.call(this)
        },
        pushStack: function(e) {
            var t = Ft.merge(this.constructor(), e);
            return t.prevObject = this,
            t.context = this.context,
            t
        },
        each: function(e) {
            return Ft.each(this, e)
        },
        map: function(e) {
            return this.pushStack(Ft.map(this, function(t, n) {
                return e.call(t, n, t)
            }))
        },
        slice: function() {
            return this.pushStack(St.apply(this, arguments))
        },
        first: function() {
            return this.eq(0)
        },
        last: function() {
            return this.eq(-1)
        },
        eq: function(e) {
            var t = this.length
              , n = +e + (0 > e ? t : 0);
            return this.pushStack(n >= 0 && t > n ? [this[n]] : [])
        },
        end: function() {
            return this.prevObject || this.constructor()
        },
        push: Et,
        sort: kt.sort,
        splice: kt.splice
    },
    Ft.extend = Ft.fn.extend = function() {
        var e, t, n, r, i, o, s = arguments[0] || {}, a = 1, u = arguments.length, c = !1;
        for ("boolean" == typeof s && (c = s,
        s = arguments[a] || {},
        a++),
        "object" == typeof s || Ft.isFunction(s) || (s = {}),
        a === u && (s = this,
        a--); u > a; a++)
            if (null != (e = arguments[a]))
                for (t in e)
                    n = s[t],
                    r = e[t],
                    s !== r && (c && r && (Ft.isPlainObject(r) || (i = Ft.isArray(r))) ? (i ? (i = !1,
                    o = n && Ft.isArray(n) ? n : []) : o = n && Ft.isPlainObject(n) ? n : {},
                    s[t] = Ft.extend(c, o, r)) : void 0 !== r && (s[t] = r));
        return s
    }
    ,
    Ft.extend({
        expando: "jQuery" + (Ot + Math.random()).replace(/\D/g, ""),
        isReady: !0,
        error: function(e) {
            throw new Error(e)
        },
        noop: function() {},
        isFunction: function(e) {
            return "function" === Ft.type(e)
        },
        isArray: Array.isArray,
        isWindow: function(e) {
            return null != e && e === e.window
        },
        isNumeric: function(e) {
            var t = e && e.toString();
            return !Ft.isArray(e) && t - parseFloat(t) + 1 >= 0
        },
        isPlainObject: function(e) {
            var t;
            if ("object" !== Ft.type(e) || e.nodeType || Ft.isWindow(e))
                return !1;
            if (e.constructor && !Ht.call(e, "constructor") && !Ht.call(e.constructor.prototype || {}, "isPrototypeOf"))
                return !1;
            for (t in e)
                ;
            return void 0 === t || Ht.call(e, t)
        },
        isEmptyObject: function(e) {
            var t;
            for (t in e)
                return !1;
            return !0
        },
        type: function(e) {
            return null == e ? e + "" : "object" == typeof e || "function" == typeof e ? Nt[Dt.call(e)] || "object" : typeof e
        },
        globalEval: function(e) {
            var t, n = eval;
            e = Ft.trim(e),
            e && (1 === e.indexOf("use strict") ? (t = jt.createElement("script"),
            t.text = e,
            jt.head.appendChild(t).parentNode.removeChild(t)) : n(e))
        },
        camelCase: function(e) {
            return e.replace(Pt, "ms-").replace(Mt, Rt)
        },
        nodeName: function(e, t) {
            return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase()
        },
        each: function(e, t) {
            var r, i = 0;
            if (n(e))
                for (r = e.length; r > i && t.call(e[i], i, e[i]) !== !1; i++)
                    ;
            else
                for (i in e)
                    if (t.call(e[i], i, e[i]) === !1)
                        break;
            return e
        },
        trim: function(e) {
            return null == e ? "" : (e + "").replace(It, "")
        },
        makeArray: function(e, t) {
            var r = t || [];
            return null != e && (n(Object(e)) ? Ft.merge(r, "string" == typeof e ? [e] : e) : Et.call(r, e)),
            r
        },
        inArray: function(e, t, n) {
            return null == t ? -1 : At.call(t, e, n)
        },
        merge: function(e, t) {
            for (var n = +t.length, r = 0, i = e.length; n > r; r++)
                e[i++] = t[r];
            return e.length = i,
            e
        },
        grep: function(e, t, n) {
            for (var r, i = [], o = 0, s = e.length, a = !n; s > o; o++)
                r = !t(e[o], o),
                r !== a && i.push(e[o]);
            return i
        },
        map: function(e, t, r) {
            var i, o, s = 0, a = [];
            if (n(e))
                for (i = e.length; i > s; s++)
                    o = t(e[s], s, r),
                    null != o && a.push(o);
            else
                for (s in e)
                    o = t(e[s], s, r),
                    null != o && a.push(o);
            return qt.apply([], a)
        },
        guid: 1,
        proxy: function(e, t) {
            var n, r, i;
            return "string" == typeof t && (n = e[t],
            t = e,
            e = n),
            Ft.isFunction(e) ? (r = St.call(arguments, 2),
            i = function() {
                return e.apply(t || this, r.concat(St.call(arguments)))
            }
            ,
            i.guid = e.guid = e.guid || Ft.guid++,
            i) : void 0
        },
        now: Date.now,
        support: Lt
    }),
    "function" == typeof Symbol && (Ft.fn[Symbol.iterator] = kt[Symbol.iterator]),
    Ft.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), function(e, t) {
        Nt["[object " + t + "]"] = t.toLowerCase()
    }),
    Y = function(e) {
        function t(e, t, n, r) {
            var i, o, s, a, u, c, f, p, h = t && t.ownerDocument, g = t ? t.nodeType : 9;
            if (n = n || [],
            "string" != typeof e || !e || 1 !== g && 9 !== g && 11 !== g)
                return n;
            if (!r && ((t ? t.ownerDocument || t : R) !== D && N(t),
            t = t || D,
            L)) {
                if (11 !== g && (c = me.exec(e)))
                    if (i = c[1]) {
                        if (9 === g) {
                            if (!(s = t.getElementById(i)))
                                return n;
                            if (s.id === i)
                                return n.push(s),
                                n
                        } else if (h && (s = h.getElementById(i)) && P(t, s) && s.id === i)
                            return n.push(s),
                            n
                    } else {
                        if (c[2])
                            return K.apply(n, t.getElementsByTagName(e)),
                            n;
                        if ((i = c[3]) && x.getElementsByClassName && t.getElementsByClassName)
                            return K.apply(n, t.getElementsByClassName(i)),
                            n
                    }
                if (x.qsa && !X[e + " "] && (!O || !O.test(e))) {
                    if (1 !== g)
                        h = t,
                        p = e;
                    else if ("object" !== t.nodeName.toLowerCase()) {
                        for ((a = t.getAttribute("id")) ? a = a.replace(be, "\\$&") : t.setAttribute("id", a = M),
                        f = k(e),
                        o = f.length,
                        u = de.test(a) ? "#" + a : "[id='" + a + "']"; o--; )
                            f[o] = u + " " + d(f[o]);
                        p = f.join(","),
                        h = ye.test(e) && l(t.parentNode) || t
                    }
                    if (p)
                        try {
                            return K.apply(n, h.querySelectorAll(p)),
                            n
                        } catch (e) {} finally {
                            a === M && t.removeAttribute("id")
                        }
                }
            }
            return S(e.replace(ae, "$1"), t, n, r)
        }
        function n() {
            function e(n, r) {
                return t.push(n + " ") > T.cacheLength && delete e[t.shift()],
                e[n + " "] = r
            }
            var t = [];
            return e
        }
        function r(e) {
            return e[M] = !0,
            e
        }
        function i(e) {
            var t = D.createElement("div");
            try {
                return !!e(t)
            } catch (e) {
                return !1
            } finally {
                t.parentNode && t.parentNode.removeChild(t),
                t = null
            }
        }
        function o(e, t) {
            for (var n = e.split("|"), r = n.length; r--; )
                T.attrHandle[n[r]] = t
        }
        function s(e, t) {
            var n = t && e
              , r = n && 1 === e.nodeType && 1 === t.nodeType && (~t.sourceIndex || V) - (~e.sourceIndex || V);
            if (r)
                return r;
            if (n)
                for (; n = n.nextSibling; )
                    if (n === t)
                        return -1;
            return e ? 1 : -1
        }
        function a(e) {
            return function(t) {
                var n = t.nodeName.toLowerCase();
                return "input" === n && t.type === e
            }
        }
        function u(e) {
            return function(t) {
                var n = t.nodeName.toLowerCase();
                return ("input" === n || "button" === n) && t.type === e
            }
        }
        function c(e) {
            return r(function(t) {
                return t = +t,
                r(function(n, r) {
                    for (var i, o = e([], n.length, t), s = o.length; s--; )
                        n[i = o[s]] && (n[i] = !(r[i] = n[i]))
                })
            })
        }
        function l(e) {
            return e && "undefined" != typeof e.getElementsByTagName && e
        }
        function f() {}
        function d(e) {
            for (var t = 0, n = e.length, r = ""; n > t; t++)
                r += e[t].value;
            return r
        }
        function p(e, t, n) {
            var r = t.dir
              , i = n && "parentNode" === r
              , o = W++;
            return t.first ? function(t, n, o) {
                for (; t = t[r]; )
                    if (1 === t.nodeType || i)
                        return e(t, n, o)
            }
            : function(t, n, s) {
                var a, u, c, l = [B, o];
                if (s) {
                    for (; t = t[r]; )
                        if ((1 === t.nodeType || i) && e(t, n, s))
                            return !0
                } else
                    for (; t = t[r]; )
                        if (1 === t.nodeType || i) {
                            if (c = t[M] || (t[M] = {}),
                            u = c[t.uniqueID] || (c[t.uniqueID] = {}),
                            (a = u[r]) && a[0] === B && a[1] === o)
                                return l[2] = a[2];
                            if (u[r] = l,
                            l[2] = e(t, n, s))
                                return !0
                        }
            }
        }
        function h(e) {
            return e.length > 1 ? function(t, n, r) {
                for (var i = e.length; i--; )
                    if (!e[i](t, n, r))
                        return !1;
                return !0
            }
            : e[0]
        }
        function g(e, n, r) {
            for (var i = 0, o = n.length; o > i; i++)
                t(e, n[i], r);
            return r
        }
        function v(e, t, n, r, i) {
            for (var o, s = [], a = 0, u = e.length, c = null != t; u > a; a++)
                (o = e[a]) && (n && !n(o, r, i) || (s.push(o),
                c && t.push(a)));
            return s
        }
        function m(e, t, n, i, o, s) {
            return i && !i[M] && (i = m(i)),
            o && !o[M] && (o = m(o, s)),
            r(function(r, s, a, u) {
                var c, l, f, d = [], p = [], h = s.length, m = r || g(t || "*", a.nodeType ? [a] : a, []), y = !e || !r && t ? m : v(m, d, e, a, u), b = n ? o || (r ? e : h || i) ? [] : s : y;
                if (n && n(y, b, a, u),
                i)
                    for (c = v(b, p),
                    i(c, [], a, u),
                    l = c.length; l--; )
                        (f = c[l]) && (b[p[l]] = !(y[p[l]] = f));
                if (r) {
                    if (o || e) {
                        if (o) {
                            for (c = [],
                            l = b.length; l--; )
                                (f = b[l]) && c.push(y[l] = f);
                            o(null, b = [], c, u)
                        }
                        for (l = b.length; l--; )
                            (f = b[l]) && (c = o ? ee(r, f) : d[l]) > -1 && (r[c] = !(s[c] = f))
                    }
                } else
                    b = v(b === s ? b.splice(h, b.length) : b),
                    o ? o(null, s, b, u) : K.apply(s, b)
            })
        }
        function y(e) {
            for (var t, n, r, i = e.length, o = T.relative[e[0].type], s = o || T.relative[" "], a = o ? 1 : 0, u = p(function(e) {
                return e === t
            }, s, !0), c = p(function(e) {
                return ee(t, e) > -1
            }, s, !0), l = [function(e, n, r) {
                var i = !o && (r || n !== q) || ((t = n).nodeType ? u(e, n, r) : c(e, n, r));
                return t = null,
                i
            }
            ]; i > a; a++)
                if (n = T.relative[e[a].type])
                    l = [p(h(l), n)];
                else {
                    if (n = T.filter[e[a].type].apply(null, e[a].matches),
                    n[M]) {
                        for (r = ++a; i > r && !T.relative[e[r].type]; r++)
                            ;
                        return m(a > 1 && h(l), a > 1 && d(e.slice(0, a - 1).concat({
                            value: " " === e[a - 2].type ? "*" : ""
                        })).replace(ae, "$1"), n, r > a && y(e.slice(a, r)), i > r && y(e = e.slice(r)), i > r && d(e))
                    }
                    l.push(n)
                }
            return h(l)
        }
        function b(e, n) {
            var i = n.length > 0
              , o = e.length > 0
              , s = function(r, s, a, u, c) {
                var l, f, d, p = 0, h = "0", g = r && [], m = [], y = q, b = r || o && T.find.TAG("*", c), w = B += null == y ? 1 : Math.random() || .1, x = b.length;
                for (c && (q = s === D || s || c); h !== x && null != (l = b[h]); h++) {
                    if (o && l) {
                        for (f = 0,
                        s || l.ownerDocument === D || (N(l),
                        a = !L); d = e[f++]; )
                            if (d(l, s || D, a)) {
                                u.push(l);
                                break
                            }
                        c && (B = w)
                    }
                    i && ((l = !d && l) && p--,
                    r && g.push(l))
                }
                if (p += h,
                i && h !== p) {
                    for (f = 0; d = n[f++]; )
                        d(g, m, s, a);
                    if (r) {
                        if (p > 0)
                            for (; h--; )
                                g[h] || m[h] || (m[h] = J.call(u));
                        m = v(m)
                    }
                    K.apply(u, m),
                    c && !r && m.length > 0 && p + n.length > 1 && t.uniqueSort(u)
                }
                return c && (B = w,
                q = y),
                g
            };
            return i ? r(s) : s
        }
        var w, x, T, C, _, k, j, S, q, E, A, N, D, H, L, O, F, I, P, M = "sizzle" + 1 * new Date, R = e.document, B = 0, W = 0, $ = n(), z = n(), X = n(), U = function(e, t) {
            return e === t && (A = !0),
            0
        }, V = 1 << 31, Y = {}.hasOwnProperty, G = [], J = G.pop, Q = G.push, K = G.push, Z = G.slice, ee = function(e, t) {
            for (var n = 0, r = e.length; r > n; n++)
                if (e[n] === t)
                    return n;
            return -1
        }, te = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", ne = "[\\x20\\t\\r\\n\\f]", re = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", ie = "\\[" + ne + "*(" + re + ")(?:" + ne + "*([*^$|!~]?=)" + ne + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + re + "))|)" + ne + "*\\]", oe = ":(" + re + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + ie + ")*)|.*)\\)|)", se = new RegExp(ne + "+","g"), ae = new RegExp("^" + ne + "+|((?:^|[^\\\\])(?:\\\\.)*)" + ne + "+$","g"), ue = new RegExp("^" + ne + "*," + ne + "*"), ce = new RegExp("^" + ne + "*([>+~]|" + ne + ")" + ne + "*"), le = new RegExp("=" + ne + "*([^\\]'\"]*?)" + ne + "*\\]","g"), fe = new RegExp(oe), de = new RegExp("^" + re + "$"), pe = {
            ID: new RegExp("^#(" + re + ")"),
            CLASS: new RegExp("^\\.(" + re + ")"),
            TAG: new RegExp("^(" + re + "|[*])"),
            ATTR: new RegExp("^" + ie),
            PSEUDO: new RegExp("^" + oe),
            CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + ne + "*(even|odd|(([+-]|)(\\d*)n|)" + ne + "*(?:([+-]|)" + ne + "*(\\d+)|))" + ne + "*\\)|)","i"),
            bool: new RegExp("^(?:" + te + ")$","i"),
            needsContext: new RegExp("^" + ne + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + ne + "*((?:-\\d)?\\d*)" + ne + "*\\)|)(?=[^-]|$)","i")
        }, he = /^(?:input|select|textarea|button)$/i, ge = /^h\d$/i, ve = /^[^{]+\{\s*\[native \w/, me = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, ye = /[+~]/, be = /'|\\/g, we = new RegExp("\\\\([\\da-f]{1,6}" + ne + "?|(" + ne + ")|.)","ig"), xe = function(e, t, n) {
            var r = "0x" + t - 65536;
            return r !== r || n ? t : 0 > r ? String.fromCharCode(r + 65536) : String.fromCharCode(r >> 10 | 55296, 1023 & r | 56320)
        }, Te = function() {
            N()
        };
        try {
            K.apply(G = Z.call(R.childNodes), R.childNodes),
            G[R.childNodes.length].nodeType
        } catch (e) {
            K = {
                apply: G.length ? function(e, t) {
                    Q.apply(e, Z.call(t))
                }
                : function(e, t) {
                    for (var n = e.length, r = 0; e[n++] = t[r++]; )
                        ;
                    e.length = n - 1
                }
            }
        }
        x = t.support = {},
        _ = t.isXML = function(e) {
            var t = e && (e.ownerDocument || e).documentElement;
            return !!t && "HTML" !== t.nodeName
        }
        ,
        N = t.setDocument = function(e) {
            var t, n, r = e ? e.ownerDocument || e : R;
            return r !== D && 9 === r.nodeType && r.documentElement ? (D = r,
            H = D.documentElement,
            L = !_(D),
            (n = D.defaultView) && n.top !== n && (n.addEventListener ? n.addEventListener("unload", Te, !1) : n.attachEvent && n.attachEvent("onunload", Te)),
            x.attributes = i(function(e) {
                return e.className = "i",
                !e.getAttribute("className")
            }),
            x.getElementsByTagName = i(function(e) {
                return e.appendChild(D.createComment("")),
                !e.getElementsByTagName("*").length
            }),
            x.getElementsByClassName = ve.test(D.getElementsByClassName),
            x.getById = i(function(e) {
                return H.appendChild(e).id = M,
                !D.getElementsByName || !D.getElementsByName(M).length
            }),
            x.getById ? (T.find.ID = function(e, t) {
                if ("undefined" != typeof t.getElementById && L) {
                    var n = t.getElementById(e);
                    return n ? [n] : []
                }
            }
            ,
            T.filter.ID = function(e) {
                var t = e.replace(we, xe);
                return function(e) {
                    return e.getAttribute("id") === t
                }
            }
            ) : (delete T.find.ID,
            T.filter.ID = function(e) {
                var t = e.replace(we, xe);
                return function(e) {
                    var n = "undefined" != typeof e.getAttributeNode && e.getAttributeNode("id");
                    return n && n.value === t
                }
            }
            ),
            T.find.TAG = x.getElementsByTagName ? function(e, t) {
                return "undefined" != typeof t.getElementsByTagName ? t.getElementsByTagName(e) : x.qsa ? t.querySelectorAll(e) : void 0
            }
            : function(e, t) {
                var n, r = [], i = 0, o = t.getElementsByTagName(e);
                if ("*" === e) {
                    for (; n = o[i++]; )
                        1 === n.nodeType && r.push(n);
                    return r
                }
                return o
            }
            ,
            T.find.CLASS = x.getElementsByClassName && function(e, t) {
                return "undefined" != typeof t.getElementsByClassName && L ? t.getElementsByClassName(e) : void 0
            }
            ,
            F = [],
            O = [],
            (x.qsa = ve.test(D.querySelectorAll)) && (i(function(e) {
                H.appendChild(e).innerHTML = "<a id='" + M + "'></a><select id='" + M + "-\r\\' msallowcapture=''><option selected=''></option></select>",
                e.querySelectorAll("[msallowcapture^='']").length && O.push("[*^$]=" + ne + "*(?:''|\"\")"),
                e.querySelectorAll("[selected]").length || O.push("\\[" + ne + "*(?:value|" + te + ")"),
                e.querySelectorAll("[id~=" + M + "-]").length || O.push("~="),
                e.querySelectorAll(":checked").length || O.push(":checked"),
                e.querySelectorAll("a#" + M + "+*").length || O.push(".#.+[+~]")
            }),
            i(function(e) {
                var t = D.createElement("input");
                t.setAttribute("type", "hidden"),
                e.appendChild(t).setAttribute("name", "D"),
                e.querySelectorAll("[name=d]").length && O.push("name" + ne + "*[*^$|!~]?="),
                e.querySelectorAll(":enabled").length || O.push(":enabled", ":disabled"),
                e.querySelectorAll("*,:x"),
                O.push(",.*:")
            })),
            (x.matchesSelector = ve.test(I = H.matches || H.webkitMatchesSelector || H.mozMatchesSelector || H.oMatchesSelector || H.msMatchesSelector)) && i(function(e) {
                x.disconnectedMatch = I.call(e, "div"),
                I.call(e, "[s!='']:x"),
                F.push("!=", oe)
            }),
            O = O.length && new RegExp(O.join("|")),
            F = F.length && new RegExp(F.join("|")),
            t = ve.test(H.compareDocumentPosition),
            P = t || ve.test(H.contains) ? function(e, t) {
                var n = 9 === e.nodeType ? e.documentElement : e
                  , r = t && t.parentNode;
                return e === r || !(!r || 1 !== r.nodeType || !(n.contains ? n.contains(r) : e.compareDocumentPosition && 16 & e.compareDocumentPosition(r)))
            }
            : function(e, t) {
                if (t)
                    for (; t = t.parentNode; )
                        if (t === e)
                            return !0;
                return !1
            }
            ,
            U = t ? function(e, t) {
                if (e === t)
                    return A = !0,
                    0;
                var n = !e.compareDocumentPosition - !t.compareDocumentPosition;
                return n ? n : (n = (e.ownerDocument || e) === (t.ownerDocument || t) ? e.compareDocumentPosition(t) : 1,
                1 & n || !x.sortDetached && t.compareDocumentPosition(e) === n ? e === D || e.ownerDocument === R && P(R, e) ? -1 : t === D || t.ownerDocument === R && P(R, t) ? 1 : E ? ee(E, e) - ee(E, t) : 0 : 4 & n ? -1 : 1)
            }
            : function(e, t) {
                if (e === t)
                    return A = !0,
                    0;
                var n, r = 0, i = e.parentNode, o = t.parentNode, a = [e], u = [t];
                if (!i || !o)
                    return e === D ? -1 : t === D ? 1 : i ? -1 : o ? 1 : E ? ee(E, e) - ee(E, t) : 0;
                if (i === o)
                    return s(e, t);
                for (n = e; n = n.parentNode; )
                    a.unshift(n);
                for (n = t; n = n.parentNode; )
                    u.unshift(n);
                for (; a[r] === u[r]; )
                    r++;
                return r ? s(a[r], u[r]) : a[r] === R ? -1 : u[r] === R ? 1 : 0
            }
            ,
            D) : D
        }
        ,
        t.matches = function(e, n) {
            return t(e, null, null, n)
        }
        ,
        t.matchesSelector = function(e, n) {
            if ((e.ownerDocument || e) !== D && N(e),
            n = n.replace(le, "='$1']"),
            x.matchesSelector && L && !X[n + " "] && (!F || !F.test(n)) && (!O || !O.test(n)))
                try {
                    var r = I.call(e, n);
                    if (r || x.disconnectedMatch || e.document && 11 !== e.document.nodeType)
                        return r
                } catch (e) {}
            return t(n, D, null, [e]).length > 0
        }
        ,
        t.contains = function(e, t) {
            return (e.ownerDocument || e) !== D && N(e),
            P(e, t)
        }
        ,
        t.attr = function(e, t) {
            (e.ownerDocument || e) !== D && N(e);
            var n = T.attrHandle[t.toLowerCase()]
              , r = n && Y.call(T.attrHandle, t.toLowerCase()) ? n(e, t, !L) : void 0;
            return void 0 !== r ? r : x.attributes || !L ? e.getAttribute(t) : (r = e.getAttributeNode(t)) && r.specified ? r.value : null
        }
        ,
        t.error = function(e) {
            throw new Error("Syntax error, unrecognized expression: " + e)
        }
        ,
        t.uniqueSort = function(e) {
            var t, n = [], r = 0, i = 0;
            if (A = !x.detectDuplicates,
            E = !x.sortStable && e.slice(0),
            e.sort(U),
            A) {
                for (; t = e[i++]; )
                    t === e[i] && (r = n.push(i));
                for (; r--; )
                    e.splice(n[r], 1)
            }
            return E = null,
            e
        }
        ,
        C = t.getText = function(e) {
            var t, n = "", r = 0, i = e.nodeType;
            if (i) {
                if (1 === i || 9 === i || 11 === i) {
                    if ("string" == typeof e.textContent)
                        return e.textContent;
                    for (e = e.firstChild; e; e = e.nextSibling)
                        n += C(e)
                } else if (3 === i || 4 === i)
                    return e.nodeValue
            } else
                for (; t = e[r++]; )
                    n += C(t);
            return n
        }
        ,
        T = t.selectors = {
            cacheLength: 50,
            createPseudo: r,
            match: pe,
            attrHandle: {},
            find: {},
            relative: {
                ">": {
                    dir: "parentNode",
                    first: !0
                },
                " ": {
                    dir: "parentNode"
                },
                "+": {
                    dir: "previousSibling",
                    first: !0
                },
                "~": {
                    dir: "previousSibling"
                }
            },
            preFilter: {
                ATTR: function(e) {
                    return e[1] = e[1].replace(we, xe),
                    e[3] = (e[3] || e[4] || e[5] || "").replace(we, xe),
                    "~=" === e[2] && (e[3] = " " + e[3] + " "),
                    e.slice(0, 4)
                },
                CHILD: function(e) {
                    return e[1] = e[1].toLowerCase(),
                    "nth" === e[1].slice(0, 3) ? (e[3] || t.error(e[0]),
                    e[4] = +(e[4] ? e[5] + (e[6] || 1) : 2 * ("even" === e[3] || "odd" === e[3])),
                    e[5] = +(e[7] + e[8] || "odd" === e[3])) : e[3] && t.error(e[0]),
                    e
                },
                PSEUDO: function(e) {
                    var t, n = !e[6] && e[2];
                    return pe.CHILD.test(e[0]) ? null : (e[3] ? e[2] = e[4] || e[5] || "" : n && fe.test(n) && (t = k(n, !0)) && (t = n.indexOf(")", n.length - t) - n.length) && (e[0] = e[0].slice(0, t),
                    e[2] = n.slice(0, t)),
                    e.slice(0, 3))
                }
            },
            filter: {
                TAG: function(e) {
                    var t = e.replace(we, xe).toLowerCase();
                    return "*" === e ? function() {
                        return !0
                    }
                    : function(e) {
                        return e.nodeName && e.nodeName.toLowerCase() === t
                    }
                },
                CLASS: function(e) {
                    var t = $[e + " "];
                    return t || (t = new RegExp("(^|" + ne + ")" + e + "(" + ne + "|$)")) && $(e, function(e) {
                        return t.test("string" == typeof e.className && e.className || "undefined" != typeof e.getAttribute && e.getAttribute("class") || "")
                    })
                },
                ATTR: function(e, n, r) {
                    return function(i) {
                        var o = t.attr(i, e);
                        return null == o ? "!=" === n : !n || (o += "",
                        "=" === n ? o === r : "!=" === n ? o !== r : "^=" === n ? r && 0 === o.indexOf(r) : "*=" === n ? r && o.indexOf(r) > -1 : "$=" === n ? r && o.slice(-r.length) === r : "~=" === n ? (" " + o.replace(se, " ") + " ").indexOf(r) > -1 : "|=" === n && (o === r || o.slice(0, r.length + 1) === r + "-"))
                    }
                },
                CHILD: function(e, t, n, r, i) {
                    var o = "nth" !== e.slice(0, 3)
                      , s = "last" !== e.slice(-4)
                      , a = "of-type" === t;
                    return 1 === r && 0 === i ? function(e) {
                        return !!e.parentNode
                    }
                    : function(t, n, u) {
                        var c, l, f, d, p, h, g = o !== s ? "nextSibling" : "previousSibling", v = t.parentNode, m = a && t.nodeName.toLowerCase(), y = !u && !a, b = !1;
                        if (v) {
                            if (o) {
                                for (; g; ) {
                                    for (d = t; d = d[g]; )
                                        if (a ? d.nodeName.toLowerCase() === m : 1 === d.nodeType)
                                            return !1;
                                    h = g = "only" === e && !h && "nextSibling"
                                }
                                return !0
                            }
                            if (h = [s ? v.firstChild : v.lastChild],
                            s && y) {
                                for (d = v,
                                f = d[M] || (d[M] = {}),
                                l = f[d.uniqueID] || (f[d.uniqueID] = {}),
                                c = l[e] || [],
                                p = c[0] === B && c[1],
                                b = p && c[2],
                                d = p && v.childNodes[p]; d = ++p && d && d[g] || (b = p = 0) || h.pop(); )
                                    if (1 === d.nodeType && ++b && d === t) {
                                        l[e] = [B, p, b];
                                        break
                                    }
                            } else if (y && (d = t,
                            f = d[M] || (d[M] = {}),
                            l = f[d.uniqueID] || (f[d.uniqueID] = {}),
                            c = l[e] || [],
                            p = c[0] === B && c[1],
                            b = p),
                            b === !1)
                                for (; (d = ++p && d && d[g] || (b = p = 0) || h.pop()) && ((a ? d.nodeName.toLowerCase() !== m : 1 !== d.nodeType) || !++b || (y && (f = d[M] || (d[M] = {}),
                                l = f[d.uniqueID] || (f[d.uniqueID] = {}),
                                l[e] = [B, b]),
                                d !== t)); )
                                    ;
                            return b -= i,
                            b === r || b % r === 0 && b / r >= 0
                        }
                    }
                },
                PSEUDO: function(e, n) {
                    var i, o = T.pseudos[e] || T.setFilters[e.toLowerCase()] || t.error("unsupported pseudo: " + e);
                    return o[M] ? o(n) : o.length > 1 ? (i = [e, e, "", n],
                    T.setFilters.hasOwnProperty(e.toLowerCase()) ? r(function(e, t) {
                        for (var r, i = o(e, n), s = i.length; s--; )
                            r = ee(e, i[s]),
                            e[r] = !(t[r] = i[s])
                    }) : function(e) {
                        return o(e, 0, i)
                    }
                    ) : o
                }
            },
            pseudos: {
                not: r(function(e) {
                    var t = []
                      , n = []
                      , i = j(e.replace(ae, "$1"));
                    return i[M] ? r(function(e, t, n, r) {
                        for (var o, s = i(e, null, r, []), a = e.length; a--; )
                            (o = s[a]) && (e[a] = !(t[a] = o))
                    }) : function(e, r, o) {
                        return t[0] = e,
                        i(t, null, o, n),
                        t[0] = null,
                        !n.pop()
                    }
                }),
                has: r(function(e) {
                    return function(n) {
                        return t(e, n).length > 0
                    }
                }),
                contains: r(function(e) {
                    return e = e.replace(we, xe),
                    function(t) {
                        return (t.textContent || t.innerText || C(t)).indexOf(e) > -1
                    }
                }),
                lang: r(function(e) {
                    return de.test(e || "") || t.error("unsupported lang: " + e),
                    e = e.replace(we, xe).toLowerCase(),
                    function(t) {
                        var n;
                        do
                            if (n = L ? t.lang : t.getAttribute("xml:lang") || t.getAttribute("lang"))
                                return n = n.toLowerCase(),
                                n === e || 0 === n.indexOf(e + "-");
                        while ((t = t.parentNode) && 1 === t.nodeType);
                        return !1
                    }
                }),
                target: function(t) {
                    var n = e.location && e.location.hash;
                    return n && n.slice(1) === t.id
                },
                root: function(e) {
                    return e === H
                },
                focus: function(e) {
                    return e === D.activeElement && (!D.hasFocus || D.hasFocus()) && !!(e.type || e.href || ~e.tabIndex)
                },
                enabled: function(e) {
                    return e.disabled === !1
                },
                disabled: function(e) {
                    return e.disabled === !0
                },
                checked: function(e) {
                    var t = e.nodeName.toLowerCase();
                    return "input" === t && !!e.checked || "option" === t && !!e.selected
                },
                selected: function(e) {
                    return e.parentNode && e.parentNode.selectedIndex,
                    e.selected === !0
                },
                empty: function(e) {
                    for (e = e.firstChild; e; e = e.nextSibling)
                        if (e.nodeType < 6)
                            return !1;
                    return !0
                },
                parent: function(e) {
                    return !T.pseudos.empty(e)
                },
                header: function(e) {
                    return ge.test(e.nodeName)
                },
                input: function(e) {
                    return he.test(e.nodeName)
                },
                button: function(e) {
                    var t = e.nodeName.toLowerCase();
                    return "input" === t && "button" === e.type || "button" === t
                },
                text: function(e) {
                    var t;
                    return "input" === e.nodeName.toLowerCase() && "text" === e.type && (null == (t = e.getAttribute("type")) || "text" === t.toLowerCase());
                },
                first: c(function() {
                    return [0]
                }),
                last: c(function(e, t) {
                    return [t - 1]
                }),
                eq: c(function(e, t, n) {
                    return [0 > n ? n + t : n]
                }),
                even: c(function(e, t) {
                    for (var n = 0; t > n; n += 2)
                        e.push(n);
                    return e
                }),
                odd: c(function(e, t) {
                    for (var n = 1; t > n; n += 2)
                        e.push(n);
                    return e
                }),
                lt: c(function(e, t, n) {
                    for (var r = 0 > n ? n + t : n; --r >= 0; )
                        e.push(r);
                    return e
                }),
                gt: c(function(e, t, n) {
                    for (var r = 0 > n ? n + t : n; ++r < t; )
                        e.push(r);
                    return e
                })
            }
        },
        T.pseudos.nth = T.pseudos.eq;
        for (w in {
            radio: !0,
            checkbox: !0,
            file: !0,
            password: !0,
            image: !0
        })
            T.pseudos[w] = a(w);
        for (w in {
            submit: !0,
            reset: !0
        })
            T.pseudos[w] = u(w);
        return f.prototype = T.filters = T.pseudos,
        T.setFilters = new f,
        k = t.tokenize = function(e, n) {
            var r, i, o, s, a, u, c, l = z[e + " "];
            if (l)
                return n ? 0 : l.slice(0);
            for (a = e,
            u = [],
            c = T.preFilter; a; ) {
                r && !(i = ue.exec(a)) || (i && (a = a.slice(i[0].length) || a),
                u.push(o = [])),
                r = !1,
                (i = ce.exec(a)) && (r = i.shift(),
                o.push({
                    value: r,
                    type: i[0].replace(ae, " ")
                }),
                a = a.slice(r.length));
                for (s in T.filter)
                    !(i = pe[s].exec(a)) || c[s] && !(i = c[s](i)) || (r = i.shift(),
                    o.push({
                        value: r,
                        type: s,
                        matches: i
                    }),
                    a = a.slice(r.length));
                if (!r)
                    break
            }
            return n ? a.length : a ? t.error(e) : z(e, u).slice(0)
        }
        ,
        j = t.compile = function(e, t) {
            var n, r = [], i = [], o = X[e + " "];
            if (!o) {
                for (t || (t = k(e)),
                n = t.length; n--; )
                    o = y(t[n]),
                    o[M] ? r.push(o) : i.push(o);
                o = X(e, b(i, r)),
                o.selector = e
            }
            return o
        }
        ,
        S = t.select = function(e, t, n, r) {
            var i, o, s, a, u, c = "function" == typeof e && e, f = !r && k(e = c.selector || e);
            if (n = n || [],
            1 === f.length) {
                if (o = f[0] = f[0].slice(0),
                o.length > 2 && "ID" === (s = o[0]).type && x.getById && 9 === t.nodeType && L && T.relative[o[1].type]) {
                    if (t = (T.find.ID(s.matches[0].replace(we, xe), t) || [])[0],
                    !t)
                        return n;
                    c && (t = t.parentNode),
                    e = e.slice(o.shift().value.length)
                }
                for (i = pe.needsContext.test(e) ? 0 : o.length; i-- && (s = o[i],
                !T.relative[a = s.type]); )
                    if ((u = T.find[a]) && (r = u(s.matches[0].replace(we, xe), ye.test(o[0].type) && l(t.parentNode) || t))) {
                        if (o.splice(i, 1),
                        e = r.length && d(o),
                        !e)
                            return K.apply(n, r),
                            n;
                        break
                    }
            }
            return (c || j(e, f))(r, t, !L, n, !t || ye.test(e) && l(t.parentNode) || t),
            n
        }
        ,
        x.sortStable = M.split("").sort(U).join("") === M,
        x.detectDuplicates = !!A,
        N(),
        x.sortDetached = i(function(e) {
            return 1 & e.compareDocumentPosition(D.createElement("div"))
        }),
        i(function(e) {
            return e.innerHTML = "<a href='#'></a>",
            "#" === e.firstChild.getAttribute("href")
        }) || o("type|href|height|width", function(e, t, n) {
            return n ? void 0 : e.getAttribute(t, "type" === t.toLowerCase() ? 1 : 2)
        }),
        x.attributes && i(function(e) {
            return e.innerHTML = "<input/>",
            e.firstChild.setAttribute("value", ""),
            "" === e.firstChild.getAttribute("value")
        }) || o("value", function(e, t, n) {
            return n || "input" !== e.nodeName.toLowerCase() ? void 0 : e.defaultValue
        }),
        i(function(e) {
            return null == e.getAttribute("disabled")
        }) || o(te, function(e, t, n) {
            var r;
            return n ? void 0 : e[t] === !0 ? t.toLowerCase() : (r = e.getAttributeNode(t)) && r.specified ? r.value : null
        }),
        t
    }(e),
    Ft.find = Y,
    Ft.expr = Y.selectors,
    Ft.expr[":"] = Ft.expr.pseudos,
    Ft.uniqueSort = Ft.unique = Y.uniqueSort,
    Ft.text = Y.getText,
    Ft.isXMLDoc = Y.isXML,
    Ft.contains = Y.contains,
    G = function(e, t, n) {
        for (var r = [], i = void 0 !== n; (e = e[t]) && 9 !== e.nodeType; )
            if (1 === e.nodeType) {
                if (i && Ft(e).is(n))
                    break;
                r.push(e)
            }
        return r
    }
    ,
    J = function(e, t) {
        for (var n = []; e; e = e.nextSibling)
            1 === e.nodeType && e !== t && n.push(e);
        return n
    }
    ,
    Q = Ft.expr.match.needsContext,
    K = /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,
    Z = /^.[^:#\[\.,]*$/,
    Ft.filter = function(e, t, n) {
        var r = t[0];
        return n && (e = ":not(" + e + ")"),
        1 === t.length && 1 === r.nodeType ? Ft.find.matchesSelector(r, e) ? [r] : [] : Ft.find.matches(e, Ft.grep(t, function(e) {
            return 1 === e.nodeType
        }))
    }
    ,
    Ft.fn.extend({
        find: function(e) {
            var t, n = this.length, r = [], i = this;
            if ("string" != typeof e)
                return this.pushStack(Ft(e).filter(function() {
                    for (t = 0; n > t; t++)
                        if (Ft.contains(i[t], this))
                            return !0
                }));
            for (t = 0; n > t; t++)
                Ft.find(e, i[t], r);
            return r = this.pushStack(n > 1 ? Ft.unique(r) : r),
            r.selector = this.selector ? this.selector + " " + e : e,
            r
        },
        filter: function(e) {
            return this.pushStack(r(this, e || [], !1))
        },
        not: function(e) {
            return this.pushStack(r(this, e || [], !0))
        },
        is: function(e) {
            return !!r(this, "string" == typeof e && Q.test(e) ? Ft(e) : e || [], !1).length
        }
    }),
    te = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
    ne = Ft.fn.init = function(e, t, n) {
        var r, i;
        if (!e)
            return this;
        if (n = n || ee,
        "string" == typeof e) {
            if (r = "<" === e[0] && ">" === e[e.length - 1] && e.length >= 3 ? [null, e, null] : te.exec(e),
            !r || !r[1] && t)
                return !t || t.jquery ? (t || n).find(e) : this.constructor(t).find(e);
            if (r[1]) {
                if (t = t instanceof Ft ? t[0] : t,
                Ft.merge(this, Ft.parseHTML(r[1], t && t.nodeType ? t.ownerDocument || t : jt, !0)),
                K.test(r[1]) && Ft.isPlainObject(t))
                    for (r in t)
                        Ft.isFunction(this[r]) ? this[r](t[r]) : this.attr(r, t[r]);
                return this
            }
            return i = jt.getElementById(r[2]),
            i && i.parentNode && (this.length = 1,
            this[0] = i),
            this.context = jt,
            this.selector = e,
            this
        }
        return e.nodeType ? (this.context = this[0] = e,
        this.length = 1,
        this) : Ft.isFunction(e) ? void 0 !== n.ready ? n.ready(e) : e(Ft) : (void 0 !== e.selector && (this.selector = e.selector,
        this.context = e.context),
        Ft.makeArray(e, this))
    }
    ,
    ne.prototype = Ft.fn,
    ee = Ft(jt),
    re = /^(?:parents|prev(?:Until|All))/,
    ie = {
        children: !0,
        contents: !0,
        next: !0,
        prev: !0
    },
    Ft.fn.extend({
        has: function(e) {
            var t = Ft(e, this)
              , n = t.length;
            return this.filter(function() {
                for (var e = 0; n > e; e++)
                    if (Ft.contains(this, t[e]))
                        return !0
            })
        },
        closest: function(e, t) {
            for (var n, r = 0, i = this.length, o = [], s = Q.test(e) || "string" != typeof e ? Ft(e, t || this.context) : 0; i > r; r++)
                for (n = this[r]; n && n !== t; n = n.parentNode)
                    if (n.nodeType < 11 && (s ? s.index(n) > -1 : 1 === n.nodeType && Ft.find.matchesSelector(n, e))) {
                        o.push(n);
                        break
                    }
            return this.pushStack(o.length > 1 ? Ft.uniqueSort(o) : o)
        },
        index: function(e) {
            return e ? "string" == typeof e ? At.call(Ft(e), this[0]) : At.call(this, e.jquery ? e[0] : e) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1
        },
        add: function(e, t) {
            return this.pushStack(Ft.uniqueSort(Ft.merge(this.get(), Ft(e, t))))
        },
        addBack: function(e) {
            return this.add(null == e ? this.prevObject : this.prevObject.filter(e))
        }
    }),
    Ft.each({
        parent: function(e) {
            var t = e.parentNode;
            return t && 11 !== t.nodeType ? t : null
        },
        parents: function(e) {
            return G(e, "parentNode")
        },
        parentsUntil: function(e, t, n) {
            return G(e, "parentNode", n)
        },
        next: function(e) {
            return i(e, "nextSibling")
        },
        prev: function(e) {
            return i(e, "previousSibling")
        },
        nextAll: function(e) {
            return G(e, "nextSibling")
        },
        prevAll: function(e) {
            return G(e, "previousSibling")
        },
        nextUntil: function(e, t, n) {
            return G(e, "nextSibling", n)
        },
        prevUntil: function(e, t, n) {
            return G(e, "previousSibling", n)
        },
        siblings: function(e) {
            return J((e.parentNode || {}).firstChild, e)
        },
        children: function(e) {
            return J(e.firstChild)
        },
        contents: function(e) {
            return e.contentDocument || Ft.merge([], e.childNodes)
        }
    }, function(e, t) {
        Ft.fn[e] = function(n, r) {
            var i = Ft.map(this, t, n);
            return "Until" !== e.slice(-5) && (r = n),
            r && "string" == typeof r && (i = Ft.filter(r, i)),
            this.length > 1 && (ie[e] || Ft.uniqueSort(i),
            re.test(e) && i.reverse()),
            this.pushStack(i)
        }
    }),
    oe = /\S+/g,
    Ft.Callbacks = function(e) {
        e = "string" == typeof e ? o(e) : Ft.extend({}, e);
        var t, n, r, i, s = [], a = [], u = -1, c = function() {
            for (i = e.once,
            r = t = !0; a.length; u = -1)
                for (n = a.shift(); ++u < s.length; )
                    s[u].apply(n[0], n[1]) === !1 && e.stopOnFalse && (u = s.length,
                    n = !1);
            e.memory || (n = !1),
            t = !1,
            i && (s = n ? [] : "")
        }, l = {
            add: function() {
                return s && (n && !t && (u = s.length - 1,
                a.push(n)),
                function t(n) {
                    Ft.each(n, function(n, r) {
                        Ft.isFunction(r) ? e.unique && l.has(r) || s.push(r) : r && r.length && "string" !== Ft.type(r) && t(r)
                    })
                }(arguments),
                n && !t && c()),
                this
            },
            remove: function() {
                return Ft.each(arguments, function(e, t) {
                    for (var n; (n = Ft.inArray(t, s, n)) > -1; )
                        s.splice(n, 1),
                        u >= n && u--
                }),
                this
            },
            has: function(e) {
                return e ? Ft.inArray(e, s) > -1 : s.length > 0
            },
            empty: function() {
                return s && (s = []),
                this
            },
            disable: function() {
                return i = a = [],
                s = n = "",
                this
            },
            disabled: function() {
                return !s
            },
            lock: function() {
                return i = a = [],
                n || (s = n = ""),
                this
            },
            locked: function() {
                return !!i
            },
            fireWith: function(e, n) {
                return i || (n = n || [],
                n = [e, n.slice ? n.slice() : n],
                a.push(n),
                t || c()),
                this
            },
            fire: function() {
                return l.fireWith(this, arguments),
                this
            },
            fired: function() {
                return !!r
            }
        };
        return l
    }
    ,
    Ft.extend({
        Deferred: function(e) {
            var t = [["resolve", "done", Ft.Callbacks("once memory"), "resolved"], ["reject", "fail", Ft.Callbacks("once memory"), "rejected"], ["notify", "progress", Ft.Callbacks("memory")]]
              , n = "pending"
              , r = {
                state: function() {
                    return n
                },
                always: function() {
                    return i.done(arguments).fail(arguments),
                    this
                },
                then: function() {
                    var e = arguments;
                    return Ft.Deferred(function(n) {
                        Ft.each(t, function(t, o) {
                            var s = Ft.isFunction(e[t]) && e[t];
                            i[o[1]](function() {
                                var e = s && s.apply(this, arguments);
                                e && Ft.isFunction(e.promise) ? e.promise().progress(n.notify).done(n.resolve).fail(n.reject) : n[o[0] + "With"](this === r ? n.promise() : this, s ? [e] : arguments)
                            })
                        }),
                        e = null
                    }).promise()
                },
                promise: function(e) {
                    return null != e ? Ft.extend(e, r) : r
                }
            }
              , i = {};
            return r.pipe = r.then,
            Ft.each(t, function(e, o) {
                var s = o[2]
                  , a = o[3];
                r[o[1]] = s.add,
                a && s.add(function() {
                    n = a
                }, t[1 ^ e][2].disable, t[2][2].lock),
                i[o[0]] = function() {
                    return i[o[0] + "With"](this === i ? r : this, arguments),
                    this
                }
                ,
                i[o[0] + "With"] = s.fireWith
            }),
            r.promise(i),
            e && e.call(i, i),
            i
        },
        when: function(e) {
            var t, n, r, i = 0, o = St.call(arguments), s = o.length, a = 1 !== s || e && Ft.isFunction(e.promise) ? s : 0, u = 1 === a ? e : Ft.Deferred(), c = function(e, n, r) {
                return function(i) {
                    n[e] = this,
                    r[e] = arguments.length > 1 ? St.call(arguments) : i,
                    r === t ? u.notifyWith(n, r) : --a || u.resolveWith(n, r)
                }
            };
            if (s > 1)
                for (t = new Array(s),
                n = new Array(s),
                r = new Array(s); s > i; i++)
                    o[i] && Ft.isFunction(o[i].promise) ? o[i].promise().progress(c(i, n, t)).done(c(i, r, o)).fail(u.reject) : --a;
            return a || u.resolveWith(r, o),
            u.promise()
        }
    }),
    Ft.fn.ready = function(e) {
        return Ft.ready.promise().done(e),
        this
    }
    ,
    Ft.extend({
        isReady: !1,
        readyWait: 1,
        holdReady: function(e) {
            e ? Ft.readyWait++ : Ft.ready(!0)
        },
        ready: function(e) {
            (e === !0 ? --Ft.readyWait : Ft.isReady) || (Ft.isReady = !0,
            e !== !0 && --Ft.readyWait > 0 || (se.resolveWith(jt, [Ft]),
            Ft.fn.triggerHandler && (Ft(jt).triggerHandler("ready"),
            Ft(jt).off("ready"))))
        }
    }),
    Ft.ready.promise = function(t) {
        return se || (se = Ft.Deferred(),
        "complete" === jt.readyState || "loading" !== jt.readyState && !jt.documentElement.doScroll ? e.setTimeout(Ft.ready) : (jt.addEventListener("DOMContentLoaded", s),
        e.addEventListener("load", s))),
        se.promise(t)
    }
    ,
    Ft.ready.promise(),
    ae = function(e, t, n, r, i, o, s) {
        var a = 0
          , u = e.length
          , c = null == n;
        if ("object" === Ft.type(n)) {
            i = !0;
            for (a in n)
                ae(e, t, a, n[a], !0, o, s)
        } else if (void 0 !== r && (i = !0,
        Ft.isFunction(r) || (s = !0),
        c && (s ? (t.call(e, r),
        t = null) : (c = t,
        t = function(e, t, n) {
            return c.call(Ft(e), n)
        }
        )),
        t))
            for (; u > a; a++)
                t(e[a], n, s ? r : r.call(e[a], a, t(e[a], n)));
        return i ? e : c ? t.call(e) : u ? t(e[0], n) : o
    }
    ,
    ue = function(e) {
        return 1 === e.nodeType || 9 === e.nodeType || !+e.nodeType
    }
    ,
    a.uid = 1,
    a.prototype = {
        register: function(e, t) {
            var n = t || {};
            return e.nodeType ? e[this.expando] = n : Object.defineProperty(e, this.expando, {
                value: n,
                writable: !0,
                configurable: !0
            }),
            e[this.expando]
        },
        cache: function(e) {
            if (!ue(e))
                return {};
            var t = e[this.expando];
            return t || (t = {},
            ue(e) && (e.nodeType ? e[this.expando] = t : Object.defineProperty(e, this.expando, {
                value: t,
                configurable: !0
            }))),
            t
        },
        set: function(e, t, n) {
            var r, i = this.cache(e);
            if ("string" == typeof t)
                i[t] = n;
            else
                for (r in t)
                    i[r] = t[r];
            return i
        },
        get: function(e, t) {
            return void 0 === t ? this.cache(e) : e[this.expando] && e[this.expando][t]
        },
        access: function(e, t, n) {
            var r;
            return void 0 === t || t && "string" == typeof t && void 0 === n ? (r = this.get(e, t),
            void 0 !== r ? r : this.get(e, Ft.camelCase(t))) : (this.set(e, t, n),
            void 0 !== n ? n : t)
        },
        remove: function(e, t) {
            var n, r, i, o = e[this.expando];
            if (void 0 !== o) {
                if (void 0 === t)
                    this.register(e);
                else {
                    Ft.isArray(t) ? r = t.concat(t.map(Ft.camelCase)) : (i = Ft.camelCase(t),
                    t in o ? r = [t, i] : (r = i,
                    r = r in o ? [r] : r.match(oe) || [])),
                    n = r.length;
                    for (; n--; )
                        delete o[r[n]]
                }
                (void 0 === t || Ft.isEmptyObject(o)) && (e.nodeType ? e[this.expando] = void 0 : delete e[this.expando])
            }
        },
        hasData: function(e) {
            var t = e[this.expando];
            return void 0 !== t && !Ft.isEmptyObject(t)
        }
    },
    ce = new a,
    le = new a,
    fe = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
    de = /[A-Z]/g,
    Ft.extend({
        hasData: function(e) {
            return le.hasData(e) || ce.hasData(e)
        },
        data: function(e, t, n) {
            return le.access(e, t, n)
        },
        removeData: function(e, t) {
            le.remove(e, t)
        },
        _data: function(e, t, n) {
            return ce.access(e, t, n)
        },
        _removeData: function(e, t) {
            ce.remove(e, t)
        }
    }),
    Ft.fn.extend({
        data: function(e, t) {
            var n, r, i, o = this[0], s = o && o.attributes;
            if (void 0 === e) {
                if (this.length && (i = le.get(o),
                1 === o.nodeType && !ce.get(o, "hasDataAttrs"))) {
                    for (n = s.length; n--; )
                        s[n] && (r = s[n].name,
                        0 === r.indexOf("data-") && (r = Ft.camelCase(r.slice(5)),
                        u(o, r, i[r])));
                    ce.set(o, "hasDataAttrs", !0)
                }
                return i
            }
            return "object" == typeof e ? this.each(function() {
                le.set(this, e)
            }) : ae(this, function(t) {
                var n, r;
                if (o && void 0 === t) {
                    if (n = le.get(o, e) || le.get(o, e.replace(de, "-$&").toLowerCase()),
                    void 0 !== n)
                        return n;
                    if (r = Ft.camelCase(e),
                    n = le.get(o, r),
                    void 0 !== n)
                        return n;
                    if (n = u(o, r, void 0),
                    void 0 !== n)
                        return n
                } else
                    r = Ft.camelCase(e),
                    this.each(function() {
                        var n = le.get(this, r);
                        le.set(this, r, t),
                        e.indexOf("-") > -1 && void 0 !== n && le.set(this, e, t)
                    })
            }, null, t, arguments.length > 1, null, !0)
        },
        removeData: function(e) {
            return this.each(function() {
                le.remove(this, e)
            })
        }
    }),
    Ft.extend({
        queue: function(e, t, n) {
            var r;
            return e ? (t = (t || "fx") + "queue",
            r = ce.get(e, t),
            n && (!r || Ft.isArray(n) ? r = ce.access(e, t, Ft.makeArray(n)) : r.push(n)),
            r || []) : void 0
        },
        dequeue: function(e, t) {
            t = t || "fx";
            var n = Ft.queue(e, t)
              , r = n.length
              , i = n.shift()
              , o = Ft._queueHooks(e, t)
              , s = function() {
                Ft.dequeue(e, t)
            };
            "inprogress" === i && (i = n.shift(),
            r--),
            i && ("fx" === t && n.unshift("inprogress"),
            delete o.stop,
            i.call(e, s, o)),
            !r && o && o.empty.fire()
        },
        _queueHooks: function(e, t) {
            var n = t + "queueHooks";
            return ce.get(e, n) || ce.access(e, n, {
                empty: Ft.Callbacks("once memory").add(function() {
                    ce.remove(e, [t + "queue", n])
                })
            })
        }
    }),
    Ft.fn.extend({
        queue: function(e, t) {
            var n = 2;
            return "string" != typeof e && (t = e,
            e = "fx",
            n--),
            arguments.length < n ? Ft.queue(this[0], e) : void 0 === t ? this : this.each(function() {
                var n = Ft.queue(this, e, t);
                Ft._queueHooks(this, e),
                "fx" === e && "inprogress" !== n[0] && Ft.dequeue(this, e)
            })
        },
        dequeue: function(e) {
            return this.each(function() {
                Ft.dequeue(this, e)
            })
        },
        clearQueue: function(e) {
            return this.queue(e || "fx", [])
        },
        promise: function(e, t) {
            var n, r = 1, i = Ft.Deferred(), o = this, s = this.length, a = function() {
                --r || i.resolveWith(o, [o])
            };
            for ("string" != typeof e && (t = e,
            e = void 0),
            e = e || "fx"; s--; )
                n = ce.get(o[s], e + "queueHooks"),
                n && n.empty && (r++,
                n.empty.add(a));
            return a(),
            i.promise(t)
        }
    }),
    pe = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
    he = new RegExp("^(?:([+-])=|)(" + pe + ")([a-z%]*)$","i"),
    ge = ["Top", "Right", "Bottom", "Left"],
    ve = function(e, t) {
        return e = t || e,
        "none" === Ft.css(e, "display") || !Ft.contains(e.ownerDocument, e)
    }
    ,
    me = /^(?:checkbox|radio)$/i,
    ye = /<([\w:-]+)/,
    be = /^$|\/(?:java|ecma)script/i,
    we = {
        option: [1, "<select multiple='multiple'>", "</select>"],
        thead: [1, "<table>", "</table>"],
        col: [2, "<table><colgroup>", "</colgroup></table>"],
        tr: [2, "<table><tbody>", "</tbody></table>"],
        td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
        _default: [0, "", ""]
    },
    we.optgroup = we.option,
    we.tbody = we.tfoot = we.colgroup = we.caption = we.thead,
    we.th = we.td,
    xe = /<|&#?\w+;/,
    !function() {
        var e = jt.createDocumentFragment()
          , t = e.appendChild(jt.createElement("div"))
          , n = jt.createElement("input");
        n.setAttribute("type", "radio"),
        n.setAttribute("checked", "checked"),
        n.setAttribute("name", "t"),
        t.appendChild(n),
        Lt.checkClone = t.cloneNode(!0).cloneNode(!0).lastChild.checked,
        t.innerHTML = "<textarea>x</textarea>",
        Lt.noCloneChecked = !!t.cloneNode(!0).lastChild.defaultValue
    }(),
    Te = /^key/,
    Ce = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
    _e = /^([^.]*)(?:\.(.+)|)/,
    Ft.event = {
        global: {},
        add: function(e, t, n, r, i) {
            var o, s, a, u, c, l, f, d, p, h, g, v = ce.get(e);
            if (v)
                for (n.handler && (o = n,
                n = o.handler,
                i = o.selector),
                n.guid || (n.guid = Ft.guid++),
                (u = v.events) || (u = v.events = {}),
                (s = v.handle) || (s = v.handle = function(t) {
                    return "undefined" != typeof Ft && Ft.event.triggered !== t.type ? Ft.event.dispatch.apply(e, arguments) : void 0
                }
                ),
                t = (t || "").match(oe) || [""],
                c = t.length; c--; )
                    a = _e.exec(t[c]) || [],
                    p = g = a[1],
                    h = (a[2] || "").split(".").sort(),
                    p && (f = Ft.event.special[p] || {},
                    p = (i ? f.delegateType : f.bindType) || p,
                    f = Ft.event.special[p] || {},
                    l = Ft.extend({
                        type: p,
                        origType: g,
                        data: r,
                        handler: n,
                        guid: n.guid,
                        selector: i,
                        needsContext: i && Ft.expr.match.needsContext.test(i),
                        namespace: h.join(".")
                    }, o),
                    (d = u[p]) || (d = u[p] = [],
                    d.delegateCount = 0,
                    f.setup && f.setup.call(e, r, h, s) !== !1 || e.addEventListener && e.addEventListener(p, s)),
                    f.add && (f.add.call(e, l),
                    l.handler.guid || (l.handler.guid = n.guid)),
                    i ? d.splice(d.delegateCount++, 0, l) : d.push(l),
                    Ft.event.global[p] = !0)
        },
        remove: function(e, t, n, r, i) {
            var o, s, a, u, c, l, f, d, p, h, g, v = ce.hasData(e) && ce.get(e);
            if (v && (u = v.events)) {
                for (t = (t || "").match(oe) || [""],
                c = t.length; c--; )
                    if (a = _e.exec(t[c]) || [],
                    p = g = a[1],
                    h = (a[2] || "").split(".").sort(),
                    p) {
                        for (f = Ft.event.special[p] || {},
                        p = (r ? f.delegateType : f.bindType) || p,
                        d = u[p] || [],
                        a = a[2] && new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)"),
                        s = o = d.length; o--; )
                            l = d[o],
                            !i && g !== l.origType || n && n.guid !== l.guid || a && !a.test(l.namespace) || r && r !== l.selector && ("**" !== r || !l.selector) || (d.splice(o, 1),
                            l.selector && d.delegateCount--,
                            f.remove && f.remove.call(e, l));
                        s && !d.length && (f.teardown && f.teardown.call(e, h, v.handle) !== !1 || Ft.removeEvent(e, p, v.handle),
                        delete u[p])
                    } else
                        for (p in u)
                            Ft.event.remove(e, p + t[c], n, r, !0);
                Ft.isEmptyObject(u) && ce.remove(e, "handle events")
            }
        },
        dispatch: function(e) {
            e = Ft.event.fix(e);
            var t, n, r, i, o, s = [], a = St.call(arguments), u = (ce.get(this, "events") || {})[e.type] || [], c = Ft.event.special[e.type] || {};
            if (a[0] = e,
            e.delegateTarget = this,
            !c.preDispatch || c.preDispatch.call(this, e) !== !1) {
                for (s = Ft.event.handlers.call(this, e, u),
                t = 0; (i = s[t++]) && !e.isPropagationStopped(); )
                    for (e.currentTarget = i.elem,
                    n = 0; (o = i.handlers[n++]) && !e.isImmediatePropagationStopped(); )
                        e.rnamespace && !e.rnamespace.test(o.namespace) || (e.handleObj = o,
                        e.data = o.data,
                        r = ((Ft.event.special[o.origType] || {}).handle || o.handler).apply(i.elem, a),
                        void 0 !== r && (e.result = r) === !1 && (e.preventDefault(),
                        e.stopPropagation()));
                return c.postDispatch && c.postDispatch.call(this, e),
                e.result
            }
        },
        handlers: function(e, t) {
            var n, r, i, o, s = [], a = t.delegateCount, u = e.target;
            if (a && u.nodeType && ("click" !== e.type || isNaN(e.button) || e.button < 1))
                for (; u !== this; u = u.parentNode || this)
                    if (1 === u.nodeType && (u.disabled !== !0 || "click" !== e.type)) {
                        for (r = [],
                        n = 0; a > n; n++)
                            o = t[n],
                            i = o.selector + " ",
                            void 0 === r[i] && (r[i] = o.needsContext ? Ft(i, this).index(u) > -1 : Ft.find(i, this, null, [u]).length),
                            r[i] && r.push(o);
                        r.length && s.push({
                            elem: u,
                            handlers: r
                        })
                    }
            return a < t.length && s.push({
                elem: this,
                handlers: t.slice(a)
            }),
            s
        },
        props: "altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
        fixHooks: {},
        keyHooks: {
            props: "char charCode key keyCode".split(" "),
            filter: function(e, t) {
                return null == e.which && (e.which = null != t.charCode ? t.charCode : t.keyCode),
                e
            }
        },
        mouseHooks: {
            props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
            filter: function(e, t) {
                var n, r, i, o = t.button;
                return null == e.pageX && null != t.clientX && (n = e.target.ownerDocument || jt,
                r = n.documentElement,
                i = n.body,
                e.pageX = t.clientX + (r && r.scrollLeft || i && i.scrollLeft || 0) - (r && r.clientLeft || i && i.clientLeft || 0),
                e.pageY = t.clientY + (r && r.scrollTop || i && i.scrollTop || 0) - (r && r.clientTop || i && i.clientTop || 0)),
                e.which || void 0 === o || (e.which = 1 & o ? 1 : 2 & o ? 3 : 4 & o ? 2 : 0),
                e
            }
        },
        fix: function(e) {
            if (e[Ft.expando])
                return e;
            var t, n, r, i = e.type, o = e, s = this.fixHooks[i];
            for (s || (this.fixHooks[i] = s = Ce.test(i) ? this.mouseHooks : Te.test(i) ? this.keyHooks : {}),
            r = s.props ? this.props.concat(s.props) : this.props,
            e = new Ft.Event(o),
            t = r.length; t--; )
                n = r[t],
                e[n] = o[n];
            return e.target || (e.target = jt),
            3 === e.target.nodeType && (e.target = e.target.parentNode),
            s.filter ? s.filter(e, o) : e
        },
        special: {
            load: {
                noBubble: !0
            },
            focus: {
                trigger: function() {
                    return this !== g() && this.focus ? (this.focus(),
                    !1) : void 0
                },
                delegateType: "focusin"
            },
            blur: {
                trigger: function() {
                    return this === g() && this.blur ? (this.blur(),
                    !1) : void 0
                },
                delegateType: "focusout"
            },
            click: {
                trigger: function() {
                    return "checkbox" === this.type && this.click && Ft.nodeName(this, "input") ? (this.click(),
                    !1) : void 0
                },
                _default: function(e) {
                    return Ft.nodeName(e.target, "a")
                }
            },
            beforeunload: {
                postDispatch: function(e) {
                    void 0 !== e.result && e.originalEvent && (e.originalEvent.returnValue = e.result)
                }
            }
        }
    },
    Ft.removeEvent = function(e, t, n) {
        e.removeEventListener && e.removeEventListener(t, n)
    }
    ,
    Ft.Event = function(e, t) {
        return this instanceof Ft.Event ? (e && e.type ? (this.originalEvent = e,
        this.type = e.type,
        this.isDefaultPrevented = e.defaultPrevented || void 0 === e.defaultPrevented && e.returnValue === !1 ? p : h) : this.type = e,
        t && Ft.extend(this, t),
        this.timeStamp = e && e.timeStamp || Ft.now(),
        void (this[Ft.expando] = !0)) : new Ft.Event(e,t)
    }
    ,
    Ft.Event.prototype = {
        constructor: Ft.Event,
        isDefaultPrevented: h,
        isPropagationStopped: h,
        isImmediatePropagationStopped: h,
        isSimulated: !1,
        preventDefault: function() {
            var e = this.originalEvent;
            this.isDefaultPrevented = p,
            e && !this.isSimulated && e.preventDefault()
        },
        stopPropagation: function() {
            var e = this.originalEvent;
            this.isPropagationStopped = p,
            e && !this.isSimulated && e.stopPropagation()
        },
        stopImmediatePropagation: function() {
            var e = this.originalEvent;
            this.isImmediatePropagationStopped = p,
            e && !this.isSimulated && e.stopImmediatePropagation(),
            this.stopPropagation()
        }
    },
    Ft.each({
        mouseenter: "mouseover",
        mouseleave: "mouseout",
        pointerenter: "pointerover",
        pointerleave: "pointerout"
    }, function(e, t) {
        Ft.event.special[e] = {
            delegateType: t,
            bindType: t,
            handle: function(e) {
                var n, r = this, i = e.relatedTarget, o = e.handleObj;
                return i && (i === r || Ft.contains(r, i)) || (e.type = o.origType,
                n = o.handler.apply(this, arguments),
                e.type = t),
                n
            }
        }
    }),
    Ft.fn.extend({
        on: function(e, t, n, r) {
            return v(this, e, t, n, r)
        },
        one: function(e, t, n, r) {
            return v(this, e, t, n, r, 1)
        },
        off: function(e, t, n) {
            var r, i;
            if (e && e.preventDefault && e.handleObj)
                return r = e.handleObj,
                Ft(e.delegateTarget).off(r.namespace ? r.origType + "." + r.namespace : r.origType, r.selector, r.handler),
                this;
            if ("object" == typeof e) {
                for (i in e)
                    this.off(i, t, e[i]);
                return this
            }
            return t !== !1 && "function" != typeof t || (n = t,
            t = void 0),
            n === !1 && (n = h),
            this.each(function() {
                Ft.event.remove(this, e, n, t)
            })
        }
    }),
    ke = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,
    je = /<script|<style|<link/i,
    Se = /checked\s*(?:[^=]|=\s*.checked.)/i,
    qe = /^true\/(.*)/,
    Ee = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
    Ft.extend({
        htmlPrefilter: function(e) {
            return e.replace(ke, "<$1></$2>")
        },
        clone: function(e, t, n) {
            var r, i, o, s, a = e.cloneNode(!0), u = Ft.contains(e.ownerDocument, e);
            if (!(Lt.noCloneChecked || 1 !== e.nodeType && 11 !== e.nodeType || Ft.isXMLDoc(e)))
                for (s = l(a),
                o = l(e),
                r = 0,
                i = o.length; i > r; r++)
                    x(o[r], s[r]);
            if (t)
                if (n)
                    for (o = o || l(e),
                    s = s || l(a),
                    r = 0,
                    i = o.length; i > r; r++)
                        w(o[r], s[r]);
                else
                    w(e, a);
            return s = l(a, "script"),
            s.length > 0 && f(s, !u && l(e, "script")),
            a
        },
        cleanData: function(e) {
            for (var t, n, r, i = Ft.event.special, o = 0; void 0 !== (n = e[o]); o++)
                if (ue(n)) {
                    if (t = n[ce.expando]) {
                        if (t.events)
                            for (r in t.events)
                                i[r] ? Ft.event.remove(n, r) : Ft.removeEvent(n, r, t.handle);
                        n[ce.expando] = void 0
                    }
                    n[le.expando] && (n[le.expando] = void 0)
                }
        }
    }),
    Ft.fn.extend({
        domManip: T,
        detach: function(e) {
            return C(this, e, !0)
        },
        remove: function(e) {
            return C(this, e)
        },
        text: function(e) {
            return ae(this, function(e) {
                return void 0 === e ? Ft.text(this) : this.empty().each(function() {
                    1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || (this.textContent = e)
                })
            }, null, e, arguments.length)
        },
        append: function() {
            return T(this, arguments, function(e) {
                if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
                    var t = m(this, e);
                    t.appendChild(e)
                }
            })
        },
        prepend: function() {
            return T(this, arguments, function(e) {
                if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
                    var t = m(this, e);
                    t.insertBefore(e, t.firstChild)
                }
            })
        },
        before: function() {
            return T(this, arguments, function(e) {
                this.parentNode && this.parentNode.insertBefore(e, this)
            })
        },
        after: function() {
            return T(this, arguments, function(e) {
                this.parentNode && this.parentNode.insertBefore(e, this.nextSibling)
            })
        },
        empty: function() {
            for (var e, t = 0; null != (e = this[t]); t++)
                1 === e.nodeType && (Ft.cleanData(l(e, !1)),
                e.textContent = "");
            return this
        },
        clone: function(e, t) {
            return e = null != e && e,
            t = null == t ? e : t,
            this.map(function() {
                return Ft.clone(this, e, t)
            })
        },
        html: function(e) {
            return ae(this, function(e) {
                var t = this[0] || {}
                  , n = 0
                  , r = this.length;
                if (void 0 === e && 1 === t.nodeType)
                    return t.innerHTML;
                if ("string" == typeof e && !je.test(e) && !we[(ye.exec(e) || ["", ""])[1].toLowerCase()]) {
                    e = Ft.htmlPrefilter(e);
                    try {
                        for (; r > n; n++)
                            t = this[n] || {},
                            1 === t.nodeType && (Ft.cleanData(l(t, !1)),
                            t.innerHTML = e);
                        t = 0
                    } catch (e) {}
                }
                t && this.empty().append(e)
            }, null, e, arguments.length)
        },
        replaceWith: function() {
            var e = [];
            return T(this, arguments, function(t) {
                var n = this.parentNode;
                Ft.inArray(this, e) < 0 && (Ft.cleanData(l(this)),
                n && n.replaceChild(t, this))
            }, e)
        }
    }),
    Ft.each({
        appendTo: "append",
        prependTo: "prepend",
        insertBefore: "before",
        insertAfter: "after",
        replaceAll: "replaceWith"
    }, function(e, t) {
        Ft.fn[e] = function(e) {
            for (var n, r = [], i = Ft(e), o = i.length - 1, s = 0; o >= s; s++)
                n = s === o ? this : this.clone(!0),
                Ft(i[s])[t](n),
                Et.apply(r, n.get());
            return this.pushStack(r)
        }
    }),
    Ne = {
        HTML: "block",
        BODY: "block"
    },
    De = /^margin/,
    He = new RegExp("^(" + pe + ")(?!px)[a-z%]+$","i"),
    Le = function(t) {
        var n = t.ownerDocument.defaultView;
        return n && n.opener || (n = e),
        n.getComputedStyle(t)
    }
    ,
    Oe = function(e, t, n, r) {
        var i, o, s = {};
        for (o in t)
            s[o] = e.style[o],
            e.style[o] = t[o];
        i = n.apply(e, r || []);
        for (o in t)
            e.style[o] = s[o];
        return i
    }
    ,
    Fe = jt.documentElement,
    !function() {
        function t() {
            a.style.cssText = "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",
            a.innerHTML = "",
            Fe.appendChild(s);
            var t = e.getComputedStyle(a);
            n = "1%" !== t.top,
            o = "2px" === t.marginLeft,
            r = "4px" === t.width,
            a.style.marginRight = "50%",
            i = "4px" === t.marginRight,
            Fe.removeChild(s)
        }
        var n, r, i, o, s = jt.createElement("div"), a = jt.createElement("div");
        a.style && (a.style.backgroundClip = "content-box",
        a.cloneNode(!0).style.backgroundClip = "",
        Lt.clearCloneStyle = "content-box" === a.style.backgroundClip,
        s.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",
        s.appendChild(a),
        Ft.extend(Lt, {
            pixelPosition: function() {
                return t(),
                n
            },
            boxSizingReliable: function() {
                return null == r && t(),
                r
            },
            pixelMarginRight: function() {
                return null == r && t(),
                i
            },
            reliableMarginLeft: function() {
                return null == r && t(),
                o
            },
            reliableMarginRight: function() {
                var t, n = a.appendChild(jt.createElement("div"));
                return n.style.cssText = a.style.cssText = "-webkit-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",
                n.style.marginRight = n.style.width = "0",
                a.style.width = "1px",
                Fe.appendChild(s),
                t = !parseFloat(e.getComputedStyle(n).marginRight),
                Fe.removeChild(s),
                a.removeChild(n),
                t
            }
        }))
    }(),
    Ie = /^(none|table(?!-c[ea]).+)/,
    Pe = {
        position: "absolute",
        visibility: "hidden",
        display: "block"
    },
    Me = {
        letterSpacing: "0",
        fontWeight: "400"
    },
    Re = ["Webkit", "O", "Moz", "ms"],
    Be = jt.createElement("div").style,
    Ft.extend({
        cssHooks: {
            opacity: {
                get: function(e, t) {
                    if (t) {
                        var n = j(e, "opacity");
                        return "" === n ? "1" : n
                    }
                }
            }
        },
        cssNumber: {
            animationIterationCount: !0,
            columnCount: !0,
            fillOpacity: !0,
            flexGrow: !0,
            flexShrink: !0,
            fontWeight: !0,
            lineHeight: !0,
            opacity: !0,
            order: !0,
            orphans: !0,
            widows: !0,
            zIndex: !0,
            zoom: !0
        },
        cssProps: {
            float: "cssFloat"
        },
        style: function(e, t, n, r) {
            if (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) {
                var i, o, s, a = Ft.camelCase(t), u = e.style;
                return t = Ft.cssProps[a] || (Ft.cssProps[a] = q(a) || a),
                s = Ft.cssHooks[t] || Ft.cssHooks[a],
                void 0 === n ? s && "get"in s && void 0 !== (i = s.get(e, !1, r)) ? i : u[t] : (o = typeof n,
                "string" === o && (i = he.exec(n)) && i[1] && (n = c(e, t, i),
                o = "number"),
                void (null != n && n === n && ("number" === o && (n += i && i[3] || (Ft.cssNumber[a] ? "" : "px")),
                Lt.clearCloneStyle || "" !== n || 0 !== t.indexOf("background") || (u[t] = "inherit"),
                s && "set"in s && void 0 === (n = s.set(e, n, r)) || (u[t] = n))))
            }
        },
        css: function(e, t, n, r) {
            var i, o, s, a = Ft.camelCase(t);
            return t = Ft.cssProps[a] || (Ft.cssProps[a] = q(a) || a),
            s = Ft.cssHooks[t] || Ft.cssHooks[a],
            s && "get"in s && (i = s.get(e, !0, n)),
            void 0 === i && (i = j(e, t, r)),
            "normal" === i && t in Me && (i = Me[t]),
            "" === n || n ? (o = parseFloat(i),
            n === !0 || isFinite(o) ? o || 0 : i) : i
        }
    }),
    Ft.each(["height", "width"], function(e, t) {
        Ft.cssHooks[t] = {
            get: function(e, n, r) {
                return n ? Ie.test(Ft.css(e, "display")) && 0 === e.offsetWidth ? Oe(e, Pe, function() {
                    return N(e, t, r)
                }) : N(e, t, r) : void 0
            },
            set: function(e, n, r) {
                var i, o = r && Le(e), s = r && A(e, t, r, "border-box" === Ft.css(e, "boxSizing", !1, o), o);
                return s && (i = he.exec(n)) && "px" !== (i[3] || "px") && (e.style[t] = n,
                n = Ft.css(e, t)),
                E(e, n, s)
            }
        }
    }),
    Ft.cssHooks.marginLeft = S(Lt.reliableMarginLeft, function(e, t) {
        return t ? (parseFloat(j(e, "marginLeft")) || e.getBoundingClientRect().left - Oe(e, {
            marginLeft: 0
        }, function() {
            return e.getBoundingClientRect().left
        })) + "px" : void 0
    }),
    Ft.cssHooks.marginRight = S(Lt.reliableMarginRight, function(e, t) {
        return t ? Oe(e, {
            display: "inline-block"
        }, j, [e, "marginRight"]) : void 0
    }),
    Ft.each({
        margin: "",
        padding: "",
        border: "Width"
    }, function(e, t) {
        Ft.cssHooks[e + t] = {
            expand: function(n) {
                for (var r = 0, i = {}, o = "string" == typeof n ? n.split(" ") : [n]; 4 > r; r++)
                    i[e + ge[r] + t] = o[r] || o[r - 2] || o[0];
                return i
            }
        },
        De.test(e) || (Ft.cssHooks[e + t].set = E)
    }),
    Ft.fn.extend({
        css: function(e, t) {
            return ae(this, function(e, t, n) {
                var r, i, o = {}, s = 0;
                if (Ft.isArray(t)) {
                    for (r = Le(e),
                    i = t.length; i > s; s++)
                        o[t[s]] = Ft.css(e, t[s], !1, r);
                    return o
                }
                return void 0 !== n ? Ft.style(e, t, n) : Ft.css(e, t)
            }, e, t, arguments.length > 1)
        },
        show: function() {
            return D(this, !0)
        },
        hide: function() {
            return D(this)
        },
        toggle: function(e) {
            return "boolean" == typeof e ? e ? this.show() : this.hide() : this.each(function() {
                ve(this) ? Ft(this).show() : Ft(this).hide()
            })
        }
    }),
    Ft.Tween = H,
    H.prototype = {
        constructor: H,
        init: function(e, t, n, r, i, o) {
            this.elem = e,
            this.prop = n,
            this.easing = i || Ft.easing._default,
            this.options = t,
            this.start = this.now = this.cur(),
            this.end = r,
            this.unit = o || (Ft.cssNumber[n] ? "" : "px")
        },
        cur: function() {
            var e = H.propHooks[this.prop];
            return e && e.get ? e.get(this) : H.propHooks._default.get(this)
        },
        run: function(e) {
            var t, n = H.propHooks[this.prop];
            return this.options.duration ? this.pos = t = Ft.easing[this.easing](e, this.options.duration * e, 0, 1, this.options.duration) : this.pos = t = e,
            this.now = (this.end - this.start) * t + this.start,
            this.options.step && this.options.step.call(this.elem, this.now, this),
            n && n.set ? n.set(this) : H.propHooks._default.set(this),
            this
        }
    },
    H.prototype.init.prototype = H.prototype,
    H.propHooks = {
        _default: {
            get: function(e) {
                var t;
                return 1 !== e.elem.nodeType || null != e.elem[e.prop] && null == e.elem.style[e.prop] ? e.elem[e.prop] : (t = Ft.css(e.elem, e.prop, ""),
                t && "auto" !== t ? t : 0)
            },
            set: function(e) {
                Ft.fx.step[e.prop] ? Ft.fx.step[e.prop](e) : 1 !== e.elem.nodeType || null == e.elem.style[Ft.cssProps[e.prop]] && !Ft.cssHooks[e.prop] ? e.elem[e.prop] = e.now : Ft.style(e.elem, e.prop, e.now + e.unit)
            }
        }
    },
    H.propHooks.scrollTop = H.propHooks.scrollLeft = {
        set: function(e) {
            e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now)
        }
    },
    Ft.easing = {
        linear: function(e) {
            return e
        },
        swing: function(e) {
            return .5 - Math.cos(e * Math.PI) / 2
        },
        _default: "swing"
    },
    Ft.fx = H.prototype.init,
    Ft.fx.step = {},
    ze = /^(?:toggle|show|hide)$/,
    Xe = /queueHooks$/,
    Ft.Animation = Ft.extend(M, {
        tweeners: {
            "*": [function(e, t) {
                var n = this.createTween(e, t);
                return c(n.elem, e, he.exec(t), n),
                n
            }
            ]
        },
        tweener: function(e, t) {
            Ft.isFunction(e) ? (t = e,
            e = ["*"]) : e = e.match(oe);
            for (var n, r = 0, i = e.length; i > r; r++)
                n = e[r],
                M.tweeners[n] = M.tweeners[n] || [],
                M.tweeners[n].unshift(t)
        },
        prefilters: [I],
        prefilter: function(e, t) {
            t ? M.prefilters.unshift(e) : M.prefilters.push(e)
        }
    }),
    Ft.speed = function(e, t, n) {
        var r = e && "object" == typeof e ? Ft.extend({}, e) : {
            complete: n || !n && t || Ft.isFunction(e) && e,
            duration: e,
            easing: n && t || t && !Ft.isFunction(t) && t
        };
        return r.duration = Ft.fx.off ? 0 : "number" == typeof r.duration ? r.duration : r.duration in Ft.fx.speeds ? Ft.fx.speeds[r.duration] : Ft.fx.speeds._default,
        null != r.queue && r.queue !== !0 || (r.queue = "fx"),
        r.old = r.complete,
        r.complete = function() {
            Ft.isFunction(r.old) && r.old.call(this),
            r.queue && Ft.dequeue(this, r.queue)
        }
        ,
        r
    }
    ,
    Ft.fn.extend({
        fadeTo: function(e, t, n, r) {
            return this.filter(ve).css("opacity", 0).show().end().animate({
                opacity: t
            }, e, n, r)
        },
        animate: function(e, t, n, r) {
            var i = Ft.isEmptyObject(e)
              , o = Ft.speed(t, n, r)
              , s = function() {
                var t = M(this, Ft.extend({}, e), o);
                (i || ce.get(this, "finish")) && t.stop(!0)
            };
            return s.finish = s,
            i || o.queue === !1 ? this.each(s) : this.queue(o.queue, s)
        },
        stop: function(e, t, n) {
            var r = function(e) {
                var t = e.stop;
                delete e.stop,
                t(n)
            };
            return "string" != typeof e && (n = t,
            t = e,
            e = void 0),
            t && e !== !1 && this.queue(e || "fx", []),
            this.each(function() {
                var t = !0
                  , i = null != e && e + "queueHooks"
                  , o = Ft.timers
                  , s = ce.get(this);
                if (i)
                    s[i] && s[i].stop && r(s[i]);
                else
                    for (i in s)
                        s[i] && s[i].stop && Xe.test(i) && r(s[i]);
                for (i = o.length; i--; )
                    o[i].elem !== this || null != e && o[i].queue !== e || (o[i].anim.stop(n),
                    t = !1,
                    o.splice(i, 1));
                !t && n || Ft.dequeue(this, e)
            })
        },
        finish: function(e) {
            return e !== !1 && (e = e || "fx"),
            this.each(function() {
                var t, n = ce.get(this), r = n[e + "queue"], i = n[e + "queueHooks"], o = Ft.timers, s = r ? r.length : 0;
                for (n.finish = !0,
                Ft.queue(this, e, []),
                i && i.stop && i.stop.call(this, !0),
                t = o.length; t--; )
                    o[t].elem === this && o[t].queue === e && (o[t].anim.stop(!0),
                    o.splice(t, 1));
                for (t = 0; s > t; t++)
                    r[t] && r[t].finish && r[t].finish.call(this);
                delete n.finish
            })
        }
    }),
    Ft.each(["toggle", "show", "hide"], function(e, t) {
        var n = Ft.fn[t];
        Ft.fn[t] = function(e, r, i) {
            return null == e || "boolean" == typeof e ? n.apply(this, arguments) : this.animate(O(t, !0), e, r, i)
        }
    }),
    Ft.each({
        slideDown: O("show"),
        slideUp: O("hide"),
        slideToggle: O("toggle"),
        fadeIn: {
            opacity: "show"
        },
        fadeOut: {
            opacity: "hide"
        },
        fadeToggle: {
            opacity: "toggle"
        }
    }, function(e, t) {
        Ft.fn[e] = function(e, n, r) {
            return this.animate(t, e, n, r);
        }
    }),
    Ft.timers = [],
    Ft.fx.tick = function() {
        var e, t = 0, n = Ft.timers;
        for (We = Ft.now(); t < n.length; t++)
            e = n[t],
            e() || n[t] !== e || n.splice(t--, 1);
        n.length || Ft.fx.stop(),
        We = void 0
    }
    ,
    Ft.fx.timer = function(e) {
        Ft.timers.push(e),
        e() ? Ft.fx.start() : Ft.timers.pop()
    }
    ,
    Ft.fx.interval = 13,
    Ft.fx.start = function() {
        $e || ($e = e.setInterval(Ft.fx.tick, Ft.fx.interval))
    }
    ,
    Ft.fx.stop = function() {
        e.clearInterval($e),
        $e = null
    }
    ,
    Ft.fx.speeds = {
        slow: 600,
        fast: 200,
        _default: 400
    },
    Ft.fn.delay = function(t, n) {
        return t = Ft.fx ? Ft.fx.speeds[t] || t : t,
        n = n || "fx",
        this.queue(n, function(n, r) {
            var i = e.setTimeout(n, t);
            r.stop = function() {
                e.clearTimeout(i)
            }
        })
    }
    ,
    function() {
        var e = jt.createElement("input")
          , t = jt.createElement("select")
          , n = t.appendChild(jt.createElement("option"));
        e.type = "checkbox",
        Lt.checkOn = "" !== e.value,
        Lt.optSelected = n.selected,
        t.disabled = !0,
        Lt.optDisabled = !n.disabled,
        e = jt.createElement("input"),
        e.value = "t",
        e.type = "radio",
        Lt.radioValue = "t" === e.value
    }(),
    Ve = Ft.expr.attrHandle,
    Ft.fn.extend({
        attr: function(e, t) {
            return ae(this, Ft.attr, e, t, arguments.length > 1)
        },
        removeAttr: function(e) {
            return this.each(function() {
                Ft.removeAttr(this, e)
            })
        }
    }),
    Ft.extend({
        attr: function(e, t, n) {
            var r, i, o = e.nodeType;
            if (3 !== o && 8 !== o && 2 !== o)
                return "undefined" == typeof e.getAttribute ? Ft.prop(e, t, n) : (1 === o && Ft.isXMLDoc(e) || (t = t.toLowerCase(),
                i = Ft.attrHooks[t] || (Ft.expr.match.bool.test(t) ? Ue : void 0)),
                void 0 !== n ? null === n ? void Ft.removeAttr(e, t) : i && "set"in i && void 0 !== (r = i.set(e, n, t)) ? r : (e.setAttribute(t, n + ""),
                n) : i && "get"in i && null !== (r = i.get(e, t)) ? r : (r = Ft.find.attr(e, t),
                null == r ? void 0 : r))
        },
        attrHooks: {
            type: {
                set: function(e, t) {
                    if (!Lt.radioValue && "radio" === t && Ft.nodeName(e, "input")) {
                        var n = e.value;
                        return e.setAttribute("type", t),
                        n && (e.value = n),
                        t
                    }
                }
            }
        },
        removeAttr: function(e, t) {
            var n, r, i = 0, o = t && t.match(oe);
            if (o && 1 === e.nodeType)
                for (; n = o[i++]; )
                    r = Ft.propFix[n] || n,
                    Ft.expr.match.bool.test(n) && (e[r] = !1),
                    e.removeAttribute(n)
        }
    }),
    Ue = {
        set: function(e, t, n) {
            return t === !1 ? Ft.removeAttr(e, n) : e.setAttribute(n, n),
            n
        }
    },
    Ft.each(Ft.expr.match.bool.source.match(/\w+/g), function(e, t) {
        var n = Ve[t] || Ft.find.attr;
        Ve[t] = function(e, t, r) {
            var i, o;
            return r || (o = Ve[t],
            Ve[t] = i,
            i = null != n(e, t, r) ? t.toLowerCase() : null,
            Ve[t] = o),
            i
        }
    }),
    Ye = /^(?:input|select|textarea|button)$/i,
    Ge = /^(?:a|area)$/i,
    Ft.fn.extend({
        prop: function(e, t) {
            return ae(this, Ft.prop, e, t, arguments.length > 1)
        },
        removeProp: function(e) {
            return this.each(function() {
                delete this[Ft.propFix[e] || e]
            })
        }
    }),
    Ft.extend({
        prop: function(e, t, n) {
            var r, i, o = e.nodeType;
            if (3 !== o && 8 !== o && 2 !== o)
                return 1 === o && Ft.isXMLDoc(e) || (t = Ft.propFix[t] || t,
                i = Ft.propHooks[t]),
                void 0 !== n ? i && "set"in i && void 0 !== (r = i.set(e, n, t)) ? r : e[t] = n : i && "get"in i && null !== (r = i.get(e, t)) ? r : e[t]
        },
        propHooks: {
            tabIndex: {
                get: function(e) {
                    var t = Ft.find.attr(e, "tabindex");
                    return t ? parseInt(t, 10) : Ye.test(e.nodeName) || Ge.test(e.nodeName) && e.href ? 0 : -1
                }
            }
        },
        propFix: {
            for: "htmlFor",
            class: "className"
        }
    }),
    Lt.optSelected || (Ft.propHooks.selected = {
        get: function(e) {
            var t = e.parentNode;
            return t && t.parentNode && t.parentNode.selectedIndex,
            null
        },
        set: function(e) {
            var t = e.parentNode;
            t && (t.selectedIndex,
            t.parentNode && t.parentNode.selectedIndex)
        }
    }),
    Ft.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function() {
        Ft.propFix[this.toLowerCase()] = this
    }),
    Je = /[\t\r\n\f]/g,
    Ft.fn.extend({
        addClass: function(e) {
            var t, n, r, i, o, s, a, u = 0;
            if (Ft.isFunction(e))
                return this.each(function(t) {
                    Ft(this).addClass(e.call(this, t, R(this)))
                });
            if ("string" == typeof e && e)
                for (t = e.match(oe) || []; n = this[u++]; )
                    if (i = R(n),
                    r = 1 === n.nodeType && (" " + i + " ").replace(Je, " ")) {
                        for (s = 0; o = t[s++]; )
                            r.indexOf(" " + o + " ") < 0 && (r += o + " ");
                        a = Ft.trim(r),
                        i !== a && n.setAttribute("class", a)
                    }
            return this
        },
        removeClass: function(e) {
            var t, n, r, i, o, s, a, u = 0;
            if (Ft.isFunction(e))
                return this.each(function(t) {
                    Ft(this).removeClass(e.call(this, t, R(this)))
                });
            if (!arguments.length)
                return this.attr("class", "");
            if ("string" == typeof e && e)
                for (t = e.match(oe) || []; n = this[u++]; )
                    if (i = R(n),
                    r = 1 === n.nodeType && (" " + i + " ").replace(Je, " ")) {
                        for (s = 0; o = t[s++]; )
                            for (; r.indexOf(" " + o + " ") > -1; )
                                r = r.replace(" " + o + " ", " ");
                        a = Ft.trim(r),
                        i !== a && n.setAttribute("class", a)
                    }
            return this
        },
        toggleClass: function(e, t) {
            var n = typeof e;
            return "boolean" == typeof t && "string" === n ? t ? this.addClass(e) : this.removeClass(e) : Ft.isFunction(e) ? this.each(function(n) {
                Ft(this).toggleClass(e.call(this, n, R(this), t), t)
            }) : this.each(function() {
                var t, r, i, o;
                if ("string" === n)
                    for (r = 0,
                    i = Ft(this),
                    o = e.match(oe) || []; t = o[r++]; )
                        i.hasClass(t) ? i.removeClass(t) : i.addClass(t);
                else
                    void 0 !== e && "boolean" !== n || (t = R(this),
                    t && ce.set(this, "__className__", t),
                    this.setAttribute && this.setAttribute("class", t || e === !1 ? "" : ce.get(this, "__className__") || ""))
            })
        },
        hasClass: function(e) {
            var t, n, r = 0;
            for (t = " " + e + " "; n = this[r++]; )
                if (1 === n.nodeType && (" " + R(n) + " ").replace(Je, " ").indexOf(t) > -1)
                    return !0;
            return !1
        }
    }),
    Qe = /\r/g,
    Ke = /[\x20\t\r\n\f]+/g,
    Ft.fn.extend({
        val: function(e) {
            var t, n, r, i = this[0];
            return arguments.length ? (r = Ft.isFunction(e),
            this.each(function(n) {
                var i;
                1 === this.nodeType && (i = r ? e.call(this, n, Ft(this).val()) : e,
                null == i ? i = "" : "number" == typeof i ? i += "" : Ft.isArray(i) && (i = Ft.map(i, function(e) {
                    return null == e ? "" : e + ""
                })),
                t = Ft.valHooks[this.type] || Ft.valHooks[this.nodeName.toLowerCase()],
                t && "set"in t && void 0 !== t.set(this, i, "value") || (this.value = i))
            })) : i ? (t = Ft.valHooks[i.type] || Ft.valHooks[i.nodeName.toLowerCase()],
            t && "get"in t && void 0 !== (n = t.get(i, "value")) ? n : (n = i.value,
            "string" == typeof n ? n.replace(Qe, "") : null == n ? "" : n)) : void 0
        }
    }),
    Ft.extend({
        valHooks: {
            option: {
                get: function(e) {
                    var t = Ft.find.attr(e, "value");
                    return null != t ? t : Ft.trim(Ft.text(e)).replace(Ke, " ")
                }
            },
            select: {
                get: function(e) {
                    for (var t, n, r = e.options, i = e.selectedIndex, o = "select-one" === e.type || 0 > i, s = o ? null : [], a = o ? i + 1 : r.length, u = 0 > i ? a : o ? i : 0; a > u; u++)
                        if (n = r[u],
                        (n.selected || u === i) && (Lt.optDisabled ? !n.disabled : null === n.getAttribute("disabled")) && (!n.parentNode.disabled || !Ft.nodeName(n.parentNode, "optgroup"))) {
                            if (t = Ft(n).val(),
                            o)
                                return t;
                            s.push(t)
                        }
                    return s
                },
                set: function(e, t) {
                    for (var n, r, i = e.options, o = Ft.makeArray(t), s = i.length; s--; )
                        r = i[s],
                        (r.selected = Ft.inArray(Ft.valHooks.option.get(r), o) > -1) && (n = !0);
                    return n || (e.selectedIndex = -1),
                    o
                }
            }
        }
    }),
    Ft.each(["radio", "checkbox"], function() {
        Ft.valHooks[this] = {
            set: function(e, t) {
                return Ft.isArray(t) ? e.checked = Ft.inArray(Ft(e).val(), t) > -1 : void 0
            }
        },
        Lt.checkOn || (Ft.valHooks[this].get = function(e) {
            return null === e.getAttribute("value") ? "on" : e.value
        }
        )
    }),
    Ze = /^(?:focusinfocus|focusoutblur)$/,
    Ft.extend(Ft.event, {
        trigger: function(t, n, r, i) {
            var o, s, a, u, c, l, f, d = [r || jt], p = Ht.call(t, "type") ? t.type : t, h = Ht.call(t, "namespace") ? t.namespace.split(".") : [];
            if (s = a = r = r || jt,
            3 !== r.nodeType && 8 !== r.nodeType && !Ze.test(p + Ft.event.triggered) && (p.indexOf(".") > -1 && (h = p.split("."),
            p = h.shift(),
            h.sort()),
            c = p.indexOf(":") < 0 && "on" + p,
            t = t[Ft.expando] ? t : new Ft.Event(p,"object" == typeof t && t),
            t.isTrigger = i ? 2 : 3,
            t.namespace = h.join("."),
            t.rnamespace = t.namespace ? new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)") : null,
            t.result = void 0,
            t.target || (t.target = r),
            n = null == n ? [t] : Ft.makeArray(n, [t]),
            f = Ft.event.special[p] || {},
            i || !f.trigger || f.trigger.apply(r, n) !== !1)) {
                if (!i && !f.noBubble && !Ft.isWindow(r)) {
                    for (u = f.delegateType || p,
                    Ze.test(u + p) || (s = s.parentNode); s; s = s.parentNode)
                        d.push(s),
                        a = s;
                    a === (r.ownerDocument || jt) && d.push(a.defaultView || a.parentWindow || e)
                }
                for (o = 0; (s = d[o++]) && !t.isPropagationStopped(); )
                    t.type = o > 1 ? u : f.bindType || p,
                    l = (ce.get(s, "events") || {})[t.type] && ce.get(s, "handle"),
                    l && l.apply(s, n),
                    l = c && s[c],
                    l && l.apply && ue(s) && (t.result = l.apply(s, n),
                    t.result === !1 && t.preventDefault());
                return t.type = p,
                i || t.isDefaultPrevented() || f._default && f._default.apply(d.pop(), n) !== !1 || !ue(r) || c && Ft.isFunction(r[p]) && !Ft.isWindow(r) && (a = r[c],
                a && (r[c] = null),
                Ft.event.triggered = p,
                r[p](),
                Ft.event.triggered = void 0,
                a && (r[c] = a)),
                t.result
            }
        },
        simulate: function(e, t, n) {
            var r = Ft.extend(new Ft.Event, n, {
                type: e,
                isSimulated: !0
            });
            Ft.event.trigger(r, null, t)
        }
    }),
    Ft.fn.extend({
        trigger: function(e, t) {
            return this.each(function() {
                Ft.event.trigger(e, t, this)
            })
        },
        triggerHandler: function(e, t) {
            var n = this[0];
            return n ? Ft.event.trigger(e, t, n, !0) : void 0
        }
    }),
    Ft.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "), function(e, t) {
        Ft.fn[t] = function(e, n) {
            return arguments.length > 0 ? this.on(t, null, e, n) : this.trigger(t)
        }
    }),
    Ft.fn.extend({
        hover: function(e, t) {
            return this.mouseenter(e).mouseleave(t || e)
        }
    }),
    Lt.focusin = "onfocusin"in e,
    Lt.focusin || Ft.each({
        focus: "focusin",
        blur: "focusout"
    }, function(e, t) {
        var n = function(e) {
            Ft.event.simulate(t, e.target, Ft.event.fix(e))
        };
        Ft.event.special[t] = {
            setup: function() {
                var r = this.ownerDocument || this
                  , i = ce.access(r, t);
                i || r.addEventListener(e, n, !0),
                ce.access(r, t, (i || 0) + 1)
            },
            teardown: function() {
                var r = this.ownerDocument || this
                  , i = ce.access(r, t) - 1;
                i ? ce.access(r, t, i) : (r.removeEventListener(e, n, !0),
                ce.remove(r, t))
            }
        }
    }),
    et = e.location,
    tt = Ft.now(),
    nt = /\?/,
    Ft.parseJSON = function(e) {
        return JSON.parse(e + "")
    }
    ,
    Ft.parseXML = function(t) {
        var n;
        if (!t || "string" != typeof t)
            return null;
        try {
            n = (new e.DOMParser).parseFromString(t, "text/xml")
        } catch (e) {
            n = void 0
        }
        return n && !n.getElementsByTagName("parsererror").length || Ft.error("Invalid XML: " + t),
        n
    }
    ,
    rt = /#.*$/,
    it = /([?&])_=[^&]*/,
    ot = /^(.*?):[ \t]*([^\r\n]*)$/gm,
    st = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
    at = /^(?:GET|HEAD)$/,
    ut = /^\/\//,
    ct = {},
    lt = {},
    ft = "*/".concat("*"),
    dt = jt.createElement("a"),
    dt.href = et.href,
    Ft.extend({
        active: 0,
        lastModified: {},
        etag: {},
        ajaxSettings: {
            url: et.href,
            type: "GET",
            isLocal: st.test(et.protocol),
            global: !0,
            processData: !0,
            async: !0,
            contentType: "application/x-www-form-urlencoded; charset=UTF-8",
            accepts: {
                "*": ft,
                text: "text/plain",
                html: "text/html",
                xml: "application/xml, text/xml",
                json: "application/json, text/javascript"
            },
            contents: {
                xml: /\bxml\b/,
                html: /\bhtml/,
                json: /\bjson\b/
            },
            responseFields: {
                xml: "responseXML",
                text: "responseText",
                json: "responseJSON"
            },
            converters: {
                "* text": String,
                "text html": !0,
                "text json": Ft.parseJSON,
                "text xml": Ft.parseXML
            },
            flatOptions: {
                url: !0,
                context: !0
            }
        },
        ajaxSetup: function(e, t) {
            return t ? $($(e, Ft.ajaxSettings), t) : $(Ft.ajaxSettings, e)
        },
        ajaxPrefilter: B(ct),
        ajaxTransport: B(lt),
        ajax: function(t, n) {
            function r(t, n, r, a) {
                var c, f, y, b, x, C = n;
                2 !== w && (w = 2,
                u && e.clearTimeout(u),
                i = void 0,
                s = a || "",
                T.readyState = t > 0 ? 4 : 0,
                c = t >= 200 && 300 > t || 304 === t,
                r && (b = z(d, T, r)),
                b = X(d, b, T, c),
                c ? (d.ifModified && (x = T.getResponseHeader("Last-Modified"),
                x && (Ft.lastModified[o] = x),
                x = T.getResponseHeader("etag"),
                x && (Ft.etag[o] = x)),
                204 === t || "HEAD" === d.type ? C = "nocontent" : 304 === t ? C = "notmodified" : (C = b.state,
                f = b.data,
                y = b.error,
                c = !y)) : (y = C,
                !t && C || (C = "error",
                0 > t && (t = 0))),
                T.status = t,
                T.statusText = (n || C) + "",
                c ? g.resolveWith(p, [f, C, T]) : g.rejectWith(p, [T, C, y]),
                T.statusCode(m),
                m = void 0,
                l && h.trigger(c ? "ajaxSuccess" : "ajaxError", [T, d, c ? f : y]),
                v.fireWith(p, [T, C]),
                l && (h.trigger("ajaxComplete", [T, d]),
                --Ft.active || Ft.event.trigger("ajaxStop")))
            }
            "object" == typeof t && (n = t,
            t = void 0),
            n = n || {};
            var i, o, s, a, u, c, l, f, d = Ft.ajaxSetup({}, n), p = d.context || d, h = d.context && (p.nodeType || p.jquery) ? Ft(p) : Ft.event, g = Ft.Deferred(), v = Ft.Callbacks("once memory"), m = d.statusCode || {}, y = {}, b = {}, w = 0, x = "canceled", T = {
                readyState: 0,
                getResponseHeader: function(e) {
                    var t;
                    if (2 === w) {
                        if (!a)
                            for (a = {}; t = ot.exec(s); )
                                a[t[1].toLowerCase()] = t[2];
                        t = a[e.toLowerCase()]
                    }
                    return null == t ? null : t
                },
                getAllResponseHeaders: function() {
                    return 2 === w ? s : null
                },
                setRequestHeader: function(e, t) {
                    var n = e.toLowerCase();
                    return w || (e = b[n] = b[n] || e,
                    y[e] = t),
                    this
                },
                overrideMimeType: function(e) {
                    return w || (d.mimeType = e),
                    this
                },
                statusCode: function(e) {
                    var t;
                    if (e)
                        if (2 > w)
                            for (t in e)
                                m[t] = [m[t], e[t]];
                        else
                            T.always(e[T.status]);
                    return this
                },
                abort: function(e) {
                    var t = e || x;
                    return i && i.abort(t),
                    r(0, t),
                    this
                }
            };
            if (g.promise(T).complete = v.add,
            T.success = T.done,
            T.error = T.fail,
            d.url = ((t || d.url || et.href) + "").replace(rt, "").replace(ut, et.protocol + "//"),
            d.type = n.method || n.type || d.method || d.type,
            d.dataTypes = Ft.trim(d.dataType || "*").toLowerCase().match(oe) || [""],
            null == d.crossDomain) {
                c = jt.createElement("a");
                try {
                    c.href = d.url,
                    c.href = c.href,
                    d.crossDomain = dt.protocol + "//" + dt.host != c.protocol + "//" + c.host
                } catch (e) {
                    d.crossDomain = !0
                }
            }
            if (d.data && d.processData && "string" != typeof d.data && (d.data = Ft.param(d.data, d.traditional)),
            W(ct, d, n, T),
            2 === w)
                return T;
            l = Ft.event && d.global,
            l && 0 === Ft.active++ && Ft.event.trigger("ajaxStart"),
            d.type = d.type.toUpperCase(),
            d.hasContent = !at.test(d.type),
            o = d.url,
            d.hasContent || (d.data && (o = d.url += (nt.test(o) ? "&" : "?") + d.data,
            delete d.data),
            d.cache === !1 && (d.url = it.test(o) ? o.replace(it, "$1_=" + tt++) : o + (nt.test(o) ? "&" : "?") + "_=" + tt++)),
            d.ifModified && (Ft.lastModified[o] && T.setRequestHeader("If-Modified-Since", Ft.lastModified[o]),
            Ft.etag[o] && T.setRequestHeader("If-None-Match", Ft.etag[o])),
            (d.data && d.hasContent && d.contentType !== !1 || n.contentType) && T.setRequestHeader("Content-Type", d.contentType),
            T.setRequestHeader("Accept", d.dataTypes[0] && d.accepts[d.dataTypes[0]] ? d.accepts[d.dataTypes[0]] + ("*" !== d.dataTypes[0] ? ", " + ft + "; q=0.01" : "") : d.accepts["*"]);
            for (f in d.headers)
                T.setRequestHeader(f, d.headers[f]);
            if (d.beforeSend && (d.beforeSend.call(p, T, d) === !1 || 2 === w))
                return T.abort();
            x = "abort";
            for (f in {
                success: 1,
                error: 1,
                complete: 1
            })
                T[f](d[f]);
            if (i = W(lt, d, n, T)) {
                if (T.readyState = 1,
                l && h.trigger("ajaxSend", [T, d]),
                2 === w)
                    return T;
                d.async && d.timeout > 0 && (u = e.setTimeout(function() {
                    T.abort("timeout")
                }, d.timeout));
                try {
                    w = 1,
                    i.send(y, r)
                } catch (e) {
                    if (!(2 > w))
                        throw e;
                    r(-1, e)
                }
            } else
                r(-1, "No Transport");
            return T
        },
        getJSON: function(e, t, n) {
            return Ft.get(e, t, n, "json")
        },
        getScript: function(e, t) {
            return Ft.get(e, void 0, t, "script")
        }
    }),
    Ft.each(["get", "post"], function(e, t) {
        Ft[t] = function(e, n, r, i) {
            return Ft.isFunction(n) && (i = i || r,
            r = n,
            n = void 0),
            Ft.ajax(Ft.extend({
                url: e,
                type: t,
                dataType: i,
                data: n,
                success: r
            }, Ft.isPlainObject(e) && e))
        }
    }),
    Ft._evalUrl = function(e) {
        return Ft.ajax({
            url: e,
            type: "GET",
            dataType: "script",
            async: !1,
            global: !1,
            throws: !0
        })
    }
    ,
    Ft.fn.extend({
        wrapAll: function(e) {
            var t;
            return Ft.isFunction(e) ? this.each(function(t) {
                Ft(this).wrapAll(e.call(this, t))
            }) : (this[0] && (t = Ft(e, this[0].ownerDocument).eq(0).clone(!0),
            this[0].parentNode && t.insertBefore(this[0]),
            t.map(function() {
                for (var e = this; e.firstElementChild; )
                    e = e.firstElementChild;
                return e
            }).append(this)),
            this)
        },
        wrapInner: function(e) {
            return Ft.isFunction(e) ? this.each(function(t) {
                Ft(this).wrapInner(e.call(this, t))
            }) : this.each(function() {
                var t = Ft(this)
                  , n = t.contents();
                n.length ? n.wrapAll(e) : t.append(e)
            })
        },
        wrap: function(e) {
            var t = Ft.isFunction(e);
            return this.each(function(n) {
                Ft(this).wrapAll(t ? e.call(this, n) : e)
            })
        },
        unwrap: function() {
            return this.parent().each(function() {
                Ft.nodeName(this, "body") || Ft(this).replaceWith(this.childNodes)
            }).end()
        }
    }),
    Ft.expr.filters.hidden = function(e) {
        return !Ft.expr.filters.visible(e)
    }
    ,
    Ft.expr.filters.visible = function(e) {
        return e.offsetWidth > 0 || e.offsetHeight > 0 || e.getClientRects().length > 0
    }
    ,
    pt = /%20/g,
    ht = /\[\]$/,
    gt = /\r?\n/g,
    vt = /^(?:submit|button|image|reset|file)$/i,
    mt = /^(?:input|select|textarea|keygen)/i,
    Ft.param = function(e, t) {
        var n, r = [], i = function(e, t) {
            t = Ft.isFunction(t) ? t() : null == t ? "" : t,
            r[r.length] = encodeURIComponent(e) + "=" + encodeURIComponent(t)
        };
        if (void 0 === t && (t = Ft.ajaxSettings && Ft.ajaxSettings.traditional),
        Ft.isArray(e) || e.jquery && !Ft.isPlainObject(e))
            Ft.each(e, function() {
                i(this.name, this.value)
            });
        else
            for (n in e)
                U(n, e[n], t, i);
        return r.join("&").replace(pt, "+")
    }
    ,
    Ft.fn.extend({
        serialize: function() {
            return Ft.param(this.serializeArray())
        },
        serializeArray: function() {
            return this.map(function() {
                var e = Ft.prop(this, "elements");
                return e ? Ft.makeArray(e) : this
            }).filter(function() {
                var e = this.type;
                return this.name && !Ft(this).is(":disabled") && mt.test(this.nodeName) && !vt.test(e) && (this.checked || !me.test(e))
            }).map(function(e, t) {
                var n = Ft(this).val();
                return null == n ? null : Ft.isArray(n) ? Ft.map(n, function(e) {
                    return {
                        name: t.name,
                        value: e.replace(gt, "\r\n")
                    }
                }) : {
                    name: t.name,
                    value: n.replace(gt, "\r\n")
                }
            }).get()
        }
    }),
    Ft.ajaxSettings.xhr = function() {
        try {
            return new e.XMLHttpRequest
        } catch (e) {}
    }
    ,
    yt = {
        0: 200,
        1223: 204
    },
    bt = Ft.ajaxSettings.xhr(),
    Lt.cors = !!bt && "withCredentials"in bt,
    Lt.ajax = bt = !!bt,
    Ft.ajaxTransport(function(t) {
        var n, r;
        return Lt.cors || bt && !t.crossDomain ? {
            send: function(i, o) {
                var s, a = t.xhr();
                if (a.open(t.type, t.url, t.async, t.username, t.password),
                t.xhrFields)
                    for (s in t.xhrFields)
                        a[s] = t.xhrFields[s];
                t.mimeType && a.overrideMimeType && a.overrideMimeType(t.mimeType),
                t.crossDomain || i["X-Requested-With"] || (i["X-Requested-With"] = "XMLHttpRequest");
                for (s in i)
                    a.setRequestHeader(s, i[s]);
                n = function(e) {
                    return function() {
                        n && (n = r = a.onload = a.onerror = a.onabort = a.onreadystatechange = null,
                        "abort" === e ? a.abort() : "error" === e ? "number" != typeof a.status ? o(0, "error") : o(a.status, a.statusText) : o(yt[a.status] || a.status, a.statusText, "text" !== (a.responseType || "text") || "string" != typeof a.responseText ? {
                            binary: a.response
                        } : {
                            text: a.responseText
                        }, a.getAllResponseHeaders()))
                    }
                }
                ,
                a.onload = n(),
                r = a.onerror = n("error"),
                void 0 !== a.onabort ? a.onabort = r : a.onreadystatechange = function() {
                    4 === a.readyState && e.setTimeout(function() {
                        n && r()
                    })
                }
                ,
                n = n("abort");
                try {
                    a.send(t.hasContent && t.data || null)
                } catch (e) {
                    if (n)
                        throw e
                }
            },
            abort: function() {
                n && n()
            }
        } : void 0
    }),
    Ft.ajaxSetup({
        accepts: {
            script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
        },
        contents: {
            script: /\b(?:java|ecma)script\b/
        },
        converters: {
            "text script": function(e) {
                return Ft.globalEval(e),
                e
            }
        }
    }),
    Ft.ajaxPrefilter("script", function(e) {
        void 0 === e.cache && (e.cache = !1),
        e.crossDomain && (e.type = "GET")
    }),
    Ft.ajaxTransport("script", function(e) {
        if (e.crossDomain) {
            var t, n;
            return {
                send: function(r, i) {
                    t = Ft("<script>").prop({
                        charset: e.scriptCharset,
                        src: e.url
                    }).on("load error", n = function(e) {
                        t.remove(),
                        n = null,
                        e && i("error" === e.type ? 404 : 200, e.type)
                    }
                    ),
                    jt.head.appendChild(t[0])
                },
                abort: function() {
                    n && n()
                }
            }
        }
    }),
    wt = [],
    xt = /(=)\?(?=&|$)|\?\?/,
    Ft.ajaxSetup({
        jsonp: "callback",
        jsonpCallback: function() {
            var e = wt.pop() || Ft.expando + "_" + tt++;
            return this[e] = !0,
            e
        }
    }),
    Ft.ajaxPrefilter("json jsonp", function(t, n, r) {
        var i, o, s, a = t.jsonp !== !1 && (xt.test(t.url) ? "url" : "string" == typeof t.data && 0 === (t.contentType || "").indexOf("application/x-www-form-urlencoded") && xt.test(t.data) && "data");
        return a || "jsonp" === t.dataTypes[0] ? (i = t.jsonpCallback = Ft.isFunction(t.jsonpCallback) ? t.jsonpCallback() : t.jsonpCallback,
        a ? t[a] = t[a].replace(xt, "$1" + i) : t.jsonp !== !1 && (t.url += (nt.test(t.url) ? "&" : "?") + t.jsonp + "=" + i),
        t.converters["script json"] = function() {
            return s || Ft.error(i + " was not called"),
            s[0]
        }
        ,
        t.dataTypes[0] = "json",
        o = e[i],
        e[i] = function() {
            s = arguments
        }
        ,
        r.always(function() {
            void 0 === o ? Ft(e).removeProp(i) : e[i] = o,
            t[i] && (t.jsonpCallback = n.jsonpCallback,
            wt.push(i)),
            s && Ft.isFunction(o) && o(s[0]),
            s = o = void 0
        }),
        "script") : void 0
    }),
    Ft.parseHTML = function(e, t, n) {
        if (!e || "string" != typeof e)
            return null;
        "boolean" == typeof t && (n = t,
        t = !1),
        t = t || jt;
        var r = K.exec(e)
          , i = !n && [];
        return r ? [t.createElement(r[1])] : (r = d([e], t, i),
        i && i.length && Ft(i).remove(),
        Ft.merge([], r.childNodes))
    }
    ,
    Tt = Ft.fn.load,
    Ft.fn.load = function(e, t, n) {
        if ("string" != typeof e && Tt)
            return Tt.apply(this, arguments);
        var r, i, o, s = this, a = e.indexOf(" ");
        return a > -1 && (r = Ft.trim(e.slice(a)),
        e = e.slice(0, a)),
        Ft.isFunction(t) ? (n = t,
        t = void 0) : t && "object" == typeof t && (i = "POST"),
        s.length > 0 && Ft.ajax({
            url: e,
            type: i || "GET",
            dataType: "html",
            data: t
        }).done(function(e) {
            o = arguments,
            s.html(r ? Ft("<div>").append(Ft.parseHTML(e)).find(r) : e)
        }).always(n && function(e, t) {
            s.each(function() {
                n.apply(this, o || [e.responseText, t, e])
            })
        }
        ),
        this
    }
    ,
    Ft.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function(e, t) {
        Ft.fn[t] = function(e) {
            return this.on(t, e)
        }
    }),
    Ft.expr.filters.animated = function(e) {
        return Ft.grep(Ft.timers, function(t) {
            return e === t.elem
        }).length
    }
    ,
    Ft.offset = {
        setOffset: function(e, t, n) {
            var r, i, o, s, a, u, c, l = Ft.css(e, "position"), f = Ft(e), d = {};
            "static" === l && (e.style.position = "relative"),
            a = f.offset(),
            o = Ft.css(e, "top"),
            u = Ft.css(e, "left"),
            c = ("absolute" === l || "fixed" === l) && (o + u).indexOf("auto") > -1,
            c ? (r = f.position(),
            s = r.top,
            i = r.left) : (s = parseFloat(o) || 0,
            i = parseFloat(u) || 0),
            Ft.isFunction(t) && (t = t.call(e, n, Ft.extend({}, a))),
            null != t.top && (d.top = t.top - a.top + s),
            null != t.left && (d.left = t.left - a.left + i),
            "using"in t ? t.using.call(e, d) : f.css(d)
        }
    },
    Ft.fn.extend({
        offset: function(e) {
            if (arguments.length)
                return void 0 === e ? this : this.each(function(t) {
                    Ft.offset.setOffset(this, e, t)
                });
            var t, n, r = this[0], i = {
                top: 0,
                left: 0
            }, o = r && r.ownerDocument;
            return o ? (t = o.documentElement,
            Ft.contains(t, r) ? (i = r.getBoundingClientRect(),
            n = V(o),
            {
                top: i.top + n.pageYOffset - t.clientTop,
                left: i.left + n.pageXOffset - t.clientLeft
            }) : i) : void 0
        },
        position: function() {
            if (this[0]) {
                var e, t, n = this[0], r = {
                    top: 0,
                    left: 0
                };
                return "fixed" === Ft.css(n, "position") ? t = n.getBoundingClientRect() : (e = this.offsetParent(),
                t = this.offset(),
                Ft.nodeName(e[0], "html") || (r = e.offset()),
                r.top += Ft.css(e[0], "borderTopWidth", !0),
                r.left += Ft.css(e[0], "borderLeftWidth", !0)),
                {
                    top: t.top - r.top - Ft.css(n, "marginTop", !0),
                    left: t.left - r.left - Ft.css(n, "marginLeft", !0)
                }
            }
        },
        offsetParent: function() {
            return this.map(function() {
                for (var e = this.offsetParent; e && "static" === Ft.css(e, "position"); )
                    e = e.offsetParent;
                return e || Fe
            })
        }
    }),
    Ft.each({
        scrollLeft: "pageXOffset",
        scrollTop: "pageYOffset"
    }, function(e, t) {
        var n = "pageYOffset" === t;
        Ft.fn[e] = function(r) {
            return ae(this, function(e, r, i) {
                var o = V(e);
                return void 0 === i ? o ? o[t] : e[r] : void (o ? o.scrollTo(n ? o.pageXOffset : i, n ? i : o.pageYOffset) : e[r] = i)
            }, e, r, arguments.length)
        }
    }),
    Ft.each(["top", "left"], function(e, t) {
        Ft.cssHooks[t] = S(Lt.pixelPosition, function(e, n) {
            return n ? (n = j(e, t),
            He.test(n) ? Ft(e).position()[t] + "px" : n) : void 0
        })
    }),
    Ft.each({
        Height: "height",
        Width: "width"
    }, function(e, t) {
        Ft.each({
            padding: "inner" + e,
            content: t,
            "": "outer" + e
        }, function(n, r) {
            Ft.fn[r] = function(r, i) {
                var o = arguments.length && (n || "boolean" != typeof r)
                  , s = n || (r === !0 || i === !0 ? "margin" : "border");
                return ae(this, function(t, n, r) {
                    var i;
                    return Ft.isWindow(t) ? t.document.documentElement["client" + e] : 9 === t.nodeType ? (i = t.documentElement,
                    Math.max(t.body["scroll" + e], i["scroll" + e], t.body["offset" + e], i["offset" + e], i["client" + e])) : void 0 === r ? Ft.css(t, n, s) : Ft.style(t, n, r, s)
                }, t, o ? r : void 0, o, null)
            }
        })
    }),
    Ft.fn.extend({
        bind: function(e, t, n) {
            return this.on(e, null, t, n)
        },
        unbind: function(e, t) {
            return this.off(e, null, t)
        },
        delegate: function(e, t, n, r) {
            return this.on(t, e, n, r)
        },
        undelegate: function(e, t, n) {
            return 1 === arguments.length ? this.off(e, "**") : this.off(t, e || "**", n)
        },
        size: function() {
            return this.length
        }
    }),
    Ft.fn.andSelf = Ft.fn.addBack,
    "function" == typeof define && define.amd && define("jquery", [], function() {
        return Ft
    }),
    Ct = e.jQuery,
    _t = e.$,
    Ft.noConflict = function(t) {
        return e.$ === Ft && (e.$ = _t),
        t && e.jQuery === Ft && (e.jQuery = Ct),
        Ft
    }
    ,
    t || (e.jQuery = e.$ = Ft),
    Ft
}),
Function.prototype.around = function(e) {
    var t = this
      , n = function() {
        var e = null;
        try {
            e = arguments ? t.apply(this, arguments) : t.apply(this)
        } catch (e) {
            throw e
        }
        return e
    };
    return n.__fn__ = this,
    n
}
,
function(e) {
    e.actionConfig = {
        www_event_calendar: {
            url: "/dist/oschina/event/require/calendar.js",
            version: "ed112f54d7750551b85ce45202bf04f6f59ba294"
        },
        "comp-comment": {
            url: "/dist/oschina/news/require/comment.js",
            version: "837f2883637ea3effd8b332180496a8714be30ed"
        },
        www_comments: {
            url: "/dist/oschina/project/require/comments.js",
            version: "0e374d0e5cef2173504972c63e39571384dd7c89"
        },
        www_question_answer: {
            url: "/dist/oschina/question/require/answer.js",
            version: "956c39fccd74242e41817515036999db497771d2"
        },
        www_translates_list: {
            url: "/dist/oschina/translate/require/list.js",
            version: "77aa8ec9482c9114b37959474ef95ba65a9265f8"
        },
        oschina: {
            url: "/dist/oschina/community/require/index.js",
            version: "1084f297ba7721f1262fd312199429c9ccb3f45d"
        },
        www_blog: {
            url: "/dist/oschina/blog/require/blog.js",
            version: "d2006065891e2eb98fc4f5822dc6a19427cbf2e8"
        },
        www_activate_by_phone: {
            url: "/dist/oschina/home/login/require/activate-by-phone.js",
            version: "864683f99f8ba8ac509b4cf1f25d9d63c9822976"
        },
        www_tweet_detail: {
            url: "/dist/oschina/tweet/require/detail.js",
            version: "409760516624fb168be0b74b372a303b41fae44b"
        },
        "comp-comment": {
            url: "/dist/oschina/event/require/comment.js",
            version: "26adb80b975cc0b722833ae20ff80ca7eca80057"
        },
        www_news: {
            url: "/dist/oschina/news/require/news.js",
            version: "a2e49e136cdc79d3331547ed7db91b9d6b8da0e5"
        },
        www_details: {
            url: "/dist/oschina/project/require/details.js",
            version: "7926109d562847bf8caa87bda863603ab7bc1baa"
        },
        www_question_ask: {
            url: "/dist/oschina/question/require/ask.js",
            version: "4d7b4735c9314744387129f0ff6b0550172013e2"
        },
        www_translates_detail: {
            url: "/dist/oschina/translate/require/show.js",
            version: "0601b9d4085fee29ade25ab70f6b486f4fac83e1"
        },
        www_activate: {
            url: "/dist/oschina/home/login/require/activate.js",
            version: "2e041f3dea877a41b5cf51aececebe23ddfe52de"
        },
        www_event_create: {
            url: "/dist/oschina/event/require/create.js",
            version: "22bf8e614e1af7e29acb43ecc6a61f6814e1aadf"
        },
        www_project: {
            url: "/dist/oschina/project/require/index.js",
            version: "c8b50c6a08c9a9f2ea77fba7b1ab5c9ef7ab0fdc"
        },
        www_tweet_list: {
            url: "/dist/oschina/tweet/require/list.js",
            version: "4e57e2287e368f5bce838bfb6e370bec0a918a16"
        },
        www_change_email: {
            url: "/dist/oschina/home/login/require/change-email.js",
            version: "6f2b0a9dd6722c6286deceeb98de64a729ca3b51"
        },
        www_news_detail: {
            url: "/dist/oschina/news/require/news_detail.js",
            version: "5d3e370fc0112fa875a0866675863d6bbe6f343a"
        },
        www_question_detail: {
            url: "/dist/oschina/question/require/detail.js",
            version: "2fd2bbe4b65bf8657f20f9028a23b4ba7e911b5e"
        },
        www_list: {
            url: "/dist/oschina/project/require/list.js",
            version: "9ec6d811c130d37a2906a6255d3e6443985c1bad"
        },
        www_event_detail: {
            url: "/dist/oschina/event/require/detail.js",
            version: "aa0a47d06153dbc188a168ec9b558d387afbbae3"
        },
        www_question_edit_answer: {
            url: "/dist/oschina/question/require/editanswer.js",
            version: "d6f6d8affa39dbbab6588aea51e577bf3a35d9d2"
        },
        www_related: {
            url: "/dist/oschina/project/require/related.js",
            version: "860ec213ef5fef1b8679c468e3ec5c97ae79b4fa"
        },
        www_login_new: {
            url: "/dist/oschina/home/login/require/login-new.js",
            version: "bb28bc2bfc2987eb8bce2c19eb166dce3a6c1e2a"
        },
        www_zh: {
            url: "/dist/oschina/project/require/zh.js",
            version: "98abd655d4a9e367fbd11afba993e845e096b5a1"
        },
        www_question_list: {
            url: "/dist/oschina/question/require/list.js",
            version: "52d816c5a468634c792bf0abd13d4c7207a6ec94"
        },
        www_login: {
            url: "/dist/oschina/home/login/require/login.js",
            version: "308fb42f133648cc7457869af9706ea9f388c658"
        },
        www_event_edit: {
            url: "/dist/oschina/event/require/edit.js",
            version: "317eb21e1d63f91552909c5fa6eb6d2f3ccffacb"
        },
        www_event: {
            url: "/dist/oschina/event/require/index.js",
            version: "4f9ee03049c6db7120e05954d8a2ed0b5b27c0e8"
        },
        www_logon: {
            url: "/dist/oschina/home/login/require/logon.js",
            version: "aa3f987188030d809d4a18c2a3d7c895cacee977"
        },
        www_innovation: {
            url: "/dist/oschina/event/require/innovation.js",
            version: "8d315bf0df90906b333f687055a7bc71f57d8710"
        },
        www_openid_new: {
            url: "/dist/oschina/home/login/require/openid-new.js",
            version: "1ece97c37c4b79012d304fd453cade35baafbb75"
        },
        www_event_my: {
            url: "/dist/oschina/event/require/my.js",
            version: "484a2d665c0f1d42422430c8e899a727c2c430c8"
        },
        www_openid: {
            url: "/dist/oschina/home/login/require/openid.js",
            version: "ed872a2e5782c5959212e41fbf596a1f42c8c337"
        },
        www_event_sponsor: {
            url: "/dist/oschina/event/require/sponsor.js",
            version: "9c7e6b000111db14397003617cdf5568e90986f1"
        },
        www_phone_activate: {
            url: "/dist/oschina/home/login/require/phone-activate.js",
            version: "0e45392f30ddd2ccb47a22047138faf2b63f8571"
        },
        www_regok: {
            url: "/dist/oschina/home/login/require/regok.js",
            version: "3efeff0f34e21cede2c44b2540969ec98fb34e76"
        },
        www_reset_pwd_new: {
            url: "/dist/oschina/home/login/require/reset-pwd-new.js",
            version: "13b3ab3979a5363e99b0cb91672a3a9237f79a91"
        },
        www_reset_pwd: {
            url: "/dist/oschina/home/login/require/reset-pwd.js",
            version: "907f7d310eed2c03d19383a65d9d2e56600f7312"
        }
    }
}(window),
function(e, t, n) {
    function r(e) {
        var t, n, r = t = e.scrollWidth, i = n = e.scrollHeight, o = Math.max(e.naturalWidth, 1), s = Math.max(e.naturalHeight, 1), a = t / o, u = n / s;
        1 == a && 1 == u || (a < u ? i = s * a : r = o * u,
        e.style.width = r + "px",
        e.style.height = i + "px",
        e.style.margin = (n - i) / 2 + "px " + (t - r) / 2 + "px")
    }
    var i, o, s = e.action = {
        fn: {},
        handlers: [],
        module: {},
        base: {},
        pageInfo: {
            define: "",
            vals: null
        },
        event: {
            handlers: {},
            addHandler: function(e, t) {
                "undefined" == typeof this.handlers[e] && (this.handlers[e] = []),
                this.handlers[e].push(t)
            },
            fire: function(e) {
                var t, n, r;
                if (e.target || (e.target = this),
                this.handlers[e.type]instanceof Array)
                    for (t = this.handlers[e.type],
                    n = 0,
                    r = t.length; n < r; n++)
                        t[n](e)
            },
            removeHandler: function(e, t) {
                if (this.handlers[e]instanceof Array) {
                    for (var n = this.handlers[e], r = 0, i = n.length; r < i && n[r] !== t; r++)
                        ;
                    n.splice(r, 1)
                }
            }
        },
        stringUtil: {
            isNull: function(e) {
                return !("string" == typeof e && e && e.replace(/(^\s*)|(\s*$)/g, ""))
            }
        },
        initPageInfo: function() {
            var e = t.querySelector("[data-define]") || t.querySelector("x-foo-define");
            return this.pageInfo.vals = t.querySelectorAll("val") || t.querySelectorAll("x-foo-val"),
            e instanceof HTMLElement && (this.pageInfo.define = e.getAttribute("data-define")),
            this.pageInfo
        },
        initParams: function(e, t) {
            var n, r, i = null, o = "", s = "", a = "";
            for (n = 0,
            r = t.length; n < r; ++n)
                i = t[n],
                i instanceof HTMLElement && (o = i.getAttribute("data-name"),
                s = i.getAttribute("data-value"),
                a = i.getAttribute("data-type"),
                o && (e[o] = "json" === a ? JSON.parse(s) : s))
        },
        fetch: function(e) {
            if ("function" == typeof this.base[e]) {
                var t = this.base[e].apply(Object);
                this.base[e] = "function" == typeof t ? new t : t
            }
            return this.base[e]
        },
        handerFunction: function(e) {
            return e
        },
        loadImg: function() {
            var e = t.querySelectorAll("img[data-delay]");
            this.loadDelayImg(e)
        },
        loadDelayImg: function(e) {
            Array.prototype.forEach.call(e, function(e) {
                if (e instanceof HTMLElement) {
                    if (e.getAttribute("load"))
                        return;
                    e.setAttribute("load", "unload");
                    var t = e.getAttribute("data-delay");
                    e.addEventListener("load", function() {
                        e.setAttribute("load", "loaded"),
                        !e.classList.contains("obj-contain") || "objectFit"in e.style || r(e)
                    }),
                    e.addEventListener("error", function() {
                        var t = e.getAttribute("data-default");
                        e.setAttribute("load", "error"),
                        t && t !== e.getAttribute("src") && e.setAttribute("src", t)
                    }),
                    t && e.setAttribute("src", t)
                }
            })
        },
        delayImgLoaded: function(e) {
            var t, n, r, i;
            for (t = 0,
            n = e.length; t < n; ++t)
                if (r = e[t],
                r instanceof HTMLElement && (i = r.getAttribute("load"),
                "unload" === i))
                    return !1;
            return !0
        },
        appendScript: function(e, n, r) {
            if (!this.stringUtil.isNull(e)) {
                var i = t.createElement("script");
                i.setAttribute("type", "text/javascript"),
                i.setAttribute("src", e),
                r && i.setAttribute("defer", "defer"),
                n instanceof Function && (i.onload = function(e) {
                    n(e, i)
                }
                ),
                t.body.appendChild(i)
            }
        },
        require: function(e) {
            var t, r, i = this, o = n[e];
            o && (t = o.url + "?v=" + o.version,
            r = function(e, t) {
                t.readyState && "loaded" !== t.readyState && "complete" !== t.readyState || i.event.fire({
                    type: "invoke",
                    message: "hello"
                })
            }
            ,
            i.appendScript(t, r))
        },
        buildModule: function(e, t, n) {
            var r, i, o, s = this.stringUtil, a = {
                require: null,
                target: null
            };
            if (!s.isNull(e) && n instanceof Function) {
                if (a.target = n,
                t instanceof Array) {
                    r = [];
                    for (i in t) {
                        if (o = t[i],
                        s.isNull(o) || !this.base.hasOwnProperty(o))
                            throw new Error("依赖参数错误!");
                        r.push(o)
                    }
                    r.length && (a.require = r)
                }
                this.module[e] = a
            }
        },
        initModule: function(e, t) {
            var n, r, i, o, s = [];
            if (!(e instanceof Function))
                throw new Error("非法模块调用!");
            if (t instanceof Array && t.length)
                for (n in t)
                    r = t[n],
                    s.push(this.fetch(r));
            return i = e.apply(Object, s),
            o = this.handerFunction(new i)
        },
        registerHandlers: function(e, t) {
            if ("string" == typeof e && "function" == typeof t) {
                if (this.handlers.indexOf(e) !== -1)
                    throw new Error("事件:%s 已经注册!",e);
                this.handlers.push(e),
                this.event.addHandler(e, t)
            }
        },
        fireHandlers: function() {
            var e, t, n, r = this.handlers;
            for (e = 0,
            t = r.length; e < t; ++e)
                n = r[e],
                this.event.fire({
                    type: n,
                    message: "Action page loaded!"
                })
        }
    };
    e.define = function() {
        var e, t, n, r, i, o = arguments, a = o.length;
        a >= 2 && (n = o[0],
        r = o[1],
        i = 3 === a ? o[2] : null,
        r instanceof Function && (e = r),
        i instanceof Function && (e = i),
        r instanceof Array && (t = r),
        s.stringUtil.isNull(n) || s.buildModule(n, t, e))
    }
    ,
    i = function(e, t) {
        "string" == typeof e && /^object|function$/.test(typeof t) && "" !== e && (s.base[e] || (s.base[e] = t))
    }
    ,
    e.base = i,
    e.plugin = i,
    e.stopEvent = function(t) {
        return t = t || e.event,
        t.preventDefault && (t.preventDefault(),
        t.stopPropagation()),
        t.returnValue && (t.returnValue = !1),
        t.cancelBubble && (t.cancelBubble = !0),
        !1
    }
    ,
    o = {
        pageInfo: s.pageInfo,
        invokePage: function() {
            var n, r, i;
            if (this.pageInfo.define && (n = s.module[this.pageInfo.define],
            n instanceof Object)) {
                e.page = e.page = s.initModule(n.target, n.require),
                this.pageInfo.vals && s.initParams(page, this.pageInfo.vals),
                e.__pageVals && $.extend(page, e.__pageVals),
                "function" == typeof page.imgReady && (r = t.querySelectorAll("img[data-delay]"),
                i = self.setInterval(function() {
                    s.delayImgLoaded(r) && (e.clearInterval(i),
                    page.imgReady())
                }, 1500));
                try {
                    "function" == typeof page.ready && page.ready(),
                    "function" == typeof page.register && page.register(),
                    s.fireHandlers()
                } catch (t) {
                    e.console.error(t.message, t)
                }
            }
            return this
        },
        execute: function() {
            o.invokePage()
        }
    },
    s.event.addHandler("invoke", o.execute),
    e.addEventListener("DOMContentLoaded", function r() {
        e.removeEventListener("DOMContentLoaded", r, !1);
        var i = s.initPageInfo().define;
        n instanceof Object ? i && s.require(i) : o.invokePage(),
        t.querySelector("x-foo-opt[data-name=deferImgLoad]") || s.loadImg()
    }, !1)
}(window, window.document, window.actionConfig),
plugin("home", function() {
    var e = function() {};
    return e.prototype = {
        constructor: e,
        _vCode: function(e) {
            e.attr("src", page.captcha + Math.random(1e3))
        },
        _input_check_tips: function(e, t, n, r) {
            var i = t.parents(".form-item").find(".form-tips");
            return n && !e ? (t.addClass("error"),
            r && t.focus(),
            void i.show().addClass("error").html(n)) : (t.removeClass("error"),
            void i.hide())
        },
        _check_name: function(e, t) {
            var n, r, i = this, o = e.val();
            return o ? (n = /^[A-Za-z0-9\u4e00-\u9fa5_-]+$/.test(o)) ? o && o.length < 2 ? (i._input_check_tips(null, e, "昵称不能少于2个字符", t),
            !1) : (r = /^[\u4e00-\u9fa5]+$/.test(o),
            !(o && o.length > (r ? 10 : 20)) || (i._input_check_tips(null, e, r ? "纯中文昵称最长10个字符" : "昵称最长20个字符", t),
            !1)) : (i._input_check_tips(null, e, "昵称只能由中文、字母、数字、下划线或者短横线组成", t),
            !1) : (i._input_check_tips(null, e, "请输入昵称", t),
            !1)
        },
        _check_password: function(e, t) {
            var n = this
              , r = e.val()
              , i = !r.match(/[0-9]/) || !(r.match(/[a-zA-Z]/) || /\W/.test(r));
            return r ? r.length < 8 ? (n._input_check_tips(null, e, "密码不能少于8位", t),
            !1) : r.length > 20 ? (n._input_check_tips(null, e, "密码不能多于20位", t),
            !1) : !i || (n._input_check_tips(null, e, "密码必须是字母或特殊符号和数字结合", t),
            !1) : (n._input_check_tips(null, e, "请输入密码", t),
            !1)
        },
        _check_password2: function(e, t, n) {
            var r = this
              , i = (e.val(),
            t.val());
            return i ? e.val() === t.val() || (r._input_check_tips(null, t, "两次密码不一样", n),
            !1) : (r._input_check_tips(null, t, "请输入确认密码", n),
            !1)
        },
        _check_mail: function(e, t) {
            var n = this
              , r = e.val();
            return r ? n._is_mail(r) ? (n._input_check_tips(null, e),
            !0) : (n._input_check_tips(null, e, "请输入正确的邮箱地址", t),
            !1) : (n._input_check_tips(null, e, "请输入邮箱地址", t),
            !1)
        },
        _is_mail: function(e) {
            var t = /^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i;
            return t.test(e)
        },
        _check_phone: function(e, t) {
            var n = this
              , r = n._is_phone(e.val());
            return e.val() ? !!r || (n._input_check_tips(null, e, "请输入正确的手机号码", t),
            !1) : (n._input_check_tips(null, e, "请输入手机号码", t),
            !1)
        },
        _is_phone: function(e) {
            if (!e)
                return !1;
            var t = /^(1[3-9]\d{9})|(0\\d{2}-\\d{8})|(0\\d{3}-\\d{7,8})$/;
            return t.test(e)
        },
        _countDown: function() {
            var e = 60
              , t = $(".send-phone-vcode")
              , n = self.setInterval(function() {
                t.attr("disabled", "true"),
                t.val(e + "s后重新发送"),
                e--,
                e < 1 && (clearInterval(n),
                t.removeAttr("disabled"),
                t.val("重新获取"))
            }, 1e3)
        }
    },
    e
});
var CryptoJS = CryptoJS || function(e, t) {
    var n, r = {}, i = r.lib = {}, o = i.Base = function() {
        function e() {}
        return {
            extend: function(t) {
                e.prototype = this;
                var n = new e;
                return t && n.mixIn(t),
                n.$super = this,
                n
            },
            create: function() {
                var e = this.extend();
                return e.init.apply(e, arguments),
                e
            },
            init: function() {},
            mixIn: function(e) {
                for (var t in e)
                    e.hasOwnProperty(t) && (this[t] = e[t]);
                e.hasOwnProperty("toString") && (this.toString = e.toString)
            },
            clone: function() {
                return this.$super.extend(this)
            }
        }
    }(), s = i.WordArray = o.extend({
        init: function(e, n) {
            e = this.words = e || [],
            this.sigBytes = n != t ? n : 4 * e.length
        },
        toString: function(e) {
            return (e || u).stringify(this)
        },
        concat: function(e) {
            var t, n = this.words, r = e.words, i = this.sigBytes;
            if (e = e.sigBytes,
            this.clamp(),
            i % 4)
                for (t = 0; t < e; t++)
                    n[i + t >>> 2] |= (r[t >>> 2] >>> 24 - 8 * (t % 4) & 255) << 24 - 8 * ((i + t) % 4);
            else if (65535 < r.length)
                for (t = 0; t < e; t += 4)
                    n[i + t >>> 2] = r[t >>> 2];
            else
                n.push.apply(n, r);
            return this.sigBytes += e,
            this
        },
        clamp: function() {
            var t = this.words
              , n = this.sigBytes;
            t[n >>> 2] &= 4294967295 << 32 - 8 * (n % 4),
            t.length = e.ceil(n / 4)
        },
        clone: function() {
            var e = o.clone.call(this);
            return e.words = this.words.slice(0),
            e
        },
        random: function(t) {
            for (var n = [], r = 0; r < t; r += 4)
                n.push(4294967296 * e.random() | 0);
            return s.create(n, t)
        }
    }), a = r.enc = {}, u = a.Hex = {
        stringify: function(e) {
            var t, n, r, i;
            for (t = e.words,
            e = e.sigBytes,
            n = [],
            r = 0; r < e; r++)
                i = t[r >>> 2] >>> 24 - 8 * (r % 4) & 255,
                n.push((i >>> 4).toString(16)),
                n.push((15 & i).toString(16));
            return n.join("")
        },
        parse: function(e) {
            for (var t = e.length, n = [], r = 0; r < t; r += 2)
                n[r >>> 3] |= parseInt(e.substr(r, 2), 16) << 24 - 4 * (r % 8);
            return s.create(n, t / 2)
        }
    }, c = a.Latin1 = {
        stringify: function(e) {
            for (var t = e.words, e = e.sigBytes, n = [], r = 0; r < e; r++)
                n.push(String.fromCharCode(t[r >>> 2] >>> 24 - 8 * (r % 4) & 255));
            return n.join("")
        },
        parse: function(e) {
            for (var t = e.length, n = [], r = 0; r < t; r++)
                n[r >>> 2] |= (255 & e.charCodeAt(r)) << 24 - 8 * (r % 4);
            return s.create(n, t)
        }
    }, l = a.Utf8 = {
        stringify: function(e) {
            try {
                return decodeURIComponent(escape(c.stringify(e)))
            } catch (e) {
                throw Error("Malformed UTF-8 data")
            }
        },
        parse: function(e) {
            return c.parse(unescape(encodeURIComponent(e)))
        }
    }, f = i.BufferedBlockAlgorithm = o.extend({
        reset: function() {
            this._data = s.create(),
            this._nDataBytes = 0
        },
        _append: function(e) {
            "string" == typeof e && (e = l.parse(e)),
            this._data.concat(e),
            this._nDataBytes += e.sigBytes
        },
        _process: function(t) {
            var n, r = this._data, i = r.words, o = r.sigBytes, a = this.blockSize, u = o / (4 * a);
            if (u = t ? e.ceil(u) : e.max((0 | u) - this._minBufferSize, 0),
            t = u * a,
            o = e.min(4 * t, o),
            t) {
                for (n = 0; n < t; n += a)
                    this._doProcessBlock(i, n);
                n = i.splice(0, t),
                r.sigBytes -= o
            }
            return s.create(n, o)
        },
        clone: function() {
            var e = o.clone.call(this);
            return e._data = this._data.clone(),
            e
        },
        _minBufferSize: 0
    });
    return i.Hasher = f.extend({
        init: function() {
            this.reset()
        },
        reset: function() {
            f.reset.call(this),
            this._doReset()
        },
        update: function(e) {
            return this._append(e),
            this._process(),
            this
        },
        finalize: function(e) {
            return e && this._append(e),
            this._doFinalize(),
            this._hash
        },
        clone: function() {
            var e = f.clone.call(this);
            return e._hash = this._hash.clone(),
            e
        },
        blockSize: 16,
        _createHelper: function(e) {
            return function(t, n) {
                return e.create(n).finalize(t)
            }
        },
        _createHmacHelper: function(e) {
            return function(t, r) {
                return n.HMAC.create(e, r).finalize(t)
            }
        }
    }),
    n = r.algo = {},
    r
}(Math);
!function() {
    var e = CryptoJS
      , t = e.lib
      , n = t.WordArray
      , t = t.Hasher
      , r = []
      , i = e.algo.SHA1 = t.extend({
        _doReset: function() {
            this._hash = n.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520])
        },
        _doProcessBlock: function(e, t) {
            var n, i, o, s, a, u, c, l;
            for (n = this._hash.words,
            i = n[0],
            o = n[1],
            s = n[2],
            a = n[3],
            u = n[4],
            c = 0; 80 > c; c++)
                16 > c ? r[c] = 0 | e[t + c] : (l = r[c - 3] ^ r[c - 8] ^ r[c - 14] ^ r[c - 16],
                r[c] = l << 1 | l >>> 31),
                l = (i << 5 | i >>> 27) + u + r[c],
                l = 20 > c ? l + ((o & s | ~o & a) + 1518500249) : 40 > c ? l + ((o ^ s ^ a) + 1859775393) : 60 > c ? l + ((o & s | o & a | s & a) - 1894007588) : l + ((o ^ s ^ a) - 899497514),
                u = a,
                a = s,
                s = o << 30 | o >>> 2,
                o = i,
                i = l;
            n[0] = n[0] + i | 0,
            n[1] = n[1] + o | 0,
            n[2] = n[2] + s | 0,
            n[3] = n[3] + a | 0,
            n[4] = n[4] + u | 0
        },
        _doFinalize: function() {
            var e = this._data
              , t = e.words
              , n = 8 * this._nDataBytes
              , r = 8 * e.sigBytes;
            t[r >>> 5] |= 128 << 24 - r % 32,
            t[(r + 64 >>> 9 << 4) + 15] = n,
            e.sigBytes = 4 * t.length,
            this._process()
        }
    });
    e.SHA1 = t._createHelper(i),
    e.HmacSHA1 = t._createHmacHelper(i)
}();


调试工具提示  :--> 类型错误: Cannot read property 'createElement' of undefined

https://www.oschina.net
登录 js

感谢各位大哥,指点以下小弟。

回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:81% (55/68)

签到天数: 2 天

发表于 前天 02:17 | 显示全部楼层   四川省资阳市
666.jpg JS.rar (65.51 KB, 下载次数: 3)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表