Overview

URL www.foodtruckcampaigns.com/
IP35.208.161.252
ASNGOOGLE
Location United States
Report completed2022-09-10 18:18:48 UTC
StatusLoading report..
urlquery Alerts No alerts detected


Settings

UserAgentMozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Referer


Intrusion Detection Systems

Suricata /w Emerging Threats Pro  No alerts detected


Blocklists

OpenPhish  No alerts detected
PhishTank  No alerts detected
Fortinet's Web Filter
Scan Date Severity Indicator Comment
2022-09-10 2 www.foodtruckcampaigns.com/ Phishing
2022-09-10 2 www.foodtruckcampaigns.com/ Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-content/plugins/elementor-pro/assets/js/frontend. (...) Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-content/plugins/elementor-pro/assets/lib/sticky/j (...) Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-content/plugins/woocommerce/assets/js/js-cookie/j (...) Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-content/plugins/woocommerce/assets/js/frontend/wo (...) Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-content/plugins/rselements/assets/js/popper.min.j (...) Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-content/plugins/rselements/assets/js/jQuery-plugi (...) Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-content/plugins/woocommerce/assets/js/frontend/ad (...) Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-content/plugins/woocommerce/assets/js/frontend/ca (...) Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-includes/js/wp-emoji-release.min.js?ver=6.0.2 Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-content/plugins/rselements/assets/js/jquery.plugi (...) Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-content/plugins/rselements/assets/js/custom.js?ve (...) Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-content/plugins/woocommerce/assets/js/jquery-bloc (...) Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-content/plugins/elementor/assets/css/frontend.min (...) Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-content/plugins/elementor/assets/lib/eicons/css/e (...) Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-content/uploads/elementor/css/post-7988.css?ver=1 (...) Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-content/themes/reobiz/assets/js/theia-sticky-side (...) Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-content/plugins/rselements/assets/css/headding-ti (...) Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-content/plugins/rselements/assets/css/rsaddons.cs (...) Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-content/plugins/rselements/assets/js/tilt.jquery. (...) Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-content/themes/reobiz/assets/css/custom.css?ver=6.0.2 Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-content/plugins/rselements/assets/css/slick-theme (...) Phishing
2022-09-10 2 foodtruckcampaigns.com/ Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-content/uploads/elementor/css/global.css?ver=1649 (...) Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-content/plugins/rselements/assets/css/solid.css?v (...) Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-content/plugins/rselements/assets/fonts/flaticon. (...) Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-content/themes/reobiz/style.css?ver=6.0.2 Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.3.2 Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-content/plugins/elementor/assets/lib/share-link/s (...) Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-content/plugins/elementor/assets/js/webpack.runti (...) Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-includes/js/jquery/jquery.min.js?ver=3.6.0 Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-content/plugins/elementor-pro/assets/js/preloaded (...) Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-content/themes/reobiz/assets/css/plugins.css?ver=6.0.2 Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-includes/js/dist/vendor/regenerator-runtime.min.j (...) Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-content/plugins/elementor/assets/js/frontend-modu (...) Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-content/plugins/woocommerce/assets/css/woocommerc (...) Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-content/uploads/elementor/css/post-16.css?ver=164 (...) Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-content/plugins/revslider/public/assets/js/rs6.mi (...) Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-content/themes/reobiz/assets/css/responsive.css?v (...) Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-content/plugins/woocommerce/packages/woocommerce- (...) Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-content/themes/reobiz/assets/css/default.css?ver=6.0.2 Phishing
2022-09-10 2 foodtruckcampaigns.com/wp-includes/js/imagesloaded.min.js?ver=4.1.4 Phishing
mnemonic secure dns  No alerts detected
Quad9 DNS  No alerts detected


Files

No files detected



Passive DNS (31)

Passive DNS Source Fully Qualifying Domain Name Rank First Seen Last Seen IP Comment
mnemonic passive DNS www.google-analytics.com (1) 40 2012-10-03 01:04:21 UTC 2022-09-10 13:29:38 UTC 142.250.74.174
mnemonic passive DNS trk.kissmetrics.io (4) 27068 2020-07-20 04:52:43 UTC 2022-09-10 12:43:57 UTC 54.84.30.144
mnemonic passive DNS m.stripe.com (1) 1092 2021-04-11 19:21:28 UTC 2022-09-10 08:10:35 UTC 52.34.194.100
mnemonic passive DNS firefox.settings.services.mozilla.com (2) 867 2020-06-04 20:08:41 UTC 2022-09-10 07:05:56 UTC 143.204.55.115
mnemonic passive DNS content-signature-2.cdn.mozilla.net (1) 1152 2020-11-03 12:26:46 UTC 2022-09-10 04:47:11 UTC 143.204.55.49
mnemonic passive DNS api.livechatinc.com (3) 5353 2013-12-20 14:27:35 UTC 2022-09-10 08:57:03 UTC 95.101.10.202
mnemonic passive DNS cdn.livechatinc.com (3) 6288 2012-06-22 08:37:34 UTC 2022-09-10 08:57:02 UTC 104.69.222.203
mnemonic passive DNS r3.o.lencr.org (4) 344 2020-12-02 08:52:13 UTC 2022-09-10 04:48:54 UTC 23.33.119.27
mnemonic passive DNS www.paypalobjects.com (1) 1467 2012-05-30 06:40:21 UTC 2022-09-10 09:56:23 UTC 151.101.86.133
mnemonic passive DNS js.stripe.com (1) 1149 2012-09-30 12:39:23 UTC 2022-09-10 08:05:29 UTC 143.204.55.15
mnemonic passive DNS i.kissmetrics.com (1) 32156 2012-05-22 12:34:14 UTC 2022-09-10 01:26:43 UTC 3.212.112.148
mnemonic passive DNS contile.services.mozilla.com (1) 1114 2021-05-27 18:32:35 UTC 2022-09-10 04:48:42 UTC 34.117.237.239
mnemonic passive DNS push.services.mozilla.com (1) 2140 2015-09-03 10:29:36 UTC 2022-09-10 06:39:00 UTC 35.161.6.128
mnemonic passive DNS foodtruckcampaigns.com (109) 0 2020-02-23 15:27:48 UTC 2022-09-08 09:20:36 UTC 35.208.161.252 Unknown ranking
mnemonic passive DNS fonts.gstatic.com (1) 0 2014-08-29 13:43:22 UTC 2022-09-10 04:46:45 UTC 142.250.74.163 Domain (gstatic.com) ranked at: 540
mnemonic passive DNS cdn.plaid.com (1) 17458 2018-07-31 05:49:13 UTC 2022-09-10 14:58:00 UTC 54.230.111.120
mnemonic passive DNS web.squarecdn.com (1) 54827 2020-10-26 23:42:07 UTC 2022-09-09 17:24:33 UTC 143.204.55.28
mnemonic passive DNS accounts.livechatinc.com (1) 7698 2017-07-31 05:50:56 UTC 2022-09-10 08:57:04 UTC 95.101.10.202
mnemonic passive DNS ocsp.digicert.com (3) 86 2012-05-21 07:02:23 UTC 2022-09-10 11:32:01 UTC 93.184.220.29
mnemonic passive DNS ocsp.pki.goog (8) 175 2017-06-14 07:23:31 UTC 2022-09-10 04:46:29 UTC 142.250.74.3
mnemonic passive DNS cdn.datatables.net (1) 5456 2015-10-06 23:00:51 UTC 2022-09-10 14:52:46 UTC 172.67.14.139
mnemonic passive DNS promovehicles.17hats.com (9) 0 No data No data 52.71.28.217 Domain (17hats.com) ranked at: 156480
mnemonic passive DNS img-getpocket.cdn.mozilla.net (6) 1631 2017-09-01 03:40:57 UTC 2022-09-10 04:30:10 UTC 34.120.237.76
mnemonic passive DNS scripts.kissmetrics.com (1) 26987 2013-12-01 16:17:36 UTC 2022-09-10 01:26:43 UTC 54.230.80.66
mnemonic passive DNS api.livechatinc.com (3) 5353 2013-12-20 14:27:35 UTC 2022-09-10 08:57:03 UTC 95.101.10.171
mnemonic passive DNS www.paypal.com (1) 2583 2012-09-05 05:46:24 UTC 2022-09-10 07:27:36 UTC 151.101.129.21
mnemonic passive DNS ocsp.sca1b.amazontrust.com (1) 1015 2017-03-03 15:20:51 UTC 2019-03-27 04:05:54 UTC 54.230.245.118
mnemonic passive DNS fonts.googleapis.com (4) 8877 2014-07-21 13:19:55 UTC 2022-09-10 12:21:37 UTC 142.250.74.10
mnemonic passive DNS secure.livechatinc.com (1) 6541 2012-08-20 19:27:12 UTC 2022-09-10 08:57:04 UTC 95.101.10.202
mnemonic passive DNS www.google.com (1) 7 2016-08-04 12:36:31 UTC 2022-09-10 04:45:51 UTC 142.250.74.164
mnemonic passive DNS www.foodtruckcampaigns.com (2) 0 2020-02-23 15:27:49 UTC 2021-09-24 16:17:13 UTC 35.208.161.252 Unknown ranking


Recent reports on same IP/ASN/Domain/Screenshot

Last 1 reports on IP: 35.208.161.252

Date UQ / IDS / BL URL IP
2022-09-10 18:18:48 +0000
0 - 0 - 43 www.foodtruckcampaigns.com/ 35.208.161.252

Last 5 reports on ASN: GOOGLE

Date UQ / IDS / BL URL IP
2022-12-07 17:17:54 +0000
0 - 0 - 0 google.com 142.250.74.14
2022-12-07 16:54:02 +0000
0 - 0 - 0 tr.snapchat.com/cm/p?rand=1668480825224&pnid= (...) 35.190.43.134
2022-12-07 16:15:48 +0000
0 - 0 - 2 wlcbzskszx.com/ 34.117.26.57
2022-12-07 16:09:55 +0000
0 - 0 - 1 zrczyfweb3.xyz/ 34.102.136.180
2022-12-07 15:21:01 +0000
0 - 0 - 2 ulqmpxoz.com/ 34.149.198.43

Last 1 reports on domain: foodtruckcampaigns.com

Date UQ / IDS / BL URL IP
2022-09-10 18:18:48 +0000
0 - 0 - 43 www.foodtruckcampaigns.com/ 35.208.161.252

No other reports with similar screenshot



JavaScript

Executed Scripts (87)


Executed Evals (26)

#1 JavaScript::Eval (size: 89501, repeated: 1) - SHA256: ff1523fb7389539c84c65aba19260648793bb4f5e29329d2ee8804bc37a3fe6e

                                        /*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ ! function(e, t) {
    "use strict";
    "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(C, e) {
    "use strict";
    var t = [],
        r = Object.getPrototypeOf,
        s = t.slice,
        g = t.flat ? function(e) {
            return t.flat.call(e)
        } : function(e) {
            return t.concat.apply([], e)
        },
        u = t.push,
        i = t.indexOf,
        n = {},
        o = n.toString,
        v = n.hasOwnProperty,
        a = v.toString,
        l = a.call(Object),
        y = {},
        m = function(e) {
            return "function" == typeof e && "number" != typeof e.nodeType && "function" != typeof e.item
        },
        x = function(e) {
            return null != e && e === e.window
        },
        E = C.document,
        c = {
            type: !0,
            src: !0,
            nonce: !0,
            noModule: !0
        };

    function b(e, t, n) {
        var r, i, o = (n = n || E).createElement("script");
        if (o.text = e, t)
            for (r in c)(i = t[r] || t.getAttribute && t.getAttribute(r)) && o.setAttribute(r, i);
        n.head.appendChild(o).parentNode.removeChild(o)
    }

    function w(e) {
        return null == e ? e + "" : "object" == typeof e || "function" == typeof e ? n[o.call(e)] || "object" : typeof e
    }
    var f = "3.6.0",
        S = function(e, t) {
            return new S.fn.init(e, t)
        };

    function p(e) {
        var t = !!e && "length" in e && e.length,
            n = w(e);
        return !m(e) && !x(e) && ("array" === n || 0 === t || "number" == typeof t && 0 < t && t - 1 in e)
    }
    S.fn = S.prototype = {
        jquery: f,
        constructor: S,
        length: 0,
        toArray: function() {
            return s.call(this)
        },
        get: function(e) {
            return null == e ? s.call(this) : e < 0 ? this[e + this.length] : this[e]
        },
        pushStack: function(e) {
            var t = S.merge(this.constructor(), e);
            return t.prevObject = this, t
        },
        each: function(e) {
            return S.each(this, e)
        },
        map: function(n) {
            return this.pushStack(S.map(this, function(e, t) {
                return n.call(e, t, e)
            }))
        },
        slice: function() {
            return this.pushStack(s.apply(this, arguments))
        },
        first: function() {
            return this.eq(0)
        },
        last: function() {
            return this.eq(-1)
        },
        even: function() {
            return this.pushStack(S.grep(this, function(e, t) {
                return (t + 1) % 2
            }))
        },
        odd: function() {
            return this.pushStack(S.grep(this, function(e, t) {
                return t % 2
            }))
        },
        eq: function(e) {
            var t = this.length,
                n = +e + (e < 0 ? t : 0);
            return this.pushStack(0 <= n && n < t ? [this[n]] : [])
        },
        end: function() {
            return this.prevObject || this.constructor()
        },
        push: u,
        sort: t.sort,
        splice: t.splice
    }, S.extend = S.fn.extend = function() {
        var e, t, n, r, i, o, a = arguments[0] || {},
            s = 1,
            u = arguments.length,
            l = !1;
        for ("boolean" == typeof a && (l = a, a = arguments[s] || {}, s++), "object" == typeof a || m(a) || (a = {}), s === u && (a = this, s--); s < u; s++)
            if (null != (e = arguments[s]))
                for (t in e) r = e[t], "__proto__" !== t && a !== r && (l && r && (S.isPlainObject(r) || (i = Array.isArray(r))) ? (n = a[t], o = i && !Array.isArray(n) ? [] : i || S.isPlainObject(n) ? n : {}, i = !1, a[t] = S.extend(l, o, r)) : void 0 !== r && (a[t] = r));
        return a
    }, S.extend({
        expando: "jQuery" + (f + Math.random()).replace(/\D/g, ""),
        isReady: !0,
        error: function(e) {
            throw new Error(e)
        },
        noop: function() {},
        isPlainObject: function(e) {
            var t, n;
            return !(!e || "[object Object]" !== o.call(e)) && (!(t = r(e)) || "function" == typeof(n = v.call(t, "constructor") && t.constructor) && a.call(n) === l)
        },
        isEmptyObject: function(e) {
            var t;
            for (t in e) return !1;
            return !0
        },
        globalEval: function(e, t, n) {
            b(e, {
                nonce: t && t.nonce
            }, n)
        },
        each: function(e, t) {
            var n, r = 0;
            if (p(e)) {
                for (n = e.length; r < n; r++)
                    if (!1 === t.call(e[r], r, e[r])) break
            } else
                for (r in e)
                    if (!1 === t.call(e[r], r, e[r])) break; return e
        },
        makeArray: function(e, t) {
            var n = t || [];
            return null != e && (p(Object(e)) ? S.merge(n, "string" == typeof e ? [e] : e) : u.call(n, e)), n
        },
        inArray: function(e, t, n) {
            return null == t ? -1 : i.call(t, e, n)
        },
        merge: function(e, t) {
            for (var n = +t.length, r = 0, i = e.length; r < n; r++) e[i++] = t[r];
            return e.length = i, e
        },
        grep: function(e, t, n) {
            for (var r = [], i = 0, o = e.length, a = !n; i < o; i++) !t(e[i], i) !== a && r.push(e[i]);
            return r
        },
        map: function(e, t, n) {
            var r, i, o = 0,
                a = [];
            if (p(e))
                for (r = e.length; o < r; o++) null != (i = t(e[o], o, n)) && a.push(i);
            else
                for (o in e) null != (i = t(e[o], o, n)) && a.push(i);
            return g(a)
        },
        guid: 1,
        support: y
    }), "function" == typeof Symbol && (S.fn[Symbol.iterator] = t[Symbol.iterator]), S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), function(e, t) {
        n["[object " + t + "]"] = t.toLowerCase()
    });
    var d = function(n) {
        var e, d, b, o, i, h, f, g, w, u, l, T, C, a, E, v, s, c, y, S = "sizzle" + 1 * new Date,
            p = n.document,
            k = 0,
            r = 0,
            m = ue(),
            x = ue(),
            A = ue(),
            N = ue(),
            j = function(e, t) {
                return e === t && (l = !0), 0
            },
            D = {}.hasOwnProperty,
            t = [],
            q = t.pop,
            L = t.push,
            H = t.push,
            O = t.slice,
            P = function(e, t) {
                for (var n = 0, r = e.length; n < r; n++)
                    if (e[n] === t) return n;
                return -1
            },
            R = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
            M = "[\\x20\\t\\r\\n\\f]",
            I = "(?:\\\\[\\da-fA-F]{1,6}" + M + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",
            W = "\\[" + M + "*(" + I + ")(?:" + M + "*([*^$|!~]?=)" + M + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + I + "))|)" + M + "*\\]",
            F = ":(" + I + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + W + ")*)|.*)\\)|)",
            B = new RegExp(M + "+", "g"),
            $ = new RegExp("^" + M + "+|((?:^|[^\\\\])(?:\\\\.)*)" + M + "+$", "g"),
            _ = new RegExp("^" + M + "*," + M + "*"),
            z = new RegExp("^" + M + "*([>+~]|" + M + ")" + M + "*"),
            U = new RegExp(M + "|>"),
            X = new RegExp(F),
            V = new RegExp("^" + I + "$"),
            G = {
                ID: new RegExp("^#(" + I + ")"),
                CLASS: new RegExp("^\\.(" + I + ")"),
                TAG: new RegExp("^(" + I + "|[*])"),
                ATTR: new RegExp("^" + W),
                PSEUDO: new RegExp("^" + F),
                CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + M + "*(even|odd|(([+-]|)(\\d*)n|)" + M + "*(?:([+-]|)" + M + "*(\\d+)|))" + M + "*\\)|)", "i"),
                bool: new RegExp("^(?:" + R + ")$", "i"),
                needsContext: new RegExp("^" + M + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + M + "*((?:-\\d)?\\d*)" + M + "*\\)|)(?=[^-]|$)", "i")
            },
            Y = /HTML$/i,
            Q = /^(?:input|select|textarea|button)$/i,
            J = /^h\d$/i,
            K = /^[^{]+\{\s*\[native \w/,
            Z = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
            ee = /[+~]/,
            te = new RegExp("\\\\[\\da-fA-F]{1,6}" + M + "?|\\\\([^\\r\\n\\f])", "g"),
            ne = function(e, t) {
                var n = "0x" + e.slice(1) - 65536;
                return t || (n < 0 ? String.fromCharCode(n + 65536) : String.fromCharCode(n >> 10 | 55296, 1023 & n | 56320))
            },
            re = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
            ie = function(e, t) {
                return t ? "\0" === e ? "\ufffd" : e.slice(0, -1) + "\\" + e.charCodeAt(e.length - 1).toString(16) + " " : "\\" + e
            },
            oe = function() {
                T()
            },
            ae = be(function(e) {
                return !0 === e.disabled && "fieldset" === e.nodeName.toLowerCase()
            }, {
                dir: "parentNode",
                next: "legend"
            });
        try {
            H.apply(t = O.call(p.childNodes), p.childNodes), t[p.childNodes.length].nodeType
        } catch (e) {
            H = {
                apply: t.length ? function(e, t) {
                    L.apply(e, O.call(t))
                } : function(e, t) {
                    var n = e.length,
                        r = 0;
                    while (e[n++] = t[r++]);
                    e.length = n - 1
                }
            }
        }

        function se(t, e, n, r) {
            var i, o, a, s, u, l, c, f = e && e.ownerDocument,
                p = e ? e.nodeType : 9;
            if (n = n || [], "string" != typeof t || !t || 1 !== p && 9 !== p && 11 !== p) return n;
            if (!r && (T(e), e = e || C, E)) {
                if (11 !== p && (u = Z.exec(t)))
                    if (i = u[1]) {
                        if (9 === p) {
                            if (!(a = e.getElementById(i))) return n;
                            if (a.id === i) return n.push(a), n
                        } else if (f && (a = f.getElementById(i)) && y(e, a) && a.id === i) return n.push(a), n
                    } else {
                        if (u[2]) return H.apply(n, e.getElementsByTagName(t)), n;
                        if ((i = u[3]) && d.getElementsByClassName && e.getElementsByClassName) return H.apply(n, e.getElementsByClassName(i)), n
                    }
                if (d.qsa && !N[t + " "] && (!v || !v.test(t)) && (1 !== p || "object" !== e.nodeName.toLowerCase())) {
                    if (c = t, f = e, 1 === p && (U.test(t) || z.test(t))) {
                        (f = ee.test(t) && ye(e.parentNode) || e) === e && d.scope || ((s = e.getAttribute("id")) ? s = s.replace(re, ie) : e.setAttribute("id", s = S)), o = (l = h(t)).length;
                        while (o--) l[o] = (s ? "#" + s : ":scope") + " " + xe(l[o]);
                        c = l.join(",")
                    }
                    try {
                        return H.apply(n, f.querySelectorAll(c)), n
                    } catch (e) {
                        N(t, !0)
                    } finally {
                        s === S && e.removeAttribute("id")
                    }
                }
            }
            return g(t.replace($, "$1"), e, n, r)
        }

        function ue() {
            var r = [];
            return function e(t, n) {
                return r.push(t + " ") > b.cacheLength && delete e[r.shift()], e[t + " "] = n
            }
        }

        function le(e) {
            return e[S] = !0, e
        }

        function ce(e) {
            var t = C.createElement("fieldset");
            try {
                return !!e(t)
            } catch (e) {
                return !1
            } finally {
                t.parentNode && t.parentNode.removeChild(t), t = null
            }
        }

        function fe(e, t) {
            var n = e.split("|"),
                r = n.length;
            while (r--) b.attrHandle[n[r]] = t
        }

        function pe(e, t) {
            var n = t && e,
                r = n && 1 === e.nodeType && 1 === t.nodeType && e.sourceIndex - t.sourceIndex;
            if (r) return r;
            if (n)
                while (n = n.nextSibling)
                    if (n === t) return -1;
            return e ? 1 : -1
        }

        function de(t) {
            return function(e) {
                return "input" === e.nodeName.toLowerCase() && e.type === t
            }
        }

        function he(n) {
            return function(e) {
                var t = e.nodeName.toLowerCase();
                return ("input" === t || "button" === t) && e.type === n
            }
        }

        function ge(t) {
            return function(e) {
                return "form" in e ? e.parentNode && !1 === e.disabled ? "label" in e ? "label" in e.parentNode ? e.parentNode.disabled === t : e.disabled === t : e.isDisabled === t || e.isDisabled !== !t && ae(e) === t : e.disabled === t : "label" in e && e.disabled === t
            }
        }

        function ve(a) {
            return le(function(o) {
                return o = +o, le(function(e, t) {
                    var n, r = a([], e.length, o),
                        i = r.length;
                    while (i--) e[n = r[i]] && (e[n] = !(t[n] = e[n]))
                })
            })
        }

        function ye(e) {
            return e && "undefined" != typeof e.getElementsByTagName && e
        }
        for (e in d = se.support = {}, i = se.isXML = function(e) {
                var t = e && e.namespaceURI,
                    n = e && (e.ownerDocument || e).documentElement;
                return !Y.test(t || n && n.nodeName || "HTML")
            }, T = se.setDocument = function(e) {
                var t, n, r = e ? e.ownerDocument || e : p;
                return r != C && 9 === r.nodeType && r.documentElement && (a = (C = r).documentElement, E = !i(C), p != C && (n = C.defaultView) && n.top !== n && (n.addEventListener ? n.addEventListener("unload", oe, !1) : n.attachEvent && n.attachEvent("onunload", oe)), d.scope = ce(function(e) {
                    return a.appendChild(e).appendChild(C.createElement("div")), "undefined" != typeof e.querySelectorAll && !e.querySelectorAll(":scope fieldset div").length
                }), d.attributes = ce(function(e) {
                    return e.className = "i", !e.getAttribute("className")
                }), d.getElementsByTagName = ce(function(e) {
                    return e.appendChild(C.createComment("")), !e.getElementsByTagName("*").length
                }), d.getElementsByClassName = K.test(C.getElementsByClassName), d.getById = ce(function(e) {
                    return a.appendChild(e).id = S, !C.getElementsByName || !C.getElementsByName(S).length
                }), d.getById ? (b.filter.ID = function(e) {
                    var t = e.replace(te, ne);
                    return function(e) {
                        return e.getAttribute("id") === t
                    }
                }, b.find.ID = function(e, t) {
                    if ("undefined" != typeof t.getElementById && E) {
                        var n = t.getElementById(e);
                        return n ? [n] : []
                    }
                }) : (b.filter.ID = function(e) {
                    var n = e.replace(te, ne);
                    return function(e) {
                        var t = "undefined" != typeof e.getAttributeNode && e.getAttributeNode("id");
                        return t && t.value === n
                    }
                }, b.find.ID = function(e, t) {
                    if ("undefined" != typeof t.getElementById && E) {
                        var n, r, i, o = t.getElementById(e);
                        if (o) {
                            if ((n = o.getAttributeNode("id")) && n.value === e) return [o];
                            i = t.getElementsByName(e), r = 0;
                            while (o = i[r++])
                                if ((n = o.getAttributeNode("id")) && n.value === e) return [o]
                        }
                        return []
                    }
                }), b.find.TAG = d.getElementsByTagName ? function(e, t) {
                    return "undefined" != typeof t.getElementsByTagName ? t.getElementsByTagName(e) : d.qsa ? t.querySelectorAll(e) : void 0
                } : function(e, t) {
                    var n, r = [],
                        i = 0,
                        o = t.getElementsByTagName(e);
                    if ("*" === e) {
                        while (n = o[i++]) 1 === n.nodeType && r.push(n);
                        return r
                    }
                    return o
                }, b.find.CLASS = d.getElementsByClassName && function(e, t) {
                    if ("undefined" != typeof t.getElementsByClassName && E) return t.getElementsByClassName(e)
                }, s = [], v = [], (d.qsa = K.test(C.querySelectorAll)) && (ce(function(e) {
                    var t;
                    a.appendChild(e).innerHTML = "<a id='" + S + "'></a><select id='" + S + "-\r\\' msallowcapture=''><option selected=''></option></select>", e.querySelectorAll("[msallowcapture^='']").length && v.push("[*^$]=" + M + "*(?:''|\"\")"), e.querySelectorAll("[selected]").length || v.push("\\[" + M + "*(?:value|" + R + ")"), e.querySelectorAll("[id~=" + S + "-]").length || v.push("~="), (t = C.createElement("input")).setAttribute("name", ""), e.appendChild(t), e.querySelectorAll("[name='']").length || v.push("\\[" + M + "*name" + M + "*=" + M + "*(?:''|\"\")"), e.querySelectorAll(":checked").length || v.push(":checked"), e.querySelectorAll("a#" + S + "+*").length || v.push(".#.+[+~]"), e.querySelectorAll("\\\f"), v.push("[\\r\\n\\f]")
                }), ce(function(e) {
                    e.innerHTML = "<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";
                    var t = C.createElement("input");
                    t.setAttribute("type", "hidden"), e.appendChild(t).setAttribute("name", "D"), e.querySelectorAll("[name=d]").length && v.push("name" + M + "*[*^$|!~]?="), 2 !== e.querySelectorAll(":enabled").length && v.push(":enabled", ":disabled"), a.appendChild(e).disabled = !0, 2 !== e.querySelectorAll(":disabled").length && v.push(":enabled", ":disabled"), e.querySelectorAll("*,:x"), v.push(",.*:")
                })), (d.matchesSelector = K.test(c = a.matches || a.webkitMatchesSelector || a.mozMatchesSelector || a.oMatchesSelector || a.msMatchesSelector)) && ce(function(e) {
                    d.disconnectedMatch = c.call(e, "*"), c.call(e, "[s!='']:x"), s.push("!=", F)
                }), v = v.length && new RegExp(v.join("|")), s = s.length && new RegExp(s.join("|")), t = K.test(a.compareDocumentPosition), y = t || K.test(a.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)
                        while (t = t.parentNode)
                            if (t === e) return !0;
                    return !1
                }, j = t ? function(e, t) {
                    if (e === t) return l = !0, 0;
                    var n = !e.compareDocumentPosition - !t.compareDocumentPosition;
                    return n || (1 & (n = (e.ownerDocument || e) == (t.ownerDocument || t) ? e.compareDocumentPosition(t) : 1) || !d.sortDetached && t.compareDocumentPosition(e) === n ? e == C || e.ownerDocument == p && y(p, e) ? -1 : t == C || t.ownerDocument == p && y(p, t) ? 1 : u ? P(u, e) - P(u, t) : 0 : 4 & n ? -1 : 1)
                } : function(e, t) {
                    if (e === t) return l = !0, 0;
                    var n, r = 0,
                        i = e.parentNode,
                        o = t.parentNode,
                        a = [e],
                        s = [t];
                    if (!i || !o) return e == C ? -1 : t == C ? 1 : i ? -1 : o ? 1 : u ? P(u, e) - P(u, t) : 0;
                    if (i === o) return pe(e, t);
                    n = e;
                    while (n = n.parentNode) a.unshift(n);
                    n = t;
                    while (n = n.parentNode) s.unshift(n);
                    while (a[r] === s[r]) r++;
                    return r ? pe(a[r], s[r]) : a[r] == p ? -1 : s[r] == p ? 1 : 0
                }), C
            }, se.matches = function(e, t) {
                return se(e, null, null, t)
            }, se.matchesSelector = function(e, t) {
                if (T(e), d.matchesSelector && E && !N[t + " "] && (!s || !s.test(t)) && (!v || !v.test(t))) try {
                    var n = c.call(e, t);
                    if (n || d.disconnectedMatch || e.document && 11 !== e.document.nodeType) return n
                } catch (e) {
                    N(t, !0)
                }
                return 0 < se(t, C, null, [e]).length
            }, se.contains = function(e, t) {
                return (e.ownerDocument || e) != C && T(e), y(e, t)
            }, se.attr = function(e, t) {
                (e.ownerDocument || e) != C && T(e);
                var n = b.attrHandle[t.toLowerCase()],
                    r = n && D.call(b.attrHandle, t.toLowerCase()) ? n(e, t, !E) : void 0;
                return void 0 !== r ? r : d.attributes || !E ? e.getAttribute(t) : (r = e.getAttributeNode(t)) && r.specified ? r.value : null
            }, se.escape = function(e) {
                return (e + "").replace(re, ie)
            }, se.error = function(e) {
                throw new Error("Syntax error, unrecognized expression: " + e)
            }, se.uniqueSort = function(e) {
                var t, n = [],
                    r = 0,
                    i = 0;
                if (l = !d.detectDuplicates, u = !d.sortStable && e.slice(0), e.sort(j), l) {
                    while (t = e[i++]) t === e[i] && (r = n.push(i));
                    while (r--) e.splice(n[r], 1)
                }
                return u = null, e
            }, o = se.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 += o(e)
                    } else if (3 === i || 4 === i) return e.nodeValue
                } else
                    while (t = e[r++]) n += o(t);
                return n
            }, (b = se.selectors = {
                cacheLength: 50,
                createPseudo: le,
                match: G,
                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(te, ne), e[3] = (e[3] || e[4] || e[5] || "").replace(te, ne), "~=" === 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] || se.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] && se.error(e[0]), e
                    },
                    PSEUDO: function(e) {
                        var t, n = !e[6] && e[2];
                        return G.CHILD.test(e[0]) ? null : (e[3] ? e[2] = e[4] || e[5] || "" : n && X.test(n) && (t = h(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(te, ne).toLowerCase();
                        return "*" === e ? function() {
                            return !0
                        } : function(e) {
                            return e.nodeName && e.nodeName.toLowerCase() === t
                        }
                    },
                    CLASS: function(e) {
                        var t = m[e + " "];
                        return t || (t = new RegExp("(^|" + M + ")" + e + "(" + M + "|$)")) && m(e, function(e) {
                            return t.test("string" == typeof e.className && e.className || "undefined" != typeof e.getAttribute && e.getAttribute("class") || "")
                        })
                    },
                    ATTR: function(n, r, i) {
                        return function(e) {
                            var t = se.attr(e, n);
                            return null == t ? "!=" === r : !r || (t += "", "=" === r ? t === i : "!=" === r ? t !== i : "^=" === r ? i && 0 === t.indexOf(i) : "*=" === r ? i && -1 < t.indexOf(i) : "$=" === r ? i && t.slice(-i.length) === i : "~=" === r ? -1 < (" " + t.replace(B, " ") + " ").indexOf(i) : "|=" === r && (t === i || t.slice(0, i.length + 1) === i + "-"))
                        }
                    },
                    CHILD: function(h, e, t, g, v) {
                        var y = "nth" !== h.slice(0, 3),
                            m = "last" !== h.slice(-4),
                            x = "of-type" === e;
                        return 1 === g && 0 === v ? function(e) {
                            return !!e.parentNode
                        } : function(e, t, n) {
                            var r, i, o, a, s, u, l = y !== m ? "nextSibling" : "previousSibling",
                                c = e.parentNode,
                                f = x && e.nodeName.toLowerCase(),
                                p = !n && !x,
                                d = !1;
                            if (c) {
                                if (y) {
                                    while (l) {
                                        a = e;
                                        while (a = a[l])
                                            if (x ? a.nodeName.toLowerCase() === f : 1 === a.nodeType) return !1;
                                        u = l = "only" === h && !u && "nextSibling"
                                    }
                                    return !0
                                }
                                if (u = [m ? c.firstChild : c.lastChild], m && p) {
                                    d = (s = (r = (i = (o = (a = c)[S] || (a[S] = {}))[a.uniqueID] || (o[a.uniqueID] = {}))[h] || [])[0] === k && r[1]) && r[2], a = s && c.childNodes[s];
                                    while (a = ++s && a && a[l] || (d = s = 0) || u.pop())
                                        if (1 === a.nodeType && ++d && a === e) {
                                            i[h] = [k, s, d];
                                            break
                                        }
                                } else if (p && (d = s = (r = (i = (o = (a = e)[S] || (a[S] = {}))[a.uniqueID] || (o[a.uniqueID] = {}))[h] || [])[0] === k && r[1]), !1 === d)
                                    while (a = ++s && a && a[l] || (d = s = 0) || u.pop())
                                        if ((x ? a.nodeName.toLowerCase() === f : 1 === a.nodeType) && ++d && (p && ((i = (o = a[S] || (a[S] = {}))[a.uniqueID] || (o[a.uniqueID] = {}))[h] = [k, d]), a === e)) break;
                                return (d -= v) === g || d % g == 0 && 0 <= d / g
                            }
                        }
                    },
                    PSEUDO: function(e, o) {
                        var t, a = b.pseudos[e] || b.setFilters[e.toLowerCase()] || se.error("unsupported pseudo: " + e);
                        return a[S] ? a(o) : 1 < a.length ? (t = [e, e, "", o], b.setFilters.hasOwnProperty(e.toLowerCase()) ? le(function(e, t) {
                            var n, r = a(e, o),
                                i = r.length;
                            while (i--) e[n = P(e, r[i])] = !(t[n] = r[i])
                        }) : function(e) {
                            return a(e, 0, t)
                        }) : a
                    }
                },
                pseudos: {
                    not: le(function(e) {
                        var r = [],
                            i = [],
                            s = f(e.replace($, "$1"));
                        return s[S] ? le(function(e, t, n, r) {
                            var i, o = s(e, null, r, []),
                                a = e.length;
                            while (a--)(i = o[a]) && (e[a] = !(t[a] = i))
                        }) : function(e, t, n) {
                            return r[0] = e, s(r, null, n, i), r[0] = null, !i.pop()
                        }
                    }),
                    has: le(function(t) {
                        return function(e) {
                            return 0 < se(t, e).length
                        }
                    }),
                    contains: le(function(t) {
                        return t = t.replace(te, ne),
                            function(e) {
                                return -1 < (e.textContent || o(e)).indexOf(t)
                            }
                    }),
                    lang: le(function(n) {
                        return V.test(n || "") || se.error("unsupported lang: " + n), n = n.replace(te, ne).toLowerCase(),
                            function(e) {
                                var t;
                                do {
                                    if (t = E ? e.lang : e.getAttribute("xml:lang") || e.getAttribute("lang")) return (t = t.toLowerCase()) === n || 0 === t.indexOf(n + "-")
                                } while ((e = e.parentNode) && 1 === e.nodeType);
                                return !1
                            }
                    }),
                    target: function(e) {
                        var t = n.location && n.location.hash;
                        return t && t.slice(1) === e.id
                    },
                    root: function(e) {
                        return e === a
                    },
                    focus: function(e) {
                        return e === C.activeElement && (!C.hasFocus || C.hasFocus()) && !!(e.type || e.href || ~e.tabIndex)
                    },
                    enabled: ge(!1),
                    disabled: ge(!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, !0 === e.selected
                    },
                    empty: function(e) {
                        for (e = e.firstChild; e; e = e.nextSibling)
                            if (e.nodeType < 6) return !1;
                        return !0
                    },
                    parent: function(e) {
                        return !b.pseudos.empty(e)
                    },
                    header: function(e) {
                        return J.test(e.nodeName)
                    },
                    input: function(e) {
                        return Q.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: ve(function() {
                        return [0]
                    }),
                    last: ve(function(e, t) {
                        return [t - 1]
                    }),
                    eq: ve(function(e, t, n) {
                        return [n < 0 ? n + t : n]
                    }),
                    even: ve(function(e, t) {
                        for (var n = 0; n < t; n += 2) e.push(n);
                        return e
                    }),
                    odd: ve(function(e, t) {
                        for (var n = 1; n < t; n += 2) e.push(n);
                        return e
                    }),
                    lt: ve(function(e, t, n) {
                        for (var r = n < 0 ? n + t : t < n ? t : n; 0 <= --r;) e.push(r);
                        return e
                    }),
                    gt: ve(function(e, t, n) {
                        for (var r = n < 0 ? n + t : n; ++r < t;) e.push(r);
                        return e
                    })
                }
            }).pseudos.nth = b.pseudos.eq, {
                radio: !0,
                checkbox: !0,
                file: !0,
                password: !0,
                image: !0
            }) b.pseudos[e] = de(e);
        for (e in {
                submit: !0,
                reset: !0
            }) b.pseudos[e] = he(e);

        function me() {}

        function xe(e) {
            for (var t = 0, n = e.length, r = ""; t < n; t++) r += e[t].value;
            return r
        }

        function be(s, e, t) {
            var u = e.dir,
                l = e.next,
                c = l || u,
                f = t && "parentNode" === c,
                p = r++;
            return e.first ? function(e, t, n) {
                while (e = e[u])
                    if (1 === e.nodeType || f) return s(e, t, n);
                return !1
            } : function(e, t, n) {
                var r, i, o, a = [k, p];
                if (n) {
                    while (e = e[u])
                        if ((1 === e.nodeType || f) && s(e, t, n)) return !0
                } else
                    while (e = e[u])
                        if (1 === e.nodeType || f)
                            if (i = (o = e[S] || (e[S] = {}))[e.uniqueID] || (o[e.uniqueID] = {}), l && l === e.nodeName.toLowerCase()) e = e[u] || e;
                            else {
                                if ((r = i[c]) && r[0] === k && r[1] === p) return a[2] = r[2];
                                if ((i[c] = a)[2] = s(e, t, n)) return !0
                            } return !1
            }
        }

        function we(i) {
            return 1 < i.length ? function(e, t, n) {
                var r = i.length;
                while (r--)
                    if (!i[r](e, t, n)) return !1;
                return !0
            } : i[0]
        }

        function Te(e, t, n, r, i) {
            for (var o, a = [], s = 0, u = e.length, l = null != t; s < u; s++)(o = e[s]) && (n && !n(o, r, i) || (a.push(o), l && t.push(s)));
            return a
        }

        function Ce(d, h, g, v, y, e) {
            return v && !v[S] && (v = Ce(v)), y && !y[S] && (y = Ce(y, e)), le(function(e, t, n, r) {
                var i, o, a, s = [],
                    u = [],
                    l = t.length,
                    c = e || function(e, t, n) {
                        for (var r = 0, i = t.length; r < i; r++) se(e, t[r], n);
                        return n
                    }(h || "*", n.nodeType ? [n] : n, []),
                    f = !d || !e && h ? c : Te(c, s, d, n, r),
                    p = g ? y || (e ? d : l || v) ? [] : t : f;
                if (g && g(f, p, n, r), v) {
                    i = Te(p, u), v(i, [], n, r), o = i.length;
                    while (o--)(a = i[o]) && (p[u[o]] = !(f[u[o]] = a))
                }
                if (e) {
                    if (y || d) {
                        if (y) {
                            i = [], o = p.length;
                            while (o--)(a = p[o]) && i.push(f[o] = a);
                            y(null, p = [], i, r)
                        }
                        o = p.length;
                        while (o--)(a = p[o]) && -1 < (i = y ? P(e, a) : s[o]) && (e[i] = !(t[i] = a))
                    }
                } else p = Te(p === t ? p.splice(l, p.length) : p), y ? y(null, t, p, r) : H.apply(t, p)
            })
        }

        function Ee(e) {
            for (var i, t, n, r = e.length, o = b.relative[e[0].type], a = o || b.relative[" "], s = o ? 1 : 0, u = be(function(e) {
                    return e === i
                }, a, !0), l = be(function(e) {
                    return -1 < P(i, e)
                }, a, !0), c = [function(e, t, n) {
                    var r = !o && (n || t !== w) || ((i = t).nodeType ? u(e, t, n) : l(e, t, n));
                    return i = null, r
                }]; s < r; s++)
                if (t = b.relative[e[s].type]) c = [be(we(c), t)];
                else {
                    if ((t = b.filter[e[s].type].apply(null, e[s].matches))[S]) {
                        for (n = ++s; n < r; n++)
                            if (b.relative[e[n].type]) break;
                        return Ce(1 < s && we(c), 1 < s && xe(e.slice(0, s - 1).concat({
                            value: " " === e[s - 2].type ? "*" : ""
                        })).replace($, "$1"), t, s < n && Ee(e.slice(s, n)), n < r && Ee(e = e.slice(n)), n < r && xe(e))
                    }
                    c.push(t)
                }
            return we(c)
        }
        return me.prototype = b.filters = b.pseudos, b.setFilters = new me, h = se.tokenize = function(e, t) {
            var n, r, i, o, a, s, u, l = x[e + " "];
            if (l) return t ? 0 : l.slice(0);
            a = e, s = [], u = b.preFilter;
            while (a) {
                for (o in n && !(r = _.exec(a)) || (r && (a = a.slice(r[0].length) || a), s.push(i = [])), n = !1, (r = z.exec(a)) && (n = r.shift(), i.push({
                        value: n,
                        type: r[0].replace($, " ")
                    }), a = a.slice(n.length)), b.filter) !(r = G[o].exec(a)) || u[o] && !(r = u[o](r)) || (n = r.shift(), i.push({
                    value: n,
                    type: o,
                    matches: r
                }), a = a.slice(n.length));
                if (!n) break
            }
            return t ? a.length : a ? se.error(e) : x(e, s).slice(0)
        }, f = se.compile = function(e, t) {
            var n, v, y, m, x, r, i = [],
                o = [],
                a = A[e + " "];
            if (!a) {
                t || (t = h(e)), n = t.length;
                while (n--)(a = Ee(t[n]))[S] ? i.push(a) : o.push(a);
                (a = A(e, (v = o, m = 0 < (y = i).length, x = 0 < v.length, r = function(e, t, n, r, i) {
                    var o, a, s, u = 0,
                        l = "0",
                        c = e && [],
                        f = [],
                        p = w,
                        d = e || x && b.find.TAG("*", i),
                        h = k += null == p ? 1 : Math.random() || .1,
                        g = d.length;
                    for (i && (w = t == C || t || i); l !== g && null != (o = d[l]); l++) {
                        if (x && o) {
                            a = 0, t || o.ownerDocument == C || (T(o), n = !E);
                            while (s = v[a++])
                                if (s(o, t || C, n)) {
                                    r.push(o);
                                    break
                                }
                            i && (k = h)
                        }
                        m && ((o = !s && o) && u--, e && c.push(o))
                    }
                    if (u += l, m && l !== u) {
                        a = 0;
                        while (s = y[a++]) s(c, f, t, n);
                        if (e) {
                            if (0 < u)
                                while (l--) c[l] || f[l] || (f[l] = q.call(r));
                            f = Te(f)
                        }
                        H.apply(r, f), i && !e && 0 < f.length && 1 < u + y.length && se.uniqueSort(r)
                    }
                    return i && (k = h, w = p), c
                }, m ? le(r) : r))).selector = e
            }
            return a
        }, g = se.select = function(e, t, n, r) {
            var i, o, a, s, u, l = "function" == typeof e && e,
                c = !r && h(e = l.selector || e);
            if (n = n || [], 1 === c.length) {
                if (2 < (o = c[0] = c[0].slice(0)).length && "ID" === (a = o[0]).type && 9 === t.nodeType && E && b.relative[o[1].type]) {
                    if (!(t = (b.find.ID(a.matches[0].replace(te, ne), t) || [])[0])) return n;
                    l && (t = t.parentNode), e = e.slice(o.shift().value.length)
                }
                i = G.needsContext.test(e) ? 0 : o.length;
                while (i--) {
                    if (a = o[i], b.relative[s = a.type]) break;
                    if ((u = b.find[s]) && (r = u(a.matches[0].replace(te, ne), ee.test(o[0].type) && ye(t.parentNode) || t))) {
                        if (o.splice(i, 1), !(e = r.length && xe(o))) return H.apply(n, r), n;
                        break
                    }
                }
            }
            return (l || f(e, c))(r, t, !E, n, !t || ee.test(e) && ye(t.parentNode) || t), n
        }, d.sortStable = S.split("").sort(j).join("") === S, d.detectDuplicates = !!l, T(), d.sortDetached = ce(function(e) {
            return 1 & e.compareDocumentPosition(C.createElement("fieldset"))
        }), ce(function(e) {
            return e.innerHTML = "<a href='#'></a>", "#" === e.firstChild.getAttribute("href")
        }) || fe("type|href|height|width", function(e, t, n) {
            if (!n) return e.getAttribute(t, "type" === t.toLowerCase() ? 1 : 2)
        }), d.attributes && ce(function(e) {
            return e.innerHTML = "<input/>", e.firstChild.setAttribute("value", ""), "" === e.firstChild.getAttribute("value")
        }) || fe("value", function(e, t, n) {
            if (!n && "input" === e.nodeName.toLowerCase()) return e.defaultValue
        }), ce(function(e) {
            return null == e.getAttribute("disabled")
        }) || fe(R, function(e, t, n) {
            var r;
            if (!n) return !0 === e[t] ? t.toLowerCase() : (r = e.getAttributeNode(t)) && r.specified ? r.value : null
        }), se
    }(C);
    S.find = d, S.expr = d.selectors, S.expr[":"] = S.expr.pseudos, S.uniqueSort = S.unique = d.uniqueSort, S.text = d.getText, S.isXMLDoc = d.isXML, S.contains = d.contains, S.escapeSelector = d.escape;
    var h = function(e, t, n) {
            var r = [],
                i = void 0 !== n;
            while ((e = e[t]) && 9 !== e.nodeType)
                if (1 === e.nodeType) {
                    if (i && S(e).is(n)) break;
                    r.push(e)
                }
            return r
        },
        T = function(e, t) {
            for (var n = []; e; e = e.nextSibling) 1 === e.nodeType && e !== t && n.push(e);
            return n
        },
        k = S.expr.match.needsContext;

    function A(e, t) {
        return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase()
    }
    var N = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;

    function j(e, n, r) {
        return m(n) ? S.grep(e, function(e, t) {
            return !!n.call(e, t, e) !== r
        }) : n.nodeType ? S.grep(e, function(e) {
            return e === n !== r
        }) : "string" != typeof n ? S.grep(e, function(e) {
            return -1 < i.call(n, e) !== r
        }) : S.filter(n, e, r)
    }
    S.filter = function(e, t, n) {
        var r = t[0];
        return n && (e = ":not(" + e + ")"), 1 === t.length && 1 === r.nodeType ? S.find.matchesSelector(r, e) ? [r] : [] : S.find.matches(e, S.grep(t, function(e) {
            return 1 === e.nodeType
        }))
    }, S.fn.extend({
        find: function(e) {
            var t, n, r = this.length,
                i = this;
            if ("string" != typeof e) return this.pushStack(S(e).filter(function() {
                for (t = 0; t < r; t++)
                    if (S.contains(i[t], this)) return !0
            }));
            for (n = this.pushStack([]), t = 0; t < r; t++) S.find(e, i[t], n);
            return 1 < r ? S.uniqueSort(n) : n
        },
        filter: function(e) {
            return this.pushStack(j(this, e || [], !1))
        },
        not: function(e) {
            return this.pushStack(j(this, e || [], !0))
        },
        is: function(e) {
            return !!j(this, "string" == typeof e && k.test(e) ? S(e) : e || [], !1).length
        }
    });
    var D, q = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;
    (S.fn.init = function(e, t, n) {
        var r, i;
        if (!e) return this;
        if (n = n || D, "string" == typeof e) {
            if (!(r = "<" === e[0] && ">" === e[e.length - 1] && 3 <= e.length ? [null, e, null] : q.exec(e)) || !r[1] && t) return !t || t.jquery ? (t || n).find(e) : this.constructor(t).find(e);
            if (r[1]) {
                if (t = t instanceof S ? t[0] : t, S.merge(this, S.parseHTML(r[1], t && t.nodeType ? t.ownerDocument || t : E, !0)), N.test(r[1]) && S.isPlainObject(t))
                    for (r in t) m(this[r]) ? this[r](t[r]) : this.attr(r, t[r]);
                return this
            }
            return (i = E.getElementById(r[2])) && (this[0] = i, this.length = 1), this
        }
        return e.nodeType ? (this[0] = e, this.length = 1, this) : m(e) ? void 0 !== n.ready ? n.ready(e) : e(S) : S.makeArray(e, this)
    }).prototype = S.fn, D = S(E);
    var L = /^(?:parents|prev(?:Until|All))/,
        H = {
            children: !0,
            contents: !0,
            next: !0,
            prev: !0
        };

    function O(e, t) {
        while ((e = e[t]) && 1 !== e.nodeType);
        return e
    }
    S.fn.extend({
        has: function(e) {
            var t = S(e, this),
                n = t.length;
            return this.filter(function() {
                for (var e = 0; e < n; e++)
                    if (S.contains(this, t[e])) return !0
            })
        },
        closest: function(e, t) {
            var n, r = 0,
                i = this.length,
                o = [],
                a = "string" != typeof e && S(e);
            if (!k.test(e))
                for (; r < i; r++)
                    for (n = this[r]; n && n !== t; n = n.parentNode)
                        if (n.nodeType < 11 && (a ? -1 < a.index(n) : 1 === n.nodeType && S.find.matchesSelector(n, e))) {
                            o.push(n);
                            break
                        }
            return this.pushStack(1 < o.length ? S.uniqueSort(o) : o)
        },
        index: function(e) {
            return e ? "string" == typeof e ? i.call(S(e), this[0]) : i.call(this, e.jquery ? e[0] : e) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1
        },
        add: function(e, t) {
            return this.pushStack(S.uniqueSort(S.merge(this.get(), S(e, t))))
        },
        addBack: function(e) {
            return this.add(null == e ? this.prevObject : this.prevObject.filter(e))
        }
    }), S.each({
        parent: function(e) {
            var t = e.parentNode;
            return t && 11 !== t.nodeType ? t : null
        },
        parents: function(e) {
            return h(e, "parentNode")
        },
        parentsUntil: function(e, t, n) {
            return h(e, "parentNode", n)
        },
        next: function(e) {
            return O(e, "nextSibling")
        },
        prev: function(e) {
            return O(e, "previousSibling")
        },
        nextAll: function(e) {
            return h(e, "nextSibling")
        },
        prevAll: function(e) {
            return h(e, "previousSibling")
        },
        nextUntil: function(e, t, n) {
            return h(e, "nextSibling", n)
        },
        prevUntil: function(e, t, n) {
            return h(e, "previousSibling", n)
        },
        siblings: function(e) {
            return T((e.parentNode || {}).firstChild, e)
        },
        children: function(e) {
            return T(e.firstChild)
        },
        contents: function(e) {
            return null != e.contentDocument && r(e.contentDocument) ? e.contentDocument : (A(e, "template") && (e = e.content || e), S.merge([], e.childNodes))
        }
    }, function(r, i) {
        S.fn[r] = function(e, t) {
            var n = S.map(this, i, e);
            return "Until" !== r.slice(-5) && (t = e), t && "string" == typeof t && (n = S.filter(t, n)), 1 < this.length && (H[r] || S.uniqueSort(n), L.test(r) && n.reverse()), this.pushStack(n)
        }
    });
    var P = /[^\x20\t\r\n\f]+/g;

    function R(e) {
        return e
    }

    function M(e) {
        throw e
    }

    function I(e, t, n, r) {
        var i;
        try {
            e && m(i = e.promise) ? i.call(e).done(t).fail(n) : e && m(i = e.then) ? i.call(e, t, n) : t.apply(void 0, [e].slice(r))
        } catch (e) {
            n.apply(void 0, [e])
        }
    }
    S.Callbacks = function(r) {
        var e, n;
        r = "string" == typeof r ? (e = r, n = {}, S.each(e.match(P) || [], function(e, t) {
            n[t] = !0
        }), n) : S.extend({}, r);
        var i, t, o, a, s = [],
            u = [],
            l = -1,
            c = function() {
                for (a = a || r.once, o = i = !0; u.length; l = -1) {
                    t = u.shift();
                    while (++l < s.length) !1 === s[l].apply(t[0], t[1]) && r.stopOnFalse && (l = s.length, t = !1)
                }
                r.memory || (t = !1), i = !1, a && (s = t ? [] : "")
            },
            f = {
                add: function() {
                    return s && (t && !i && (l = s.length - 1, u.push(t)), function n(e) {
                        S.each(e, function(e, t) {
                            m(t) ? r.unique && f.has(t) || s.push(t) : t && t.length && "string" !== w(t) && n(t)
                        })
                    }(arguments), t && !i && c()), this
                },
                remove: function() {
                    return S.each(arguments, function(e, t) {
                        var n;
                        while (-1 < (n = S.inArray(t, s, n))) s.splice(n, 1), n <= l && l--
                    }), this
                },
                has: function(e) {
                    return e ? -1 < S.inArray(e, s) : 0 < s.length
                },
                empty: function() {
                    return s && (s = []), this
                },
                disable: function() {
                    return a = u = [], s = t = "", this
                },
                disabled: function() {
                    return !s
                },
                lock: function() {
                    return a = u = [], t || i || (s = t = ""), this
                },
                locked: function() {
                    return !!a
                },
                fireWith: function(e, t) {
                    return a || (t = [e, (t = t || []).slice ? t.slice() : t], u.push(t), i || c()), this
                },
                fire: function() {
                    return f.fireWith(this, arguments), this
                },
                fired: function() {
                    return !!o
                }
            };
        return f
    }, S.extend({
        Deferred: function(e) {
            var o = [
                    ["notify", "progress", S.Callbacks("memory"), S.Callbacks("memory"), 2],
                    ["resolve", "done", S.Callbacks("once memory"), S.Callbacks("once memory"), 0, "resolved"],
                    ["reject", "fail", S.Callbacks("once memory"), S.Callbacks("once memory"), 1, "rejected"]
                ],
                i = "pending",
                a = {
                    state: function() {
                        return i
                    },
                    always: function() {
                        return s.done(arguments).fail(arguments), this
                    },
                    "catch": function(e) {
                        return a.then(null, e)
                    },
                    pipe: function() {
                        var i = arguments;
                        return S.Deferred(function(r) {
                            S.each(o, function(e, t) {
                                var n = m(i[t[4]]) && i[t[4]];
                                s[t[1]](function() {
                                    var e = n && n.apply(this, arguments);
                                    e && m(e.promise) ? e.promise().progress(r.notify).done(r.resolve).fail(r.reject) : r[t[0] + "With"](this, n ? [e] : arguments)
                                })
                            }), i = null
                        }).promise()
                    },
                    then: function(t, n, r) {
                        var u = 0;

                        function l(i, o, a, s) {
                            return function() {
                                var n = this,
                                    r = arguments,
                                    e = function() {
                                        var e, t;
                                        if (!(i < u)) {
                                            if ((e = a.apply(n, r)) === o.promise()) throw new TypeError("Thenable self-resolution");
                                            t = e && ("object" == typeof e || "function" == typeof e) && e.then, m(t) ? s ? t.call(e, l(u, o, R, s), l(u, o, M, s)) : (u++, t.call(e, l(u, o, R, s), l(u, o, M, s), l(u, o, R, o.notifyWith))) : (a !== R && (n = void 0, r = [e]), (s || o.resolveWith)(n, r))
                                        }
                                    },
                                    t = s ? e : function() {
                                        try {
                                            e()
                                        } catch (e) {
                                            S.Deferred.exceptionHook && S.Deferred.exceptionHook(e, t.stackTrace), u <= i + 1 && (a !== M && (n = void 0, r = [e]), o.rejectWith(n, r))
                                        }
                                    };
                                i ? t() : (S.Deferred.getStackHook && (t.stackTrace = S.Deferred.getStackHook()), C.setTimeout(t))
                            }
                        }
                        return S.Deferred(function(e) {
                            o[0][3].add(l(0, e, m(r) ? r : R, e.notifyWith)), o[1][3].add(l(0, e, m(t) ? t : R)), o[2][3].add(l(0, e, m(n) ? n : M))
                        }).promise()
                    },
                    promise: function(e) {
                        return null != e ? S.extend(e, a) : a
                    }
                },
                s = {};
            return S.each(o, function(e, t) {
                var n = t[2],
                    r = t[5];
                a[t[1]] = n.add, r && n.add(function() {
                    i = r
                }, o[3 - e][2].disable, o[3 - e][3].disable, o[0][2].lock, o[0][3].lock), n.add(t[3].fire), s[t[0]] = function() {
                    return s[t[0] + "With"](this === s ? void 0 : this, arguments), this
                }, s[t[0] + "With"] = n.fireWith
            }), a.promise(s), e && e.call(s, s), s
        },
        when: function(e) {
            var n = arguments.length,
                t = n,
                r = Array(t),
                i = s.call(arguments),
                o = S.Deferred(),
                a = function(t) {
                    return function(e) {
                        r[t] = this, i[t] = 1 < arguments.length ? s.call(arguments) : e, --n || o.resolveWith(r, i)
                    }
                };
            if (n <= 1 && (I(e, o.done(a(t)).resolve, o.reject, !n), "pending" === o.state() || m(i[t] && i[t].then))) return o.then();
            while (t--) I(i[t], a(t), o.reject);
            return o.promise()
        }
    });
    var W = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
    S.Deferred.exceptionHook = function(e, t) {
        C.console && C.console.warn && e && W.test(e.name) && C.console.warn("jQuery.Deferred exception: " + e.message, e.stack, t)
    }, S.readyException = function(e) {
        C.setTimeout(function() {
            throw e
        })
    };
    var F = S.Deferred();

    function B() {
        E.removeEventListener("DOMContentLoaded", B), C.removeEventListener("load", B), S.ready()
    }
    S.fn.ready = function(e) {
        return F.then(e)["catch"](function(e) {
            S.readyException(e)
        }), this
    }, S.extend({
        isReady: !1,
        readyWait: 1,
        ready: function(e) {
            (!0 === e ? --S.readyWait : S.isReady) || (S.isReady = !0) !== e && 0 < --S.readyWait || F.resolveWith(E, [S])
        }
    }), S.ready.then = F.then, "complete" === E.readyState || "loading" !== E.readyState && !E.documentElement.doScroll ? C.setTimeout(S.ready) : (E.addEventListener("DOMContentLoaded", B), C.addEventListener("load", B));
    var $ = function(e, t, n, r, i, o, a) {
            var s = 0,
                u = e.length,
                l = null == n;
            if ("object" === w(n))
                for (s in i = !0, n) $(e, t, s, n[s], !0, o, a);
            else if (void 0 !== r && (i = !0, m(r) || (a = !0), l && (a ? (t.call(e, r), t = null) : (l = t, t = function(e, t, n) {
                    return l.call(S(e), n)
                })), t))
                for (; s < u; s++) t(e[s], n, a ? r : r.call(e[s], s, t(e[s], n)));
            return i ? e : l ? t.call(e) : u ? t(e[0], n) : o
        },
        _ = /^-ms-/,
        z = /-([a-z])/g;

    function U(e, t) {
        return t.toUpperCase()
    }

    function X(e) {
        return e.replace(_, "ms-").replace(z, U)
    }
    var V = function(e) {
        return 1 === e.nodeType || 9 === e.nodeType || !+e.nodeType
    };

    function G() {
        this.expando = S.expando + G.uid++
    }
    G.uid = 1, G.prototype = {
        cache: function(e) {
            var t = e[this.expando];
            return t || (t = {}, V(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[X(t)] = n;
            else
                for (r in t) i[X(r)] = t[r];
            return i
        },
        get: function(e, t) {
            return void 0 === t ? this.cache(e) : e[this.expando] && e[this.expando][X(t)]
        },
        access: function(e, t, n) {
            return void 0 === t || t && "string" == typeof t && void 0 === n ? this.get(e, t) : (this.set(e, t, n), void 0 !== n ? n : t)
        },
        remove: function(e, t) {
            var n, r = e[this.expando];
            if (void 0 !== r) {
                if (void 0 !== t) {
                    n = (t = Array.isArray(t) ? t.map(X) : (t = X(t)) in r ? [t] : t.match(P) || []).length;
                    while (n--) delete r[t[n]]
                }(void 0 === t || S.isEmptyObject(r)) && (e.nodeType ? e[this.expando] = void 0 : delete e[this.expando])
            }
        },
        hasData: function(e) {
            var t = e[this.expando];
            return void 0 !== t && !S.isEmptyObject(t)
        }
    };
    var Y = new G,
        Q = new G,
        J = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
        K = /[A-Z]/g;

    function Z(e, t, n) {
        var r, i;
        if (void 0 === n && 1 === e.nodeType)
            if (r = "data-" + t.replace(K, "-$&").toLowerCase(), "string" == typeof(n = e.getAttribute(r))) {
                try {
                    n = "true" === (i = n) || "false" !== i && ("null" === i ? null : i === +i + "" ? +i : J.test(i) ? JSON.parse(i) : i)
                } catch (e) {}
                Q.set(e, t, n)
            } else n = void 0;
        return n
    }
    S.extend({
        hasData: function(e) {
            return Q.hasData(e) || Y.hasData(e)
        },
        data: function(e, t, n) {
            return Q.access(e, t, n)
        },
        removeData: function(e, t) {
            Q.remove(e, t)
        },
        _data: function(e, t, n) {
            return Y.access(e, t, n)
        },
        _removeData: function(e, t) {
            Y.remove(e, t)
        }
    }), S.fn.extend({
        data: function(n, e) {
            var t, r, i, o = this[0],
                a = o && o.attributes;
            if (void 0 === n) {
                if (this.length && (i = Q.get(o), 1 === o.nodeType && !Y.get(o, "hasDataAttrs"))) {
                    t = a.length;
                    while (t--) a[t] && 0 === (r = a[t].name).indexOf("data-") && (r = X(r.slice(5)), Z(o, r, i[r]));
                    Y.set(o, "hasDataAttrs", !0)
                }
                return i
            }
            return "object" == typeof n ? this.each(function() {
                Q.set(this, n)
            }) : $(this, function(e) {
                var t;
                if (o && void 0 === e) return void 0 !== (t = Q.get(o, n)) ? t : void 0 !== (t = Z(o, n)) ? t : void 0;
                this.each(function() {
                    Q.set(this, n, e)
                })
            }, null, e, 1 < arguments.length, null, !0)
        },
        removeData: function(e) {
            return this.each(function() {
                Q.remove(this, e)
            })
        }
    }), S.extend({
        queue: function(e, t, n) {
            var r;
            if (e) return t = (t || "fx") + "queue", r = Y.get(e, t), n && (!r || Array.isArray(n) ? r = Y.access(e, t, S.makeArray(n)) : r.push(n)), r || []
        },
        dequeue: function(e, t) {
            t = t || "fx";
            var n = S.queue(e, t),
                r = n.length,
                i = n.shift(),
                o = S._queueHooks(e, t);
            "inprogress" === i && (i = n.shift(), r--), i && ("fx" === t && n.unshift("inprogress"), delete o.stop, i.call(e, function() {
                S.dequeue(e, t)
            }, o)), !r && o && o.empty.fire()
        },
        _queueHooks: function(e, t) {
            var n = t + "queueHooks";
            return Y.get(e, n) || Y.access(e, n, {
                empty: S.Callbacks("once memory").add(function() {
                    Y.remove(e, [t + "queue", n])
                })
            })
        }
    }), S.fn.extend({
        queue: function(t, n) {
            var e = 2;
            return "string" != typeof t && (n = t, t = "fx", e--), arguments.length < e ? S.queue(this[0], t) : void 0 === n ? this : this.each(function() {
                var e = S.queue(this, t, n);
                S._queueHooks(this, t), "fx" === t && "inprogress" !== e[0] && S.dequeue(this, t)
            })
        },
        dequeue: function(e) {
            return this.each(function() {
                S.dequeue(this, e)
            })
        },
        clearQueue: function(e) {
            return this.queue(e || "fx", [])
        },
        promise: function(e, t) {
            var n, r = 1,
                i = S.Deferred(),
                o = this,
                a = this.length,
                s = function() {
                    --r || i.resolveWith(o, [o])
                };
            "string" != typeof e && (t = e, e = void 0), e = e || "fx";
            while (a--)(n = Y.get(o[a], e + "queueHooks")) && n.empty && (r++, n.empty.add(s));
            return s(), i.promise(t)
        }
    });
    var ee = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
        te = new RegExp("^(?:([+-])=|)(" + ee + ")([a-z%]*)$", "i"),
        ne = ["Top", "Right", "Bottom", "Left"],
        re = E.documentElement,
        ie = function(e) {
            return S.contains(e.ownerDocument, e)
        },
        oe = {
            composed: !0
        };
    re.getRootNode && (ie = function(e) {
        return S.contains(e.ownerDocument, e) || e.getRootNode(oe) === e.ownerDocument
    });
    var ae = function(e, t) {
        return "none" === (e = t || e).style.display || "" === e.style.display && ie(e) && "none" === S.css(e, "display")
    };

    function se(e, t, n, r) {
        var i, o, a = 20,
            s = r ? function() {
                return r.cur()
            } : function() {
                return S.css(e, t, "")
            },
            u = s(),
            l = n && n[3] || (S.cssNumber[t] ? "" : "px"),
            c = e.nodeType && (S.cssNumber[t] || "px" !== l && +u) && te.exec(S.css(e, t));
        if (c && c[3] !== l) {
            u /= 2, l = l || c[3], c = +u || 1;
            while (a--) S.style(e, t, c + l), (1 - o) * (1 - (o = s() / u || .5)) <= 0 && (a = 0), c /= o;
            c *= 2, S.style(e, t, c + l), n = n || []
        }
        return n && (c = +c || +u || 0, i = n[1] ? c + (n[1] + 1) * n[2] : +n[2], r && (r.unit = l, r.start = c, r.end = i)), i
    }
    var ue = {};

    function le(e, t) {
        for (var n, r, i, o, a, s, u, l = [], c = 0, f = e.length; c < f; c++)(r = e[c]).style && (n = r.style.display, t ? ("none" === n && (l[c] = Y.get(r, "display") || null, l[c] || (r.style.display = "")), "" === r.style.display && ae(r) && (l[c] = (u = a = o = void 0, a = (i = r).ownerDocument, s = i.nodeName, (u = ue[s]) || (o = a.body.appendChild(a.createElement(s)), u = S.css(o, "display"), o.parentNode.removeChild(o), "none" === u && (u = "block"), ue[s] = u)))) : "none" !== n && (l[c] = "none", Y.set(r, "display", n)));
        for (c = 0; c < f; c++) null != l[c] && (e[c].style.display = l[c]);
        return e
    }
    S.fn.extend({
        show: function() {
            return le(this, !0)
        },
        hide: function() {
            return le(this)
        },
        toggle: function(e) {
            return "boolean" == typeof e ? e ? this.show() : this.hide() : this.each(function() {
                ae(this) ? S(this).show() : S(this).hide()
            })
        }
    });
    var ce, fe, pe = /^(?:checkbox|radio)$/i,
        de = /<([a-z][^\/\0>\x20\t\r\n\f]*)/i,
        he = /^$|^module$|\/(?:java|ecma)script/i;
    ce = E.createDocumentFragment().appendChild(E.createElement("div")), (fe = E.createElement("input")).setAttribute("type", "radio"), fe.setAttribute("checked", "checked"), fe.setAttribute("name", "t"), ce.appendChild(fe), y.checkClone = ce.cloneNode(!0).cloneNode(!0).lastChild.checked, ce.innerHTML = "<textarea>x</textarea>", y.noCloneChecked = !!ce.cloneNode(!0).lastChild.defaultValue, ce.innerHTML = "<option></option>", y.option = !!ce.lastChild;
    var ge = {
        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, "", ""]
    };

    function ve(e, t) {
        var n;
        return n = "undefined" != typeof e.getElementsByTagName ? e.getElementsByTagName(t || "*") : "undefined" != typeof e.querySelectorAll ? e.querySelectorAll(t || "*") : [], void 0 === t || t && A(e, t) ? S.merge([e], n) : n
    }

    function ye(e, t) {
        for (var n = 0, r = e.length; n < r; n++) Y.set(e[n], "globalEval", !t || Y.get(t[n], "globalEval"))
    }
    ge.tbody = ge.tfoot = ge.colgroup = ge.caption = ge.thead, ge.th = ge.td, y.option || (ge.optgroup = ge.option = [1, "<select multiple='multiple'>", "</select>"]);
    var me = /<|&#?\w+;/;

    function xe(e, t, n, r, i) {
        for (var o, a, s, u, l, c, f = t.createDocumentFragment(), p = [], d = 0, h = e.length; d < h; d++)
            if ((o = e[d]) || 0 === o)
                if ("object" === w(o)) S.merge(p, o.nodeType ? [o] : o);
                else if (me.test(o)) {
            a = a || f.appendChild(t.createElement("div")), s = (de.exec(o) || ["", ""])[1].toLowerCase(), u = ge[s] || ge._default, a.innerHTML = u[1] + S.htmlPrefilter(o) + u[2], c = u[0];
            while (c--) a = a.lastChild;
            S.merge(p, a.childNodes), (a = f.firstChild).textContent = ""
        } else p.push(t.createTextNode(o));
        f.textContent = "", d = 0;
        while (o = p[d++])
            if (r && -1 < S.inArray(o, r)) i && i.push(o);
            else if (l = ie(o), a = ve(f.appendChild(o), "script"), l && ye(a), n) {
            c = 0;
            while (o = a[c++]) he.test(o.type || "") && n.push(o)
        }
        return f
    }
    var be = /^([^.]*)(?:\.(.+)|)/;

    function we() {
        return !0
    }

    function Te() {
        return !1
    }

    function Ce(e, t) {
        return e === function() {
            try {
                return E.activeElement
            } catch (e) {}
        }() == ("focus" === t)
    }

    function Ee(e, t, n, r, i, o) {
        var a, s;
        if ("object" == typeof t) {
            for (s in "string" != typeof n && (r = r || n, n = void 0), t) Ee(e, s, n, r, t[s], 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)), !1 === i) i = Te;
        else if (!i) return e;
        return 1 === o && (a = i, (i = function(e) {
            return S().off(e), a.apply(this, arguments)
        }).guid = a.guid || (a.guid = S.guid++)), e.each(function() {
            S.event.add(this, t, i, r, n)
        })
    }

    function Se(e, i, o) {
        o ? (Y.set(e, i, !1), S.event.add(e, i, {
            namespace: !1,
            handler: function(e) {
                var t, n, r = Y.get(this, i);
                if (1 & e.isTrigger && this[i]) {
                    if (r.length)(S.event.special[i] || {}).delegateType && e.stopPropagation();
                    else if (r = s.call(arguments), Y.set(this, i, r), t = o(this, i), this[i](), r !== (n = Y.get(this, i)) || t ? Y.set(this, i, !1) : n = {}, r !== n) return e.stopImmediatePropagation(), e.preventDefault(), n && n.value
                } else r.length && (Y.set(this, i, {
                    value: S.event.trigger(S.extend(r[0], S.Event.prototype), r.slice(1), this)
                }), e.stopImmediatePropagation())
            }
        })) : void 0 === Y.get(e, i) && S.event.add(e, i, we)
    }
    S.event = {
        global: {},
        add: function(t, e, n, r, i) {
            var o, a, s, u, l, c, f, p, d, h, g, v = Y.get(t);
            if (V(t)) {
                n.handler && (n = (o = n).handler, i = o.selector), i && S.find.matchesSelector(re, i), n.guid || (n.guid = S.guid++), (u = v.events) || (u = v.events = Object.create(null)), (a = v.handle) || (a = v.handle = function(e) {
                    return "undefined" != typeof S && S.event.triggered !== e.type ? S.event.dispatch.apply(t, arguments) : void 0
                }), l = (e = (e || "").match(P) || [""]).length;
                while (l--) d = g = (s = be.exec(e[l]) || [])[1], h = (s[2] || "").split(".").sort(), d && (f = S.event.special[d] || {}, d = (i ? f.delegateType : f.bindType) || d, f = S.event.special[d] || {}, c = S.extend({
                    type: d,
                    origType: g,
                    data: r,
                    handler: n,
                    guid: n.guid,
                    selector: i,
                    needsContext: i && S.expr.match.needsContext.test(i),
                    namespace: h.join(".")
                }, o), (p = u[d]) || ((p = u[d] = []).delegateCount = 0, f.setup && !1 !== f.setup.call(t, r, h, a) || t.addEventListener && t.addEventListener(d, a)), f.add && (f.add.call(t, c), c.handler.guid || (c.handler.guid = n.guid)), i ? p.splice(p.delegateCount++, 0, c) : p.push(c), S.event.global[d] = !0)
            }
        },
        remove: function(e, t, n, r, i) {
            var o, a, s, u, l, c, f, p, d, h, g, v = Y.hasData(e) && Y.get(e);
            if (v && (u = v.events)) {
                l = (t = (t || "").match(P) || [""]).length;
                while (l--)
                    if (d = g = (s = be.exec(t[l]) || [])[1], h = (s[2] || "").split(".").sort(), d) {
                        f = S.event.special[d] || {}, p = u[d = (r ? f.delegateType : f.bindType) || d] || [], s = s[2] && new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)"), a = o = p.length;
                        while (o--) c = p[o], !i && g !== c.origType || n && n.guid !== c.guid || s && !s.test(c.namespace) || r && r !== c.selector && ("**" !== r || !c.selector) || (p.splice(o, 1), c.selector && p.delegateCount--, f.remove && f.remove.call(e, c));
                        a && !p.length && (f.teardown && !1 !== f.teardown.call(e, h, v.handle) || S.removeEvent(e, d, v.handle), delete u[d])
                    } else
                        for (d in u) S.event.remove(e, d + t[l], n, r, !0);
                S.isEmptyObject(u) && Y.remove(e, "handle events")
            }
        },
        dispatch: function(e) {
            var t, n, r, i, o, a, s = new Array(arguments.length),
                u = S.event.fix(e),
                l = (Y.get(this, "events") || Object.create(null))[u.type] || [],
                c = S.event.special[u.type] || {};
            for (s[0] = u, t = 1; t < arguments.length; t++) s[t] = arguments[t];
            if (u.delegateTarget = this, !c.preDispatch || !1 !== c.preDispatch.call(this, u)) {
                a = S.event.handlers.call(this, u, l), t = 0;
                while ((i = a[t++]) && !u.isPropagationStopped()) {
                    u.currentTarget = i.elem, n = 0;
                    while ((o = i.handlers[n++]) && !u.isImmediatePropagationStopped()) u.rnamespace && !1 !== o.namespace && !u.rnamespace.test(o.namespace) || (u.handleObj = o, u.data = o.data, void 0 !== (r = ((S.event.special[o.origType] || {}).handle || o.handler).apply(i.elem, s)) && !1 === (u.result = r) && (u.preventDefault(), u.stopPropagation()))
                }
                return c.postDispatch && c.postDispatch.call(this, u), u.result
            }
        },
        handlers: function(e, t) {
            var n, r, i, o, a, s = [],
                u = t.delegateCount,
                l = e.target;
            if (u && l.nodeType && !("click" === e.type && 1 <= e.button))
                for (; l !== this; l = l.parentNode || this)
                    if (1 === l.nodeType && ("click" !== e.type || !0 !== l.disabled)) {
                        for (o = [], a = {}, n = 0; n < u; n++) void 0 === a[i = (r = t[n]).selector + " "] && (a[i] = r.needsContext ? -1 < S(i, this).index(l) : S.find(i, this, null, [l]).length), a[i] && o.push(r);
                        o.length && s.push({
                            elem: l,
                            handlers: o
                        })
                    }
            return l = this, u < t.length && s.push({
                elem: l,
                handlers: t.slice(u)
            }), s
        },
        addProp: function(t, e) {
            Object.defineProperty(S.Event.prototype, t, {
                enumerable: !0,
                configurable: !0,
                get: m(e) ? function() {
                    if (this.originalEvent) return e(this.originalEvent)
                } : function() {
                    if (this.originalEvent) return this.originalEvent[t]
                },
                set: function(e) {
                    Object.defineProperty(this, t, {
                        enumerable: !0,
                        configurable: !0,
                        writable: !0,
                        value: e
                    })
                }
            })
        },
        fix: function(e) {
            return e[S.expando] ? e : new S.Event(e)
        },
        special: {
            load: {
                noBubble: !0
            },
            click: {
                setup: function(e) {
                    var t = this || e;
                    return pe.test(t.type) && t.click && A(t, "input") && Se(t, "click", we), !1
                },
                trigger: function(e) {
                    var t = this || e;
                    return pe.test(t.type) && t.click && A(t, "input") && Se(t, "click"), !0
                },
                _default: function(e) {
                    var t = e.target;
                    return pe.test(t.type) && t.click && A(t, "input") && Y.get(t, "click") || A(t, "a")
                }
            },
            beforeunload: {
                postDispatch: function(e) {
                    void 0 !== e.result && e.originalEvent && (e.originalEvent.returnValue = e.result)
                }
            }
        }
    }, S.removeEvent = function(e, t, n) {
        e.removeEventListener && e.removeEventListener(t, n)
    }, S.Event = function(e, t) {
        if (!(this instanceof S.Event)) return new S.Event(e, t);
        e && e.type ? (this.originalEvent = e, this.type = e.type, this.isDefaultPrevented = e.defaultPrevented || void 0 === e.defaultPrevented && !1 === e.returnValue ? we : Te, this.target = e.target && 3 === e.target.nodeType ? e.target.parentNode : e.target, this.currentTarget = e.currentTarget, this.relatedTarget = e.relatedTarget) : this.type = e, t && S.extend(this, t), this.timeStamp = e && e.timeStamp || Date.now(), this[S.expando] = !0
    }, S.Event.prototype = {
        constructor: S.Event,
        isDefaultPrevented: Te,
        isPropagationStopped: Te,
        isImmediatePropagationStopped: Te,
        isSimulated: !1,
        preventDefault: function() {
            var e = this.originalEvent;
            this.isDefaultPrevented = we, e && !this.isSimulated && e.preventDefault()
        },
        stopPropagation: function() {
            var e = this.originalEvent;
            this.isPropagationStopped = we, e && !this.isSimulated && e.stopPropagation()
        },
        stopImmediatePropagation: function() {
            var e = this.originalEvent;
            this.isImmediatePropagationStopped = we, e && !this.isSimulated && e.stopImmediatePropagation(), this.stopPropagation()
        }
    }, S.each({
        altKey: !0,
        bubbles: !0,
        cancelable: !0,
        changedTouches: !0,
        ctrlKey: !0,
        detail: !0,
        eventPhase: !0,
        metaKey: !0,
        pageX: !0,
        pageY: !0,
        shiftKey: !0,
        view: !0,
        "char": !0,
        code: !0,
        charCode: !0,
        key: !0,
        keyCode: !0,
        button: !0,
        buttons: !0,
        clientX: !0,
        clientY: !0,
        offsetX: !0,
        offsetY: !0,
        pointerId: !0,
        pointerType: !0,
        screenX: !0,
        screenY: !0,
        targetTouches: !0,
        toElement: !0,
        touches: !0,
        which: !0
    }, S.event.addProp), S.each({
        focus: "focusin",
        blur: "focusout"
    }, function(e, t) {
        S.event.special[e] = {
            setup: function() {
                return Se(this, e, Ce), !1
            },
            trigger: function() {
                return Se(this, e), !0
            },
            _default: function() {
                return !0
            },
            delegateType: t
        }
    }), S.each({
        mouseenter: "mouseover",
        mouseleave: "mouseout",
        pointerenter: "pointerover",
        pointerleave: "pointerout"
    }, function(e, i) {
        S.event.special[e] = {
            delegateType: i,
            bindType: i,
            handle: function(e) {
                var t, n = e.relatedTarget,
                    r = e.handleObj;
                return n && (n === this || S.contains(this, n)) || (e.type = r.origType, t = r.handler.apply(this, arguments), e.type = i), t
            }
        }
    }), S.fn.extend({
        on: function(e, t, n, r) {
            return Ee(this, e, t, n, r)
        },
        one: function(e, t, n, r) {
            return Ee(this, e, t, n, r, 1)
        },
        off: function(e, t, n) {
            var r, i;
            if (e && e.preventDefault && e.handleObj) return r = e.handleObj, S(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 !1 !== t && "function" != typeof t || (n = t, t = void 0), !1 === n && (n = Te), this.each(function() {
                S.event.remove(this, e, n, t)
            })
        }
    });
    var ke = /<script|<style|<link/i,
        Ae = /checked\s*(?:[^=]|=\s*.checked.)/i,
        Ne = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;

    function je(e, t) {
        return A(e, "table") && A(11 !== t.nodeType ? t : t.firstChild, "tr") && S(e).children("tbody")[0] || e
    }

    function De(e) {
        return e.type = (null !== e.getAttribute("type")) + "/" + e.type, e
    }

    function qe(e) {
        return "true/" === (e.type || "").slice(0, 5) ? e.type = e.type.slice(5) : e.removeAttribute("type"), e
    }

    function Le(e, t) {
        var n, r, i, o, a, s;
        if (1 === t.nodeType) {
            if (Y.hasData(e) && (s = Y.get(e).events))
                for (i in Y.remove(t, "handle events"), s)
                    for (n = 0, r = s[i].length; n < r; n++) S.event.add(t, i, s[i][n]);
            Q.hasData(e) && (o = Q.access(e), a = S.extend({}, o), Q.set(t, a))
        }
    }

    function He(n, r, i, o) {
        r = g(r);
        var e, t, a, s, u, l, c = 0,
            f = n.length,
            p = f - 1,
            d = r[0],
            h = m(d);
        if (h || 1 < f && "string" == typeof d && !y.checkClone && Ae.test(d)) return n.each(function(e) {
            var t = n.eq(e);
            h && (r[0] = d.call(this, e, t.html())), He(t, r, i, o)
        });
        if (f && (t = (e = xe(r, n[0].ownerDocument, !1, n, o)).firstChild, 1 === e.childNodes.length && (e = t), t || o)) {
            for (s = (a = S.map(ve(e, "script"), De)).length; c < f; c++) u = e, c !== p && (u = S.clone(u, !0, !0), s && S.merge(a, ve(u, "script"))), i.call(n[c], u, c);
            if (s)
                for (l = a[a.length - 1].ownerDocument, S.map(a, qe), c = 0; c < s; c++) u = a[c], he.test(u.type || "") && !Y.access(u, "globalEval") && S.contains(l, u) && (u.src && "module" !== (u.type || "").toLowerCase() ? S._evalUrl && !u.noModule && S._evalUrl(u.src, {
                    nonce: u.nonce || u.getAttribute("nonce")
                }, l) : b(u.textContent.replace(Ne, ""), u, l))
        }
        return n
    }

    function Oe(e, t, n) {
        for (var r, i = t ? S.filter(t, e) : e, o = 0; null != (r = i[o]); o++) n || 1 !== r.nodeType || S.cleanData(ve(r)), r.parentNode && (n && ie(r) && ye(ve(r, "script")), r.parentNode.removeChild(r));
        return e
    }
    S.extend({
        htmlPrefilter: function(e) {
            return e
        },
        clone: function(e, t, n) {
            var r, i, o, a, s, u, l, c = e.cloneNode(!0),
                f = ie(e);
            if (!(y.noCloneChecked || 1 !== e.nodeType && 11 !== e.nodeType || S.isXMLDoc(e)))
                for (a = ve(c), r = 0, i = (o = ve(e)).length; r < i; r++) s = o[r], u = a[r], void 0, "input" === (l = u.nodeName.toLowerCase()) && pe.test(s.type) ? u.checked = s.checked : "input" !== l && "textarea" !== l || (u.defaultValue = s.defaultValue);
            if (t)
                if (n)
                    for (o = o || ve(e), a = a || ve(c), r = 0, i = o.length; r < i; r++) Le(o[r], a[r]);
                else Le(e, c);
            return 0 < (a = ve(c, "script")).length && ye(a, !f && ve(e, "script")), c
        },
        cleanData: function(e) {
            for (var t, n, r, i = S.event.special, o = 0; void 0 !== (n = e[o]); o++)
                if (V(n)) {
                    if (t = n[Y.expando]) {
                        if (t.events)
                            for (r in t.events) i[r] ? S.event.remove(n, r) : S.removeEvent(n, r, t.handle);
                        n[Y.expando] = void 0
                    }
                    n[Q.expando] && (n[Q.expando] = void 0)
                }
        }
    }), S.fn.extend({
        detach: function(e) {
            return Oe(this, e, !0)
        },
        remove: function(e) {
            return Oe(this, e)
        },
        text: function(e) {
            return $(this, function(e) {
                return void 0 === e ? S.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 He(this, arguments, function(e) {
                1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || je(this, e).appendChild(e)
            })
        },
        prepend: function() {
            return He(this, arguments, function(e) {
                if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
                    var t = je(this, e);
                    t.insertBefore(e, t.firstChild)
                }
            })
        },
        before: function() {
            return He(this, arguments, function(e) {
                this.parentNode && this.parentNode.insertBefore(e, this)
            })
        },
        after: function() {
            return He(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 && (S.cleanData(ve(e, !1)), e.textContent = "");
            return this
        },
        clone: function(e, t) {
            return e = null != e && e, t = null == t ? e : t, this.map(function() {
                return S.clone(this, e, t)
            })
        },
        html: function(e) {
            return $(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 && !ke.test(e) && !ge[(de.exec(e) || ["", ""])[1].toLowerCase()]) {
                    e = S.htmlPrefilter(e);
                    try {
                        for (; n < r; n++) 1 === (t = this[n] || {}).nodeType && (S.cleanData(ve(t, !1)), t.innerHTML = e);
                        t = 0
                    } catch (e) {}
                }
                t && this.empty().append(e)
            }, null, e, arguments.length)
        },
        replaceWith: function() {
            var n = [];
            return He(this, arguments, function(e) {
                var t = this.parentNode;
                S.inArray(this, n) < 0 && (S.cleanData(ve(this)), t && t.replaceChild(e, this))
            }, n)
        }
    }), S.each({
        appendTo: "append",
        prependTo: "prepend",
        insertBefore: "before",
        insertAfter: "after",
        replaceAll: "replaceWith"
    }, function(e, a) {
        S.fn[e] = function(e) {
            for (var t, n = [], r = S(e), i = r.length - 1, o = 0; o <= i; o++) t = o === i ? this : this.clone(!0), S(r[o])[a](t), u.apply(n, t.get());
            return this.pushStack(n)
        }
    });
    var Pe = new RegExp("^(" + ee + ")(?!px)[a-z%]+$", "i"),
        Re = function(e) {
            var t = e.ownerDocument.defaultView;
            return t && t.opener || (t = C), t.getComputedStyle(e)
        },
        Me = function(e, t, n) {
            var r, i, o = {};
            for (i in t) o[i] = e.style[i], e.style[i] = t[i];
            for (i in r = n.call(e), t) e.style[i] = o[i];
            return r
        },
        Ie = new RegExp(ne.join("|"), "i");

    function We(e, t, n) {
        var r, i, o, a, s = e.style;
        return (n = n || Re(e)) && ("" !== (a = n.getPropertyValue(t) || n[t]) || ie(e) || (a = S.style(e, t)), !y.pixelBoxStyles() && Pe.test(a) && Ie.test(t) && (r = s.width, i = s.minWidth, o = s.maxWidth, s.minWidth = s.maxWidth = s.width = a, a = n.width, s.width = r, s.minWidth = i, s.maxWidth = o)), void 0 !== a ? a + "" : a
    }

    function Fe(e, t) {
        return {get: function() {
                if (!e()) return (this.get = t).apply(this, arguments);
                delete this.get
            }
        }
    }! function() {
        function e() {
            if (l) {
                u.style.cssText = "position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0", l.style.cssText = "position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%", re.appendChild(u).appendChild(l);
                var e = C.getComputedStyle(l);
                n = "1%" !== e.top, s = 12 === t(e.marginLeft), l.style.right = "60%", o = 36 === t(e.right), r = 36 === t(e.width), l.style.position = "absolute", i = 12 === t(l.offsetWidth / 3), re.removeChild(u), l = null
            }
        }

        function t(e) {
            return Math.round(parseFloat(e))
        }
        var n, r, i, o, a, s, u = E.createElement("div"),
            l = E.createElement("div");
        l.style && (l.style.backgroundClip = "content-box", l.cloneNode(!0).style.backgroundClip = "", y.clearCloneStyle = "content-box" === l.style.backgroundClip, S.extend(y, {
            boxSizingReliable: function() {
                return e(), r
            },
            pixelBoxStyles: function() {
                return e(), o
            },
            pixelPosition: function() {
                return e(), n
            },
            reliableMarginLeft: function() {
                return e(), s
            },
            scrollboxSize: function() {
                return e(), i
            },
            reliableTrDimensions: function() {
                var e, t, n, r;
                return null == a && (e = E.createElement("table"), t = E.createElement("tr"), n = E.createElement("div"), e.style.cssText = "position:absolute;left:-11111px;border-collapse:separate", t.style.cssText = "border:1px solid", t.style.height = "1px", n.style.height = "9px", n.style.display = "block", re.appendChild(e).appendChild(t).appendChild(n), r = C.getComputedStyle(t), a = parseInt(r.height, 10) + parseInt(r.borderTopWidth, 10) + parseInt(r.borderBottomWidth, 10) === t.offsetHeight, re.removeChild(e)), a
            }
        }))
    }();
    var Be = ["Webkit", "Moz", "ms"],
        $e = E.createElement("div").style,
        _e = {};

    function ze(e) {
        var t = S.cssProps[e] || _e[e];
        return t || (e in $e ? e : _e[e] = function(e) {
            var t = e[0].toUpperCase() + e.slice(1),
                n = Be.length;
            while (n--)
                if ((e = Be[n] + t) in $e) return e
        }(e) || e)
    }
    var Ue = /^(none|table(?!-c[ea]).+)/,
        Xe = /^--/,
        Ve = {
            position: "absolute",
            visibility: "hidden",
            display: "block"
        },
        Ge = {
            letterSpacing: "0",
            fontWeight: "400"
        };

    function Ye(e, t, n) {
        var r = te.exec(t);
        return r ? Math.max(0, r[2] - (n || 0)) + (r[3] || "px") : t
    }

    function Qe(e, t, n, r, i, o) {
        var a = "width" === t ? 1 : 0,
            s = 0,
            u = 0;
        if (n === (r ? "border" : "content")) return 0;
        for (; a < 4; a += 2) "margin" === n && (u += S.css(e, n + ne[a], !0, i)), r ? ("content" === n && (u -= S.css(e, "padding" + ne[a], !0, i)), "margin" !== n && (u -= S.css(e, "border" + ne[a] + "Width", !0, i))) : (u += S.css(e, "padding" + ne[a], !0, i), "padding" !== n ? u += S.css(e, "border" + ne[a] + "Width", !0, i) : s += S.css(e, "border" + ne[a] + "Width", !0, i));
        return !r && 0 <= o && (u += Math.max(0, Math.ceil(e["offset" + t[0].toUpperCase() + t.slice(1)] - o - u - s - .5)) || 0), u
    }

    function Je(e, t, n) {
        var r = Re(e),
            i = (!y.boxSizingReliable() || n) && "border-box" === S.css(e, "boxSizing", !1, r),
            o = i,
            a = We(e, t, r),
            s = "offset" + t[0].toUpperCase() + t.slice(1);
        if (Pe.test(a)) {
            if (!n) return a;
            a = "auto"
        }
        return (!y.boxSizingReliable() && i || !y.reliableTrDimensions() && A(e, "tr") || "auto" === a || !parseFloat(a) && "inline" === S.css(e, "display", !1, r)) && e.getClientRects().length && (i = "border-box" === S.css(e, "boxSizing", !1, r), (o = s in e) && (a = e[s])), (a = parseFloat(a) || 0) + Qe(e, t, n || (i ? "border" : "content"), o, r, a) + "px"
    }

    function Ke(e, t, n, r, i) {
        return new Ke.prototype.init(e, t, n, r, i)
    }
    S.extend({
        cssHooks: {
            opacity: {get: function(e, t) {
                    if (t) {
                        var n = We(e, "opacity");
                        return "" === n ? "1" : n
                    }
                }
            }
        },
        cssNumber: {
            animationIterationCount: !0,
            columnCount: !0,
            fillOpacity: !0,
            flexGrow: !0,
            flexShrink: !0,
            fontWeight: !0,
            gridArea: !0,
            gridColumn: !0,
            gridColumnEnd: !0,
            gridColumnStart: !0,
            gridRow: !0,
            gridRowEnd: !0,
            gridRowStart: !0,
            lineHeight: !0,
            opacity: !0,
            order: !0,
            orphans: !0,
            widows: !0,
            zIndex: !0,
            zoom: !0
        },
        cssProps: {},
        style: function(e, t, n, r) {
            if (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) {
                var i, o, a, s = X(t),
                    u = Xe.test(t),
                    l = e.style;
                if (u || (t = ze(s)), a = S.cssHooks[t] || S.cssHooks[s], void 0 === n) return a && "get" in a && void 0 !== (i = a.get(e, !1, r)) ? i : l[t];
                "string" === (o = typeof n) && (i = te.exec(n)) && i[1] && (n = se(e, t, i), o = "number"), null != n && n == n && ("number" !== o || u || (n += i && i[3] || (S.cssNumber[s] ? "" : "px")), y.clearCloneStyle || "" !== n || 0 !== t.indexOf("background") || (l[t] = "inherit"), a && "set" in a && void 0 === (n = a.set(e, n, r)) || (u ? l.setProperty(t, n) : l[t] = n))
            }
        },
        css: function(e, t, n, r) {
            var i, o, a, s = X(t);
            return Xe.test(t) || (t = ze(s)), (a = S.cssHooks[t] || S.cssHooks[s]) && "get" in a && (i = a.get(e, !0, n)), void 0 === i && (i = We(e, t, r)), "normal" === i && t in Ge && (i = Ge[t]), "" === n || n ? (o = parseFloat(i), !0 === n || isFinite(o) ? o || 0 : i) : i
        }
    }), S.each(["height", "width"], function(e, u) {
        S.cssHooks[u] = {get: function(e, t, n) {
                if (t) return !Ue.test(S.css(e, "display")) || e.getClientRects().length && e.getBoundingClientRect().width ? Je(e, u, n) : Me(e, Ve, function() {
                    return Je(e, u, n)
                })
            },
            set: function(e, t, n) {
                var r, i = Re(e),
                    o = !y.scrollboxSize() && "absolute" === i.position,
                    a = (o || n) && "border-box" === S.css(e, "boxSizing", !1, i),
                    s = n ? Qe(e, u, n, a, i) : 0;
                return a && o && (s -= Math.ceil(e["offset" + u[0].toUpperCase() + u.slice(1)] - parseFloat(i[u]) - Qe(e, u, "border", !1, i) - .5)), s && (r = te.exec(t)) && "px" !== (r[3] || "px") && (e.style[u] = t, t = S.css(e, u)), Ye(0, t, s)
            }
        }
    }), S.cssHooks.marginLeft = Fe(y.reliableMarginLeft, function(e, t) {
        if (t) return (parseFloat(We(e, "marginLeft")) || e.getBoundingClientRect().left - Me(e, {
            marginLeft: 0
        }, function() {
            return e.getBoundingClientRect().left
        })) + "px"
    }), S.each({
        margin: "",
        padding: "",
        border: "Width"
    }, function(i, o) {
        S.cssHooks[i + o] = {
            expand: function(e) {
                for (var t = 0, n = {}, r = "string" == typeof e ? e.split(" ") : [e]; t < 4; t++) n[i + ne[t] + o] = r[t] || r[t - 2] || r[0];
                return n
            }
        }, "margin" !== i && (S.cssHooks[i + o].set = Ye)
    }), S.fn.extend({
        css: function(e, t) {
            return $(this, function(e, t, n) {
                var r, i, o = {},
                    a = 0;
                if (Array.isArray(t)) {
                    for (r = Re(e), i = t.length; a < i; a++) o[t[a]] = S.css(e, t[a], !1, r);
                    return o
                }
                return void 0 !== n ? S.style(e, t, n) : S.css(e, t)
            }, e, t, 1 < arguments.length)
        }
    }), ((S.Tween = Ke).prototype = {
        constructor: Ke,
        init: function(e, t, n, r, i, o) {
            this.elem = e, this.prop = n, this.easing = i || S.easing._default, this.options = t, this.start = this.now = this.cur(), this.end = r, this.unit = o || (S.cssNumber[n] ? "" : "px")
        },
        cur: function() {
            var e = Ke.propHooks[this.prop];
            return e && e.get ? e.get(this) : Ke.propHooks._default.get(this)
        },
        run: function(e) {
            var t, n = Ke.propHooks[this.prop];
            return this.options.duration ? this.pos = t = S.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) : Ke.propHooks._default.set(this), this
        }
    }).init.prototype = Ke.prototype, (Ke.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 = S.css(e.elem, e.prop, "")) && "auto" !== t ? t : 0
            },
            set: function(e) {
                S.fx.step[e.prop] ? S.fx.step[e.prop](e) : 1 !== e.elem.nodeType || !S.cssHooks[e.prop] && null == e.elem.style[ze(e.prop)] ? e.elem[e.prop] = e.now : S.style(e.elem, e.prop, e.now + e.unit)
            }
        }
    }).scrollTop = Ke.propHooks.scrollLeft = {set: function(e) {
            e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now)
        }
    }, S.easing = {
        linear: function(e) {
            return e
        },
        swing: function(e) {
            return .5 - Math.cos(e * Math.PI) / 2
        },
        _default: "swing"
    }, S.fx = Ke.prototype.init, S.fx.step = {};
    var Ze, et, tt, nt, rt = /^(?:toggle|show|hide)$/,
        it = /queueHooks$/;

    function ot() {
        et && (!1 === E.hidden && C.requestAnimationFrame ? C.requestAnimationFrame(ot) : C.setTimeout(ot, S.fx.interval), S.fx.tick())
    }

    function at() {
        return C.setTimeout(function() {
            Ze = void 0
        }), Ze = Date.now()
    }

    function st(e, t) {
        var n, r = 0,
            i = {
                height: e
            };
        for (t = t ? 1 : 0; r < 4; r += 2 - t) i["margin" + (n = ne[r])] = i["padding" + n] = e;
        return t && (i.opacity = i.width = e), i
    }

    function ut(e, t, n) {
        for (var r, i = (lt.tweeners[t] || []).concat(lt.tweeners["*"]), o = 0, a = i.length; o < a; o++)
            if (r = i[o].call(n, t, e)) return r
    }

    function lt(o, e, t) {
        var n, a, r = 0,
            i = lt.prefilters.length,
            s = S.Deferred().always(function() {
                delete u.elem
            }),
            u = function() {
                if (a) return !1;
                for (var e = Ze || at(), t = Math.max(0, l.startTime + l.duration - e), n = 1 - (t / l.duration || 0), r = 0, i = l.tweens.length; r < i; r++) l.tweens[r].run(n);
                return s.notifyWith(o, [l, n, t]), n < 1 && i ? t : (i || s.notifyWith(o, [l, 1, 0]), s.resolveWith(o, [l]), !1)
            },
            l = s.promise({
                elem: o,
                props: S.extend({}, e),
                opts: S.extend(!0, {
                    specialEasing: {},
                    easing: S.easing._default
                }, t),
                originalProperties: e,
                originalOptions: t,
                startTime: Ze || at(),
                duration: t.duration,
                tweens: [],
                createTween: function(e, t) {
                    var n = S.Tween(o, l.opts, e, t, l.opts.specialEasing[e] || l.opts.easing);
                    return l.tweens.push(n), n
                },
                stop: function(e) {
                    var t = 0,
                        n = e ? l.tweens.length : 0;
                    if (a) return this;
                    for (a = !0; t < n; t++) l.tweens[t].run(1);
                    return e ? (s.notifyWith(o, [l, 1, 0]), s.resolveWith(o, [l, e])) : s.rejectWith(o, [l, e]), this
                }
            }),
            c = l.props;
        for (! function(e, t) {
                var n, r, i, o, a;
                for (n in e)
                    if (i = t[r = X(n)], o = e[n], Array.isArray(o) && (i = o[1], o = e[n] = o[0]), n !== r && (e[r] = o, delete e[n]), (a = S.cssHooks[r]) && "expand" in a)
                        for (n in o = a.expand(o), delete e[r], o) n in e || (e[n] = o[n], t[n] = i);
                    else t[r] = i
            }(c, l.opts.specialEasing); r < i; r++)
            if (n = lt.prefilters[r].call(l, o, c, l.opts)) return m(n.stop) && (S._queueHooks(l.elem, l.opts.queue).stop = n.stop.bind(n)), n;
        return S.map(c, ut, l), m(l.opts.start) && l.opts.start.call(o, l), l.progress(l.opts.progress).done(l.opts.done, l.opts.complete).fail(l.opts.fail).always(l.opts.always), S.fx.timer(S.extend(u, {
            elem: o,
            anim: l,
            queue: l.opts.queue
        })), l
    }
    S.Animation = S.extend(lt, {
        tweeners: {
            "*": [function(e, t) {
                var n = this.createTween(e, t);
                return se(n.elem, e, te.exec(t), n), n
            }]
        },
        tweener: function(e, t) {
            m(e) ? (t = e, e = ["*"]) : e = e.match(P);
            for (var n, r = 0, i = e.length; r < i; r++) n = e[r], lt.tweeners[n] = lt.tweeners[n] || [], lt.tweeners[n].unshift(t)
        },
        prefilters: [function(e, t, n) {
            var r, i, o, a, s, u, l, c, f = "width" in t || "height" in t,
                p = this,
                d = {},
                h = e.style,
                g = e.nodeType && ae(e),
                v = Y.get(e, "fxshow");
            for (r in n.queue || (null == (a = S._queueHooks(e, "fx")).unqueued && (a.unqueued = 0, s = a.empty.fire, a.empty.fire = function() {
                    a.unqueued || s()
                }), a.unqueued++, p.always(function() {
                    p.always(function() {
                        a.unqueued--, S.queue(e, "fx").length || a.empty.fire()
                    })
                })), t)
                if (i = t[r], rt.test(i)) {
                    if (delete t[r], o = o || "toggle" === i, i === (g ? "hide" : "show")) {
                        if ("show" !== i || !v || void 0 === v[r]) continue;
                        g = !0
                    }
                    d[r] = v && v[r] || S.style(e, r)
                }
            if ((u = !S.isEmptyObject(t)) || !S.isEmptyObject(d))
                for (r in f && 1 === e.nodeType && (n.overflow = [h.overflow, h.overflowX, h.overflowY], null == (l = v && v.display) && (l = Y.get(e, "display")), "none" === (c = S.css(e, "display")) && (l ? c = l : (le([e], !0), l = e.style.display || l, c = S.css(e, "display"), le([e]))), ("inline" === c || "inline-block" === c && null != l) && "none" === S.css(e, "float") && (u || (p.done(function() {
                        h.display = l
                    }), null == l && (c = h.display, l = "none" === c ? "" : c)), h.display = "inline-block")), n.overflow && (h.overflow = "hidden", p.always(function() {
                        h.overflow = n.overflow[0], h.overflowX = n.overflow[1], h.overflowY = n.overflow[2]
                    })), u = !1, d) u || (v ? "hidden" in v && (g = v.hidden) : v = Y.access(e, "fxshow", {
                    display: l
                }), o && (v.hidden = !g), g && le([e], !0), p.done(function() {
                    for (r in g || le([e]), Y.remove(e, "fxshow"), d) S.style(e, r, d[r])
                })), u = ut(g ? v[r] : 0, r, p), r in v || (v[r] = u.start, g && (u.end = u.start, u.start = 0))
        }],
        prefilter: function(e, t) {
            t ? lt.prefilters.unshift(e) : lt.prefilters.push(e)
        }
    }), S.speed = function(e, t, n) {
        var r = e && "object" == typeof e ? S.extend({}, e) : {
            complete: n || !n && t || m(e) && e,
            duration: e,
            easing: n && t || t && !m(t) && t
        };
        return S.fx.off ? r.duration = 0 : "number" != typeof r.duration && (r.duration in S.fx.speeds ? r.duration = S.fx.speeds[r.duration] : r.duration = S.fx.speeds._default), null != r.queue && !0 !== r.queue || (r.queue = "fx"), r.old = r.complete, r.complete = function() {
            m(r.old) && r.old.call(this), r.queue && S.dequeue(this, r.queue)
        }, r
    }, S.fn.extend({
        fadeTo: function(e, t, n, r) {
            return this.filter(ae).css("opacity", 0).show().end().animate({
                opacity: t
            }, e, n, r)
        },
        animate: function(t, e, n, r) {
            var i = S.isEmptyObject(t),
                o = S.speed(e, n, r),
                a = function() {
                    var e = lt(this, S.extend({}, t), o);
                    (i || Y.get(this, "finish")) && e.stop(!0)
                };
            return a.finish = a, i || !1 === o.queue ? this.each(a) : this.queue(o.queue, a)
        },
        stop: function(i, e, o) {
            var a = function(e) {
                var t = e.stop;
                delete e.stop, t(o)
            };
            return "string" != typeof i && (o = e, e = i, i = void 0), e && this.queue(i || "fx", []), this.each(function() {
                var e = !0,
                    t = null != i && i + "queueHooks",
                    n = S.timers,
                    r = Y.get(this);
                if (t) r[t] && r[t].stop && a(r[t]);
                else
                    for (t in r) r[t] && r[t].stop && it.test(t) && a(r[t]);
                for (t = n.length; t--;) n[t].elem !== this || null != i && n[t].queue !== i || (n[t].anim.stop(o), e = !1, n.splice(t, 1));
                !e && o || S.dequeue(this, i)
            })
        },
        finish: function(a) {
            return !1 !== a && (a = a || "fx"), this.each(function() {
                var e, t = Y.get(this),
                    n = t[a + "queue"],
                    r = t[a + "queueHooks"],
                    i = S.timers,
                    o = n ? n.length : 0;
                for (t.finish = !0, S.queue(this, a, []), r && r.stop && r.stop.call(this, !0), e = i.length; e--;) i[e].elem === this && i[e].queue === a && (i[e].anim.stop(!0), i.splice(e, 1));
                for (e = 0; e < o; e++) n[e] && n[e].finish && n[e].finish.call(this);
                delete t.finish
            })
        }
    }), S.each(["toggle", "show", "hide"], function(e, r) {
        var i = S.fn[r];
        S.fn[r] = function(e, t, n) {
            return null == e || "boolean" == typeof e ? i.apply(this, arguments) : this.animate(st(r, !0), e, t, n)
        }
    }), S.each({
        slideDown: st("show"),
        slideUp: st("hide"),
        slideToggle: st("toggle"),
        fadeIn: {
            opacity: "show"
        },
        fadeOut: {
            opacity: "hide"
        },
        fadeToggle: {
            opacity: "toggle"
        }
    }, function(e, r) {
        S.fn[e] = function(e, t, n) {
            return this.animate(r, e, t, n)
        }
    }), S.timers = [], S.fx.tick = function() {
        var e, t = 0,
            n = S.timers;
        for (Ze = Date.now(); t < n.length; t++)(e = n[t])() || n[t] !== e || n.splice(t--, 1);
        n.length || S.fx.stop(), Ze = void 0
    }, S.fx.timer = function(e) {
        S.timers.push(e), S.fx.start()
    }, S.fx.interval = 13, S.fx.start = function() {
        et || (et = !0, ot())
    }, S.fx.stop = function() {
        et = null
    }, S.fx.speeds = {
        slow: 600,
        fast: 200,
        _default: 400
    }, S.fn.delay = function(r, e) {
        return r = S.fx && S.fx.speeds[r] || r, e = e || "fx", this.queue(e, function(e, t) {
            var n = C.setTimeout(e, r);
            t.stop = function() {
                C.clearTimeout(n)
            }
        })
    }, tt = E.createElement("input"), nt = E.createElement("select").appendChild(E.createElement("option")), tt.type = "checkbox", y.checkOn = "" !== tt.value, y.optSelected = nt.selected, (tt = E.createElement("input")).value = "t", tt.type = "radio", y.radioValue = "t" === tt.value;
    var ct, ft = S.expr.attrHandle;
    S.fn.extend({
        attr: function(e, t) {
            return $(this, S.attr, e, t, 1 < arguments.length)
        },
        removeAttr: function(e) {
            return this.each(function() {
                S.removeAttr(this, e)
            })
        }
    }), S.extend({
        attr: function(e, t, n) {
            var r, i, o = e.nodeType;
            if (3 !== o && 8 !== o && 2 !== o) return "undefined" == typeof e.getAttribute ? S.prop(e, t, n) : (1 === o && S.isXMLDoc(e) || (i = S.attrHooks[t.toLowerCase()] || (S.expr.match.bool.test(t) ? ct : void 0)), void 0 !== n ? null === n ? void S.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 : null == (r = S.find.attr(e, t)) ? void 0 : r)
        },
        attrHooks: {
            type: {set: function(e, t) {
                    if (!y.radioValue && "radio" === t && A(e, "input")) {
                        var n = e.value;
                        return e.setAttribute("type", t), n && (e.value = n), t
                    }
                }
            }
        },
        removeAttr: function(e, t) {
            var n, r = 0,
                i = t && t.match(P);
            if (i && 1 === e.nodeType)
                while (n = i[r++]) e.removeAttribute(n)
        }
    }), ct = {set: function(e, t, n) {
            return !1 === t ? S.removeAttr(e, n) : e.setAttribute(n, n), n
        }
    }, S.each(S.expr.match.bool.source.match(/\w+/g), function(e, t) {
        var a = ft[t] || S.find.attr;
        ft[t] = function(e, t, n) {
            var r, i, o = t.toLowerCase();
            return n || (i = ft[o], ft[o] = r, r = null != a(e, t, n) ? o : null, ft[o] = i), r
        }
    });
    var pt = /^(?:input|select|textarea|button)$/i,
        dt = /^(?:a|area)$/i;

    function ht(e) {
        return (e.match(P) || []).join(" ")
    }

    function gt(e) {
        return e.getAttribute && e.getAttribute("class") || ""
    }

    function vt(e) {
        return Array.isArray(e) ? e : "string" == typeof e && e.match(P) || []
    }
    S.fn.extend({
        prop: function(e, t) {
            return $(this, S.prop, e, t, 1 < arguments.length)
        },
        removeProp: function(e) {
            return this.each(function() {
                delete this[S.propFix[e] || e]
            })
        }
    }), S.extend({
        prop: function(e, t, n) {
            var r, i, o = e.nodeType;
            if (3 !== o && 8 !== o && 2 !== o) return 1 === o && S.isXMLDoc(e) || (t = S.propFix[t] || t, i = S.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 = S.find.attr(e, "tabindex");
                    return t ? parseInt(t, 10) : pt.test(e.nodeName) || dt.test(e.nodeName) && e.href ? 0 : -1
                }
            }
        },
        propFix: {
            "for": "htmlFor",
            "class": "className"
        }
    }), y.optSelected || (S.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)
        }
    }), S.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function() {
        S.propFix[this.toLowerCase()] = this
    }), S.fn.extend({
        addClass: function(t) {
            var e, n, r, i, o, a, s, u = 0;
            if (m(t)) return this.each(function(e) {
                S(this).addClass(t.call(this, e, gt(this)))
            });
            if ((e = vt(t)).length)
                while (n = this[u++])
                    if (i = gt(n), r = 1 === n.nodeType && " " + ht(i) + " ") {
                        a = 0;
                        while (o = e[a++]) r.indexOf(" " + o + " ") < 0 && (r += o + " ");
                        i !== (s = ht(r)) && n.setAttribute("class", s)
                    }
            return this
        },
        removeClass: function(t) {
            var e, n, r, i, o, a, s, u = 0;
            if (m(t)) return this.each(function(e) {
                S(this).removeClass(t.call(this, e, gt(this)))
            });
            if (!arguments.length) return this.attr("class", "");
            if ((e = vt(t)).length)
                while (n = this[u++])
                    if (i = gt(n), r = 1 === n.nodeType && " " + ht(i) + " ") {
                        a = 0;
                        while (o = e[a++])
                            while (-1 < r.indexOf(" " + o + " ")) r = r.replace(" " + o + " ", " ");
                        i !== (s = ht(r)) && n.setAttribute("class", s)
                    }
            return this
        },
        toggleClass: function(i, t) {
            var o = typeof i,
                a = "string" === o || Array.isArray(i);
            return "boolean" == typeof t && a ? t ? this.addClass(i) : this.removeClass(i) : m(i) ? this.each(function(e) {
                S(this).toggleClass(i.call(this, e, gt(this), t), t)
            }) : this.each(function() {
                var e, t, n, r;
                if (a) {
                    t = 0, n = S(this), r = vt(i);
                    while (e = r[t++]) n.hasClass(e) ? n.removeClass(e) : n.addClass(e)
                } else void 0 !== i && "boolean" !== o || ((e = gt(this)) && Y.set(this, "__className__", e), this.setAttribute && this.setAttribute("class", e || !1 === i ? "" : Y.get(this, "__className__") || ""))
            })
        },
        hasClass: function(e) {
            var t, n, r = 0;
            t = " " + e + " ";
            while (n = this[r++])
                if (1 === n.nodeType && -1 < (" " + ht(gt(n)) + " ").indexOf(t)) return !0;
            return !1
        }
    });
    var yt = /\r/g;
    S.fn.extend({
        val: function(n) {
            var r, e, i, t = this[0];
            return arguments.length ? (i = m(n), this.each(function(e) {
                var t;
                1 === this.nodeType && (null == (t = i ? n.call(this, e, S(this).val()) : n) ? t = "" : "number" == typeof t ? t += "" : Array.isArray(t) && (t = S.map(t, function(e) {
                    return null == e ? "" : e + ""
                })), (r = S.valHooks[this.type] || S.valHooks[this.nodeName.toLowerCase()]) && "set" in r && void 0 !== r.set(this, t, "value") || (this.value = t))
            })) : t ? (r = S.valHooks[t.type] || S.valHooks[t.nodeName.toLowerCase()]) && "get" in r && void 0 !== (e = r.get(t, "value")) ? e : "string" == typeof(e = t.value) ? e.replace(yt, "") : null == e ? "" : e : void 0
        }
    }), S.extend({
        valHooks: {
            option: {get: function(e) {
                    var t = S.find.attr(e, "value");
                    return null != t ? t : ht(S.text(e))
                }
            },
            select: {get: function(e) {
                    var t, n, r, i = e.options,
                        o = e.selectedIndex,
                        a = "select-one" === e.type,
                        s = a ? null : [],
                        u = a ? o + 1 : i.length;
                    for (r = o < 0 ? u : a ? o : 0; r < u; r++)
                        if (((n = i[r]).selected || r === o) && !n.disabled && (!n.parentNode.disabled || !A(n.parentNode, "optgroup"))) {
                            if (t = S(n).val(), a) return t;
                            s.push(t)
                        }
                    return s
                },
                set: function(e, t) {
                    var n, r, i = e.options,
                        o = S.makeArray(t),
                        a = i.length;
                    while (a--)((r = i[a]).selected = -1 < S.inArray(S.valHooks.option.get(r), o)) && (n = !0);
                    return n || (e.selectedIndex = -1), o
                }
            }
        }
    }), S.each(["radio", "checkbox"], function() {
        S.valHooks[this] = {set: function(e, t) {
                if (Array.isArray(t)) return e.checked = -1 < S.inArray(S(e).val(), t)
            }
        }, y.checkOn || (S.valHooks[this].get = function(e) {
            return null === e.getAttribute("value") ? "on" : e.value
        })
    }), y.focusin = "onfocusin" in C;
    var mt = /^(?:focusinfocus|focusoutblur)$/,
        xt = function(e) {
            e.stopPropagation()
        };
    S.extend(S.event, {
        trigger: function(e, t, n, r) {
            var i, o, a, s, u, l, c, f, p = [n || E],
                d = v.call(e, "type") ? e.type : e,
                h = v.call(e, "namespace") ? e.namespace.split(".") : [];
            if (o = f = a = n = n || E, 3 !== n.nodeType && 8 !== n.nodeType && !mt.test(d + S.event.triggered) && (-1 < d.indexOf(".") && (d = (h = d.split(".")).shift(), h.sort()), u = d.indexOf(":") < 0 && "on" + d, (e = e[S.expando] ? e : new S.Event(d, "object" == typeof e && e)).isTrigger = r ? 2 : 3, e.namespace = h.join("."), e.rnamespace = e.namespace ? new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, e.result = void 0, e.target || (e.target = n), t = null == t ? [e] : S.makeArray(t, [e]), c = S.event.special[d] || {}, r || !c.trigger || !1 !== c.trigger.apply(n, t))) {
                if (!r && !c.noBubble && !x(n)) {
                    for (s = c.delegateType || d, mt.test(s + d) || (o = o.parentNode); o; o = o.parentNode) p.push(o), a = o;
                    a === (n.ownerDocument || E) && p.push(a.defaultView || a.parentWindow || C)
                }
                i = 0;
                while ((o = p[i++]) && !e.isPropagationStopped()) f = o, e.type = 1 < i ? s : c.bindType || d, (l = (Y.get(o, "events") || Object.create(null))[e.type] && Y.get(o, "handle")) && l.apply(o, t), (l = u && o[u]) && l.apply && V(o) && (e.result = l.apply(o, t), !1 === e.result && e.preventDefault());
                return e.type = d, r || e.isDefaultPrevented() || c._default && !1 !== c._default.apply(p.pop(), t) || !V(n) || u && m(n[d]) && !x(n) && ((a = n[u]) && (n[u] = null), S.event.triggered = d, e.isPropagationStopped() && f.addEventListener(d, xt), n[d](), e.isPropagationStopped() && f.removeEventListener(d, xt), S.event.triggered = void 0, a && (n[u] = a)), e.result
            }
        },
        simulate: function(e, t, n) {
            var r = S.extend(new S.Event, n, {
                type: e,
                isSimulated: !0
            });
            S.event.trigger(r, null, t)
        }
    }), S.fn.extend({
        trigger: function(e, t) {
            return this.each(function() {
                S.event.trigger(e, t, this)
            })
        },
        triggerHandler: function(e, t) {
            var n = this[0];
            if (n) return S.event.trigger(e, t, n, !0)
        }
    }), y.focusin || S.each({
        focus: "focusin",
        blur: "focusout"
    }, function(n, r) {
        var i = function(e) {
            S.event.simulate(r, e.target, S.event.fix(e))
        };
        S.event.special[r] = {
            setup: function() {
                var e = this.ownerDocument || this.document || this,
                    t = Y.access(e, r);
                t || e.addEventListener(n, i, !0), Y.access(e, r, (t || 0) + 1)
            },
            teardown: function() {
                var e = this.ownerDocument || this.document || this,
                    t = Y.access(e, r) - 1;
                t ? Y.access(e, r, t) : (e.removeEventListener(n, i, !0), Y.remove(e, r))
            }
        }
    });
    var bt = C.location,
        wt = {
            guid: Date.now()
        },
        Tt = /\?/;
    S.parseXML = function(e) {
        var t, n;
        if (!e || "string" != typeof e) return null;
        try {
            t = (new C.DOMParser).parseFromString(e, "text/xml")
        } catch (e) {}
        return n = t && t.getElementsByTagName("parsererror")[0], t && !n || S.error("Invalid XML: " + (n ? S.map(n.childNodes, function(e) {
            return e.textContent
        }).join("\n") : e)), t
    };
    var Ct = /\[\]$/,
        Et = /\r?\n/g,
        St = /^(?:submit|button|image|reset|file)$/i,
        kt = /^(?:input|select|textarea|keygen)/i;

    function At(n, e, r, i) {
        var t;
        if (Array.isArray(e)) S.each(e, function(e, t) {
            r || Ct.test(n) ? i(n, t) : At(n + "[" + ("object" == typeof t && null != t ? e : "") + "]", t, r, i)
        });
        else if (r || "object" !== w(e)) i(n, e);
        else
            for (t in e) At(n + "[" + t + "]", e[t], r, i)
    }
    S.param = function(e, t) {
        var n, r = [],
            i = function(e, t) {
                var n = m(t) ? t() : t;
                r[r.length] = encodeURIComponent(e) + "=" + encodeURIComponent(null == n ? "" : n)
            };
        if (null == e) return "";
        if (Array.isArray(e) || e.jquery && !S.isPlainObject(e)) S.each(e, function() {
            i(this.name, this.value)
        });
        else
            for (n in e) At(n, e[n], t, i);
        return r.join("&")
    }, S.fn.extend({
        serialize: function() {
            return S.param(this.serializeArray())
        },
        serializeArray: function() {
            return this.map(function() {
                var e = S.prop(this, "elements");
                return e ? S.makeArray(e) : this
            }).filter(function() {
                var e = this.type;
                return this.name && !S(this).is(":disabled") && kt.test(this.nodeName) && !St.test(e) && (this.checked || !pe.test(e))
            }).map(function(e, t) {
                var n = S(this).val();
                return null == n ? null : Array.isArray(n) ? S.map(n, function(e) {
                    return {
                        name: t.name,
                        value: e.replace(Et, "\r\n")
                    }
                }) : {
                    name: t.name,
                    value: n.replace(Et, "\r\n")
                }
            }).get()
        }
    });
    var Nt = /%20/g,
        jt = /#.*$/,
        Dt = /([?&])_=[^&]*/,
        qt = /^(.*?):[ \t]*([^\r\n]*)$/gm,
        Lt = /^(?:GET|HEAD)$/,
        Ht = /^\/\//,
        Ot = {},
        Pt = {},
        Rt = "*/".concat("*"),
        Mt = E.createElement("a");

    function It(o) {
        return function(e, t) {
            "string" != typeof e && (t = e, e = "*");
            var n, r = 0,
                i = e.toLowerCase().match(P) || [];
            if (m(t))
                while (n = i[r++]) "+" === n[0] ? (n = n.slice(1) || "*", (o[n] = o[n] || []).unshift(t)) : (o[n] = o[n] || []).push(t)
        }
    }

    function Wt(t, i, o, a) {
        var s = {},
            u = t === Pt;

        function l(e) {
            var r;
            return s[e] = !0, S.each(t[e] || [], function(e, t) {
                var n = t(i, o, a);
                return "string" != typeof n || u || s[n] ? u ? !(r = n) : void 0 : (i.dataTypes.unshift(n), l(n), !1)
            }), r
        }
        return l(i.dataTypes[0]) || !s["*"] && l("*")
    }

    function Ft(e, t) {
        var n, r, i = S.ajaxSettings.flatOptions || {};
        for (n in t) void 0 !== t[n] && ((i[n] ? e : r || (r = {}))[n] = t[n]);
        return r && S.extend(!0, e, r), e
    }
    Mt.href = bt.href, S.extend({
        active: 0,
        lastModified: {},
        etag: {},
        ajaxSettings: {
            url: bt.href,
            type: "GET",
            isLocal: /^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(bt.protocol),
            global: !0,
            processData: !0,
            async: !0,
            contentType: "application/x-www-form-urlencoded; charset=UTF-8",
            accepts: {
                "*": Rt,
                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": JSON.parse,
                "text xml": S.parseXML
            },
            flatOptions: {
                url: !0,
                context: !0
            }
        },
        ajaxSetup: function(e, t) {
            return t ? Ft(Ft(e, S.ajaxSettings), t) : Ft(S.ajaxSettings, e)
        },
        ajaxPrefilter: It(Ot),
        ajaxTransport: It(Pt),
        ajax: function(e, t) {
            "object" == typeof e && (t = e, e = void 0), t = t || {};
            var c, f, p, n, d, r, h, g, i, o, v = S.ajaxSetup({}, t),
                y = v.context || v,
                m = v.context && (y.nodeType || y.jquery) ? S(y) : S.event,
                x = S.Deferred(),
                b = S.Callbacks("once memory"),
                w = v.statusCode || {},
                a = {},
                s = {},
                u = "canceled",
                T = {
                    readyState: 0,
                    getResponseHeader: function(e) {
                        var t;
                        if (h) {
                            if (!n) {
                                n = {};
                                while (t = qt.exec(p)) n[t[1].toLowerCase() + " "] = (n[t[1].toLowerCase() + " "] || []).concat(t[2])
                            }
                            t = n[e.toLowerCase() + " "]
                        }
                        return null == t ? null : t.join(", ")
                    },
                    getAllResponseHeaders: function() {
                        return h ? p : null
                    },
                    setRequestHeader: function(e, t) {
                        return null == h && (e = s[e.toLowerCase()] = s[e.toLowerCase()] || e, a[e] = t), this
                    },
                    overrideMimeType: function(e) {
                        return null == h && (v.mimeType = e), this
                    },
                    statusCode: function(e) {
                        var t;
                        if (e)
                            if (h) T.always(e[T.status]);
                            else
                                for (t in e) w[t] = [w[t], e[t]];
                        return this
                    },
                    abort: function(e) {
                        var t = e || u;
                        return c && c.abort(t), l(0, t), this
                    }
                };
            if (x.promise(T), v.url = ((e || v.url || bt.href) + "").replace(Ht, bt.protocol + "//"), v.type = t.method || t.type || v.method || v.type, v.dataTypes = (v.dataType || "*").toLowerCase().match(P) || [""], null == v.crossDomain) {
                r = E.createElement("a");
                try {
                    r.href = v.url, r.href = r.href, v.crossDomain = Mt.protocol + "//" + Mt.host != r.protocol + "//" + r.host
                } catch (e) {
                    v.crossDomain = !0
                }
            }
            if (v.data && v.processData && "string" != typeof v.data && (v.data = S.param(v.data, v.traditional)), Wt(Ot, v, t, T), h) return T;
            for (i in (g = S.event && v.global) && 0 == S.active++ && S.event.trigger("ajaxStart"), v.type = v.type.toUpperCase(), v.hasContent = !Lt.test(v.type), f = v.url.replace(jt, ""), v.hasContent ? v.data && v.processData && 0 === (v.contentType || "").indexOf("application/x-www-form-urlencoded") && (v.data = v.data.replace(Nt, "+")) : (o = v.url.slice(f.length), v.data && (v.processData || "string" == typeof v.data) && (f += (Tt.test(f) ? "&" : "?") + v.data, delete v.data), !1 === v.cache && (f = f.replace(Dt, "$1"), o = (Tt.test(f) ? "&" : "?") + "_=" + wt.guid++ +o), v.url = f + o), v.ifModified && (S.lastModified[f] && T.setRequestHeader("If-Modified-Since", S.lastModified[f]), S.etag[f] && T.setRequestHeader("If-None-Match", S.etag[f])), (v.data && v.hasContent && !1 !== v.contentType || t.contentType) && T.setRequestHeader("Content-Type", v.contentType), T.setRequestHeader("Accept", v.dataTypes[0] && v.accepts[v.dataTypes[0]] ? v.accepts[v.dataTypes[0]] + ("*" !== v.dataTypes[0] ? ", " + Rt + "; q=0.01" : "") : v.accepts["*"]), v.headers) T.setRequestHeader(i, v.headers[i]);
            if (v.beforeSend && (!1 === v.beforeSend.call(y, T, v) || h)) return T.abort();
            if (u = "abort", b.add(v.complete), T.done(v.success), T.fail(v.error), c = Wt(Pt, v, t, T)) {
                if (T.readyState = 1, g && m.trigger("ajaxSend", [T, v]), h) return T;
                v.async && 0 < v.timeout && (d = C.setTimeout(function() {
                    T.abort("timeout")
                }, v.timeout));
                try {
                    h = !1, c.send(a, l)
                } catch (e) {
                    if (h) throw e;
                    l(-1, e)
                }
            } else l(-1, "No Transport");

            function l(e, t, n, r) {
                var i, o, a, s, u, l = t;
                h || (h = !0, d && C.clearTimeout(d), c = void 0, p = r || "", T.readyState = 0 < e ? 4 : 0, i = 200 <= e && e < 300 || 304 === e, n && (s = function(e, t, n) {
                    var r, i, o, a, s = e.contents,
                        u = e.dataTypes;
                    while ("*" === u[0]) u.shift(), void 0 === r && (r = e.mimeType || t.getResponseHeader("Content-Type"));
                    if (r)
                        for (i in s)
                            if (s[i] && s[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
                            }
                            a || (a = i)
                        }
                        o = o || a
                    }
                    if (o) return o !== u[0] && u.unshift(o), n[o]
                }(v, T, n)), !i && -1 < S.inArray("script", v.dataTypes) && S.inArray("json", v.dataTypes) < 0 && (v.converters["text script"] = function() {}), s = function(e, t, n, r) {
                    var i, o, a, s, u, l = {},
                        c = e.dataTypes.slice();
                    if (c[1])
                        for (a in e.converters) l[a.toLowerCase()] = e.converters[a];
                    o = c.shift();
                    while (o)
                        if (e.responseFields[o] && (n[e.responseFields[o]] = t), !u && r && e.dataFilter && (t = e.dataFilter(t, e.dataType)), u = o, o = c.shift())
                            if ("*" === o) o = u;
                            else if ("*" !== u && u !== o) {
                        if (!(a = l[u + " " + o] || l["* " + o]))
                            for (i in l)
                                if ((s = i.split(" "))[1] === o && (a = l[u + " " + s[0]] || l["* " + s[0]])) {
                                    !0 === a ? a = l[i] : !0 !== l[i] && (o = s[0], c.unshift(s[1]));
                                    break
                                }
                        if (!0 !== a)
                            if (a && e["throws"]) t = a(t);
                            else try {
                                t = a(t)
                            } catch (e) {
                                return {
                                    state: "parsererror",
                                    error: a ? e : "No conversion from " + u + " to " + o
                                }
                            }
                    }
                    return {
                        state: "success",
                        data: t
                    }
                }(v, s, T, i), i ? (v.ifModified && ((u = T.getResponseHeader("Last-Modified")) && (S.lastModified[f] = u), (u = T.getResponseHeader("etag")) && (S.etag[f] = u)), 204 === e || "HEAD" === v.type ? l = "nocontent" : 304 === e ? l = "notmodified" : (l = s.state, o = s.data, i = !(a = s.error))) : (a = l, !e && l || (l = "error", e < 0 && (e = 0))), T.status = e, T.statusText = (t || l) + "", i ? x.resolveWith(y, [o, l, T]) : x.rejectWith(y, [T, l, a]), T.statusCode(w), w = void 0, g && m.trigger(i ? "ajaxSuccess" : "ajaxError", [T, v, i ? o : a]), b.fireWith(y, [T, l]), g && (m.trigger("ajaxComplete", [T, v]), --S.active || S.event.trigger("ajaxStop")))
            }
            return T
        },
        getJSON: function(e, t, n) {
            return S.get(e, t, n, "json")
        },
        getScript: function(e, t) {
            return S.get(e, void 0, t, "script")
        }
    }), S.each(["get", "post"], function(e, i) {
        S[i] = function(e, t, n, r) {
            return m(t) && (r = r || n, n = t, t = void 0), S.ajax(S.extend({
                url: e,
                type: i,
                dataType: r,
                data: t,
                success: n
            }, S.isPlainObject(e) && e))
        }
    }), S.ajaxPrefilter(function(e) {
        var t;
        for (t in e.headers) "content-type" === t.toLowerCase() && (e.contentType = e.headers[t] || "")
    }), S._evalUrl = function(e, t, n) {
        return S.ajax({
            url: e,
            type: "GET",
            dataType: "script",
            cache: !0,
            async: !1,
            global: !1,
            converters: {
                "text script": function() {}
            },
            dataFilter: function(e) {
                S.globalEval(e, t, n)
            }
        })
    }, S.fn.extend({
        wrapAll: function(e) {
            var t;
            return this[0] && (m(e) && (e = e.call(this[0])), t = S(e, this[0].ownerDocument).eq(0).clone(!0), this[0].parentNode && t.insertBefore(this[0]), t.map(function() {
                var e = this;
                while (e.firstElementChild) e = e.firstElementChild;
                return e
            }).append(this)), this
        },
        wrapInner: function(n) {
            return m(n) ? this.each(function(e) {
                S(this).wrapInner(n.call(this, e))
            }) : this.each(function() {
                var e = S(this),
                    t = e.contents();
                t.length ? t.wrapAll(n) : e.append(n)
            })
        },
        wrap: function(t) {
            var n = m(t);
            return this.each(function(e) {
                S(this).wrapAll(n ? t.call(this, e) : t)
            })
        },
        unwrap: function(e) {
            return this.parent(e).not("body").each(function() {
                S(this).replaceWith(this.childNodes)
            }), this
        }
    }), S.expr.pseudos.hidden = function(e) {
        return !S.expr.pseudos.visible(e)
    }, S.expr.pseudos.visible = function(e) {
        return !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length)
    }, S.ajaxSettings.xhr = function() {
        try {
            return new C.XMLHttpRequest
        } catch (e) {}
    };
    var Bt = {
            0: 200,
            1223: 204
        },
        $t = S.ajaxSettings.xhr();
    y.cors = !!$t && "withCredentials" in $t, y.ajax = $t = !!$t, S.ajaxTransport(function(i) {
        var o, a;
        if (y.cors || $t && !i.crossDomain) return {
            send: function(e, t) {
                var n, r = i.xhr();
                if (r.open(i.type, i.url, i.async, i.username, i.password), i.xhrFields)
                    for (n in i.xhrFields) r[n] = i.xhrFields[n];
                for (n in i.mimeType && r.overrideMimeType && r.overrideMimeType(i.mimeType), i.crossDomain || e["X-Requested-With"] || (e["X-Requested-With"] = "XMLHttpRequest"), e) r.setRequestHeader(n, e[n]);
                o = function(e) {
                    return function() {
                        o && (o = a = r.onload = r.onerror = r.onabort = r.ontimeout = r.onreadystatechange = null, "abort" === e ? r.abort() : "error" === e ? "number" != typeof r.status ? t(0, "error") : t(r.status, r.statusText) : t(Bt[r.status] || r.status, r.statusText, "text" !== (r.responseType || "text") || "string" != typeof r.responseText ? {
                            binary: r.response
                        } : {
                            text: r.responseText
                        }, r.getAllResponseHeaders()))
                    }
                }, r.onload = o(), a = r.onerror = r.ontimeout = o("error"), void 0 !== r.onabort ? r.onabort = a : r.onreadystatechange = function() {
                    4 === r.readyState && C.setTimeout(function() {
                        o && a()
                    })
                }, o = o("abort");
                try {
                    r.send(i.hasContent && i.data || null)
                } catch (e) {
                    if (o) throw e
                }
            },
            abort: function() {
                o && o()
            }
        }
    }), S.ajaxPrefilter(function(e) {
        e.crossDomain && (e.contents.script = !1)
    }), S.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 S.globalEval(e), e
            }
        }
    }), S.ajaxPrefilter("script", function(e) {
        void 0 === e.cache && (e.cache = !1), e.crossDomain && (e.type = "GET")
    }), S.ajaxTransport("script", function(n) {
        var r, i;
        if (n.crossDomain || n.scriptAttrs) return {
            send: function(e, t) {
                r = S("<script>").attr(n.scriptAttrs || {}).prop({
                    charset: n.scriptCharset,
                    src: n.url
                }).on("load error", i = function(e) {
                    r.remove(), i = null, e && t("error" === e.type ? 404 : 200, e.type)
                }), E.head.appendChild(r[0])
            },
            abort: function() {
                i && i()
            }
        }
    });
    var _t, zt = [],
        Ut = /(=)\?(?=&|$)|\?\?/;
    S.ajaxSetup({
        jsonp: "callback",
        jsonpCallback: function() {
            var e = zt.pop() || S.expando + "_" + wt.guid++;
            return this[e] = !0, e
        }
    }), S.ajaxPrefilter("json jsonp", function(e, t, n) {
        var r, i, o, a = !1 !== e.jsonp && (Ut.test(e.url) ? "url" : "string" == typeof e.data && 0 === (e.contentType || "").indexOf("application/x-www-form-urlencoded") && Ut.test(e.data) && "data");
        if (a || "jsonp" === e.dataTypes[0]) return r = e.jsonpCallback = m(e.jsonpCallback) ? e.jsonpCallback() : e.jsonpCallback, a ? e[a] = e[a].replace(Ut, "$1" + r) : !1 !== e.jsonp && (e.url += (Tt.test(e.url) ? "&" : "?") + e.jsonp + "=" + r), e.converters["script json"] = function() {
            return o || S.error(r + " was not called"), o[0]
        }, e.dataTypes[0] = "json", i = C[r], C[r] = function() {
            o = arguments
        }, n.always(function() {
            void 0 === i ? S(C).removeProp(r) : C[r] = i, e[r] && (e.jsonpCallback = t.jsonpCallback, zt.push(r)), o && m(i) && i(o[0]), o = i = void 0
        }), "script"
    }), y.createHTMLDocument = ((_t = E.implementation.createHTMLDocument("").body).innerHTML = "<form></form><form></form>", 2 === _t.childNodes.length), S.parseHTML = function(e, t, n) {
        return "string" != typeof e ? [] : ("boolean" == typeof t && (n = t, t = !1), t || (y.createHTMLDocument ? ((r = (t = E.implementation.createHTMLDocument("")).createElement("base")).href = E.location.href, t.head.appendChild(r)) : t = E), o = !n && [], (i = N.exec(e)) ? [t.createElement(i[1])] : (i = xe([e], t, o), o && o.length && S(o).remove(), S.merge([], i.childNodes)));
        var r, i, o
    }, S.fn.load = function(e, t, n) {
        var r, i, o, a = this,
            s = e.indexOf(" ");
        return -1 < s && (r = ht(e.slice(s)), e = e.slice(0, s)), m(t) ? (n = t, t = void 0) : t && "object" == typeof t && (i = "POST"), 0 < a.length && S.ajax({
            url: e,
            type: i || "GET",
            dataType: "html",
            data: t
        }).done(function(e) {
            o = arguments, a.html(r ? S("<div>").append(S.parseHTML(e)).find(r) : e)
        }).always(n && function(e, t) {
            a.each(function() {
                n.apply(this, o || [e.responseText, t, e])
            })
        }), this
    }, S.expr.pseudos.animated = function(t) {
        return S.grep(S.timers, function(e) {
            return t === e.elem
        }).length
    }, S.offset = {
        setOffset: function(e, t, n) {
            var r, i, o, a, s, u, l = S.css(e, "position"),
                c = S(e),
                f = {};
            "static" === l && (e.style.position = "relative"), s = c.offset(), o = S.css(e, "top"), u = S.css(e, "left"), ("absolute" === l || "fixed" === l) && -1 < (o + u).indexOf("auto") ? (a = (r = c.position()).top, i = r.left) : (a = parseFloat(o) || 0, i = parseFloat(u) || 0), m(t) && (t = t.call(e, n, S.extend({}, s))), null != t.top && (f.top = t.top - s.top + a), null != t.left && (f.left = t.left - s.left + i), "using" in t ? t.using.call(e, f) : c.css(f)
        }
    }, S.fn.extend({
        offset: function(t) {
            if (arguments.length) return void 0 === t ? this : this.each(function(e) {
                S.offset.setOffset(this, t, e)
            });
            var e, n, r = this[0];
            return r ? r.getClientRects().length ? (e = r.getBoundingClientRect(), n = r.ownerDocument.defaultView, {
                top: e.top + n.pageYOffset,
                left: e.left + n.pageXOffset
            }) : {
                top: 0,
                left: 0
            } : void 0
        },
        position: function() {
            if (this[0]) {
                var e, t, n, r = this[0],
                    i = {
                        top: 0,
                        left: 0
                    };
                if ("fixed" === S.css(r, "position")) t = r.getBoundingClientRect();
                else {
                    t = this.offset(), n = r.ownerDocument, e = r.offsetParent || n.documentElement;
                    while (e && (e === n.body || e === n.documentElement) && "static" === S.css(e, "position")) e = e.parentNode;
                    e && e !== r && 1 === e.nodeType && ((i = S(e).offset()).top += S.css(e, "borderTopWidth", !0), i.left += S.css(e, "borderLeftWidth", !0))
                }
                return {
                    top: t.top - i.top - S.css(r, "marginTop", !0),
                    left: t.left - i.left - S.css(r, "marginLeft", !0)
                }
            }
        },
        offsetParent: function() {
            return this.map(function() {
                var e = this.offsetParent;
                while (e && "static" === S.css(e, "position")) e = e.offsetParent;
                return e || re
            })
        }
    }), S.each({
        scrollLeft: "pageXOffset",
        scrollTop: "pageYOffset"
    }, function(t, i) {
        var o = "pageYOffset" === i;
        S.fn[t] = function(e) {
            return $(this, function(e, t, n) {
                var r;
                if (x(e) ? r = e : 9 === e.nodeType && (r = e.defaultView), void 0 === n) return r ? r[i] : e[t];
                r ? r.scrollTo(o ? r.pageXOffset : n, o ? n : r.pageYOffset) : e[t] = n
            }, t, e, arguments.length)
        }
    }), S.each(["top", "left"], function(e, n) {
        S.cssHooks[n] = Fe(y.pixelPosition, function(e, t) {
            if (t) return t = We(e, n), Pe.test(t) ? S(e).position()[n] + "px" : t
        })
    }), S.each({
        Height: "height",
        Width: "width"
    }, function(a, s) {
        S.each({
            padding: "inner" + a,
            content: s,
            "": "outer" + a
        }, function(r, o) {
            S.fn[o] = function(e, t) {
                var n = arguments.length && (r || "boolean" != typeof e),
                    i = r || (!0 === e || !0 === t ? "margin" : "border");
                return $(this, function(e, t, n) {
                    var r;
                    return x(e) ? 0 === o.indexOf("outer") ? e["inner" + a] : e.document.documentElement["client" + a] : 9 === e.nodeType ? (r = e.documentElement, Math.max(e.body["scroll" + a], r["scroll" + a], e.body["offset" + a], r["offset" + a], r["client" + a])) : void 0 === n ? S.css(e, t, i) : S.style(e, t, n, i)
                }, s, n ? e : void 0, n)
            }
        })
    }), S.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function(e, t) {
        S.fn[t] = function(e) {
            return this.on(t, e)
        }
    }), S.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)
        },
        hover: function(e, t) {
            return this.mouseenter(e).mouseleave(t || e)
        }
    }), S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "), function(e, n) {
        S.fn[n] = function(e, t) {
            return 0 < arguments.length ? this.on(n, null, e, t) : this.trigger(n)
        }
    });
    var Xt = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
    S.proxy = function(e, t) {
        var n, r, i;
        if ("string" == typeof t && (n = e[t], t = e, e = n), m(e)) return r = s.call(arguments, 2), (i = function() {
            return e.apply(t || this, r.concat(s.call(arguments)))
        }).guid = e.guid = e.guid || S.guid++, i
    }, S.holdReady = function(e) {
        e ? S.readyWait++ : S.ready(!0)
    }, S.isArray = Array.isArray, S.parseJSON = JSON.parse, S.nodeName = A, S.isFunction = m, S.isWindow = x, S.camelCase = X, S.type = w, S.now = Date.now, S.isNumeric = function(e) {
        var t = S.type(e);
        return ("number" === t || "string" === t) && !isNaN(e - parseFloat(e))
    }, S.trim = function(e) {
        return null == e ? "" : (e + "").replace(Xt, "")
    }, "function" == typeof define && define.amd && define("jquery", [], function() {
        return S
    });
    var Vt = C.jQuery,
        Gt = C.$;
    return S.noConflict = function(e) {
        return C.$ === S && (C.$ = Gt), e && C.jQuery === S && (C.jQuery = Vt), S
    }, "undefined" == typeof e && (C.jQuery = C.$ = S), S
});
                                    

#2 JavaScript::Eval (size: 3412, repeated: 1) - SHA256: 9b53a9b29c75716e1361c946362f61966bb79365044993d7cfebf79d9b5e0f81

                                        'use strict';

// TODO: Currently this file is loaded inline, new versions of parsley have
// methods to add custom parsers after load which would remove the need for this
//
// custom parsley validation methods
window.ParsleyConfig = {
    validators: {
        doesntexist: {
            fn: function fn(value, existing) {
                existing = existing.split('__*parsley*__');
                if (existing.constructor === Array) {
                    for (var exists in existing) {
                        // TODO: replace with method in utils/general.js when not an inline script
                        var name = existing[exists].replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
                        var re = new RegExp('^' + name + '$', 'i');
                        if (value.match(re)) {
                            return false;
                        }
                    }
                } else if (value == existing) {
                    return false;
                }
                return true;
            },
            priority: 32
        },
        date: {
            fn: function fn(value) {
                var date_regex = /^(0[1-9]|1[0-2])\/(0[1-9]|1\d|2\d|3[01])\/(19|20)\d{2}$/;
                if (!date_regex.test(value)) {
                    return false;
                }
                return true;
            },
            priority: 33
        },
        datemin: {
            fn: function fn(input, min) {
                // assumes Datejs has improved Date.parse
                return !Date.parse(input).isBefore(Date.parse(min));
            },
            priority: 34
        },
        phonenumber: {
            fn: function fn(value) {
                var phone_regex = /^[A-Za-z]+$/; //\+?\d$/
                if (phone_regex.test(value)) {
                    return false;
                }
                return true;
            },
            priority: 35
        },
        doesnumberexceedinstallmentremainder: {
            fn: function fn(value, config) {

                var configArray = config.split('::'),
                    itemVal = value,
                    itemType = configArray[0],
                    remainder = SuiteSetup.module('Invoice').getInstallmentRemainder();

                if (itemType === 'percentage' && remainder.percentage <= 0 || itemType === 'absolute' && remainder.absolute <= 0) {
                    return false;
                }

                return true;
            },
            priority: 36
        },
        doesnumberexceedquoteinstallmentremainder: {
            fn: function fn(value, config) {

                var configArray = config.split('::'),
                    itemVal = value,
                    itemType = configArray[0],
                    remainder = SuiteSetup.module('Quote').getInstallmentRemainder();

                if (itemType === 'percentage' && remainder.percentage <= 0 || itemType === 'absolute' && remainder.absolute <= 0 && !(dataModel.quote() && dataModel.quote().has_optional_items())) {
                    return false;
                }

                return true;
            },
            priority: 36
        },
        minexceedmax: {
            fn: function fn(value, min) {
                if (min >= value) {
                    return false;
                }
                return true;
            },
            priority: 37
        }
    }
};
                                    

#3 JavaScript::Eval (size: 17241, repeated: 1) - SHA256: 327dd30e7389a026da7f416fd405b3573652d9b455f1ac4a2638e3e6232fc93f

                                        (function() {
    var AJ = function(p, G, h, l, w, A, k, v) {
            return (k = (w = (v = po, p = [66, 21, -83, -76, -92, -87, p, 55, -83, -13], G & 7), M[l.s](l.cu)), k)[l.s] = function(N) {
                w += 6 + 7 * G, w &= (A = N, 7)
            }, k.concat = function(N) {
                return (A = (N = (N = (N = h % 16 + 1, -N * A + 4 * h * h * N + (v() | 0) * N) + 37 * A * A - 777 * A + p[w + 27 & 7] * h * N - 148 * h * h * A - 777 * h * A + w, p[N]), void 0), p[(w + 69 & 7) + (G & 2)] = N, p)[w + (G & 2)] = 21, N
            }, k
        },
        yH = function(p, G, h, l, w) {
            for ((p.cu = l8(p.s, (p.Tm = hJ, p.ZP = (p.Hu = p[r], G0), {get: function() {
                        return this.concat()
                    }
                })), p).vu = M[p.s](p.cu, {
                    value: {
                        value: {}
                    }
                }), w = 0, l = []; 128 > w; w++) l[w] = String.fromCharCode(w);
            J(p, (x((x((I(67, (I((I(201, (I(361, ((I(211, p, [160, (I(137, (I(143, (I((I(51, p, (I(170, (I(154, p, (I((I(210, p, (I(46, p, (I(135, p, ((I(428, (I(317, (I(132, p, (I((I(376, (I(354, (I(492, (I(420, (p.Rv = (I(253, (I(504, p, (I(324, p, (I(441, p, (I(196, (I((p.OU = (I((I(97, p, (I(469, p, (I(350, (I((I(188, (I((I(509, p, (I(334, (I((p.kR = (p.D = 0, p.C = (p.UU = function(A) {
                this.B = A
            }, p.A = [], ((p.h = (p.B = p, void 0), p.X = [], p).bx = false, p.u = 25, p).N = 0, p.S = [], false), p.I = (p.l = 0, p.Y = 1, p.Sw = [], void 0), (p.KA = 0, p.L = 0, p).Z = (p.U = [], null), p.K = (p.J = (p.i = 8001, void 0), p.g = 0, p.j = false, p.V = (w = window.performance || {}, p.O = (p.H = void 0, []), p.R = void 0, 0), p.F = void 0, void 0), w.timeOrigin) || (w.timing || {}).navigationStart || 0, 511), p, 0), p), 0), function(A, k, v, N) {
                v = (k = Q(A), N = L(A), Q(A)), I(v, A, O(A, k) >>> N)
            })), 471), p, 2048), p), function(A, k, v, N) {
                !a(false, true, k, A) && (k = wU(A), N = k.fA, v = k.o, A.B == A || v == A.UU && N == A) && (I(k.Bu, A, v.apply(N, k.T)), A.N = A.v())
            }), 80), p, function(A, k, v, N) {
                I((k = O(A, (N = O(A, (v = Q((N = (k = Q(A), Q(A)), A)), N)), k)), v), A, k in N | 0)
            }), p), 0), function(A, k, v) {
                a(false, true, k, A) || (k = Q(A), v = Q(A), I(v, A, function(N) {
                    return eval(N)
                }(kE(O(A.B, k)))))
            })), function() {})), 490), p, 0), 0), 86), p, function(A, k, v, N) {
                if (N = A.Sw.pop()) {
                    for (k = L(A); 0 < k; k--) v = Q(A), N[v] = A.S[v];
                    A.S = (N[471] = (N[51] = A.S[51], A.S[471]), N)
                } else I(511, A, A.V)
            }), p), function(A, k, v, N) {
                (N = (k = (N = Q(A), v = Q(A), O(A, v)), O)(A, N), I)(v, A, k + N)
            }), function(A) {
                vC(1, A)
            })), p.Gm = 0, function(A) {
                NC(A, 4)
            })), function(A, k, v) {
                (k = Q((v = Q(A), A)), I)(k, A, "" + O(A, v))
            })), p), function(A, k) {
                k = O(A, Q(A)), MC(k, A.B)
            }), 0), p), {}), p), function(A, k, v, N) {
                I((N = (k = O(A, (v = (k = (N = Q(A), Q)(A), Q)(A), k)), O(A, N)), v), A, N[k])
            }), p), function(A, k, v, N, R) {
                R = (v = O(A, (v = (R = Q((k = Q((N = Q(A), A)), A)), Q)(A), k = O(A, k), v)), O(A, R)), I(N, A, RB(A, v, k, R))
            }), p), z), 226), p, function(A, k, v, N, R) {
                (R = O(A, (v = (N = (k = O(A, (k = (N = Q(A), v = Q(A), R = Q(A), Q(A)), k)), O(A.B, N)), O)(A, v), R)), 0 !== N) && (R = RB(A, 1, R, k, N, v), N.addEventListener(v, R, g), I(350, A, [N, v, R]))
            }), function(A, k, v, N, R, V) {
                if (!a(true, true, k, A)) {
                    if ("object" == (A = (N = O((v = O((k = (V = Q((v = Q(A), N = Q(A), A)), Q)(A), k = O(A, k), A), v), A), N), O(A, V)), rU)(v)) {
                        for (R in V = [], v) V.push(R);
                        v = V
                    }
                    for (V = (R = 0, A = 0 < A ? A : 1, v.length); R < V; R += A) N(v.slice(R, (R | 0) + (A | 0)), k)
                }
            })), p), function(A, k) {
                A = (k = Q(A), O)(A.B, k), A[0].removeEventListener(A[1], A[2], g)
            }), p), function(A, k, v, N) {
                v = (N = Q((k = Q(A), A)), Q(A)), I(v, A, O(A, k) || O(A, N))
            }), I)(456, p, function(A, k, v, N, R, V, B, c, F, W, y, t) {
                function Y(D, u) {
                    for (; N < D;) k |= L(A) << N, N += 8;
                    return k >>= (u = (N -= D, k) & (1 << D) - 1, D), u
                }
                for (v = (F = (R = (k = (c = Q(A), N = 0), (Y(3) | 0) + 1), y = Y(5), W = 0, []), 0); v < y; v++) t = Y(1), F.push(t), W += t ? 0 : 1;
                for (v = (B = (W = ((W | 0) - 1).toString(2).length, []), 0); v < y; v++) F[v] || (B[v] = Y(W));
                for (W = 0; W < y; W++) F[W] && (B[W] = Q(A));
                for (V = []; R--;) V.push(O(A, Q(A)));
                I(c, A, function(D, u, H, m, X) {
                    for (X = (u = [], []), H = 0; H < y; H++) {
                        if (!(m = B[H], F[H])) {
                            for (; m >= X.length;) X.push(Q(D));
                            m = X[m]
                        }
                        u.push(m)
                    }
                    D.I = IB(V.slice(), D), D.K = IB(u, D)
                })
            }), function(A, k, v, N, R) {
                for (v = (k = (R = VH((N = Q(A), A)), 0), []); k < R; k++) v.push(L(A));
                I(N, A, v)
            })), function(A, k, v, N, R, V) {
                a(false, true, k, A) || (N = wU(A.B), v = N.fA, k = N.Bu, R = N.o, N = N.T, V = N.length, v = 0 == V ? new v[R] : 1 == V ? new v[R](N[0]) : 2 == V ? new v[R](N[0], N[1]) : 3 == V ? new v[R](N[0], N[1], N[2]) : 4 == V ? new v[R](N[0], N[1], N[2], N[3]) : 2(), I(k, A, v))
            })), function(A) {
                NC(A, 3)
            })), 234), p, function(A, k, v, N, R, V, B) {
                for (R = (v = (k = O(A, (B = (V = (N = Q(A), VH(A)), ""), 21)), k).length, 0); V--;) R = ((R | 0) + (VH(A) | 0)) % v, B += l[k[R]];
                I(N, A, B)
            }), function(A, k, v, N) {
                (v = (N = (k = Q(A), Q)(A), Q)(A), A.B) == A && (v = O(A, v), N = O(A, N), O(A, k)[N] = v, 408 == k && (A.H = void 0, 2 == N && (A.R = n(A, false, 32), A.H = void 0)))
            })), p), function(A) {
                S(4, A)
            }), [])), I(128, p, U(4)), 295), p, []), p), function(A, k, v) {
                0 != O(A, (v = O(A, (v = (k = Q(A), Q(A)), v)), k)) && I(511, A, v)
            }), p), function(A) {
                vC(4, A)
            }), 0), 0]), I)(437, p, [0, 0, 0]), p), 872), p), p), 430), p, function(A, k, v) {
                I((k = (k = O(A, (k = Q(A), v = Q(A), k)), rU(k)), v), A, k)
            }), p), function(A, k, v, N) {
                (N = (v = (k = Q((N = Q(A), A)), Q)(A), k = O(A, k), O(A, N)) == k, I)(v, A, +N)
            }), x([i8], p), [d, G]), p), [BC, h]), p), true), true)
        },
        S = function(p, G, h, l) {
            for (l = Q(G), h = 0; 0 < p; p--) h = h << 8 | L(G);
            I(l, G, h)
        },
        f, $E = function(p, G, h, l) {
            try {
                l = p[((G | 0) + 2) % 3], p[G] = (p[G] | 0) - (p[((G | 0) + 1) % 3] | 0) - (l | 0) ^ (1 == G ? l << h : l >>> h)
            } catch (w) {
                throw w;
            }
        },
        Q = function(p, G) {
            if (p.I) return Fr(p, p.K);
            return G = n(p, true, 8), G & 128 && (G ^= 128, p = n(p, true, 2), G = (G << 2) + (p | 0)), G
        },
        b, WC = function(p, G, h) {
            return p.W(function(l) {
                h = l
            }, false, G), h
        },
        QH = function(p) {
            return p
        },
        x = function(p, G) {
            G.U.splice(0, 0, p)
        },
        RB = function(p, G, h, l, w, A) {
            function k() {
                if (p.B == p) {
                    if (p.S) {
                        var v = [Lo, h, l, void 0, w, A, arguments];
                        if (2 == G) var N = J(p, !(x(v, p), 1), false);
                        else if (1 == G) {
                            var R = !p.U.length;
                            x(v, p), R && J(p, false, false)
                        } else N = On(v, p);
                        return N
                    }
                    w && A && w.removeEventListener(A, k, g)
                }
            }
            return k
        },
        E = function(p, G) {
            G.h = ((G.h ? G.h + "~" : "E:") + p.message + ":" + p.stack).slice(0, 2048)
        },
        aB = function(p, G, h, l, w) {
            for (h = (l = (w = 0, h)[3] | 0, h)[2] | 0; 15 > w; w++) G = G >>> 8 | G << 24, G += p | 0, G ^= h + 823, p = p << 3 | p >>> 29, p ^= G, l = l >>> 8 | l << 24, l += h | 0, l ^= w + 823, h = h << 3 | h >>> 29, h ^= l;
            return [p >>> 24 & 255, p >>> 16 & 255, p >>> 8 & 255, p >>> 0 & 255, G >>> 24 & 255, G >>> 16 & 255, G >>> 8 & 255, G >>> 0 & 255]
        },
        rU = function(p, G, h) {
            if ("object" == (G = typeof p, G))
                if (p) {
                    if (p instanceof Array) return "array";
                    if (p instanceof Object) return G;
                    if ("[object Window]" == (h = Object.prototype.toString.call(p), h)) return "object";
                    if ("[object Array]" == h || "number" == typeof p.length && "undefined" != typeof p.splice && "undefined" != typeof p.propertyIsEnumerable && !p.propertyIsEnumerable("splice")) return "array";
                    if ("[object Function]" == h || "undefined" != typeof p.call && "undefined" != typeof p.propertyIsEnumerable && !p.propertyIsEnumerable("call")) return "function"
                } else return "null";
            else if ("function" == G && "undefined" == typeof p.call) return "object";
            return G
        },
        e = function(p, G, h, l) {
            for (l = (G | (h = [], 0)) - 1; 0 <= l; l--) h[(G | 0) - 1 - (l | 0)] = p >> 8 * l & 255;
            return h
        },
        DY = function(p, G, h, l) {
            return O(G, (I(511, G, (tJ(G, ((l = O(G, 511), G.O) && l < G.V ? (I(511, G, G.V), MC(h, G)) : I(511, G, h), p)), l)), 420))
        },
        cC = function(p, G) {
            if (G = (p = z.trustedTypes, null), !p || !p.createPolicy) return G;
            try {
                G = p.createPolicy("bg", {
                    createHTML: QH,
                    createScript: QH,
                    createScriptURL: QH
                })
            } catch (h) {
                z.console && z.console.error(h.message)
            }
            return G
        },
        sn = function(p, G, h, l, w) {
            for (h = (G = l = (p = p.replace(/\r\n/g, "\n"), 0), []); G < p.length; G++) w = p.charCodeAt(G), 128 > w ? h[l++] = w : (2048 > w ? h[l++] = w >> 6 | 192 : (55296 == (w & 64512) && G + 1 < p.length && 56320 == (p.charCodeAt(G + 1) & 64512) ? (w = 65536 + ((w & 1023) << 10) + (p.charCodeAt(++G) & 1023), h[l++] = w >> 18 | 240, h[l++] = w >> 12 & 63 | 128) : h[l++] = w >> 12 | 224, h[l++] = w >> 6 & 63 | 128), h[l++] = w & 63 | 128);
            return h
        },
        IB = function(p, G, h) {
            return (h = M[G.s](G.vu), h[G.s] = function() {
                return p
            }, h).concat = function(l) {
                p = l
            }, h
        },
        tJ = function(p, G, h, l, w, A) {
            if (!p.h) {
                p.g++;
                try {
                    for (l = (h = (A = void 0, 0), p).V; --G;) try {
                        if ((w = void 0, p).I) A = Fr(p, p.I);
                        else {
                            if (h = O(p, 511), h >= l) break;
                            A = (w = (I(334, p, h), Q)(p), O)(p, w)
                        }
                        a(false, !(A && A.call ? A(p, G) : q(p, [T, 21, w], 0), 1), G, p)
                    } catch (k) {
                        O(p, 361) ? q(p, k, 22) : I(361, p, k)
                    }
                    if (!G) {
                        if (p.Iv) {
                            tJ((p.g--, p), 720955100124);
                            return
                        }
                        q(p, [T, 33], 0)
                    }
                } catch (k) {
                    try {
                        q(p, k, 22)
                    } catch (v) {
                        E(v, p)
                    }
                }
                p.g--
            }
        },
        SE = function(p, G, h) {
            if (3 == p.length) {
                for (h = 0; 3 > h; h++) G[h] += p[h];
                for (h = [13, 8, 13, 12, 16, 5, (p = 0, 3), 10, 15]; 9 > p; p++) G[3](G, p % 3, h[p])
            }
        },
        z0 = function(p, G) {
            (G.push(p[0] << 24 | p[1] << 16 | p[2] << 8 | p[3]), G).push(p[4] << 24 | p[5] << 16 | p[6] << 8 | p[7]), G.push(p[8] << 24 | p[9] << 16 | p[10] << 8 | p[11])
        },
        l8 = function(p, G) {
            return M[p](M.prototype, {
                propertyIsEnumerable: G,
                call: G,
                console: G,
                replace: G,
                length: G,
                stack: G,
                floor: G,
                splice: G,
                prototype: G,
                document: G,
                pop: G,
                parent: G
            })
        },
        z = this || self,
        gU = function(p, G) {
            return G[p] << 24 | G[(p | 0) + 1] << 16 | G[(p | 0) + 2] << 8 | G[(p | 0) + 3]
        },
        VH = function(p, G) {
            return (G = L(p), G) & 128 && (G = G & 127 | L(p) << 7), G
        },
        MC = function(p, G) {
            I(511, G, (G.Sw.push(G.S.slice()), G.S[511] = void 0, p))
        },
        wU = function(p, G, h, l, w, A) {
            for (A = (G = (h = p[no] || {}, Q(p)), h.Bu = Q(p), h.T = [], w = p.B == p ? (L(p) | 0) - 1 : 1, Q(p)), l = 0; l < w; l++) h.T.push(Q(p));
            for (; w--;) h.T[w] = O(p, h.T[w]);
            return (h.fA = O(p, A), h).o = O(p, G), h
        },
        u8 = function(p, G, h, l) {
            return (l = b[p.substring(0, 3) + "_"]) ? l(p.substring(3), G, h) : YE(p, G)
        },
        g = {
            passive: true,
            capture: true
        },
        Un = function(p, G, h, l) {
            function w() {}
            return {
                invoke: (h = u8(p, (l = void 0, function(A) {
                    w && (G && C(G), l = A, w(), w = void 0)
                }), !!G)[0], function(A, k, v, N) {
                    function R() {
                        l(function(V) {
                            C(function() {
                                A(V)
                            })
                        }, v)
                    }
                    if (!k) return k = h(v), A && A(k), k;
                    l ? R() : (N = w, w = function() {
                        C((N(), R))
                    })
                })
            }
        },
        U = function(p, G) {
            for (G = []; p--;) G.push(255 * Math.random() | 0);
            return G
        },
        O = function(p, G) {
            if (p = p.S[G], void 0 === p) throw [T, 30, G];
            if (p.value) return p.create();
            return (p.create(4 * G * G + 21 * G + 21), p).prototype
        },
        L = function(p) {
            return p.I ? Fr(p, p.K) : n(p, true, 8)
        },
        Fr = function(p, G) {
            return (G = G.create().shift(), p.I).create().length || p.K.create().length || (p.K = void 0, p.I = void 0), G
        },
        P = function(p, G, h) {
            h = this;
            try {
                yH(this, p, G)
            } catch (l) {
                E(l, this), G(function(w) {
                    w(h.h)
                })
            }
        },
        a = function(p, G, h, l, w, A, k, v, N) {
            if ((((k = (N = (v = (A = (G || l.J++, (w = p ? 255 : G ? 5 : 2, 0) < l.D && l.C && l.bx && 1 >= l.g && !l.I) && !l.Z && (!G || 1 < l.i - h) && 0 == document.hidden, p = 4 == l.J) || A ? l.v() : l.N, v) - l.N, N >> 14), l).R && (l.R ^= k * (N << 2)), l.B = k || l.B, l).Y += k, p) || A) l.N = v, l.J = 0;
            if (!A || v - l.L < l.D - w) return false;
            return !((p = O((l.i = h, l), G ? 334 : 511), I)(511, l, l.V), l.U.push([oB, p, G ? h + 1 : h]), l.Z = C, 0)
        },
        vC = function(p, G, h, l) {
            Z(e(O(G, (l = Q(G), h = Q(G), l)), p), G, h)
        },
        q = function(p, G, h, l, w, A) {
            if (!p.j) {
                if (3 < (G = (h = ((l = O(((A = void 0, G) && G[0] === T && (h = G[1], A = G[2], G = void 0), p), 51), 0) == l.length && (w = O(p, 334) >> 3, l.push(h, w >> 8 & 255, w & 255), void 0 != A && l.push(A & 255)), ""), G && (G.message && (h += G.message), G.stack && (h += ":" + G.stack)), O(p, 471)), G)) {
                    p.B = (A = (h = sn((h = h.slice(0, (G | 0) - 3), G -= (h.length | 0) + 3, h)), p.B), p);
                    try {
                        Z(e(h.length, 2).concat(h), p, 128, 9)
                    } finally {
                        p.B = A
                    }
                }
                I(471, p, G)
            }
        },
        I = function(p, G, h) {
            if (511 == p || 334 == p) G.S[p] ? G.S[p].concat(h) : G.S[p] = IB(h, G);
            else {
                if (G.j && 408 != p) return;
                211 == p || 128 == p || 295 == p || 51 == p || 437 == p ? G.S[p] || (G.S[p] = AJ(h, 14, p, G)) : G.S[p] = AJ(h, 129, p, G)
            }
            408 == p && (G.R = n(G, false, 32), G.H = void 0)
        },
        NC = function(p, G, h, l, w) {
            ((w = O(p, (h = (w = Q((G &= (l = G & 4, 3), p)), Q(p)), w)), l && (w = sn("" + w)), G) && Z(e(w.length, 2), p, h), Z)(w, p, h)
        },
        YE = function(p, G) {
            return [(G(function(h) {
                h(p)
            }), function() {
                return p
            })]
        },
        Z = function(p, G, h, l, w, A) {
            if (G.B == G)
                for (w = O(G, h), 128 == h ? (h = function(k, v, N, R) {
                        if (w.V_ != (v = ((N = w.length, N) | 0) - 4 >> 3, v)) {
                            v = (w.V_ = (R = [0, 0, A[1], A[2]], v), (v << 3) - 4);
                            try {
                                w.sU = aB(gU(v, w), gU((v | 0) + 4, w), R)
                            } catch (V) {
                                throw V;
                            }
                        }
                        w.push(w.sU[N & 7] ^ k)
                    }, A = O(G, 437)) : h = function(k) {
                        w.push(k)
                    }, l && h(l & 255), G = 0, l = p.length; G < l; G++) h(p[G])
        },
        n = function(p, G, h, l, w, A, k, v, N, R, V, B, c, F) {
            if (k = O(p, 511), k >= p.V) throw [T, 31];
            for (v = (R = k, A = (l = h, 0), p.Hu.length); 0 < l;) w = R % 8, N = R >> 3, V = 8 - (w | 0), V = V < l ? V : l, B = p.O[N], G && (F = p, F.H != R >> 6 && (F.H = R >> 6, c = O(F, 408), F.F = aB(F.R, F.H, [0, 0, c[1], c[2]])), B ^= p.F[N & v]), R += V, A |= (B >> 8 - (w | 0) - (V | 0) & (1 << V) - 1) << (l | 0) - (V | 0), l -= V;
            return I(511, (G = A, p), (k | 0) + (h | 0)), G
        },
        J = function(p, G, h, l, w, A) {
            if (p.U.length) {
                (p.bx = (p.C && 0(), G), p).C = true;
                try {
                    l = p.v(), p.J = 0, p.N = l, p.L = l, w = xE(p, G), A = p.v() - p.L, p.l += A, A < (h ? 0 : 10) || 0 >= p.u-- || (A = Math.floor(A), p.X.push(254 >= A ? A : 254))
                } finally {
                    p.C = false
                }
                return w
            }
        },
        xE = function(p, G, h, l) {
            for (; p.U.length;) {
                p.Z = null, h = p.U.pop();
                try {
                    l = On(h, p)
                } catch (w) {
                    E(w, p)
                }
                if (G && p.Z) {
                    G = p.Z, G(function() {
                        J(p, true, true)
                    });
                    break
                }
            }
            return l
        },
        On = function(p, G, h, l, w) {
            if ((l = p[0], l) == K) G.u = 25, G.G(p);
            else if (l == r) {
                h = p[1];
                try {
                    w = G.h || G.G(p)
                } catch (A) {
                    E(A, G), w = G.h
                }
                h(w)
            } else if (l == oB) G.G(p);
            else if (l == d) G.G(p);
            else if (l == BC) {
                try {
                    for (w = 0; w < G.A.length; w++) try {
                        h = G.A[w], h[0][h[1]](h[2])
                    } catch (A) {}
                } catch (A) {}(0, p[1])(function(A, k) {
                    G.W(A, true, k)
                }, (G.A = [], function(A) {
                    (x([dU], (A = !G.U.length, G)), A) && J(G, true, false)
                }))
            } else {
                if (l == Lo) return w = p[2], I(380, G, p[6]), I(420, G, w), G.G(p);
                l == dU ? (G.S = null, G.X = [], G.O = []) : l == i8 && "loading" === z.document.readyState && (G.Z = function(A, k) {
                    function v() {
                        k || (k = true, A())
                    }
                    k = false, z.document.addEventListener("DOMContentLoaded", v, g), z.addEventListener("load", v, g)
                })
            }
        },
        C = z.requestIdleCallback ? function(p) {
            requestIdleCallback(function() {
                p()
            }, {
                timeout: 4
            })
        } : z.setImmediate ? function(p) {
            setImmediate(p)
        } : function(p) {
            setTimeout(p, 0)
        },
        no = String.fromCharCode(105, 110, 116, 101, 103, 67, 104, 101, 99, 107, 66, 121, 112, 97, 115, 115),
        BC = (P.prototype.Iv = false, P.prototype.N_ = void 0, P.prototype.P = "toString", []),
        d = [],
        r = [],
        i8 = [],
        T = {},
        Lo = [],
        oB = (P.prototype.LA = void 0, []),
        dU = [],
        K = [],
        M = ((z0, U, $E, function() {})(SE), T.constructor),
        po = void 0;
    P.prototype.G = (((((f = P.prototype, P).prototype.s = "create", f.xR = function() {
        return Math.floor(this.v())
    }, f.mq = function() {
        return Math.floor(this.l + (this.v() - this.L))
    }, f).W = function(p, G, h, l, w) {
        if (h = "array" === rU(h) ? h : [h], this.h) p(this.h);
        else try {
            w = [], l = !this.U.length, x([K, w, h], this), x([r, p, w], this), G && !l || J(this, G, true)
        } catch (A) {
            E(A, this), p(this.h)
        }
    }, f.nA = function(p, G, h) {
        return p ^ ((G = ((G ^= G << 13, G ^= G >> 17, G) ^ G << 5) & h) || (G = 1), G)
    }, f).w0 = function(p, G, h, l, w, A) {
        for (h = [], w = l = 0; w < p.length; w++)
            for (l += G, A = A << G | p[w]; 7 < l;) l -= 8, h.push(A >> l & 255);
        return h
    }, f).v = (window.performance || {}).now ? function() {
        return this.kR + window.performance.now()
    } : function() {
        return +new Date
    }, f.ew = function(p, G, h, l, w) {
        for (l = w = 0; l < p.length; l++) w += p.charCodeAt(l), w += w << 10, w ^= w >> 6;
        return (w = new Number((p = (w += w << 3, w ^= w >> 11, w) + (w << 15) >>> 0, p & (1 << G) - 1)), w)[0] = (p >>> G) % h, w
    }, function(p, G) {
        return po = (p = (G = {}, {}), function() {
                return G == p ? 21 : -8
            }),
            function(h, l, w, A, k, v, N, R, V, B, c, F, W, y, t) {
                G = (l = G, p);
                try {
                    if (w = h[0], w == d) {
                        F = h[1];
                        try {
                            for (y = V = (t = (R = atob(F), []), 0); V < R.length; V++) v = R.charCodeAt(V), 255 < v && (t[y++] = v & 255, v >>= 8), t[y++] = v;
                            I(408, this, [0, (this.V = (this.O = t, this.O.length << 3), 0), 0])
                        } catch (Y) {
                            q(this, Y, 17);
                            return
                        }
                        tJ(this, 8001)
                    } else if (w == K) h[1].push(O(this, 128).length, O(this, 211).length, O(this, 471), O(this, 295).length), I(420, this, h[2]), this.S[63] && DY(8001, this, O(this, 63));
                    else {
                        if (w == r) {
                            (c = (A = e((V = h[2], (O(this, 211).length | 0) + 2), 2), this).B, this).B = this;
                            try {
                                N = O(this, 51), 0 < N.length && Z(e(N.length, 2).concat(N), this, 211, 10), Z(e(this.Y, 1), this, 211, 109), Z(e(this[r].length, 1), this, 211), R = 0, k = O(this, 128), R -= (O(this, 211).length | 0) + 5, R += O(this, 490) & 2047, 4 < k.length && (R -= (k.length | 0) + 3), 0 < R && Z(e(R, 2).concat(U(R)), this, 211, 15), 4 < k.length && Z(e(k.length, 2).concat(k), this, 211, 156)
                            } finally {
                                this.B = c
                            }
                            if (B = (y = U(2).concat(O(this, 211)), y[1] = y[0] ^ 6, y[3] = y[1] ^ A[0], y[4] = y[1] ^ A[1], this.hX(y))) B = "!" + B;
                            else
                                for (B = "", R = 0; R < y.length; R++) W = y[R][this.P](16), 1 == W.length && (W = "0" + W), B += W;
                            return (I(471, (O(this, (O(this, (t = B, 128)).length = V.shift(), 211)).length = V.shift(), this), V.shift()), O)(this, 295).length = V.shift(), t
                        }
                        if (w == oB) DY(h[2], this, h[1]);
                        else if (w == Lo) return DY(8001, this, h[1])
                    }
                } finally {
                    G = l
                }
            }
    })();
    var G0, hJ = ((P.prototype.av = 0, P.prototype).g0 = (P.prototype[BC] = [0, 0, 1, 1, 0, 1, 1], 0), P.prototype.hX = function(p, G, h, l) {
            if (G = window.btoa) {
                for (l = (h = "", 0); l < p.length; l += 8192) h += String.fromCharCode.apply(null, p.slice(l, l + 8192));
                p = G(h).replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, "")
            } else p = void 0;
            return p
        }, /./),
        JJ = d.pop.bind(P.prototype[K]),
        kE = ((G0 = l8(P.prototype.s, (hJ[P.prototype.P] = JJ, {get: JJ
        })), P.prototype).EU = void 0, function(p, G) {
            return (G = cC()) && 1 === p.eval(G.createScript("1")) ? function(h) {
                return G.createScript(h)
            } : function(h) {
                return "" + h
            }
        })(z);
    (b = z.botguard || (z.botguard = {}), 40 < b.m || (b.m = 41, b.bg = Un, b.a = u8), b).MBK_ = function(p, G, h) {
        return h = new P(p, G), [function(l) {
            return WC(h, l)
        }]
    };
}).call(this);
                                    

#4 JavaScript::Eval (size: 9524, repeated: 1) - SHA256: f8f7a381bcc14970bcdaa889a884817c64de0371c3e0daccf35d1c17c9b03a10

                                        /// Knockout Mapping plugin v2.4.1
/// (c) 2013 Steven Sanderson, Roy Jacobs - http://knockoutjs.com/
/// License: MIT (http://www.opensource.org/licenses/mit-license.php)
(function(e) {
    "function" === typeof require && "object" === typeof exports && "object" === typeof module ? e(require("knockout"), exports) : "function" === typeof define && define.amd ? define(["knockout", "exports"], e) : e(ko, ko.mapping = {})
})(function(e, f) {
    function y(b, c) {
        var a, d;
        for (d in c)
            if (c.hasOwnProperty(d) && c[d])
                if (a = f.getType(b[d]), d && b[d] && "array" !== a && "string" !== a) y(b[d], c[d]);
                else if ("array" === f.getType(b[d]) && "array" === f.getType(c[d])) {
            a = b;
            for (var e = d, l = b[d], n = c[d], t = {}, g = l.length - 1; 0 <= g; --g) t[l[g]] = l[g];
            for (g =
                n.length - 1; 0 <= g; --g) t[n[g]] = n[g];
            l = [];
            n = void 0;
            for (n in t) l.push(t[n]);
            a[e] = l
        } else b[d] = c[d]
    }

    function E(b, c) {
        var a = {};
        y(a, b);
        y(a, c);
        return a
    }

    function z(b, c) {
        for (var a = E({}, b), e = L.length - 1; 0 <= e; e--) {
            var f = L[e];
            a[f] && (a[""] instanceof Object || (a[""] = {}), a[""][f] = a[f], delete a[f])
        }
        c && (a.ignore = h(c.ignore, a.ignore), a.include = h(c.include, a.include), a.copy = h(c.copy, a.copy), a.observe = h(c.observe, a.observe));
        a.ignore = h(a.ignore, j.ignore);
        a.include = h(a.include, j.include);
        a.copy = h(a.copy, j.copy);
        a.observe = h(a.observe,
            j.observe);
        a.mappedProperties = a.mappedProperties || {};
        a.copiedProperties = a.copiedProperties || {};
        return a
    }

    function h(b, c) {
        "array" !== f.getType(b) && (b = "undefined" === f.getType(b) ? [] : [b]);
        "array" !== f.getType(c) && (c = "undefined" === f.getType(c) ? [] : [c]);
        return e.utils.arrayGetDistinctValues(b.concat(c))
    }

    function F(b, c, a, d, k, l, n) {
        var t = "array" === f.getType(e.utils.unwrapObservable(c));
        l = l || "";
        if (f.isMapped(b)) {
            var g = e.utils.unwrapObservable(b)[p];
            a = E(g, a)
        }
        var j = n || k,
            h = function() {
                return a[d] && a[d].create instanceof
                Function
            },
            x = function(b) {
                var f = G,
                    g = e.dependentObservable;
                e.dependentObservable = function(a, b, c) {
                    c = c || {};
                    a && "object" == typeof a && (c = a);
                    var d = c.deferEvaluation,
                        M = !1;
                    c.deferEvaluation = !0;
                    a = new H(a, b, c);
                    if (!d) {
                        var g = a,
                            d = e.dependentObservable;
                        e.dependentObservable = H;
                        a = e.isWriteableObservable(g);
                        e.dependentObservable = d;
                        d = H({
                            read: function() {
                                M || (e.utils.arrayRemoveItem(f, g), M = !0);
                                return g.apply(g, arguments)
                            },
                            write: a && function(a) {
                                return g(a)
                            },
                            deferEvaluation: !0
                        });
                        d.__DO = g;
                        a = d;
                        f.push(a)
                    }
                    return a
                };
                e.dependentObservable.fn =
                    H.fn;
                e.computed = e.dependentObservable;
                b = e.utils.unwrapObservable(k) instanceof Array ? a[d].create({
                    data: b || c,
                    parent: j,
                    skip: N
                }) : a[d].create({
                    data: b || c,
                    parent: j
                });
                e.dependentObservable = g;
                e.computed = e.dependentObservable;
                return b
            },
            u = function() {
                return a[d] && a[d].update instanceof Function
            },
            v = function(b, f) {
                var g = {
                    data: f || c,
                    parent: j,
                    target: e.utils.unwrapObservable(b)
                };
                e.isWriteableObservable(b) && (g.observable = b);
                return a[d].update(g)
            };
        if (n = I.get(c)) return n;
        d = d || "";
        if (t) {
            var t = [],
                s = !1,
                m = function(a) {
                    return a
                };
            a[d] && a[d].key && (m = a[d].key, s = !0);
            e.isObservable(b) || (b = e.observableArray([]), b.mappedRemove = function(a) {
                var c = "function" == typeof a ? a : function(b) {
                    return b === m(a)
                };
                return b.remove(function(a) {
                    return c(m(a))
                })
            }, b.mappedRemoveAll = function(a) {
                var c = C(a, m);
                return b.remove(function(a) {
                    return -1 != e.utils.arrayIndexOf(c, m(a))
                })
            }, b.mappedDestroy = function(a) {
                var c = "function" == typeof a ? a : function(b) {
                    return b === m(a)
                };
                return b.destroy(function(a) {
                    return c(m(a))
                })
            }, b.mappedDestroyAll = function(a) {
                var c = C(a, m);
                return b.destroy(function(a) {
                    return -1 !=
                        e.utils.arrayIndexOf(c, m(a))
                })
            }, b.mappedIndexOf = function(a) {
                var c = C(b(), m);
                a = m(a);
                return e.utils.arrayIndexOf(c, a)
            }, b.mappedGet = function(a) {
                return b()[b.mappedIndexOf(a)]
            }, b.mappedCreate = function(a) {
                if (-1 !== b.mappedIndexOf(a)) throw Error("There already is an object with the key that you specified.");
                var c = h() ? x(a) : a;
                u() && (a = v(c, a), e.isWriteableObservable(c) ? c(a) : c = a);
                b.push(c);
                return c
            });
            n = C(e.utils.unwrapObservable(b), m).sort();
            g = C(c, m);
            s && g.sort();
            s = e.utils.compareArrays(n, g);
            n = {};
            var J, A = e.utils.unwrapObservable(c),
                y = {},
                z = !0,
                g = 0;
            for (J = A.length; g < J; g++) {
                var r = m(A[g]);
                if (void 0 === r || r instanceof Object) {
                    z = !1;
                    break
                }
                y[r] = A[g]
            }
            var A = [],
                B = 0,
                g = 0;
            for (J = s.length; g < J; g++) {
                var r = s[g],
                    q, w = l + "[" + g + "]";
                switch (r.status) {
                    case "added":
                        var D = z ? y[r.value] : K(e.utils.unwrapObservable(c), r.value, m);
                        q = F(void 0, D, a, d, b, w, k);
                        h() || (q = e.utils.unwrapObservable(q));
                        w = O(e.utils.unwrapObservable(c), D, n);
                        q === N ? B++ : A[w - B] = q;
                        n[w] = !0;
                        break;
                    case "retained":
                        D = z ? y[r.value] : K(e.utils.unwrapObservable(c), r.value, m);
                        q = K(b, r.value, m);
                        F(q, D, a, d, b, w,
                            k);
                        w = O(e.utils.unwrapObservable(c), D, n);
                        A[w] = q;
                        n[w] = !0;
                        break;
                    case "deleted":
                        q = K(b, r.value, m)
                }
                t.push({
                    event: r.status,
                    item: q
                })
            }
            b(A);
            a[d] && a[d].arrayChanged && e.utils.arrayForEach(t, function(b) {
                a[d].arrayChanged(b.event, b.item)
            })
        } else if (P(c)) {
            b = e.utils.unwrapObservable(b);
            if (!b) {
                if (h()) return s = x(), u() && (s = v(s)), s;
                if (u()) return v(s);
                b = {}
            }
            u() && (b = v(b));
            I.save(c, b);
            if (u()) return b;
            Q(c, function(d) {
                var f = l.length ? l + "." + d : d;
                if (-1 == e.utils.arrayIndexOf(a.ignore, f))
                    if (-1 != e.utils.arrayIndexOf(a.copy, f)) b[d] =
                        c[d];
                    else if ("object" != typeof c[d] && "array" != typeof c[d] && 0 < a.observe.length && -1 == e.utils.arrayIndexOf(a.observe, f)) b[d] = c[d], a.copiedProperties[f] = !0;
                else {
                    var g = I.get(c[d]),
                        k = F(b[d], c[d], a, d, b, f, b),
                        g = g || k;
                    if (0 < a.observe.length && -1 == e.utils.arrayIndexOf(a.observe, f)) b[d] = g(), a.copiedProperties[f] = !0;
                    else {
                        if (e.isWriteableObservable(b[d])) {
                            if (g = e.utils.unwrapObservable(g), b[d]() !== g) b[d](g)
                        } else g = void 0 === b[d] ? g : e.utils.unwrapObservable(g), b[d] = g;
                        a.mappedProperties[f] = !0
                    }
                }
            })
        } else switch (f.getType(c)) {
            case "function":
                u() ?
                    e.isWriteableObservable(c) ? (c(v(c)), b = c) : b = v(c) : b = c;
                break;
            default:
                if (e.isWriteableObservable(b)) return q = u() ? v(b) : e.utils.unwrapObservable(c), b(q), q;
                h() || u();
                b = h() ? x() : e.observable(e.utils.unwrapObservable(c));
                u() && b(v(b))
        }
        return b
    }

    function O(b, c, a) {
        for (var d = 0, e = b.length; d < e; d++)
            if (!0 !== a[d] && b[d] === c) return d;
        return null
    }

    function R(b, c) {
        var a;
        c && (a = c(b));
        "undefined" === f.getType(a) && (a = b);
        return e.utils.unwrapObservable(a)
    }

    function K(b, c, a) {
        b = e.utils.unwrapObservable(b);
        for (var d = 0, f = b.length; d <
            f; d++) {
            var l = b[d];
            if (R(l, a) === c) return l
        }
        throw Error("When calling ko.update*, the key '" + c + "' was not found!");
    }

    function C(b, c) {
        return e.utils.arrayMap(e.utils.unwrapObservable(b), function(a) {
            return c ? R(a, c) : a
        })
    }

    function Q(b, c) {
        if ("array" === f.getType(b))
            for (var a = 0; a < b.length; a++) c(a);
        else
            for (a in b) c(a)
    }

    function P(b) {
        var c = f.getType(b);
        return ("object" === c || "array" === c) && null !== b
    }

    function T() {
        var b = [],
            c = [];
        this.save = function(a, d) {
            var f = e.utils.arrayIndexOf(b, a);
            0 <= f ? c[f] = d : (b.push(a), c.push(d))
        };
        this.get = function(a) {
            a = e.utils.arrayIndexOf(b, a);
            return 0 <= a ? c[a] : void 0
        }
    }

    function S() {
        var b = {},
            c = function(a) {
                var c;
                try {
                    c = a
                } catch (e) {
                    c = "$$$"
                }
                a = b[c];
                void 0 === a && (a = new T, b[c] = a);
                return a
            };
        this.save = function(a, b) {
            c(a).save(a, b)
        };
        this.get = function(a) {
            return c(a).get(a)
        }
    }
    var p = "__ko_mapping__",
        H = e.dependentObservable,
        B = 0,
        G, I, L = ["create", "update", "key", "arrayChanged"],
        N = {},
        x = {
            include: ["_destroy"],
            ignore: [],
            copy: [],
            observe: []
        },
        j = x;
    f.isMapped = function(b) {
        return (b = e.utils.unwrapObservable(b)) && b[p]
    };
    f.fromJS =
        function(b) {
            if (0 == arguments.length) throw Error("When calling ko.fromJS, pass the object you want to convert.");
            try {
                B++ || (G = [], I = new S);
                var c, a;
                2 == arguments.length && (arguments[1][p] ? a = arguments[1] : c = arguments[1]);
                3 == arguments.length && (c = arguments[1], a = arguments[2]);
                a && (c = E(c, a[p]));
                c = z(c);
                var d = F(a, b, c);
                a && (d = a);
                if (!--B)
                    for (; G.length;) {
                        var e = G.pop();
                        e && (e(), e.__DO.throttleEvaluation = e.throttleEvaluation)
                    }
                d[p] = E(d[p], c);
                return d
            } catch (f) {
                throw B = 0, f;
            }
        };
    f.fromJSON = function(b) {
        var c = e.utils.parseJson(b);
        arguments[0] = c;
        return f.fromJS.apply(this, arguments)
    };
    f.updateFromJS = function() {
        throw Error("ko.mapping.updateFromJS, use ko.mapping.fromJS instead. Please note that the order of parameters is different!");
    };
    f.updateFromJSON = function() {
        throw Error("ko.mapping.updateFromJSON, use ko.mapping.fromJSON instead. Please note that the order of parameters is different!");
    };
    f.toJS = function(b, c) {
        j || f.resetDefaultOptions();
        if (0 == arguments.length) throw Error("When calling ko.mapping.toJS, pass the object you want to convert.");
        if ("array" !== f.getType(j.ignore)) throw Error("ko.mapping.defaultOptions().ignore should be an array.");
        if ("array" !== f.getType(j.include)) throw Error("ko.mapping.defaultOptions().include should be an array.");
        if ("array" !== f.getType(j.copy)) throw Error("ko.mapping.defaultOptions().copy should be an array.");
        c = z(c, b[p]);
        return f.visitModel(b, function(a) {
            return e.utils.unwrapObservable(a)
        }, c)
    };
    f.toJSON = function(b, c) {
        var a = f.toJS(b, c);
        return e.utils.stringifyJson(a)
    };
    f.defaultOptions = function() {
        if (0 < arguments.length) j =
            arguments[0];
        else return j
    };
    f.resetDefaultOptions = function() {
        j = {
            include: x.include.slice(0),
            ignore: x.ignore.slice(0),
            copy: x.copy.slice(0)
        }
    };
    f.getType = function(b) {
        if (b && "object" === typeof b) {
            if (b.constructor === Date) return "date";
            if (b.constructor === Array) return "array"
        }
        return typeof b
    };
    f.visitModel = function(b, c, a) {
        a = a || {};
        a.visitedObjects = a.visitedObjects || new S;
        var d, k = e.utils.unwrapObservable(b);
        if (P(k)) a = z(a, k[p]), c(b, a.parentName), d = "array" === f.getType(k) ? [] : {};
        else return c(b, a.parentName);
        a.visitedObjects.save(b,
            d);
        var l = a.parentName;
        Q(k, function(b) {
            if (!(a.ignore && -1 != e.utils.arrayIndexOf(a.ignore, b))) {
                var j = k[b],
                    g = a,
                    h = l || "";
                "array" === f.getType(k) ? l && (h += "[" + b + "]") : (l && (h += "."), h += b);
                g.parentName = h;
                if (!(-1 === e.utils.arrayIndexOf(a.copy, b) && -1 === e.utils.arrayIndexOf(a.include, b) && k[p] && k[p].mappedProperties && !k[p].mappedProperties[b] && k[p].copiedProperties && !k[p].copiedProperties[b] && "array" !== f.getType(k))) switch (f.getType(e.utils.unwrapObservable(j))) {
                    case "object":
                    case "array":
                    case "undefined":
                        g = a.visitedObjects.get(j);
                        d[b] = "undefined" !== f.getType(g) ? g : f.visitModel(j, c, a);
                        break;
                    default:
                        d[b] = c(j, a.parentName)
                }
            }
        });
        return d
    }
});
                                    

#5 JavaScript::Eval (size: 15515, repeated: 1) - SHA256: 0193c6dc1ac5a01f965a92cca1ff3a43b2f3f740c2a39a859417745a306da20e

                                        /* Anti-spam. Want to say hello? Contact (base64) Ym90Z3VhcmQtY29udGFjdEBnb29nbGUuY29t */
(function() {
    var k = function(p, A) {
            if (p = (A = h.trustedTypes, null), !A || !A.createPolicy) return p;
            try {
                p = A.createPolicy("bg", {
                    createHTML: l,
                    createScript: l,
                    createScriptURL: l
                })
            } catch (G) {
                h.console && h.console.error(G.message)
            }
            return p
        },
        h = this || self,
        l = function(p) {
            return p
        };
    (0, eval)(function(p, A) {
        return (A = k()) && 1 === p.eval(A.createScript("1")) ? function(G) {
            return A.createScript(G)
        } : function(G) {
            return "" + G
        }
    }(h)(Array(7824 * Math.random() | 0).join("\n") + '(function(){var AJ=function(p,G,h,l,w,A,k,v){return(k=(w=(v=po,p=[66,21,-83,-76,-92,-87,p,55,-83,-13],G&7),M[l.s](l.cu)),k)[l.s]=function(N){w+=6+7*G,w&=(A=N,7)},k.concat=function(N){return(A=(N=(N=(N=h%16+1,-N*A+4*h*h*N+(v()|0)*N)+37*A*A-777*A+p[w+27&7]*h*N-148*h*h*A-777*h*A+w,p[N]),void 0),p[(w+69&7)+(G&2)]=N,p)[w+(G&2)]=21,N},k},yH=function(p,G,h,l,w){for((p.cu=l8(p.s,(p.Tm=hJ,p.ZP=(p.Hu=p[r],G0),{get:function(){return this.concat()}})),p).vu=M[p.s](p.cu,{value:{value:{}}}),w=0,l=[];128>w;w++)l[w]=String.fromCharCode(w);J(p,(x((x((I(67,(I((I(201,(I(361,((I(211,p,[160,(I(137,(I(143,(I((I(51,p,(I(170,(I(154,p,(I((I(210,p,(I(46,p,(I(135,p,((I(428,(I(317,(I(132,p,(I((I(376,(I(354,(I(492,(I(420,(p.Rv=(I(253,(I(504,p,(I(324,p,(I(441,p,(I(196,(I((p.OU=(I((I(97,p,(I(469,p,(I(350,(I((I(188,(I((I(509,p,(I(334,(I((p.kR=(p.D=0,p.C=(p.UU=function(A){this.B=A},p.A=[],((p.h=(p.B=p,void 0),p.X=[],p).bx=false,p.u=25,p).N=0,p.S=[],false),p.I=(p.l=0,p.Y=1,p.Sw=[],void 0),(p.KA=0,p.L=0,p).Z=(p.U=[],null),p.K=(p.J=(p.i=8001,void 0),p.g=0,p.j=false,p.V=(w=window.performance||{},p.O=(p.H=void 0,[]),p.R=void 0,0),p.F=void 0,void 0),w.timeOrigin)||(w.timing||{}).navigationStart||0,511),p,0),p),0),function(A,k,v,N){v=(k=Q(A),N=L(A),Q(A)),I(v,A,O(A,k)>>>N)})),471),p,2048),p),function(A,k,v,N){!a(false,true,k,A)&&(k=wU(A),N=k.fA,v=k.o,A.B==A||v==A.UU&&N==A)&&(I(k.Bu,A,v.apply(N,k.T)),A.N=A.v())}),80),p,function(A,k,v,N){I((k=O(A,(N=O(A,(v=Q((N=(k=Q(A),Q(A)),A)),N)),k)),v),A,k in N|0)}),p),0),function(A,k,v){a(false,true,k,A)||(k=Q(A),v=Q(A),I(v,A,function(N){return eval(N)}(kE(O(A.B,k)))))})),function(){})),490),p,0),0),86),p,function(A,k,v,N){if(N=A.Sw.pop()){for(k=L(A);0<k;k--)v=Q(A),N[v]=A.S[v];A.S=(N[471]=(N[51]=A.S[51],A.S[471]),N)}else I(511,A,A.V)}),p),function(A,k,v,N){(N=(k=(N=Q(A),v=Q(A),O(A,v)),O)(A,N),I)(v,A,k+N)}),function(A){vC(1,A)})),p.Gm=0,function(A){NC(A,4)})),function(A,k,v){(k=Q((v=Q(A),A)),I)(k,A,""+O(A,v))})),p),function(A,k){k=O(A,Q(A)),MC(k,A.B)}),0),p),{}),p),function(A,k,v,N){I((N=(k=O(A,(v=(k=(N=Q(A),Q)(A),Q)(A),k)),O(A,N)),v),A,N[k])}),p),function(A,k,v,N,R){R=(v=O(A,(v=(R=Q((k=Q((N=Q(A),A)),A)),Q)(A),k=O(A,k),v)),O(A,R)),I(N,A,RB(A,v,k,R))}),p),z),226),p,function(A,k,v,N,R){(R=O(A,(v=(N=(k=O(A,(k=(N=Q(A),v=Q(A),R=Q(A),Q(A)),k)),O(A.B,N)),O)(A,v),R)),0!==N)&&(R=RB(A,1,R,k,N,v),N.addEventListener(v,R,g),I(350,A,[N,v,R]))}),function(A,k,v,N,R,V){if(!a(true,true,k,A)){if("object"==(A=(N=O((v=O((k=(V=Q((v=Q(A),N=Q(A),A)),Q)(A),k=O(A,k),A),v),A),N),O(A,V)),rU)(v)){for(R in V=[],v)V.push(R);v=V}for(V=(R=0,A=0<A?A:1,v.length);R<V;R+=A)N(v.slice(R,(R|0)+(A|0)),k)}})),p),function(A,k){A=(k=Q(A),O)(A.B,k),A[0].removeEventListener(A[1],A[2],g)}),p),function(A,k,v,N){v=(N=Q((k=Q(A),A)),Q(A)),I(v,A,O(A,k)||O(A,N))}),I)(456,p,function(A,k,v,N,R,V,B,c,F,W,y,t){function Y(D,u){for(;N<D;)k|=L(A)<<N,N+=8;return k>>=(u=(N-=D,k)&(1<<D)-1,D),u}for(v=(F=(R=(k=(c=Q(A),N=0),(Y(3)|0)+1),y=Y(5),W=0,[]),0);v<y;v++)t=Y(1),F.push(t),W+=t?0:1;for(v=(B=(W=((W|0)-1).toString(2).length,[]),0);v<y;v++)F[v]||(B[v]=Y(W));for(W=0;W<y;W++)F[W]&&(B[W]=Q(A));for(V=[];R--;)V.push(O(A,Q(A)));I(c,A,function(D,u,H,m,X){for(X=(u=[],[]),H=0;H<y;H++){if(!(m=B[H],F[H])){for(;m>=X.length;)X.push(Q(D));m=X[m]}u.push(m)}D.I=IB(V.slice(),D),D.K=IB(u,D)})}),function(A,k,v,N,R){for(v=(k=(R=VH((N=Q(A),A)),0),[]);k<R;k++)v.push(L(A));I(N,A,v)})),function(A,k,v,N,R,V){a(false,true,k,A)||(N=wU(A.B),v=N.fA,k=N.Bu,R=N.o,N=N.T,V=N.length,v=0==V?new v[R]:1==V?new v[R](N[0]):2==V?new v[R](N[0],N[1]):3==V?new v[R](N[0],N[1],N[2]):4==V?new v[R](N[0],N[1],N[2],N[3]):2(),I(k,A,v))})),function(A){NC(A,3)})),234),p,function(A,k,v,N,R,V,B){for(R=(v=(k=O(A,(B=(V=(N=Q(A),VH(A)),""),21)),k).length,0);V--;)R=((R|0)+(VH(A)|0))%v,B+=l[k[R]];I(N,A,B)}),function(A,k,v,N){(v=(N=(k=Q(A),Q)(A),Q)(A),A.B)==A&&(v=O(A,v),N=O(A,N),O(A,k)[N]=v,408==k&&(A.H=void 0,2==N&&(A.R=n(A,false,32),A.H=void 0)))})),p),function(A){S(4,A)}),[])),I(128,p,U(4)),295),p,[]),p),function(A,k,v){0!=O(A,(v=O(A,(v=(k=Q(A),Q(A)),v)),k))&&I(511,A,v)}),p),function(A){vC(4,A)}),0),0]),I)(437,p,[0,0,0]),p),872),p),p),430),p,function(A,k,v){I((k=(k=O(A,(k=Q(A),v=Q(A),k)),rU(k)),v),A,k)}),p),function(A,k,v,N){(N=(v=(k=Q((N=Q(A),A)),Q)(A),k=O(A,k),O(A,N))==k,I)(v,A,+N)}),x([i8],p),[d,G]),p),[BC,h]),p),true),true)},S=function(p,G,h,l){for(l=Q(G),h=0;0<p;p--)h=h<<8|L(G);I(l,G,h)},f,$E=function(p,G,h,l){try{l=p[((G|0)+2)%3],p[G]=(p[G]|0)-(p[((G|0)+1)%3]|0)-(l|0)^(1==G?l<<h:l>>>h)}catch(w){throw w;}},Q=function(p,G){if(p.I)return Fr(p,p.K);return G=n(p,true,8),G&128&&(G^=128,p=n(p,true,2),G=(G<<2)+(p|0)),G},b,WC=function(p,G,h){return p.W(function(l){h=l},false,G),h},QH=function(p){return p},x=function(p,G){G.U.splice(0,0,p)},RB=function(p,G,h,l,w,A){function k(){if(p.B==p){if(p.S){var v=[Lo,h,l,void 0,w,A,arguments];if(2==G)var N=J(p,!(x(v,p),1),false);else if(1==G){var R=!p.U.length;x(v,p),R&&J(p,false,false)}else N=On(v,p);return N}w&&A&&w.removeEventListener(A,k,g)}}return k},E=function(p,G){G.h=((G.h?G.h+"~":"E:")+p.message+":"+p.stack).slice(0,2048)},aB=function(p,G,h,l,w){for(h=(l=(w=0,h)[3]|0,h)[2]|0;15>w;w++)G=G>>>8|G<<24,G+=p|0,G^=h+823,p=p<<3|p>>>29,p^=G,l=l>>>8|l<<24,l+=h|0,l^=w+823,h=h<<3|h>>>29,h^=l;return[p>>>24&255,p>>>16&255,p>>>8&255,p>>>0&255,G>>>24&255,G>>>16&255,G>>>8&255,G>>>0&255]},rU=function(p,G,h){if("object"==(G=typeof p,G))if(p){if(p instanceof Array)return"array";if(p instanceof Object)return G;if("[object Window]"==(h=Object.prototype.toString.call(p),h))return"object";if("[object Array]"==h||"number"==typeof p.length&&"undefined"!=typeof p.splice&&"undefined"!=typeof p.propertyIsEnumerable&&!p.propertyIsEnumerable("splice"))return"array";if("[object Function]"==h||"undefined"!=typeof p.call&&"undefined"!=typeof p.propertyIsEnumerable&&!p.propertyIsEnumerable("call"))return"function"}else return"null";else if("function"==G&&"undefined"==typeof p.call)return"object";return G},e=function(p,G,h,l){for(l=(G|(h=[],0))-1;0<=l;l--)h[(G|0)-1-(l|0)]=p>>8*l&255;return h},DY=function(p,G,h,l){return O(G,(I(511,G,(tJ(G,((l=O(G,511),G.O)&&l<G.V?(I(511,G,G.V),MC(h,G)):I(511,G,h),p)),l)),420))},cC=function(p,G){if(G=(p=z.trustedTypes,null),!p||!p.createPolicy)return G;try{G=p.createPolicy("bg",{createHTML:QH,createScript:QH,createScriptURL:QH})}catch(h){z.console&&z.console.error(h.message)}return G},sn=function(p,G,h,l,w){for(h=(G=l=(p=p.replace(/\\r\\n/g,"\\n"),0),[]);G<p.length;G++)w=p.charCodeAt(G),128>w?h[l++]=w:(2048>w?h[l++]=w>>6|192:(55296==(w&64512)&&G+1<p.length&&56320==(p.charCodeAt(G+1)&64512)?(w=65536+((w&1023)<<10)+(p.charCodeAt(++G)&1023),h[l++]=w>>18|240,h[l++]=w>>12&63|128):h[l++]=w>>12|224,h[l++]=w>>6&63|128),h[l++]=w&63|128);return h},IB=function(p,G,h){return(h=M[G.s](G.vu),h[G.s]=function(){return p},h).concat=function(l){p=l},h},tJ=function(p,G,h,l,w,A){if(!p.h){p.g++;try{for(l=(h=(A=void 0,0),p).V;--G;)try{if((w=void 0,p).I)A=Fr(p,p.I);else{if(h=O(p,511),h>=l)break;A=(w=(I(334,p,h),Q)(p),O)(p,w)}a(false,!(A&&A.call?A(p,G):q(p,[T,21,w],0),1),G,p)}catch(k){O(p,361)?q(p,k,22):I(361,p,k)}if(!G){if(p.Iv){tJ((p.g--,p),720955100124);return}q(p,[T,33],0)}}catch(k){try{q(p,k,22)}catch(v){E(v,p)}}p.g--}},SE=function(p,G,h){if(3==p.length){for(h=0;3>h;h++)G[h]+=p[h];for(h=[13,8,13,12,16,5,(p=0,3),10,15];9>p;p++)G[3](G,p%3,h[p])}},z0=function(p,G){(G.push(p[0]<<24|p[1]<<16|p[2]<<8|p[3]),G).push(p[4]<<24|p[5]<<16|p[6]<<8|p[7]),G.push(p[8]<<24|p[9]<<16|p[10]<<8|p[11])},l8=function(p,G){return M[p](M.prototype,{propertyIsEnumerable:G,call:G,console:G,replace:G,length:G,stack:G,floor:G,splice:G,prototype:G,document:G,pop:G,parent:G})},z=this||self,gU=function(p,G){return G[p]<<24|G[(p|0)+1]<<16|G[(p|0)+2]<<8|G[(p|0)+3]},VH=function(p,G){return(G=L(p),G)&128&&(G=G&127|L(p)<<7),G},MC=function(p,G){I(511,G,(G.Sw.push(G.S.slice()),G.S[511]=void 0,p))},wU=function(p,G,h,l,w,A){for(A=(G=(h=p[no]||{},Q(p)),h.Bu=Q(p),h.T=[],w=p.B==p?(L(p)|0)-1:1,Q(p)),l=0;l<w;l++)h.T.push(Q(p));for(;w--;)h.T[w]=O(p,h.T[w]);return(h.fA=O(p,A),h).o=O(p,G),h},u8=function(p,G,h,l){return(l=b[p.substring(0,3)+"_"])?l(p.substring(3),G,h):YE(p,G)},g={passive:true,capture:true},Un=function(p,G,h,l){function w(){}return{invoke:(h=u8(p,(l=void 0,function(A){w&&(G&&C(G),l=A,w(),w=void 0)}),!!G)[0],function(A,k,v,N){function R(){l(function(V){C(function(){A(V)})},v)}if(!k)return k=h(v),A&&A(k),k;l?R():(N=w,w=function(){C((N(),R))})})}},U=function(p,G){for(G=[];p--;)G.push(255*Math.random()|0);return G},O=function(p,G){if(p=p.S[G],void 0===p)throw[T,30,G];if(p.value)return p.create();return(p.create(4*G*G+21*G+21),p).prototype},L=function(p){return p.I?Fr(p,p.K):n(p,true,8)},Fr=function(p,G){return(G=G.create().shift(),p.I).create().length||p.K.create().length||(p.K=void 0,p.I=void 0),G},P=function(p,G,h){h=this;try{yH(this,p,G)}catch(l){E(l,this),G(function(w){w(h.h)})}},a=function(p,G,h,l,w,A,k,v,N){if((((k=(N=(v=(A=(G||l.J++,(w=p?255:G?5:2,0)<l.D&&l.C&&l.bx&&1>=l.g&&!l.I)&&!l.Z&&(!G||1<l.i-h)&&0==document.hidden,p=4==l.J)||A?l.v():l.N,v)-l.N,N>>14),l).R&&(l.R^=k*(N<<2)),l.B=k||l.B,l).Y+=k,p)||A)l.N=v,l.J=0;if(!A||v-l.L<l.D-w)return false;return!((p=O((l.i=h,l),G?334:511),I)(511,l,l.V),l.U.push([oB,p,G?h+1:h]),l.Z=C,0)},vC=function(p,G,h,l){Z(e(O(G,(l=Q(G),h=Q(G),l)),p),G,h)},q=function(p,G,h,l,w,A){if(!p.j){if(3<(G=(h=((l=O(((A=void 0,G)&&G[0]===T&&(h=G[1],A=G[2],G=void 0),p),51),0)==l.length&&(w=O(p,334)>>3,l.push(h,w>>8&255,w&255),void 0!=A&&l.push(A&255)),""),G&&(G.message&&(h+=G.message),G.stack&&(h+=":"+G.stack)),O(p,471)),G)){p.B=(A=(h=sn((h=h.slice(0,(G|0)-3),G-=(h.length|0)+3,h)),p.B),p);try{Z(e(h.length,2).concat(h),p,128,9)}finally{p.B=A}}I(471,p,G)}},I=function(p,G,h){if(511==p||334==p)G.S[p]?G.S[p].concat(h):G.S[p]=IB(h,G);else{if(G.j&&408!=p)return;211==p||128==p||295==p||51==p||437==p?G.S[p]||(G.S[p]=AJ(h,14,p,G)):G.S[p]=AJ(h,129,p,G)}408==p&&(G.R=n(G,false,32),G.H=void 0)},NC=function(p,G,h,l,w){((w=O(p,(h=(w=Q((G&=(l=G&4,3),p)),Q(p)),w)),l&&(w=sn(""+w)),G)&&Z(e(w.length,2),p,h),Z)(w,p,h)},YE=function(p,G){return[(G(function(h){h(p)}),function(){return p})]},Z=function(p,G,h,l,w,A){if(G.B==G)for(w=O(G,h),128==h?(h=function(k,v,N,R){if(w.V_!=(v=((N=w.length,N)|0)-4>>3,v)){v=(w.V_=(R=[0,0,A[1],A[2]],v),(v<<3)-4);try{w.sU=aB(gU(v,w),gU((v|0)+4,w),R)}catch(V){throw V;}}w.push(w.sU[N&7]^k)},A=O(G,437)):h=function(k){w.push(k)},l&&h(l&255),G=0,l=p.length;G<l;G++)h(p[G])},n=function(p,G,h,l,w,A,k,v,N,R,V,B,c,F){if(k=O(p,511),k>=p.V)throw[T,31];for(v=(R=k,A=(l=h,0),p.Hu.length);0<l;)w=R%8,N=R>>3,V=8-(w|0),V=V<l?V:l,B=p.O[N],G&&(F=p,F.H!=R>>6&&(F.H=R>>6,c=O(F,408),F.F=aB(F.R,F.H,[0,0,c[1],c[2]])),B^=p.F[N&v]),R+=V,A|=(B>>8-(w|0)-(V|0)&(1<<V)-1)<<(l|0)-(V|0),l-=V;return I(511,(G=A,p),(k|0)+(h|0)),G},J=function(p,G,h,l,w,A){if(p.U.length){(p.bx=(p.C&&0(),G),p).C=true;try{l=p.v(),p.J=0,p.N=l,p.L=l,w=xE(p,G),A=p.v()-p.L,p.l+=A,A<(h?0:10)||0>=p.u--||(A=Math.floor(A),p.X.push(254>=A?A:254))}finally{p.C=false}return w}},xE=function(p,G,h,l){for(;p.U.length;){p.Z=null,h=p.U.pop();try{l=On(h,p)}catch(w){E(w,p)}if(G&&p.Z){G=p.Z,G(function(){J(p,true,true)});break}}return l},On=function(p,G,h,l,w){if((l=p[0],l)==K)G.u=25,G.G(p);else if(l==r){h=p[1];try{w=G.h||G.G(p)}catch(A){E(A,G),w=G.h}h(w)}else if(l==oB)G.G(p);else if(l==d)G.G(p);else if(l==BC){try{for(w=0;w<G.A.length;w++)try{h=G.A[w],h[0][h[1]](h[2])}catch(A){}}catch(A){}(0,p[1])(function(A,k){G.W(A,true,k)},(G.A=[],function(A){(x([dU],(A=!G.U.length,G)),A)&&J(G,true,false)}))}else{if(l==Lo)return w=p[2],I(380,G,p[6]),I(420,G,w),G.G(p);l==dU?(G.S=null,G.X=[],G.O=[]):l==i8&&"loading"===z.document.readyState&&(G.Z=function(A,k){function v(){k||(k=true,A())}k=false,z.document.addEventListener("DOMContentLoaded",v,g),z.addEventListener("load",v,g)})}},C=z.requestIdleCallback?function(p){requestIdleCallback(function(){p()},{timeout:4})}:z.setImmediate?function(p){setImmediate(p)}:function(p){setTimeout(p,0)},no=String.fromCharCode(105,110,116,101,103,67,104,101,99,107,66,121,112,97,115,115),BC=(P.prototype.Iv=false,P.prototype.N_=void 0,P.prototype.P="toString",[]),d=[],r=[],i8=[],T={},Lo=[],oB=(P.prototype.LA=void 0,[]),dU=[],K=[],M=((z0,U,$E,function(){})(SE),T.constructor),po=void 0;P.prototype.G=(((((f=P.prototype,P).prototype.s="create",f.xR=function(){return Math.floor(this.v())},f.mq=function(){return Math.floor(this.l+(this.v()-this.L))},f).W=function(p,G,h,l,w){if(h="array"===rU(h)?h:[h],this.h)p(this.h);else try{w=[],l=!this.U.length,x([K,w,h],this),x([r,p,w],this),G&&!l||J(this,G,true)}catch(A){E(A,this),p(this.h)}},f.nA=function(p,G,h){return p^((G=((G^=G<<13,G^=G>>17,G)^G<<5)&h)||(G=1),G)},f).w0=function(p,G,h,l,w,A){for(h=[],w=l=0;w<p.length;w++)for(l+=G,A=A<<G|p[w];7<l;)l-=8,h.push(A>>l&255);return h},f).v=(window.performance||{}).now?function(){return this.kR+window.performance.now()}:function(){return+new Date},f.ew=function(p,G,h,l,w){for(l=w=0;l<p.length;l++)w+=p.charCodeAt(l),w+=w<<10,w^=w>>6;return(w=new Number((p=(w+=w<<3,w^=w>>11,w)+(w<<15)>>>0,p&(1<<G)-1)),w)[0]=(p>>>G)%h,w},function(p,G){return po=(p=(G={},{}),function(){return G==p?21:-8}),function(h,l,w,A,k,v,N,R,V,B,c,F,W,y,t){G=(l=G,p);try{if(w=h[0],w==d){F=h[1];try{for(y=V=(t=(R=atob(F),[]),0);V<R.length;V++)v=R.charCodeAt(V),255<v&&(t[y++]=v&255,v>>=8),t[y++]=v;I(408,this,[0,(this.V=(this.O=t,this.O.length<<3),0),0])}catch(Y){q(this,Y,17);return}tJ(this,8001)}else if(w==K)h[1].push(O(this,128).length,O(this,211).length,O(this,471),O(this,295).length),I(420,this,h[2]),this.S[63]&&DY(8001,this,O(this,63));else{if(w==r){(c=(A=e((V=h[2],(O(this,211).length|0)+2),2),this).B,this).B=this;try{N=O(this,51),0<N.length&&Z(e(N.length,2).concat(N),this,211,10),Z(e(this.Y,1),this,211,109),Z(e(this[r].length,1),this,211),R=0,k=O(this,128),R-=(O(this,211).length|0)+5,R+=O(this,490)&2047,4<k.length&&(R-=(k.length|0)+3),0<R&&Z(e(R,2).concat(U(R)),this,211,15),4<k.length&&Z(e(k.length,2).concat(k),this,211,156)}finally{this.B=c}if(B=(y=U(2).concat(O(this,211)),y[1]=y[0]^6,y[3]=y[1]^A[0],y[4]=y[1]^A[1],this.hX(y)))B="!"+B;else for(B="",R=0;R<y.length;R++)W=y[R][this.P](16),1==W.length&&(W="0"+W),B+=W;return(I(471,(O(this,(O(this,(t=B,128)).length=V.shift(),211)).length=V.shift(),this),V.shift()),O)(this,295).length=V.shift(),t}if(w==oB)DY(h[2],this,h[1]);else if(w==Lo)return DY(8001,this,h[1])}}finally{G=l}}})();var G0,hJ=((P.prototype.av=0,P.prototype).g0=(P.prototype[BC]=[0,0,1,1,0,1,1],0),P.prototype.hX=function(p,G,h,l){if(G=window.btoa){for(l=(h="",0);l<p.length;l+=8192)h+=String.fromCharCode.apply(null,p.slice(l,l+8192));p=G(h).replace(/\\+/g,"-").replace(/\\//g,"_").replace(/=/g,"")}else p=void 0;return p},/./),JJ=d.pop.bind(P.prototype[K]),kE=((G0=l8(P.prototype.s,(hJ[P.prototype.P]=JJ,{get:JJ})),P.prototype).EU=void 0,function(p,G){return(G=cC())&&1===p.eval(G.createScript("1"))?function(h){return G.createScript(h)}:function(h){return""+h}})(z);(b=z.botguard||(z.botguard={}),40<b.m||(b.m=41,b.bg=Un,b.a=u8),b).MBK_=function(p,G,h){return h=new P(p,G),[function(l){return WC(h,l)}]};}).call(this);'));
}).call(this);
                                    

#6 JavaScript::Eval (size: 251699, repeated: 1) - SHA256: b1d86020c2008f17fb4b81f65a4254d5af5a26cbde2d8ec184519f473789ad34

                                        /*! jQuery UI - v1.12.1 - 2021-10-01
 * http://jqueryui.com
 * Includes: widget.js, position.js, data.js, disable-selection.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/draggable.js, widgets/droppable.js, widgets/resizable.js, widgets/selectable.js, widgets/sortable.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/selectmenu.js, widgets/slider.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js
 * Copyright jQuery Foundation and other contributors; Licensed MIT */

! function(t) {
    "function" == typeof define && define.amd ? define(["jquery"], t) : t(jQuery)
}(function(k) {
    k.ui = k.ui || {};
    k.ui.version = "1.12.1";
    var n, i = 0,
        r = Array.prototype.slice;
    k.cleanData = (n = k.cleanData, function(t) {
        for (var e, i, s = 0; null != (i = t[s]); s++) try {
            (e = k._data(i, "events")) && e.remove && k(i).triggerHandler("remove")
        } catch (t) {}
        n(t)
    }), k.widget = function(t, i, e) {
        var s, n, o, a = {},
            r = t.split(".")[0],
            h = r + "-" + (t = t.split(".")[1]);
        return e || (e = i, i = k.Widget), k.isArray(e) && (e = k.extend.apply(null, [{}].concat(e))), k.expr[":"][h.toLowerCase()] = function(t) {
            return !!k.data(t, h)
        }, k[r] = k[r] || {}, s = k[r][t], n = k[r][t] = function(t, e) {
            if (!this._createWidget) return new n(t, e);
            arguments.length && this._createWidget(t, e)
        }, k.extend(n, s, {
            version: e.version,
            _proto: k.extend({}, e),
            _childConstructors: []
        }), (o = new i).options = k.widget.extend({}, o.options), k.each(e, function(e, s) {
            function n() {
                return i.prototype[e].apply(this, arguments)
            }

            function o(t) {
                return i.prototype[e].apply(this, t)
            }
            k.isFunction(s) ? a[e] = function() {
                var t, e = this._super,
                    i = this._superApply;
                return this._super = n, this._superApply = o, t = s.apply(this, arguments), this._super = e, this._superApply = i, t
            } : a[e] = s
        }), n.prototype = k.widget.extend(o, {
            widgetEventPrefix: s && o.widgetEventPrefix || t
        }, a, {
            constructor: n,
            namespace: r,
            widgetName: t,
            widgetFullName: h
        }), s ? (k.each(s._childConstructors, function(t, e) {
            var i = e.prototype;
            k.widget(i.namespace + "." + i.widgetName, n, e._proto)
        }), delete s._childConstructors) : i._childConstructors.push(n), k.widget.bridge(t, n), n
    }, k.widget.extend = function(t) {
        for (var e, i, s = r.call(arguments, 1), n = 0, o = s.length; n < o; n++)
            for (e in s[n]) i = s[n][e], s[n].hasOwnProperty(e) && void 0 !== i && (k.isPlainObject(i) ? t[e] = k.isPlainObject(t[e]) ? k.widget.extend({}, t[e], i) : k.widget.extend({}, i) : t[e] = i);
        return t
    }, k.widget.bridge = function(o, e) {
        var a = e.prototype.widgetFullName || o;
        k.fn[o] = function(i) {
            var t = "string" == typeof i,
                s = r.call(arguments, 1),
                n = this;
            return t ? this.length || "instance" !== i ? this.each(function() {
                var t, e = k.data(this, a);
                return "instance" === i ? (n = e, !1) : e ? k.isFunction(e[i]) && "_" !== i.charAt(0) ? (t = e[i].apply(e, s)) !== e && void 0 !== t ? (n = t && t.jquery ? n.pushStack(t.get()) : t, !1) : void 0 : k.error("no such method '" + i + "' for " + o + " widget instance") : k.error("cannot call methods on " + o + " prior to initialization; attempted to call method '" + i + "'")
            }) : n = void 0 : (s.length && (i = k.widget.extend.apply(null, [i].concat(s))), this.each(function() {
                var t = k.data(this, a);
                t ? (t.option(i || {}), t._init && t._init()) : k.data(this, a, new e(i, this))
            })), n
        }
    }, k.Widget = function() {}, k.Widget._childConstructors = [], k.Widget.prototype = {
        widgetName: "widget",
        widgetEventPrefix: "",
        defaultElement: "<div>",
        options: {
            classes: {},
            disabled: !1,
            create: null
        },
        _createWidget: function(t, e) {
            e = k(e || this.defaultElement || this)[0], this.element = k(e), this.uuid = i++, this.eventNamespace = "." + this.widgetName + this.uuid, this.bindings = k(), this.hoverable = k(), this.focusable = k(), this.classesElementLookup = {}, e !== this && (k.data(e, this.widgetFullName, this), this._on(!0, this.element, {
                remove: function(t) {
                    t.target === e && this.destroy()
                }
            }), this.document = k(e.style ? e.ownerDocument : e.document || e), this.window = k(this.document[0].defaultView || this.document[0].parentWindow)), this.options = k.widget.extend({}, this.options, this._getCreateOptions(), t), this._create(), this.options.disabled && this._setOptionDisabled(this.options.disabled), this._trigger("create", null, this._getCreateEventData()), this._init()
        },
        _getCreateOptions: function() {
            return {}
        },
        _getCreateEventData: k.noop,
        _create: k.noop,
        _init: k.noop,
        destroy: function() {
            var i = this;
            this._destroy(), k.each(this.classesElementLookup, function(t, e) {
                i._removeClass(e, t)
            }), this.element.off(this.eventNamespace).removeData(this.widgetFullName), this.widget().off(this.eventNamespace).removeAttr("aria-disabled"), this.bindings.off(this.eventNamespace)
        },
        _destroy: k.noop,
        widget: function() {
            return this.element
        },
        option: function(t, e) {
            var i, s, n, o = t;
            if (0 === arguments.length) return k.widget.extend({}, this.options);
            if ("string" == typeof t)
                if (o = {}, t = (i = t.split(".")).shift(), i.length) {
                    for (s = o[t] = k.widget.extend({}, this.options[t]), n = 0; n < i.length - 1; n++) s[i[n]] = s[i[n]] || {}, s = s[i[n]];
                    if (t = i.pop(), 1 === arguments.length) return void 0 === s[t] ? null : s[t];
                    s[t] = e
                } else {
                    if (1 === arguments.length) return void 0 === this.options[t] ? null : this.options[t];
                    o[t] = e
                }
            return this._setOptions(o), this
        },
        _setOptions: function(t) {
            for (var e in t) this._setOption(e, t[e]);
            return this
        },
        _setOption: function(t, e) {
            return "classes" === t && this._setOptionClasses(e), this.options[t] = e, "disabled" === t && this._setOptionDisabled(e), this
        },
        _setOptionClasses: function(t) {
            var e, i, s;
            for (e in t) s = this.classesElementLookup[e], t[e] !== this.options.classes[e] && s && s.length && (i = k(s.get()), this._removeClass(s, e), i.addClass(this._classes({
                element: i,
                keys: e,
                classes: t,
                add: !0
            })))
        },
        _setOptionDisabled: function(t) {
            this._toggleClass(this.widget(), this.widgetFullName + "-disabled", null, !!t), t && (this._removeClass(this.hoverable, null, "ui-state-hover"), this._removeClass(this.focusable, null, "ui-state-focus"))
        },
        enable: function() {
            return this._setOptions({
                disabled: !1
            })
        },
        disable: function() {
            return this._setOptions({
                disabled: !0
            })
        },
        _classes: function(n) {
            var o = [],
                a = this;

            function t(t, e) {
                for (var i, s = 0; s < t.length; s++) i = a.classesElementLookup[t[s]] || k(), i = n.add ? k(k.unique(i.get().concat(n.element.get()))) : k(i.not(n.element).get()), a.classesElementLookup[t[s]] = i, o.push(t[s]), e && n.classes[t[s]] && o.push(n.classes[t[s]])
            }
            return n = k.extend({
                element: this.element,
                classes: this.options.classes || {}
            }, n), this._on(n.element, {
                remove: "_untrackClassesElement"
            }), n.keys && t(n.keys.match(/\S+/g) || [], !0), n.extra && t(n.extra.match(/\S+/g) || []), o.join(" ")
        },
        _untrackClassesElement: function(i) {
            var s = this;
            k.each(s.classesElementLookup, function(t, e) {
                -1 !== k.inArray(i.target, e) && (s.classesElementLookup[t] = k(e.not(i.target).get()))
            })
        },
        _removeClass: function(t, e, i) {
            return this._toggleClass(t, e, i, !1)
        },
        _addClass: function(t, e, i) {
            return this._toggleClass(t, e, i, !0)
        },
        _toggleClass: function(t, e, i, s) {
            var n = "string" == typeof t || null === t,
                i = {
                    extra: n ? e : i,
                    keys: n ? t : e,
                    element: n ? this.element : t,
                    add: s = "boolean" == typeof s ? s : i
                };
            return i.element.toggleClass(this._classes(i), s), this
        },
        _on: function(n, o, t) {
            var a, r = this;
            "boolean" != typeof n && (t = o, o = n, n = !1), t ? (o = a = k(o), this.bindings = this.bindings.add(o)) : (t = o, o = this.element, a = this.widget()), k.each(t, function(t, e) {
                function i() {
                    if (n || !0 !== r.options.disabled && !k(this).hasClass("ui-state-disabled")) return ("string" == typeof e ? r[e] : e).apply(r, arguments)
                }
                "string" != typeof e && (i.guid = e.guid = e.guid || i.guid || k.guid++);
                var s = t.match(/^([\w:-]*)\s*(.*)$/),
                    t = s[1] + r.eventNamespace,
                    s = s[2];
                s ? a.on(t, s, i) : o.on(t, i)
            })
        },
        _off: function(t, e) {
            e = (e || "").split(" ").join(this.eventNamespace + " ") + this.eventNamespace, t.off(e).off(e), this.bindings = k(this.bindings.not(t).get()), this.focusable = k(this.focusable.not(t).get()), this.hoverable = k(this.hoverable.not(t).get())
        },
        _delay: function(t, e) {
            var i = this;
            return setTimeout(function() {
                return ("string" == typeof t ? i[t] : t).apply(i, arguments)
            }, e || 0)
        },
        _hoverable: function(t) {
            this.hoverable = this.hoverable.add(t), this._on(t, {
                mouseenter: function(t) {
                    this._addClass(k(t.currentTarget), null, "ui-state-hover")
                },
                mouseleave: function(t) {
                    this._removeClass(k(t.currentTarget), null, "ui-state-hover")
                }
            })
        },
        _focusable: function(t) {
            this.focusable = this.focusable.add(t), this._on(t, {
                focusin: function(t) {
                    this._addClass(k(t.currentTarget), null, "ui-state-focus")
                },
                focusout: function(t) {
                    this._removeClass(k(t.currentTarget), null, "ui-state-focus")
                }
            })
        },
        _trigger: function(t, e, i) {
            var s, n, o = this.options[t];
            if (i = i || {}, (e = k.Event(e)).type = (t === this.widgetEventPrefix ? t : this.widgetEventPrefix + t).toLowerCase(), e.target = this.element[0], n = e.originalEvent)
                for (s in n) s in e || (e[s] = n[s]);
            return this.element.trigger(e, i), !(k.isFunction(o) && !1 === o.apply(this.element[0], [e].concat(i)) || e.isDefaultPrevented())
        }
    }, k.each({
        show: "fadeIn",
        hide: "fadeOut"
    }, function(o, a) {
        k.Widget.prototype["_" + o] = function(e, t, i) {
            var s = (t = "string" == typeof t ? {
                    effect: t
                } : t) ? !0 !== t && "number" != typeof t && t.effect || a : o,
                n = !k.isEmptyObject(t = "number" == typeof(t = t || {}) ? {
                    duration: t
                } : t);
            t.complete = i, t.delay && e.delay(t.delay), n && k.effects && k.effects.effect[s] ? e[o](t) : s !== o && e[s] ? e[s](t.duration, t.easing, i) : e.queue(function(t) {
                k(this)[o](), i && i.call(e[0]), t()
            })
        }
    });
    var s, x, C, o, a, h, l, c, D;
    k.widget;

    function I(t, e, i) {
        return [parseFloat(t[0]) * (c.test(t[0]) ? e / 100 : 1), parseFloat(t[1]) * (c.test(t[1]) ? i / 100 : 1)]
    }

    function T(t, e) {
        return parseInt(k.css(t, e), 10) || 0
    }
    x = Math.max, C = Math.abs, o = /left|center|right/, a = /top|center|bottom/, h = /[\+\-]\d+(\.[\d]+)?%?/, l = /^\w+/, c = /%$/, D = k.fn.position, k.position = {
        scrollbarWidth: function() {
            if (void 0 !== s) return s;
            var t, e = k("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),
                i = e.children()[0];
            return k("body").append(e), t = i.offsetWidth, e.css("overflow", "scroll"), t === (i = i.offsetWidth) && (i = e[0].clientWidth), e.remove(), s = t - i
        },
        getScrollInfo: function(t) {
            var e = t.isWindow || t.isDocument ? "" : t.element.css("overflow-x"),
                i = t.isWindow || t.isDocument ? "" : t.element.css("overflow-y"),
                e = "scroll" === e || "auto" === e && t.width < t.element[0].scrollWidth;
            return {
                width: "scroll" === i || "auto" === i && t.height < t.element[0].scrollHeight ? k.position.scrollbarWidth() : 0,
                height: e ? k.position.scrollbarWidth() : 0
            }
        },
        getWithinInfo: function(t) {
            var e = k(t || window),
                i = k.isWindow(e[0]),
                s = !!e[0] && 9 === e[0].nodeType;
            return {
                element: e,
                isWindow: i,
                isDocument: s,
                offset: !i && !s ? k(t).offset() : {
                    left: 0,
                    top: 0
                },
                scrollLeft: e.scrollLeft(),
                scrollTop: e.scrollTop(),
                width: e.outerWidth(),
                height: e.outerHeight()
            }
        }
    }, k.fn.position = function(u) {
        if (!u || !u.of) return D.apply(this, arguments);
        u = k.extend({}, u);
        var d, p, f, g, m, t, _ = k(u.of),
            v = k.position.getWithinInfo(u.within),
            b = k.position.getScrollInfo(v),
            y = (u.collision || "flip").split(" "),
            w = {},
            e = 9 === (t = (e = _)[0]).nodeType ? {
                width: e.width(),
                height: e.height(),
                offset: {
                    top: 0,
                    left: 0
                }
            } : k.isWindow(t) ? {
                width: e.width(),
                height: e.height(),
                offset: {
                    top: e.scrollTop(),
                    left: e.scrollLeft()
                }
            } : t.preventDefault ? {
                width: 0,
                height: 0,
                offset: {
                    top: t.pageY,
                    left: t.pageX
                }
            } : {
                width: e.outerWidth(),
                height: e.outerHeight(),
                offset: e.offset()
            };
        return _[0].preventDefault && (u.at = "left top"), p = e.width, f = e.height, m = k.extend({}, g = e.offset), k.each(["my", "at"], function() {
            var t, e, i = (u[this] || "").split(" ");
            (i = 1 === i.length ? o.test(i[0]) ? i.concat(["center"]) : a.test(i[0]) ? ["center"].concat(i) : ["center", "center"] : i)[0] = o.test(i[0]) ? i[0] : "center", i[1] = a.test(i[1]) ? i[1] : "center", t = h.exec(i[0]), e = h.exec(i[1]), w[this] = [t ? t[0] : 0, e ? e[0] : 0], u[this] = [l.exec(i[0])[0], l.exec(i[1])[0]]
        }), 1 === y.length && (y[1] = y[0]), "right" === u.at[0] ? m.left += p : "center" === u.at[0] && (m.left += p / 2), "bottom" === u.at[1] ? m.top += f : "center" === u.at[1] && (m.top += f / 2), d = I(w.at, p, f), m.left += d[0], m.top += d[1], this.each(function() {
            var i, t, a = k(this),
                r = a.outerWidth(),
                h = a.outerHeight(),
                e = T(this, "marginLeft"),
                s = T(this, "marginTop"),
                n = r + e + T(this, "marginRight") + b.width,
                o = h + s + T(this, "marginBottom") + b.height,
                l = k.extend({}, m),
                c = I(w.my, a.outerWidth(), a.outerHeight());
            "right" === u.my[0] ? l.left -= r : "center" === u.my[0] && (l.left -= r / 2), "bottom" === u.my[1] ? l.top -= h : "center" === u.my[1] && (l.top -= h / 2), l.left += c[0], l.top += c[1], i = {
                marginLeft: e,
                marginTop: s
            }, k.each(["left", "top"], function(t, e) {
                k.ui.position[y[t]] && k.ui.position[y[t]][e](l, {
                    targetWidth: p,
                    targetHeight: f,
                    elemWidth: r,
                    elemHeight: h,
                    collisionPosition: i,
                    collisionWidth: n,
                    collisionHeight: o,
                    offset: [d[0] + c[0], d[1] + c[1]],
                    my: u.my,
                    at: u.at,
                    within: v,
                    elem: a
                })
            }), u.using && (t = function(t) {
                var e = g.left - l.left,
                    i = e + p - r,
                    s = g.top - l.top,
                    n = s + f - h,
                    o = {
                        target: {
                            element: _,
                            left: g.left,
                            top: g.top,
                            width: p,
                            height: f
                        },
                        element: {
                            element: a,
                            left: l.left,
                            top: l.top,
                            width: r,
                            height: h
                        },
                        horizontal: i < 0 ? "left" : 0 < e ? "right" : "center",
                        vertical: n < 0 ? "top" : 0 < s ? "bottom" : "middle"
                    };
                p < r && C(e + i) < p && (o.horizontal = "center"), f < h && C(s + n) < f && (o.vertical = "middle"), x(C(e), C(i)) > x(C(s), C(n)) ? o.important = "horizontal" : o.important = "vertical", u.using.call(this, t, o)
            }), a.offset(k.extend(l, {
                using: t
            }))
        })
    }, k.ui.position = {
        fit: {
            left: function(t, e) {
                var i = e.within,
                    s = i.isWindow ? i.scrollLeft : i.offset.left,
                    n = i.width,
                    o = t.left - e.collisionPosition.marginLeft,
                    a = s - o,
                    r = o + e.collisionWidth - n - s;
                e.collisionWidth > n ? 0 < a && r <= 0 ? (i = t.left + a + e.collisionWidth - n - s, t.left += a - i) : t.left = !(0 < r && a <= 0) && r < a ? s + n - e.collisionWidth : s : 0 < a ? t.left += a : 0 < r ? t.left -= r : t.left = x(t.left - o, t.left)
            },
            top: function(t, e) {
                var i = e.within,
                    s = i.isWindow ? i.scrollTop : i.offset.top,
                    n = e.within.height,
                    o = t.top - e.collisionPosition.marginTop,
                    a = s - o,
                    r = o + e.collisionHeight - n - s;
                e.collisionHeight > n ? 0 < a && r <= 0 ? (i = t.top + a + e.collisionHeight - n - s, t.top += a - i) : t.top = !(0 < r && a <= 0) && r < a ? s + n - e.collisionHeight : s : 0 < a ? t.top += a : 0 < r ? t.top -= r : t.top = x(t.top - o, t.top)
            }
        },
        flip: {
            left: function(t, e) {
                var i = e.within,
                    s = i.offset.left + i.scrollLeft,
                    n = i.width,
                    o = i.isWindow ? i.scrollLeft : i.offset.left,
                    a = t.left - e.collisionPosition.marginLeft,
                    r = a - o,
                    h = a + e.collisionWidth - n - o,
                    l = "left" === e.my[0] ? -e.elemWidth : "right" === e.my[0] ? e.elemWidth : 0,
                    i = "left" === e.at[0] ? e.targetWidth : "right" === e.at[0] ? -e.targetWidth : 0,
                    a = -2 * e.offset[0];
                r < 0 ? ((s = t.left + l + i + a + e.collisionWidth - n - s) < 0 || s < C(r)) && (t.left += l + i + a) : 0 < h && (0 < (o = t.left - e.collisionPosition.marginLeft + l + i + a - o) || C(o) < h) && (t.left += l + i + a)
            },
            top: function(t, e) {
                var i = e.within,
                    s = i.offset.top + i.scrollTop,
                    n = i.height,
                    o = i.isWindow ? i.scrollTop : i.offset.top,
                    a = t.top - e.collisionPosition.marginTop,
                    r = a - o,
                    h = a + e.collisionHeight - n - o,
                    l = "top" === e.my[1] ? -e.elemHeight : "bottom" === e.my[1] ? e.elemHeight : 0,
                    i = "top" === e.at[1] ? e.targetHeight : "bottom" === e.at[1] ? -e.targetHeight : 0,
                    a = -2 * e.offset[1];
                r < 0 ? ((s = t.top + l + i + a + e.collisionHeight - n - s) < 0 || s < C(r)) && (t.top += l + i + a) : 0 < h && (0 < (o = t.top - e.collisionPosition.marginTop + l + i + a - o) || C(o) < h) && (t.top += l + i + a)
            }
        },
        flipfit: {
            left: function() {
                k.ui.position.flip.left.apply(this, arguments), k.ui.position.fit.left.apply(this, arguments)
            },
            top: function() {
                k.ui.position.flip.top.apply(this, arguments), k.ui.position.fit.top.apply(this, arguments)
            }
        }
    };
    var t;
    k.ui.position, k.extend(k.expr[":"], {
        data: k.expr.createPseudo ? k.expr.createPseudo(function(e) {
            return function(t) {
                return !!k.data(t, e)
            }
        }) : function(t, e, i) {
            return !!k.data(t, i[3])
        }
    }), k.fn.extend({
        disableSelection: (t = "onselectstart" in document.createElement("div") ? "selectstart" : "mousedown", function() {
            return this.on(t + ".ui-disableSelection", function(t) {
                t.preventDefault()
            })
        }),
        enableSelection: function() {
            return this.off(".ui-disableSelection")
        }
    });
    k.ui.focusable = function(t, e) {
        var i, s, n, o, a = t.nodeName.toLowerCase();
        return "area" === a ? (s = (i = t.parentNode).name, !(!t.href || !s || "map" !== i.nodeName.toLowerCase()) && (0 < (s = k("img[usemap='#" + s + "']")).length && s.is(":visible"))) : (/^(input|select|textarea|button|object)$/.test(a) ? (n = !t.disabled) && (o = k(t).closest("fieldset")[0]) && (n = !o.disabled) : n = "a" === a && t.href || e, n && k(t).is(":visible") && function(t) {
            var e = t.css("visibility");
            for (;
                "inherit" === e;) t = t.parent(), e = t.css("visibility");
            return "hidden" !== e
        }(k(t)))
    }, k.extend(k.expr[":"], {
        focusable: function(t) {
            return k.ui.focusable(t, null != k.attr(t, "tabindex"))
        }
    });
    k.ui.focusable, k.fn.form = function() {
        return "string" == typeof this[0].form ? this.closest("form") : k(this[0].form)
    }, k.ui.formResetMixin = {
        _formResetHandler: function() {
            var e = k(this);
            setTimeout(function() {
                var t = e.data("ui-form-reset-instances");
                k.each(t, function() {
                    this.refresh()
                })
            })
        },
        _bindFormResetHandler: function() {
            var t;
            this.form = this.element.form(), this.form.length && ((t = this.form.data("ui-form-reset-instances") || []).length || this.form.on("reset.ui-form-reset", this._formResetHandler), t.push(this), this.form.data("ui-form-reset-instances", t))
        },
        _unbindFormResetHandler: function() {
            var t;
            this.form.length && ((t = this.form.data("ui-form-reset-instances")).splice(k.inArray(this, t), 1), t.length ? this.form.data("ui-form-reset-instances", t) : this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset"))
        }
    };
    "1.7" === k.fn.jquery.substring(0, 3) && (k.each(["Width", "Height"], function(t, i) {
        var n = "Width" === i ? ["Left", "Right"] : ["Top", "Bottom"],
            s = i.toLowerCase(),
            o = {
                innerWidth: k.fn.innerWidth,
                innerHeight: k.fn.innerHeight,
                outerWidth: k.fn.outerWidth,
                outerHeight: k.fn.outerHeight
            };

        function a(t, e, i, s) {
            return k.each(n, function() {
                e -= parseFloat(k.css(t, "padding" + this)) || 0, i && (e -= parseFloat(k.css(t, "border" + this + "Width")) || 0), s && (e -= parseFloat(k.css(t, "margin" + this)) || 0)
            }), e
        }
        k.fn["inner" + i] = function(t) {
            return void 0 === t ? o["inner" + i].call(this) : this.each(function() {
                k(this).css(s, a(this, t) + "px")
            })
        }, k.fn["outer" + i] = function(t, e) {
            return "number" != typeof t ? o["outer" + i].call(this, t) : this.each(function() {
                k(this).css(s, a(this, t, !0, e) + "px")
            })
        }
    }), k.fn.addBack = function(t) {
        return this.add(null == t ? this.prevObject : this.prevObject.filter(t))
    });
    k.ui.keyCode = {
        BACKSPACE: 8,
        COMMA: 188,
        DELETE: 46,
        DOWN: 40,
        END: 35,
        ENTER: 13,
        ESCAPE: 27,
        HOME: 36,
        LEFT: 37,
        PAGE_DOWN: 34,
        PAGE_UP: 33,
        PERIOD: 190,
        RIGHT: 39,
        SPACE: 32,
        TAB: 9,
        UP: 38
    }, k.ui.escapeSelector = (e = /([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g, function(t) {
        return t.replace(e, "\\$1")
    }), k.fn.labels = function() {
        var t, e, i;
        return this[0].labels && this[0].labels.length ? this.pushStack(this[0].labels) : (e = this.eq(0).parents("label"), (t = this.attr("id")) && (i = (i = this.eq(0).parents().last()).add((i.length ? i : this).siblings()), t = "label[for='" + k.ui.escapeSelector(t) + "']", e = e.add(i.find(t).addBack(t))), this.pushStack(e))
    }, k.fn.scrollParent = function(t) {
        var e = this.css("position"),
            i = "absolute" === e,
            s = t ? /(auto|scroll|hidden)/ : /(auto|scroll)/,
            t = this.parents().filter(function() {
                var t = k(this);
                return (!i || "static" !== t.css("position")) && s.test(t.css("overflow") + t.css("overflow-y") + t.css("overflow-x"))
            }).eq(0);
        return "fixed" !== e && t.length ? t : k(this[0].ownerDocument || document)
    }, k.extend(k.expr[":"], {
        tabbable: function(t) {
            var e = k.attr(t, "tabindex"),
                i = null != e;
            return (!i || 0 <= e) && k.ui.focusable(t, i)
        }
    }), k.fn.extend({
        uniqueId: (u = 0, function() {
            return this.each(function() {
                this.id || (this.id = "ui-id-" + ++u)
            })
        }),
        removeUniqueId: function() {
            return this.each(function() {
                /^ui-id-\d+$/.test(this.id) && k(this).removeAttr("id")
            })
        }
    }), k.ui.ie = !!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());
    var e, u, d = !1;
    k(document).on("mouseup", function() {
        d = !1
    });
    k.widget("ui.mouse", {
        version: "1.12.1",
        options: {
            cancel: "input, textarea, button, select, option",
            distance: 1,
            delay: 0
        },
        _mouseInit: function() {
            var e = this;
            this.element.on("mousedown." + this.widgetName, function(t) {
                return e._mouseDown(t)
            }).on("click." + this.widgetName, function(t) {
                if (!0 === k.data(t.target, e.widgetName + ".preventClickEvent")) return k.removeData(t.target, e.widgetName + ".preventClickEvent"), t.stopImmediatePropagation(), !1
            }), this.started = !1
        },
        _mouseDestroy: function() {
            this.element.off("." + this.widgetName), this._mouseMoveDelegate && this.document.off("mousemove." + this.widgetName, this._mouseMoveDelegate).off("mouseup." + this.widgetName, this._mouseUpDelegate)
        },
        _mouseDown: function(t) {
            if (!d) {
                this._mouseMoved = !1, this._mouseStarted && this._mouseUp(t), this._mouseDownEvent = t;
                var e = this,
                    i = 1 === t.which,
                    s = !("string" != typeof this.options.cancel || !t.target.nodeName) && k(t.target).closest(this.options.cancel).length;
                return i && !s && this._mouseCapture(t) ? (this.mouseDelayMet = !this.options.delay, this.mouseDelayMet || (this._mouseDelayTimer = setTimeout(function() {
                    e.mouseDelayMet = !0
                }, this.options.delay)), this._mouseDistanceMet(t) && this._mouseDelayMet(t) && (this._mouseStarted = !1 !== this._mouseStart(t), !this._mouseStarted) ? (t.preventDefault(), !0) : (!0 === k.data(t.target, this.widgetName + ".preventClickEvent") && k.removeData(t.target, this.widgetName + ".preventClickEvent"), this._mouseMoveDelegate = function(t) {
                    return e._mouseMove(t)
                }, this._mouseUpDelegate = function(t) {
                    return e._mouseUp(t)
                }, this.document.on("mousemove." + this.widgetName, this._mouseMoveDelegate).on("mouseup." + this.widgetName, this._mouseUpDelegate), t.preventDefault(), d = !0)) : !0
            }
        },
        _mouseMove: function(t) {
            if (this._mouseMoved) {
                if (k.ui.ie && (!document.documentMode || document.documentMode < 9) && !t.button) return this._mouseUp(t);
                if (!t.which)
                    if (t.originalEvent.altKey || t.originalEvent.ctrlKey || t.originalEvent.metaKey || t.originalEvent.shiftKey) this.ignoreMissingWhich = !0;
                    else if (!this.ignoreMissingWhich) return this._mouseUp(t)
            }
            return (t.which || t.button) && (this._mouseMoved = !0), this._mouseStarted ? (this._mouseDrag(t), t.preventDefault()) : (this._mouseDistanceMet(t) && this._mouseDelayMet(t) && (this._mouseStarted = !1 !== this._mouseStart(this._mouseDownEvent, t), this._mouseStarted ? this._mouseDrag(t) : this._mouseUp(t)), !this._mouseStarted)
        },
        _mouseUp: function(t) {
            this.document.off("mousemove." + this.widgetName, this._mouseMoveDelegate).off("mouseup." + this.widgetName, this._mouseUpDelegate), this._mouseStarted && (this._mouseStarted = !1, t.target === this._mouseDownEvent.target && k.data(t.target, this.widgetName + ".preventClickEvent", !0), this._mouseStop(t)), this._mouseDelayTimer && (clearTimeout(this._mouseDelayTimer), delete this._mouseDelayTimer), this.ignoreMissingWhich = !1, d = !1, t.preventDefault()
        },
        _mouseDistanceMet: function(t) {
            return Math.max(Math.abs(this._mouseDownEvent.pageX - t.pageX), Math.abs(this._mouseDownEvent.pageY - t.pageY)) >= this.options.distance
        },
        _mouseDelayMet: function() {
            return this.mouseDelayMet
        },
        _mouseStart: function() {},
        _mouseDrag: function() {},
        _mouseStop: function() {},
        _mouseCapture: function() {
            return !0
        }
    }), k.ui.plugin = {
        add: function(t, e, i) {
            var s, n = k.ui[t].prototype;
            for (s in i) n.plugins[s] = n.plugins[s] || [], n.plugins[s].push([e, i[s]])
        },
        call: function(t, e, i, s) {
            var n, o = t.plugins[e];
            if (o && (s || t.element[0].parentNode && 11 !== t.element[0].parentNode.nodeType))
                for (n = 0; n < o.length; n++) t.options[o[n][0]] && o[n][1].apply(t.element, i)
        }
    }, k.ui.safeActiveElement = function(e) {
        var i;
        try {
            i = e.activeElement
        } catch (t) {
            i = e.body
        }
        return i = !(i = i || e.body).nodeName ? e.body : i
    }, k.ui.safeBlur = function(t) {
        t && "body" !== t.nodeName.toLowerCase() && k(t).trigger("blur")
    };
    k.widget("ui.draggable", k.ui.mouse, {
        version: "1.12.1",
        widgetEventPrefix: "drag",
        options: {
            addClasses: !0,
            appendTo: "parent",
            axis: !1,
            connectToSortable: !1,
            containment: !1,
            cursor: "auto",
            cursorAt: !1,
            grid: !1,
            handle: !1,
            helper: "original",
            iframeFix: !1,
            opacity: !1,
            refreshPositions: !1,
            revert: !1,
            revertDuration: 500,
            scope: "default",
            scroll: !0,
            scrollSensitivity: 20,
            scrollSpeed: 20,
            snap: !1,
            snapMode: "both",
            snapTolerance: 20,
            stack: !1,
            zIndex: !1,
            drag: null,
            start: null,
            stop: null
        },
        _create: function() {
            "original" === this.options.helper && this._setPositionRelative(), this.options.addClasses && this._addClass("ui-draggable"), this._setHandleClassName(), this._mouseInit()
        },
        _setOption: function(t, e) {
            this._super(t, e), "handle" === t && (this._removeHandleClassName(), this._setHandleClassName())
        },
        _destroy: function() {
            (this.helper || this.element).is(".ui-draggable-dragging") ? this.destroyOnClear = !0 : (this._removeHandleClassName(), this._mouseDestroy())
        },
        _mouseCapture: function(t) {
            var e = this.options;
            return !(this.helper || e.disabled || 0 < k(t.target).closest(".ui-resizable-handle").length) && (this.handle = this._getHandle(t), !!this.handle && (this._blurActiveElement(t), this._blockFrames(!0 === e.iframeFix ? "iframe" : e.iframeFix), !0))
        },
        _blockFrames: function(t) {
            this.iframeBlocks = this.document.find(t).map(function() {
                var t = k(this);
                return k("<div>").css("position", "absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]
            })
        },
        _unblockFrames: function() {
            this.iframeBlocks && (this.iframeBlocks.remove(), delete this.iframeBlocks)
        },
        _blurActiveElement: function(t) {
            var e = k.ui.safeActiveElement(this.document[0]);
            k(t.target).closest(e).length || k.ui.safeBlur(e)
        },
        _mouseStart: function(t) {
            var e = this.options;
            return this.helper = this._createHelper(t), this._addClass(this.helper, "ui-draggable-dragging"), this._cacheHelperProportions(), k.ui.ddmanager && (k.ui.ddmanager.current = this), this._cacheMargins(), this.cssPosition = this.helper.css("position"), this.scrollParent = this.helper.scrollParent(!0), this.offsetParent = this.helper.offsetParent(), this.hasFixedAncestor = 0 < this.helper.parents().filter(function() {
                return "fixed" === k(this).css("position")
            }).length, this.positionAbs = this.element.offset(), this._refreshOffsets(t), this.originalPosition = this.position = this._generatePosition(t, !1), this.originalPageX = t.pageX, this.originalPageY = t.pageY, e.cursorAt && this._adjustOffsetFromHelper(e.cursorAt), this._setContainment(), !1 === this._trigger("start", t) ? (this._clear(), !1) : (this._cacheHelperProportions(), k.ui.ddmanager && !e.dropBehaviour && k.ui.ddmanager.prepareOffsets(this, t), this._mouseDrag(t, !0), k.ui.ddmanager && k.ui.ddmanager.dragStart(this, t), !0)
        },
        _refreshOffsets: function(t) {
            this.offset = {
                top: this.positionAbs.top - this.margins.top,
                left: this.positionAbs.left - this.margins.left,
                scroll: !1,
                parent: this._getParentOffset(),
                relative: this._getRelativeOffset()
            }, this.offset.click = {
                left: t.pageX - this.offset.left,
                top: t.pageY - this.offset.top
            }
        },
        _mouseDrag: function(t, e) {
            if (this.hasFixedAncestor && (this.offset.parent = this._getParentOffset()), this.position = this._generatePosition(t, !0), this.positionAbs = this._convertPositionTo("absolute"), !e) {
                e = this._uiHash();
                if (!1 === this._trigger("drag", t, e)) return this._mouseUp(new k.Event("mouseup", t)), !1;
                this.position = e.position
            }
            return this.helper[0].style.left = this.position.left + "px", this.helper[0].style.top = this.position.top + "px", k.ui.ddmanager && k.ui.ddmanager.drag(this, t), !1
        },
        _mouseStop: function(t) {
            var e = this,
                i = !1;
            return k.ui.ddmanager && !this.options.dropBehaviour && (i = k.ui.ddmanager.drop(this, t)), this.dropped && (i = this.dropped, this.dropped = !1), "invalid" === this.options.revert && !i || "valid" === this.options.revert && i || !0 === this.options.revert || k.isFunction(this.options.revert) && this.options.revert.call(this.element, i) ? k(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() {
                !1 !== e._trigger("stop", t) && e._clear()
            }) : !1 !== this._trigger("stop", t) && this._clear(), !1
        },
        _mouseUp: function(t) {
            return this._unblockFrames(), k.ui.ddmanager && k.ui.ddmanager.dragStop(this, t), this.handleElement.is(t.target) && this.element.trigger("focus"), k.ui.mouse.prototype._mouseUp.call(this, t)
        },
        cancel: function() {
            return this.helper.is(".ui-draggable-dragging") ? this._mouseUp(new k.Event("mouseup", {
                target: this.element[0]
            })) : this._clear(), this
        },
        _getHandle: function(t) {
            return !this.options.handle || !!k(t.target).closest(this.element.find(this.options.handle)).length
        },
        _setHandleClassName: function() {
            this.handleElement = this.options.handle ? this.element.find(this.options.handle) : this.element, this._addClass(this.handleElement, "ui-draggable-handle")
        },
        _removeHandleClassName: function() {
            this._removeClass(this.handleElement, "ui-draggable-handle")
        },
        _createHelper: function(t) {
            var e = this.options,
                i = k.isFunction(e.helper),
                t = i ? k(e.helper.apply(this.element[0], [t])) : "clone" === e.helper ? this.element.clone().removeAttr("id") : this.element;
            return t.parents("body").length || t.appendTo("parent" === e.appendTo ? this.element[0].parentNode : e.appendTo), i && t[0] === this.element[0] && this._setPositionRelative(), t[0] === this.element[0] || /(fixed|absolute)/.test(t.css("position")) || t.css("position", "absolute"), t
        },
        _setPositionRelative: function() {
            /^(?:r|a|f)/.test(this.element.css("position")) || (this.element[0].style.position = "relative")
        },
        _adjustOffsetFromHelper: function(t) {
            "string" == typeof t && (t = t.split(" ")), "left" in (t = k.isArray(t) ? {
                left: +t[0],
                top: +t[1] || 0
            } : t) && (this.offset.click.left = t.left + this.margins.left), "right" in t && (this.offset.click.left = this.helperProportions.width - t.right + this.margins.left), "top" in t && (this.offset.click.top = t.top + this.margins.top), "bottom" in t && (this.offset.click.top = this.helperProportions.height - t.bottom + this.margins.top)
        },
        _isRootNode: function(t) {
            return /(html|body)/i.test(t.tagName) || t === this.document[0]
        },
        _getParentOffset: function() {
            var t = this.offsetParent.offset(),
                e = this.document[0];
            return "absolute" === this.cssPosition && this.scrollParent[0] !== e && k.contains(this.scrollParent[0], this.offsetParent[0]) && (t.left += this.scrollParent.scrollLeft(), t.top += this.scrollParent.scrollTop()), {
                top: (t = this._isRootNode(this.offsetParent[0]) ? {
                    top: 0,
                    left: 0
                } : t).top + (parseInt(this.offsetParent.css("borderTopWidth"), 10) || 0),
                left: t.left + (parseInt(this.offsetParent.css("borderLeftWidth"), 10) || 0)
            }
        },
        _getRelativeOffset: function() {
            if ("relative" !== this.cssPosition) return {
                top: 0,
                left: 0
            };
            var t = this.element.position(),
                e = this._isRootNode(this.scrollParent[0]);
            return {
                top: t.top - (parseInt(this.helper.css("top"), 10) || 0) + (e ? 0 : this.scrollParent.scrollTop()),
                left: t.left - (parseInt(this.helper.css("left"), 10) || 0) + (e ? 0 : this.scrollParent.scrollLeft())
            }
        },
        _cacheMargins: function() {
            this.margins = {
                left: parseInt(this.element.css("marginLeft"), 10) || 0,
                top: parseInt(this.element.css("marginTop"), 10) || 0,
                right: parseInt(this.element.css("marginRight"), 10) || 0,
                bottom: parseInt(this.element.css("marginBottom"), 10) || 0
            }
        },
        _cacheHelperProportions: function() {
            this.helperProportions = {
                width: this.helper.outerWidth(),
                height: this.helper.outerHeight()
            }
        },
        _setContainment: function() {
            var t, e, i, s = this.options,
                n = this.document[0];
            this.relativeContainer = null, s.containment ? "window" !== s.containment ? "document" !== s.containment ? s.containment.constructor !== Array ? ("parent" === s.containment && (s.containment = this.helper[0].parentNode), (i = (e = k(s.containment))[0]) && (t = /(scroll|auto)/.test(e.css("overflow")), this.containment = [(parseInt(e.css("borderLeftWidth"), 10) || 0) + (parseInt(e.css("paddingLeft"), 10) || 0), (parseInt(e.css("borderTopWidth"), 10) || 0) + (parseInt(e.css("paddingTop"), 10) || 0), (t ? Math.max(i.scrollWidth, i.offsetWidth) : i.offsetWidth) - (parseInt(e.css("borderRightWidth"), 10) || 0) - (parseInt(e.css("paddingRight"), 10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right, (t ? Math.max(i.scrollHeight, i.offsetHeight) : i.offsetHeight) - (parseInt(e.css("borderBottomWidth"), 10) || 0) - (parseInt(e.css("paddingBottom"), 10) || 0) - this.helperProportions.height - this.margins.top - this.margins.bottom], this.relativeContainer = e)) : this.containment = s.containment : this.containment = [0, 0, k(n).width() - this.helperProportions.width - this.margins.left, (k(n).height() || n.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top] : this.containment = [k(window).scrollLeft() - this.offset.relative.left - this.offset.parent.left, k(window).scrollTop() - this.offset.relative.top - this.offset.parent.top, k(window).scrollLeft() + k(window).width() - this.helperProportions.width - this.margins.left, k(window).scrollTop() + (k(window).height() || n.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top] : this.containment = null
        },
        _convertPositionTo: function(t, e) {
            e = e || this.position;
            var i = "absolute" === t ? 1 : -1,
                t = this._isRootNode(this.scrollParent[0]);
            return {
                top: e.top + this.offset.relative.top * i + this.offset.parent.top * i - ("fixed" === this.cssPosition ? -this.offset.scroll.top : t ? 0 : this.offset.scroll.top) * i,
                left: e.left + this.offset.relative.left * i + this.offset.parent.left * i - ("fixed" === this.cssPosition ? -this.offset.scroll.left : t ? 0 : this.offset.scroll.left) * i
            }
        },
        _generatePosition: function(t, e) {
            var i, s = this.options,
                n = this._isRootNode(this.scrollParent[0]),
                o = t.pageX,
                a = t.pageY;
            return n && this.offset.scroll || (this.offset.scroll = {
                top: this.scrollParent.scrollTop(),
                left: this.scrollParent.scrollLeft()
            }), e && (this.containment && (i = this.relativeContainer ? (i = this.relativeContainer.offset(), [this.containment[0] + i.left, this.containment[1] + i.top, this.containment[2] + i.left, this.containment[3] + i.top]) : this.containment, t.pageX - this.offset.click.left < i[0] && (o = i[0] + this.offset.click.left), t.pageY - this.offset.click.top < i[1] && (a = i[1] + this.offset.click.top), t.pageX - this.offset.click.left > i[2] && (o = i[2] + this.offset.click.left), t.pageY - this.offset.click.top > i[3] && (a = i[3] + this.offset.click.top)), s.grid && (t = s.grid[1] ? this.originalPageY + Math.round((a - this.originalPageY) / s.grid[1]) * s.grid[1] : this.originalPageY, a = !i || t - this.offset.click.top >= i[1] || t - this.offset.click.top > i[3] ? t : t - this.offset.click.top >= i[1] ? t - s.grid[1] : t + s.grid[1], t = s.grid[0] ? this.originalPageX + Math.round((o - this.originalPageX) / s.grid[0]) * s.grid[0] : this.originalPageX, o = !i || t - this.offset.click.left >= i[0] || t - this.offset.click.left > i[2] ? t : t - this.offset.click.left >= i[0] ? t - s.grid[0] : t + s.grid[0]), "y" === s.axis && (o = this.originalPageX), "x" === s.axis && (a = this.originalPageY)), {
                top: a - this.offset.click.top - this.offset.relative.top - this.offset.parent.top + ("fixed" === this.cssPosition ? -this.offset.scroll.top : n ? 0 : this.offset.scroll.top),
                left: o - this.offset.click.left - this.offset.relative.left - this.offset.parent.left + ("fixed" === this.cssPosition ? -this.offset.scroll.left : n ? 0 : this.offset.scroll.left)
            }
        },
        _clear: function() {
            this._removeClass(this.helper, "ui-draggable-dragging"), this.helper[0] === this.element[0] || this.cancelHelperRemoval || this.helper.remove(), this.helper = null, this.cancelHelperRemoval = !1, this.destroyOnClear && this.destroy()
        },
        _trigger: function(t, e, i) {
            return i = i || this._uiHash(), k.ui.plugin.call(this, t, [e, i, this], !0), /^(drag|start|stop)/.test(t) && (this.positionAbs = this._convertPositionTo("absolute"), i.offset = this.positionAbs), k.Widget.prototype._trigger.call(this, t, e, i)
        },
        plugins: {},
        _uiHash: function() {
            return {
                helper: this.helper,
                position: this.position,
                originalPosition: this.originalPosition,
                offset: this.positionAbs
            }
        }
    }), k.ui.plugin.add("draggable", "connectToSortable", {
        start: function(e, t, i) {
            var s = k.extend({}, t, {
                item: i.element
            });
            i.sortables = [], k(i.options.connectToSortable).each(function() {
                var t = k(this).sortable("instance");
                t && !t.options.disabled && (i.sortables.push(t), t.refreshPositions(), t._trigger("activate", e, s))
            })
        },
        stop: function(e, t, i) {
            var s = k.extend({}, t, {
                item: i.element
            });
            i.cancelHelperRemoval = !1, k.each(i.sortables, function() {
                var t = this;
                t.isOver ? (t.isOver = 0, i.cancelHelperRemoval = !0, t.cancelHelperRemoval = !1, t._storedCSS = {
                    position: t.placeholder.css("position"),
                    top: t.placeholder.css("top"),
                    left: t.placeholder.css("left")
                }, t._mouseStop(e), t.options.helper = t.options._helper) : (t.cancelHelperRemoval = !0, t._trigger("deactivate", e, s))
            })
        },
        drag: function(i, s, n) {
            k.each(n.sortables, function() {
                var t = !1,
                    e = this;
                e.positionAbs = n.positionAbs, e.helperProportions = n.helperProportions, e.offset.click = n.offset.click, e._intersectsWith(e.containerCache) && (t = !0, k.each(n.sortables, function() {
                    return this.positionAbs = n.positionAbs, this.helperProportions = n.helperProportions, this.offset.click = n.offset.click, t = this !== e && this._intersectsWith(this.containerCache) && k.contains(e.element[0], this.element[0]) ? !1 : t
                })), t ? (e.isOver || (e.isOver = 1, n._parent = s.helper.parent(), e.currentItem = s.helper.appendTo(e.element).data("ui-sortable-item", !0), e.options._helper = e.options.helper, e.options.helper = function() {
                    return s.helper[0]
                }, i.target = e.currentItem[0], e._mouseCapture(i, !0), e._mouseStart(i, !0, !0), e.offset.click.top = n.offset.click.top, e.offset.click.left = n.offset.click.left, e.offset.parent.left -= n.offset.parent.left - e.offset.parent.left, e.offset.parent.top -= n.offset.parent.top - e.offset.parent.top, n._trigger("toSortable", i), n.dropped = e.element, k.each(n.sortables, function() {
                    this.refreshPositions()
                }), n.currentItem = n.element, e.fromOutside = n), e.currentItem && (e._mouseDrag(i), s.position = e.position)) : e.isOver && (e.isOver = 0, e.cancelHelperRemoval = !0, e.options._revert = e.options.revert, e.options.revert = !1, e._trigger("out", i, e._uiHash(e)), e._mouseStop(i, !0), e.options.revert = e.options._revert, e.options.helper = e.options._helper, e.placeholder && e.placeholder.remove(), s.helper.appendTo(n._parent), n._refreshOffsets(i), s.position = n._generatePosition(i, !0), n._trigger("fromSortable", i), n.dropped = !1, k.each(n.sortables, function() {
                    this.refreshPositions()
                }))
            })
        }
    }), k.ui.plugin.add("draggable", "cursor", {
        start: function(t, e, i) {
            var s = k("body"),
                i = i.options;
            s.css("cursor") && (i._cursor = s.css("cursor")), s.css("cursor", i.cursor)
        },
        stop: function(t, e, i) {
            i = i.options;
            i._cursor && k("body").css("cursor", i._cursor)
        }
    }), k.ui.plugin.add("draggable", "opacity", {
        start: function(t, e, i) {
            e = k(e.helper), i = i.options;
            e.css("opacity") && (i._opacity = e.css("opacity")), e.css("opacity", i.opacity)
        },
        stop: function(t, e, i) {
            i = i.options;
            i._opacity && k(e.helper).css("opacity", i._opacity)
        }
    }), k.ui.plugin.add("draggable", "scroll", {
        start: function(t, e, i) {
            i.scrollParentNotHidden || (i.scrollParentNotHidden = i.helper.scrollParent(!1)), i.scrollParentNotHidden[0] !== i.document[0] && "HTML" !== i.scrollParentNotHidden[0].tagName && (i.overflowOffset = i.scrollParentNotHidden.offset())
        },
        drag: function(t, e, i) {
            var s = i.options,
                n = !1,
                o = i.scrollParentNotHidden[0],
                a = i.document[0];
            o !== a && "HTML" !== o.tagName ? (s.axis && "x" === s.axis || (i.overflowOffset.top + o.offsetHeight - t.pageY < s.scrollSensitivity ? o.scrollTop = n = o.scrollTop + s.scrollSpeed : t.pageY - i.overflowOffset.top < s.scrollSensitivity && (o.scrollTop = n = o.scrollTop - s.scrollSpeed)), s.axis && "y" === s.axis || (i.overflowOffset.left + o.offsetWidth - t.pageX < s.scrollSensitivity ? o.scrollLeft = n = o.scrollLeft + s.scrollSpeed : t.pageX - i.overflowOffset.left < s.scrollSensitivity && (o.scrollLeft = n = o.scrollLeft - s.scrollSpeed))) : (s.axis && "x" === s.axis || (t.pageY - k(a).scrollTop() < s.scrollSensitivity ? n = k(a).scrollTop(k(a).scrollTop() - s.scrollSpeed) : k(window).height() - (t.pageY - k(a).scrollTop()) < s.scrollSensitivity && (n = k(a).scrollTop(k(a).scrollTop() + s.scrollSpeed))), s.axis && "y" === s.axis || (t.pageX - k(a).scrollLeft() < s.scrollSensitivity ? n = k(a).scrollLeft(k(a).scrollLeft() - s.scrollSpeed) : k(window).width() - (t.pageX - k(a).scrollLeft()) < s.scrollSensitivity && (n = k(a).scrollLeft(k(a).scrollLeft() + s.scrollSpeed)))), !1 !== n && k.ui.ddmanager && !s.dropBehaviour && k.ui.ddmanager.prepareOffsets(i, t)
        }
    }), k.ui.plugin.add("draggable", "snap", {
        start: function(t, e, i) {
            var s = i.options;
            i.snapElements = [], k(s.snap.constructor !== String ? s.snap.items || ":data(ui-draggable)" : s.snap).each(function() {
                var t = k(this),
                    e = t.offset();
                this !== i.element[0] && i.snapElements.push({
                    item: this,
                    width: t.outerWidth(),
                    height: t.outerHeight(),
                    top: e.top,
                    left: e.left
                })
            })
        },
        drag: function(t, e, i) {
            for (var s, n, o, a, r, h, l, c, u, d = i.options, p = d.snapTolerance, f = e.offset.left, g = f + i.helperProportions.width, m = e.offset.top, _ = m + i.helperProportions.height, v = i.snapElements.length - 1; 0 <= v; v--) h = (r = i.snapElements[v].left - i.margins.left) + i.snapElements[v].width, c = (l = i.snapElements[v].top - i.margins.top) + i.snapElements[v].height, g < r - p || h + p < f || _ < l - p || c + p < m || !k.contains(i.snapElements[v].item.ownerDocument, i.snapElements[v].item) ? (i.snapElements[v].snapping && i.options.snap.release && i.options.snap.release.call(i.element, t, k.extend(i._uiHash(), {
                snapItem: i.snapElements[v].item
            })), i.snapElements[v].snapping = !1) : ("inner" !== d.snapMode && (s = Math.abs(l - _) <= p, n = Math.abs(c - m) <= p, o = Math.abs(r - g) <= p, a = Math.abs(h - f) <= p, s && (e.position.top = i._convertPositionTo("relative", {
                top: l - i.helperProportions.height,
                left: 0
            }).top), n && (e.position.top = i._convertPositionTo("relative", {
                top: c,
                left: 0
            }).top), o && (e.position.left = i._convertPositionTo("relative", {
                top: 0,
                left: r - i.helperProportions.width
            }).left), a && (e.position.left = i._convertPositionTo("relative", {
                top: 0,
                left: h
            }).left)), u = s || n || o || a, "outer" !== d.snapMode && (s = Math.abs(l - m) <= p, n = Math.abs(c - _) <= p, o = Math.abs(r - f) <= p, a = Math.abs(h - g) <= p, s && (e.position.top = i._convertPositionTo("relative", {
                top: l,
                left: 0
            }).top), n && (e.position.top = i._convertPositionTo("relative", {
                top: c - i.helperProportions.height,
                left: 0
            }).top), o && (e.position.left = i._convertPositionTo("relative", {
                top: 0,
                left: r
            }).left), a && (e.position.left = i._convertPositionTo("relative", {
                top: 0,
                left: h - i.helperProportions.width
            }).left)), !i.snapElements[v].snapping && (s || n || o || a || u) && i.options.snap.snap && i.options.snap.snap.call(i.element, t, k.extend(i._uiHash(), {
                snapItem: i.snapElements[v].item
            })), i.snapElements[v].snapping = s || n || o || a || u)
        }
    }), k.ui.plugin.add("draggable", "stack", {
        start: function(t, e, i) {
            var s, i = i.options,
                i = k.makeArray(k(i.stack)).sort(function(t, e) {
                    return (parseInt(k(t).css("zIndex"), 10) || 0) - (parseInt(k(e).css("zIndex"), 10) || 0)
                });
            i.length && (s = parseInt(k(i[0]).css("zIndex"), 10) || 0, k(i).each(function(t) {
                k(this).css("zIndex", s + t)
            }), this.css("zIndex", s + i.length))
        }
    }), k.ui.plugin.add("draggable", "zIndex", {
        start: function(t, e, i) {
            e = k(e.helper), i = i.options;
            e.css("zIndex") && (i._zIndex = e.css("zIndex")), e.css("zIndex", i.zIndex)
        },
        stop: function(t, e, i) {
            i = i.options;
            i._zIndex && k(e.helper).css("zIndex", i._zIndex)
        }
    });
    k.ui.draggable;
    k.widget("ui.droppable", {
        version: "1.12.1",
        widgetEventPrefix: "drop",
        options: {
            accept: "*",
            addClasses: !0,
            greedy: !1,
            scope: "default",
            tolerance: "intersect",
            activate: null,
            deactivate: null,
            drop: null,
            out: null,
            over: null
        },
        _create: function() {
            var t, e = this.options,
                i = e.accept;
            this.isover = !1, this.isout = !0, this.accept = k.isFunction(i) ? i : function(t) {
                return t.is(i)
            }, this.proportions = function() {
                if (!arguments.length) return t = t || {
                    width: this.element[0].offsetWidth,
                    height: this.element[0].offsetHeight
                };
                t = arguments[0]
            }, this._addToManager(e.scope), e.addClasses && this._addClass("ui-droppable")
        },
        _addToManager: function(t) {
            k.ui.ddmanager.droppables[t] = k.ui.ddmanager.droppables[t] || [], k.ui.ddmanager.droppables[t].push(this)
        },
        _splice: function(t) {
            for (var e = 0; e < t.length; e++) t[e] === this && t.splice(e, 1)
        },
        _destroy: function() {
            var t = k.ui.ddmanager.droppables[this.options.scope];
            this._splice(t)
        },
        _setOption: function(t, e) {
            var i;
            "accept" === t ? this.accept = k.isFunction(e) ? e : function(t) {
                return t.is(e)
            } : "scope" === t && (i = k.ui.ddmanager.droppables[this.options.scope], this._splice(i), this._addToManager(e)), this._super(t, e)
        },
        _activate: function(t) {
            var e = k.ui.ddmanager.current;
            this._addActiveClass(), e && this._trigger("activate", t, this.ui(e))
        },
        _deactivate: function(t) {
            var e = k.ui.ddmanager.current;
            this._removeActiveClass(), e && this._trigger("deactivate", t, this.ui(e))
        },
        _over: function(t) {
            var e = k.ui.ddmanager.current;
            e && (e.currentItem || e.element)[0] !== this.element[0] && this.accept.call(this.element[0], e.currentItem || e.element) && (this._addHoverClass(), this._trigger("over", t, this.ui(e)))
        },
        _out: function(t) {
            var e = k.ui.ddmanager.current;
            e && (e.currentItem || e.element)[0] !== this.element[0] && this.accept.call(this.element[0], e.currentItem || e.element) && (this._removeHoverClass(), this._trigger("out", t, this.ui(e)))
        },
        _drop: function(e, t) {
            var i = t || k.ui.ddmanager.current,
                s = !1;
            return !(!i || (i.currentItem || i.element)[0] === this.element[0]) && (this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function() {
                var t = k(this).droppable("instance");
                if (t.options.greedy && !t.options.disabled && t.options.scope === i.options.scope && t.accept.call(t.element[0], i.currentItem || i.element) && p(i, k.extend(t, {
                        offset: t.element.offset()
                    }), t.options.tolerance, e)) return !(s = !0)
            }), !s && (!!this.accept.call(this.element[0], i.currentItem || i.element) && (this._removeActiveClass(), this._removeHoverClass(), this._trigger("drop", e, this.ui(i)), this.element)))
        },
        ui: function(t) {
            return {
                draggable: t.currentItem || t.element,
                helper: t.helper,
                position: t.position,
                offset: t.positionAbs
            }
        },
        _addHoverClass: function() {
            this._addClass("ui-droppable-hover")
        },
        _removeHoverClass: function() {
            this._removeClass("ui-droppable-hover")
        },
        _addActiveClass: function() {
            this._addClass("ui-droppable-active")
        },
        _removeActiveClass: function() {
            this._removeClass("ui-droppable-active")
        }
    });
    var p = k.ui.intersect = function(t, e, i, s) {
        if (!e.offset) return !1;
        var n = (t.positionAbs || t.position.absolute).left + t.margins.left,
            o = (t.positionAbs || t.position.absolute).top + t.margins.top,
            a = n + t.helperProportions.width,
            r = o + t.helperProportions.height,
            h = e.offset.left,
            l = e.offset.top,
            c = h + e.proportions().width,
            u = l + e.proportions().height;
        switch (i) {
            case "fit":
                return h <= n && a <= c && l <= o && r <= u;
            case "intersect":
                return h < n + t.helperProportions.width / 2 && a - t.helperProportions.width / 2 < c && l < o + t.helperProportions.height / 2 && r - t.helperProportions.height / 2 < u;
            case "pointer":
                return f(s.pageY, l, e.proportions().height) && f(s.pageX, h, e.proportions().width);
            case "touch":
                return (l <= o && o <= u || l <= r && r <= u || o < l && u < r) && (h <= n && n <= c || h <= a && a <= c || n < h && c < a);
            default:
                return !1
        }
    };

    function f(t, e, i) {
        return e <= t && t < e + i
    }!(k.ui.ddmanager = {
        current: null,
        droppables: {
            default: []
        },
        prepareOffsets: function(t, e) {
            var i, s, n = k.ui.ddmanager.droppables[t.options.scope] || [],
                o = e ? e.type : null,
                a = (t.currentItem || t.element).find(":data(ui-droppable)").addBack();
            t: for (i = 0; i < n.length; i++)
                if (!(n[i].options.disabled || t && !n[i].accept.call(n[i].element[0], t.currentItem || t.element))) {
                    for (s = 0; s < a.length; s++)
                        if (a[s] === n[i].element[0]) {
                            n[i].proportions().height = 0;
                            continue t
                        }
                    n[i].visible = "none" !== n[i].element.css("display"), n[i].visible && ("mousedown" === o && n[i]._activate.call(n[i], e), n[i].offset = n[i].element.offset(), n[i].proportions({
                        width: n[i].element[0].offsetWidth,
                        height: n[i].element[0].offsetHeight
                    }))
                }
        },
        drop: function(t, e) {
            var i = !1;
            return k.each((k.ui.ddmanager.droppables[t.options.scope] || []).slice(), function() {
                this.options && (!this.options.disabled && this.visible && p(t, this, this.options.tolerance, e) && (i = this._drop.call(this, e) || i), !this.options.disabled && this.visible && this.accept.call(this.element[0], t.currentItem || t.element) && (this.isout = !0, this.isover = !1, this._deactivate.call(this, e)))
            }), i
        },
        dragStart: function(t, e) {
            t.element.parentsUntil("body").on("scroll.droppable", function() {
                t.options.refreshPositions || k.ui.ddmanager.prepareOffsets(t, e)
            })
        },
        drag: function(n, o) {
            n.options.refreshPositions && k.ui.ddmanager.prepareOffsets(n, o), k.each(k.ui.ddmanager.droppables[n.options.scope] || [], function() {
                var t, e, i, s;
                this.options.disabled || this.greedyChild || !this.visible || (s = !(i = p(n, this, this.options.tolerance, o)) && this.isover ? "isout" : i && !this.isover ? "isover" : null) && (this.options.greedy && (e = this.options.scope, (i = this.element.parents(":data(ui-droppable)").filter(function() {
                    return k(this).droppable("instance").options.scope === e
                })).length && ((t = k(i[0]).droppable("instance")).greedyChild = "isover" === s)), t && "isover" === s && (t.isover = !1, t.isout = !0, t._out.call(t, o)), this[s] = !0, this["isout" === s ? "isover" : "isout"] = !1, this["isover" === s ? "_over" : "_out"].call(this, o), t && "isout" === s && (t.isout = !1, t.isover = !0, t._over.call(t, o)))
            })
        },
        dragStop: function(t, e) {
            t.element.parentsUntil("body").off("scroll.droppable"), t.options.refreshPositions || k.ui.ddmanager.prepareOffsets(t, e)
        }
    }) !== k.uiBackCompat && k.widget("ui.droppable", k.ui.droppable, {
        options: {
            hoverClass: !1,
            activeClass: !1
        },
        _addActiveClass: function() {
            this._super(), this.options.activeClass && this.element.addClass(this.options.activeClass)
        },
        _removeActiveClass: function() {
            this._super(), this.options.activeClass && this.element.removeClass(this.options.activeClass)
        },
        _addHoverClass: function() {
            this._super(), this.options.hoverClass && this.element.addClass(this.options.hoverClass)
        },
        _removeHoverClass: function() {
            this._super(), this.options.hoverClass && this.element.removeClass(this.options.hoverClass)
        }
    });
    k.ui.droppable;
    k.widget("ui.resizable", k.ui.mouse, {
        version: "1.12.1",
        widgetEventPrefix: "resize",
        options: {
            alsoResize: !1,
            animate: !1,
            animateDuration: "slow",
            animateEasing: "swing",
            aspectRatio: !1,
            autoHide: !1,
            classes: {
                "ui-resizable-se": "ui-icon ui-icon-gripsmall-diagonal-se"
            },
            containment: !1,
            ghost: !1,
            grid: !1,
            handles: "e,s,se",
            helper: !1,
            maxHeight: null,
            maxWidth: null,
            minHeight: 10,
            minWidth: 10,
            zIndex: 90,
            resize: null,
            start: null,
            stop: null
        },
        _num: function(t) {
            return parseFloat(t) || 0
        },
        _isNumber: function(t) {
            return !isNaN(parseFloat(t))
        },
        _hasScroll: function(t, e) {
            if ("hidden" === k(t).css("overflow")) return !1;
            var i = e && "left" === e ? "scrollLeft" : "scrollTop",
                e = !1;
            return 0 < t[i] || (t[i] = 1, e = 0 < t[i], t[i] = 0, e)
        },
        _create: function() {
            var t, e = this.options,
                i = this;
            this._addClass("ui-resizable"), k.extend(this, {
                _aspectRatio: !!e.aspectRatio,
                aspectRatio: e.aspectRatio,
                originalElement: this.element,
                _proportionallyResizeElements: [],
                _helper: e.helper || e.ghost || e.animate ? e.helper || "ui-resizable-helper" : null
            }), this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i) && (this.element.wrap(k("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({
                position: this.element.css("position"),
                width: this.element.outerWidth(),
                height: this.element.outerHeight(),
                top: this.element.css("top"),
                left: this.element.css("left")
            })), this.element = this.element.parent().data("ui-resizable", this.element.resizable("instance")), this.elementIsWrapper = !0, t = {
                marginTop: this.originalElement.css("marginTop"),
                marginRight: this.originalElement.css("marginRight"),
                marginBottom: this.originalElement.css("marginBottom"),
                marginLeft: this.originalElement.css("marginLeft")
            }, this.element.css(t), this.originalElement.css("margin", 0), this.originalResizeStyle = this.originalElement.css("resize"), this.originalElement.css("resize", "none"), this._proportionallyResizeElements.push(this.originalElement.css({
                position: "static",
                zoom: 1,
                display: "block"
            })), this.originalElement.css(t), this._proportionallyResize()), this._setupHandles(), e.autoHide && k(this.element).on("mouseenter", function() {
                e.disabled || (i._removeClass("ui-resizable-autohide"), i._handles.show())
            }).on("mouseleave", function() {
                e.disabled || i.resizing || (i._addClass("ui-resizable-autohide"), i._handles.hide())
            }), this._mouseInit()
        },
        _destroy: function() {
            this._mouseDestroy();

            function t(t) {
                k(t).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()
            }
            var e;
            return this.elementIsWrapper && (t(this.element), e = this.element, this.originalElement.css({
                position: e.css("position"),
                width: e.outerWidth(),
                height: e.outerHeight(),
                top: e.css("top"),
                left: e.css("left")
            }).insertAfter(e), e.remove()), this.originalElement.css("resize", this.originalResizeStyle), t(this.originalElement), this
        },
        _setOption: function(t, e) {
            this._super(t, e), "handles" === t && (this._removeHandles(), this._setupHandles())
        },
        _setupHandles: function() {
            var t, e, i, s, n, o = this.options,
                a = this;
            if (this.handles = o.handles || (k(".ui-resizable-handle", this.element).length ? {
                    n: ".ui-resizable-n",
                    e: ".ui-resizable-e",
                    s: ".ui-resizable-s",
                    w: ".ui-resizable-w",
                    se: ".ui-resizable-se",
                    sw: ".ui-resizable-sw",
                    ne: ".ui-resizable-ne",
                    nw: ".ui-resizable-nw"
                } : "e,s,se"), this._handles = k(), this.handles.constructor === String)
                for ("all" === this.handles && (this.handles = "n,e,s,w,se,sw,ne,nw"), i = this.handles.split(","), this.handles = {}, e = 0; e < i.length; e++) s = "ui-resizable-" + (t = k.trim(i[e])), n = k("<div>"), this._addClass(n, "ui-resizable-handle " + s), n.css({
                    zIndex: o.zIndex
                }), this.handles[t] = ".ui-resizable-" + t, this.element.append(n);
            this._renderAxis = function(t) {
                var e, i, s;
                for (e in t = t || this.element, this.handles) this.handles[e].constructor === String ? this.handles[e] = this.element.children(this.handles[e]).first().show() : (this.handles[e].jquery || this.handles[e].nodeType) && (this.handles[e] = k(this.handles[e]), this._on(this.handles[e], {
                    mousedown: a._mouseDown
                })), this.elementIsWrapper && this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i) && (i = k(this.handles[e], this.element), s = /sw|ne|nw|se|n|s/.test(e) ? i.outerHeight() : i.outerWidth(), i = ["padding", /ne|nw|n/.test(e) ? "Top" : /se|sw|s/.test(e) ? "Bottom" : /^e$/.test(e) ? "Right" : "Left"].join(""), t.css(i, s), this._proportionallyResize()), this._handles = this._handles.add(this.handles[e])
            }, this._renderAxis(this.element), this._handles = this._handles.add(this.element.find(".ui-resizable-handle")), this._handles.disableSelection(), this._handles.on("mouseover", function() {
                a.resizing || (this.className && (n = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)), a.axis = n && n[1] ? n[1] : "se")
            }), o.autoHide && (this._handles.hide(), this._addClass("ui-resizable-autohide"))
        },
        _removeHandles: function() {
            this._handles.remove()
        },
        _mouseCapture: function(t) {
            var e, i, s = !1;
            for (e in this.handles)(i = k(this.handles[e])[0]) !== t.target && !k.contains(i, t.target) || (s = !0);
            return !this.options.disabled && s
        },
        _mouseStart: function(t) {
            var e, i, s = this.options,
                n = this.element;
            return this.resizing = !0, this._renderProxy(), e = this._num(this.helper.css("left")), i = this._num(this.helper.css("top")), s.containment && (e += k(s.containment).scrollLeft() || 0, i += k(s.containment).scrollTop() || 0), this.offset = this.helper.offset(), this.position = {
                left: e,
                top: i
            }, this.size = this._helper ? {
                width: this.helper.width(),
                height: this.helper.height()
            } : {
                width: n.width(),
                height: n.height()
            }, this.originalSize = this._helper ? {
                width: n.outerWidth(),
                height: n.outerHeight()
            } : {
                width: n.width(),
                height: n.height()
            }, this.sizeDiff = {
                width: n.outerWidth() - n.width(),
                height: n.outerHeight() - n.height()
            }, this.originalPosition = {
                left: e,
                top: i
            }, this.originalMousePosition = {
                left: t.pageX,
                top: t.pageY
            }, this.aspectRatio = "number" == typeof s.aspectRatio ? s.aspectRatio : this.originalSize.width / this.originalSize.height || 1, s = k(".ui-resizable-" + this.axis).css("cursor"), k("body").css("cursor", "auto" === s ? this.axis + "-resize" : s), this._addClass("ui-resizable-resizing"), this._propagate("start", t), !0
        },
        _mouseDrag: function(t) {
            var e = this.originalMousePosition,
                i = this.axis,
                s = t.pageX - e.left || 0,
                e = t.pageY - e.top || 0,
                i = this._change[i];
            return this._updatePrevProperties(), i && (e = i.apply(this, [t, s, e]), this._updateVirtualBoundaries(t.shiftKey), (this._aspectRatio || t.shiftKey) && (e = this._updateRatio(e, t)), e = this._respectSize(e, t), this._updateCache(e), this._propagate("resize", t), e = this._applyChanges(), !this._helper && this._proportionallyResizeElements.length && this._proportionallyResize(), k.isEmptyObject(e) || (this._updatePrevProperties(), this._trigger("resize", t, this.ui()), this._applyChanges())), !1
        },
        _mouseStop: function(t) {
            this.resizing = !1;
            var e, i, s, n = this.options,
                o = this;
            return this._helper && (s = (e = (i = this._proportionallyResizeElements).length && /textarea/i.test(i[0].nodeName)) && this._hasScroll(i[0], "left") ? 0 : o.sizeDiff.height, i = e ? 0 : o.sizeDiff.width, e = {
                width: o.helper.width() - i,
                height: o.helper.height() - s
            }, i = parseFloat(o.element.css("left")) + (o.position.left - o.originalPosition.left) || null, s = parseFloat(o.element.css("top")) + (o.position.top - o.originalPosition.top) || null, n.animate || this.element.css(k.extend(e, {
                top: s,
                left: i
            })), o.helper.height(o.size.height), o.helper.width(o.size.width), this._helper && !n.animate && this._proportionallyResize()), k("body").css("cursor", "auto"), this._removeClass("ui-resizable-resizing"), this._propagate("stop", t), this._helper && this.helper.remove(), !1
        },
        _updatePrevProperties: function() {
            this.prevPosition = {
                top: this.position.top,
                left: this.position.left
            }, this.prevSize = {
                width: this.size.width,
                height: this.size.height
            }
        },
        _applyChanges: function() {
            var t = {};
            return this.position.top !== this.prevPosition.top && (t.top = this.position.top + "px"), this.position.left !== this.prevPosition.left && (t.left = this.position.left + "px"), this.size.width !== this.prevSize.width && (t.width = this.size.width + "px"), this.size.height !== this.prevSize.height && (t.height = this.size.height + "px"), this.helper.css(t), t
        },
        _updateVirtualBoundaries: function(t) {
            var e, i, s = this.options,
                n = {
                    minWidth: this._isNumber(s.minWidth) ? s.minWidth : 0,
                    maxWidth: this._isNumber(s.maxWidth) ? s.maxWidth : 1 / 0,
                    minHeight: this._isNumber(s.minHeight) ? s.minHeight : 0,
                    maxHeight: this._isNumber(s.maxHeight) ? s.maxHeight : 1 / 0
                };
            (this._aspectRatio || t) && (e = n.minHeight * this.aspectRatio, i = n.minWidth / this.aspectRatio, s = n.maxHeight * this.aspectRatio, t = n.maxWidth / this.aspectRatio, e > n.minWidth && (n.minWidth = e), i > n.minHeight && (n.minHeight = i), s < n.maxWidth && (n.maxWidth = s), t < n.maxHeight && (n.maxHeight = t)), this._vBoundaries = n
        },
        _updateCache: function(t) {
            this.offset = this.helper.offset(), this._isNumber(t.left) && (this.position.left = t.left), this._isNumber(t.top) && (this.position.top = t.top), this._isNumber(t.height) && (this.size.height = t.height), this._isNumber(t.width) && (this.size.width = t.width)
        },
        _updateRatio: function(t) {
            var e = this.position,
                i = this.size,
                s = this.axis;
            return this._isNumber(t.height) ? t.width = t.height * this.aspectRatio : this._isNumber(t.width) && (t.height = t.width / this.aspectRatio), "sw" === s && (t.left = e.left + (i.width - t.width), t.top = null), "nw" === s && (t.top = e.top + (i.height - t.height), t.left = e.left + (i.width - t.width)), t
        },
        _respectSize: function(t) {
            var e = this._vBoundaries,
                i = this.axis,
                s = this._isNumber(t.width) && e.maxWidth && e.maxWidth < t.width,
                n = this._isNumber(t.height) && e.maxHeight && e.maxHeight < t.height,
                o = this._isNumber(t.width) && e.minWidth && e.minWidth > t.width,
                a = this._isNumber(t.height) && e.minHeight && e.minHeight > t.height,
                r = this.originalPosition.left + this.originalSize.width,
                h = this.originalPosition.top + this.originalSize.height,
                l = /sw|nw|w/.test(i),
                i = /nw|ne|n/.test(i);
            return o && (t.width = e.minWidth), a && (t.height = e.minHeight), s && (t.width = e.maxWidth), n && (t.height = e.maxHeight), o && l && (t.left = r - e.minWidth), s && l && (t.left = r - e.maxWidth), a && i && (t.top = h - e.minHeight), n && i && (t.top = h - e.maxHeight), t.width || t.height || t.left || !t.top ? t.width || t.height || t.top || !t.left || (t.left = null) : t.top = null, t
        },
        _getPaddingPlusBorderDimensions: function(t) {
            for (var e = 0, i = [], s = [t.css("borderTopWidth"), t.css("borderRightWidth"), t.css("borderBottomWidth"), t.css("borderLeftWidth")], n = [t.css("paddingTop"), t.css("paddingRight"), t.css("paddingBottom"), t.css("paddingLeft")]; e < 4; e++) i[e] = parseFloat(s[e]) || 0, i[e] += parseFloat(n[e]) || 0;
            return {
                height: i[0] + i[2],
                width: i[1] + i[3]
            }
        },
        _proportionallyResize: function() {
            if (this._proportionallyResizeElements.length)
                for (var t, e = 0, i = this.helper || this.element; e < this._proportionallyResizeElements.length; e++) t = this._proportionallyResizeElements[e], this.outerDimensions || (this.outerDimensions = this._getPaddingPlusBorderDimensions(t)), t.css({
                    height: i.height() - this.outerDimensions.height || 0,
                    width: i.width() - this.outerDimensions.width || 0
                })
        },
        _renderProxy: function() {
            var t = this.element,
                e = this.options;
            this.elementOffset = t.offset(), this._helper ? (this.helper = this.helper || k("<div style='overflow:hidden;'></div>"), this._addClass(this.helper, this._helper), this.helper.css({
                width: this.element.outerWidth(),
                height: this.element.outerHeight(),
                position: "absolute",
                left: this.elementOffset.left + "px",
                top: this.elementOffset.top + "px",
                zIndex: ++e.zIndex
            }), this.helper.appendTo("body").disableSelection()) : this.helper = this.element
        },
        _change: {
            e: function(t, e) {
                return {
                    width: this.originalSize.width + e
                }
            },
            w: function(t, e) {
                var i = this.originalSize;
                return {
                    left: this.originalPosition.left + e,
                    width: i.width - e
                }
            },
            n: function(t, e, i) {
                var s = this.originalSize;
                return {
                    top: this.originalPosition.top + i,
                    height: s.height - i
                }
            },
            s: function(t, e, i) {
                return {
                    height: this.originalSize.height + i
                }
            },
            se: function(t, e, i) {
                return k.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [t, e, i]))
            },
            sw: function(t, e, i) {
                return k.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [t, e, i]))
            },
            ne: function(t, e, i) {
                return k.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [t, e, i]))
            },
            nw: function(t, e, i) {
                return k.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [t, e, i]))
            }
        },
        _propagate: function(t, e) {
            k.ui.plugin.call(this, t, [e, this.ui()]), "resize" !== t && this._trigger(t, e, this.ui())
        },
        plugins: {},
        ui: function() {
            return {
                originalElement: this.originalElement,
                element: this.element,
                helper: this.helper,
                position: this.position,
                size: this.size,
                originalSize: this.originalSize,
                originalPosition: this.originalPosition
            }
        }
    }), k.ui.plugin.add("resizable", "animate", {
        stop: function(e) {
            var i = k(this).resizable("instance"),
                t = i.options,
                s = i._proportionallyResizeElements,
                n = s.length && /textarea/i.test(s[0].nodeName),
                o = n && i._hasScroll(s[0], "left") ? 0 : i.sizeDiff.height,
                a = n ? 0 : i.sizeDiff.width,
                n = {
                    width: i.size.width - a,
                    height: i.size.height - o
                },
                a = parseFloat(i.element.css("left")) + (i.position.left - i.originalPosition.left) || null,
                o = parseFloat(i.element.css("top")) + (i.position.top - i.originalPosition.top) || null;
            i.element.animate(k.extend(n, o && a ? {
                top: o,
                left: a
            } : {}), {
                duration: t.animateDuration,
                easing: t.animateEasing,
                step: function() {
                    var t = {
                        width: parseFloat(i.element.css("width")),
                        height: parseFloat(i.element.css("height")),
                        top: parseFloat(i.element.css("top")),
                        left: parseFloat(i.element.css("left"))
                    };
                    s && s.length && k(s[0]).css({
                        width: t.width,
                        height: t.height
                    }), i._updateCache(t), i._propagate("resize", e)
                }
            })
        }
    }), k.ui.plugin.add("resizable", "containment", {
        start: function() {
            var i, s, n = k(this).resizable("instance"),
                t = n.options,
                e = n.element,
                o = t.containment,
                a = o instanceof k ? o.get(0) : /parent/.test(o) ? e.parent().get(0) : o;
            a && (n.containerElement = k(a), /document/.test(o) || o === document ? (n.containerOffset = {
                left: 0,
                top: 0
            }, n.containerPosition = {
                left: 0,
                top: 0
            }, n.parentData = {
                element: k(document),
                left: 0,
                top: 0,
                width: k(document).width(),
                height: k(document).height() || document.body.parentNode.scrollHeight
            }) : (i = k(a), s = [], k(["Top", "Right", "Left", "Bottom"]).each(function(t, e) {
                s[t] = n._num(i.css("padding" + e))
            }), n.containerOffset = i.offset(), n.containerPosition = i.position(), n.containerSize = {
                height: i.innerHeight() - s[3],
                width: i.innerWidth() - s[1]
            }, t = n.containerOffset, e = n.containerSize.height, o = n.containerSize.width, o = n._hasScroll(a, "left") ? a.scrollWidth : o, e = n._hasScroll(a) ? a.scrollHeight : e, n.parentData = {
                element: a,
                left: t.left,
                top: t.top,
                width: o,
                height: e
            }))
        },
        resize: function(t) {
            var e = k(this).resizable("instance"),
                i = e.options,
                s = e.containerOffset,
                n = e.position,
                o = e._aspectRatio || t.shiftKey,
                a = {
                    top: 0,
                    left: 0
                },
                r = e.containerElement,
                t = !0;
            r[0] !== document && /static/.test(r.css("position")) && (a = s), n.left < (e._helper ? s.left : 0) && (e.size.width = e.size.width + (e._helper ? e.position.left - s.left : e.position.left - a.left), o && (e.size.height = e.size.width / e.aspectRatio, t = !1), e.position.left = i.helper ? s.left : 0), n.top < (e._helper ? s.top : 0) && (e.size.height = e.size.height + (e._helper ? e.position.top - s.top : e.position.top), o && (e.size.width = e.size.height * e.aspectRatio, t = !1), e.position.top = e._helper ? s.top : 0), i = e.containerElement.get(0) === e.element.parent().get(0), n = /relative|absolute/.test(e.containerElement.css("position")), i && n ? (e.offset.left = e.parentData.left + e.position.left, e.offset.top = e.parentData.top + e.position.top) : (e.offset.left = e.element.offset().left, e.offset.top = e.element.offset().top), n = Math.abs(e.sizeDiff.width + (e._helper ? e.offset.left - a.left : e.offset.left - s.left)), s = Math.abs(e.sizeDiff.height + (e._helper ? e.offset.top - a.top : e.offset.top - s.top)), n + e.size.width >= e.parentData.width && (e.size.width = e.parentData.width - n, o && (e.size.height = e.size.width / e.aspectRatio, t = !1)), s + e.size.height >= e.parentData.height && (e.size.height = e.parentData.height - s, o && (e.size.width = e.size.height * e.aspectRatio, t = !1)), t || (e.position.left = e.prevPosition.left, e.position.top = e.prevPosition.top, e.size.width = e.prevSize.width, e.size.height = e.prevSize.height)
        },
        stop: function() {
            var t = k(this).resizable("instance"),
                e = t.options,
                i = t.containerOffset,
                s = t.containerPosition,
                n = t.containerElement,
                o = k(t.helper),
                a = o.offset(),
                r = o.outerWidth() - t.sizeDiff.width,
                o = o.outerHeight() - t.sizeDiff.height;
            t._helper && !e.animate && /relative/.test(n.css("position")) && k(this).css({
                left: a.left - s.left - i.left,
                width: r,
                height: o
            }), t._helper && !e.animate && /static/.test(n.css("position")) && k(this).css({
                left: a.left - s.left - i.left,
                width: r,
                height: o
            })
        }
    }), k.ui.plugin.add("resizable", "alsoResize", {
        start: function() {
            var t = k(this).resizable("instance").options;
            k(t.alsoResize).each(function() {
                var t = k(this);
                t.data("ui-resizable-alsoresize", {
                    width: parseFloat(t.width()),
                    height: parseFloat(t.height()),
                    left: parseFloat(t.css("left")),
                    top: parseFloat(t.css("top"))
                })
            })
        },
        resize: function(t, i) {
            var e = k(this).resizable("instance"),
                s = e.options,
                n = e.originalSize,
                o = e.originalPosition,
                a = {
                    height: e.size.height - n.height || 0,
                    width: e.size.width - n.width || 0,
                    top: e.position.top - o.top || 0,
                    left: e.position.left - o.left || 0
                };
            k(s.alsoResize).each(function() {
                var t = k(this),
                    s = k(this).data("ui-resizable-alsoresize"),
                    n = {},
                    e = t.parents(i.originalElement[0]).length ? ["width", "height"] : ["width", "height", "top", "left"];
                k.each(e, function(t, e) {
                    var i = (s[e] || 0) + (a[e] || 0);
                    i && 0 <= i && (n[e] = i || null)
                }), t.css(n)
            })
        },
        stop: function() {
            k(this).removeData("ui-resizable-alsoresize")
        }
    }), k.ui.plugin.add("resizable", "ghost", {
        start: function() {
            var t = k(this).resizable("instance"),
                e = t.size;
            t.ghost = t.originalElement.clone(), t.ghost.css({
                opacity: .25,
                display: "block",
                position: "relative",
                height: e.height,
                width: e.width,
                margin: 0,
                left: 0,
                top: 0
            }), t._addClass(t.ghost, "ui-resizable-ghost"), !1 !== k.uiBackCompat && "string" == typeof t.options.ghost && t.ghost.addClass(this.options.ghost), t.ghost.appendTo(t.helper)
        },
        resize: function() {
            var t = k(this).resizable("instance");
            t.ghost && t.ghost.css({
                position: "relative",
                height: t.size.height,
                width: t.size.width
            })
        },
        stop: function() {
            var t = k(this).resizable("instance");
            t.ghost && t.helper && t.helper.get(0).removeChild(t.ghost.get(0))
        }
    }), k.ui.plugin.add("resizable", "grid", {
        resize: function() {
            var t, e = k(this).resizable("instance"),
                i = e.options,
                s = e.size,
                n = e.originalSize,
                o = e.originalPosition,
                a = e.axis,
                r = "number" == typeof i.grid ? [i.grid, i.grid] : i.grid,
                h = r[0] || 1,
                l = r[1] || 1,
                c = Math.round((s.width - n.width) / h) * h,
                u = Math.round((s.height - n.height) / l) * l,
                d = n.width + c,
                p = n.height + u,
                f = i.maxWidth && i.maxWidth < d,
                g = i.maxHeight && i.maxHeight < p,
                m = i.minWidth && i.minWidth > d,
                s = i.minHeight && i.minHeight > p;
            i.grid = r, m && (d += h), s && (p += l), f && (d -= h), g && (p -= l), /^(se|s|e)$/.test(a) ? (e.size.width = d, e.size.height = p) : /^(ne)$/.test(a) ? (e.size.width = d, e.size.height = p, e.position.top = o.top - u) : /^(sw)$/.test(a) ? (e.size.width = d, e.size.height = p, e.position.left = o.left - c) : ((p - l <= 0 || d - h <= 0) && (t = e._getPaddingPlusBorderDimensions(this)), 0 < p - l ? (e.size.height = p, e.position.top = o.top - u) : (p = l - t.height, e.size.height = p, e.position.top = o.top + n.height - p), 0 < d - h ? (e.size.width = d, e.position.left = o.left - c) : (d = h - t.width, e.size.width = d, e.position.left = o.left + n.width - d))
        }
    });
    k.ui.resizable, k.widget("ui.selectable", k.ui.mouse, {
        version: "1.12.1",
        options: {
            appendTo: "body",
            autoRefresh: !0,
            distance: 0,
            filter: "*",
            tolerance: "touch",
            selected: null,
            selecting: null,
            start: null,
            stop: null,
            unselected: null,
            unselecting: null
        },
        _create: function() {
            var i = this;
            this._addClass("ui-selectable"), this.dragged = !1, this.refresh = function() {
                i.elementPos = k(i.element[0]).offset(), i.selectees = k(i.options.filter, i.element[0]), i._addClass(i.selectees, "ui-selectee"), i.selectees.each(function() {
                    var t = k(this),
                        e = t.offset(),
                        e = {
                            left: e.left - i.elementPos.left,
                            top: e.top - i.elementPos.top
                        };
                    k.data(this, "selectable-item", {
                        element: this,
                        $element: t,
                        left: e.left,
                        top: e.top,
                        right: e.left + t.outerWidth(),
                        bottom: e.top + t.outerHeight(),
                        startselected: !1,
                        selected: t.hasClass("ui-selected"),
                        selecting: t.hasClass("ui-selecting"),
                        unselecting: t.hasClass("ui-unselecting")
                    })
                })
            }, this.refresh(), this._mouseInit(), this.helper = k("<div>"), this._addClass(this.helper, "ui-selectable-helper")
        },
        _destroy: function() {
            this.selectees.removeData("selectable-item"), this._mouseDestroy()
        },
        _mouseStart: function(i) {
            var s = this,
                t = this.options;
            this.opos = [i.pageX, i.pageY], this.elementPos = k(this.element[0]).offset(), this.options.disabled || (this.selectees = k(t.filter, this.element[0]), this._trigger("start", i), k(t.appendTo).append(this.helper), this.helper.css({
                left: i.pageX,
                top: i.pageY,
                width: 0,
                height: 0
            }), t.autoRefresh && this.refresh(), this.selectees.filter(".ui-selected").each(function() {
                var t = k.data(this, "selectable-item");
                t.startselected = !0, i.metaKey || i.ctrlKey || (s._removeClass(t.$element, "ui-selected"), t.selected = !1, s._addClass(t.$element, "ui-unselecting"), t.unselecting = !0, s._trigger("unselecting", i, {
                    unselecting: t.element
                }))
            }), k(i.target).parents().addBack().each(function() {
                var t, e = k.data(this, "selectable-item");
                if (e) return t = !i.metaKey && !i.ctrlKey || !e.$element.hasClass("ui-selected"), s._removeClass(e.$element, t ? "ui-unselecting" : "ui-selected")._addClass(e.$element, t ? "ui-selecting" : "ui-unselecting"), e.unselecting = !t, e.selecting = t, (e.selected = t) ? s._trigger("selecting", i, {
                    selecting: e.element
                }) : s._trigger("unselecting", i, {
                    unselecting: e.element
                }), !1
            }))
        },
        _mouseDrag: function(s) {
            if (this.dragged = !0, !this.options.disabled) {
                var t, n = this,
                    o = this.options,
                    a = this.opos[0],
                    r = this.opos[1],
                    h = s.pageX,
                    l = s.pageY;
                return h < a && (t = h, h = a, a = t), l < r && (t = l, l = r, r = t), this.helper.css({
                    left: a,
                    top: r,
                    width: h - a,
                    height: l - r
                }), this.selectees.each(function() {
                    var t = k.data(this, "selectable-item"),
                        e = !1,
                        i = {};
                    t && t.element !== n.element[0] && (i.left = t.left + n.elementPos.left, i.right = t.right + n.elementPos.left, i.top = t.top + n.elementPos.top, i.bottom = t.bottom + n.elementPos.top, "touch" === o.tolerance ? e = !(i.left > h || i.right < a || i.top > l || i.bottom < r) : "fit" === o.tolerance && (e = i.left > a && i.right < h && i.top > r && i.bottom < l), e ? (t.selected && (n._removeClass(t.$element, "ui-selected"), t.selected = !1), t.unselecting && (n._removeClass(t.$element, "ui-unselecting"), t.unselecting = !1), t.selecting || (n._addClass(t.$element, "ui-selecting"), t.selecting = !0, n._trigger("selecting", s, {
                        selecting: t.element
                    }))) : (t.selecting && ((s.metaKey || s.ctrlKey) && t.startselected ? (n._removeClass(t.$element, "ui-selecting"), t.selecting = !1, n._addClass(t.$element, "ui-selected"), t.selected = !0) : (n._removeClass(t.$element, "ui-selecting"), t.selecting = !1, t.startselected && (n._addClass(t.$element, "ui-unselecting"), t.unselecting = !0), n._trigger("unselecting", s, {
                        unselecting: t.element
                    }))), t.selected && (s.metaKey || s.ctrlKey || t.startselected || (n._removeClass(t.$element, "ui-selected"), t.selected = !1, n._addClass(t.$element, "ui-unselecting"), t.unselecting = !0, n._trigger("unselecting", s, {
                        unselecting: t.element
                    })))))
                }), !1
            }
        },
        _mouseStop: function(e) {
            var i = this;
            return this.dragged = !1, k(".ui-unselecting", this.element[0]).each(function() {
                var t = k.data(this, "selectable-item");
                i._removeClass(t.$element, "ui-unselecting"), t.unselecting = !1, t.startselected = !1, i._trigger("unselected", e, {
                    unselected: t.element
                })
            }), k(".ui-selecting", this.element[0]).each(function() {
                var t = k.data(this, "selectable-item");
                i._removeClass(t.$element, "ui-selecting")._addClass(t.$element, "ui-selected"), t.selecting = !1, t.selected = !0, t.startselected = !0, i._trigger("selected", e, {
                    selected: t.element
                })
            }), this._trigger("stop", e), this.helper.remove(), !1
        }
    }), k.widget("ui.sortable", k.ui.mouse, {
        version: "1.12.1",
        widgetEventPrefix: "sort",
        ready: !1,
        options: {
            appendTo: "parent",
            axis: !1,
            connectWith: !1,
            containment: !1,
            cursor: "auto",
            cursorAt: !1,
            dropOnEmpty: !0,
            forcePlaceholderSize: !1,
            forceHelperSize: !1,
            grid: !1,
            handle: !1,
            helper: "original",
            items: "> *",
            opacity: !1,
            placeholder: !1,
            revert: !1,
            scroll: !0,
            scrollSensitivity: 20,
            scrollSpeed: 20,
            scope: "default",
            tolerance: "intersect",
            zIndex: 1e3,
            activate: null,
            beforeStop: null,
            change: null,
            deactivate: null,
            out: null,
            over: null,
            receive: null,
            remove: null,
            sort: null,
            start: null,
            stop: null,
            update: null
        },
        _isOverAxis: function(t, e, i) {
            return e <= t && t < e + i
        },
        _isFloating: function(t) {
            return /left|right/.test(t.css("float")) || /inline|table-cell/.test(t.css("display"))
        },
        _create: function() {
            this.containerCache = {}, this._addClass("ui-sortable"), this.refresh(), this.offset = this.element.offset(), this._mouseInit(), this._setHandleClassName(), this.ready = !0
        },
        _setOption: function(t, e) {
            this._super(t, e), "handle" === t && this._setHandleClassName()
        },
        _setHandleClassName: function() {
            var t = this;
            this._removeClass(this.element.find(".ui-sortable-handle"), "ui-sortable-handle"), k.each(this.items, function() {
                t._addClass(this.instance.options.handle ? this.item.find(this.instance.options.handle) : this.item, "ui-sortable-handle")
            })
        },
        _destroy: function() {
            this._mouseDestroy();
            for (var t = this.items.length - 1; 0 <= t; t--) this.items[t].item.removeData(this.widgetName + "-item");
            return this
        },
        _mouseCapture: function(t, e) {
            var i = null,
                s = !1,
                n = this;
            return !this.reverting && (!this.options.disabled && "static" !== this.options.type && (this._refreshItems(t), k(t.target).parents().each(function() {
                if (k.data(this, n.widgetName + "-item") === n) return i = k(this), !1
            }), !!(i = k.data(t.target, n.widgetName + "-item") === n ? k(t.target) : i) && (!(this.options.handle && !e && (k(this.options.handle, i).find("*").addBack().each(function() {
                this === t.target && (s = !0)
            }), !s)) && (this.currentItem = i, this._removeCurrentsFromItems(), !0))))
        },
        _mouseStart: function(t, e, i) {
            var s, n, o = this.options;
            if ((this.currentContainer = this).refreshPositions(), this.helper = this._createHelper(t), this._cacheHelperProportions(), this._cacheMargins(), this.scrollParent = this.helper.scrollParent(), this.offset = this.currentItem.offset(), this.offset = {
                    top: this.offset.top - this.margins.top,
                    left: this.offset.left - this.margins.left
                }, k.extend(this.offset, {
                    click: {
                        left: t.pageX - this.offset.left,
                        top: t.pageY - this.offset.top
                    },
                    parent: this._getParentOffset(),
                    relative: this._getRelativeOffset()
                }), this.helper.css("position", "absolute"), this.cssPosition = this.helper.css("position"), this.originalPosition = this._generatePosition(t), this.originalPageX = t.pageX, this.originalPageY = t.pageY, o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt), this.domPosition = {
                    prev: this.currentItem.prev()[0],
                    parent: this.currentItem.parent()[0]
                }, this.helper[0] !== this.currentItem[0] && this.currentItem.hide(), this._createPlaceholder(), o.containment && this._setContainment(), o.cursor && "auto" !== o.cursor && (n = this.document.find("body"), this.storedCursor = n.css("cursor"), n.css("cursor", o.cursor), this.storedStylesheet = k("<style>*{ cursor: " + o.cursor + " !important; }</style>").appendTo(n)), o.opacity && (this.helper.css("opacity") && (this._storedOpacity = this.helper.css("opacity")), this.helper.css("opacity", o.opacity)), o.zIndex && (this.helper.css("zIndex") && (this._storedZIndex = this.helper.css("zIndex")), this.helper.css("zIndex", o.zIndex)), this.scrollParent[0] !== this.document[0] && "HTML" !== this.scrollParent[0].tagName && (this.overflowOffset = this.scrollParent.offset()), this._trigger("start", t, this._uiHash()), this._preserveHelperProportions || this._cacheHelperProportions(), !i)
                for (s = this.containers.length - 1; 0 <= s; s--) this.containers[s]._trigger("activate", t, this._uiHash(this));
            return k.ui.ddmanager && (k.ui.ddmanager.current = this), k.ui.ddmanager && !o.dropBehaviour && k.ui.ddmanager.prepareOffsets(this, t), this.dragging = !0, this._addClass(this.helper, "ui-sortable-helper"), this._mouseDrag(t), !0
        },
        _mouseDrag: function(t) {
            var e, i, s, n, o = this.options,
                a = !1;
            for (this.position = this._generatePosition(t), this.positionAbs = this._convertPositionTo("absolute"), this.lastPositionAbs || (this.lastPositionAbs = this.positionAbs), this.options.scroll && (this.scrollParent[0] !== this.document[0] && "HTML" !== this.scrollParent[0].tagName ? (this.overflowOffset.top + this.scrollParent[0].offsetHeight - t.pageY < o.scrollSensitivity ? this.scrollParent[0].scrollTop = a = this.scrollParent[0].scrollTop + o.scrollSpeed : t.pageY - this.overflowOffset.top < o.scrollSensitivity && (this.scrollParent[0].scrollTop = a = this.scrollParent[0].scrollTop - o.scrollSpeed), this.overflowOffset.left + this.scrollParent[0].offsetWidth - t.pageX < o.scrollSensitivity ? this.scrollParent[0].scrollLeft = a = this.scrollParent[0].scrollLeft + o.scrollSpeed : t.pageX - this.overflowOffset.left < o.scrollSensitivity && (this.scrollParent[0].scrollLeft = a = this.scrollParent[0].scrollLeft - o.scrollSpeed)) : (t.pageY - this.document.scrollTop() < o.scrollSensitivity ? a = this.document.scrollTop(this.document.scrollTop() - o.scrollSpeed) : this.window.height() - (t.pageY - this.document.scrollTop()) < o.scrollSensitivity && (a = this.document.scrollTop(this.document.scrollTop() + o.scrollSpeed)), t.pageX - this.document.scrollLeft() < o.scrollSensitivity ? a = this.document.scrollLeft(this.document.scrollLeft() - o.scrollSpeed) : this.window.width() - (t.pageX - this.document.scrollLeft()) < o.scrollSensitivity && (a = this.document.scrollLeft(this.document.scrollLeft() + o.scrollSpeed))), !1 !== a && k.ui.ddmanager && !o.dropBehaviour && k.ui.ddmanager.prepareOffsets(this, t)), this.positionAbs = this._convertPositionTo("absolute"), this.options.axis && "y" === this.options.axis || (this.helper[0].style.left = this.position.left + "px"), this.options.axis && "x" === this.options.axis || (this.helper[0].style.top = this.position.top + "px"), e = this.items.length - 1; 0 <= e; e--)
                if (s = (i = this.items[e]).item[0], (n = this._intersectsWithPointer(i)) && i.instance === this.currentContainer && !(s === this.currentItem[0] || this.placeholder[1 === n ? "next" : "prev"]()[0] === s || k.contains(this.placeholder[0], s) || "semi-dynamic" === this.options.type && k.contains(this.element[0], s))) {
                    if (this.direction = 1 === n ? "down" : "up", "pointer" !== this.options.tolerance && !this._intersectsWithSides(i)) break;
                    this._rearrange(t, i), this._trigger("change", t, this._uiHash());
                    break
                }
            return this._contactContainers(t), k.ui.ddmanager && k.ui.ddmanager.drag(this, t), this._trigger("sort", t, this._uiHash()), this.lastPositionAbs = this.positionAbs, !1
        },
        _mouseStop: function(t, e) {
            var i, s, n, o;
            if (t) return k.ui.ddmanager && !this.options.dropBehaviour && k.ui.ddmanager.drop(this, t), this.options.revert ? (s = (i = this).placeholder.offset(), o = {}, (n = this.options.axis) && "x" !== n || (o.left = s.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] === this.document[0].body ? 0 : this.offsetParent[0].scrollLeft)), n && "y" !== n || (o.top = s.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] === this.document[0].body ? 0 : this.offsetParent[0].scrollTop)), this.reverting = !0, k(this.helper).animate(o, parseInt(this.options.revert, 10) || 500, function() {
                i._clear(t)
            })) : this._clear(t, e), !1
        },
        cancel: function() {
            if (this.dragging) {
                this._mouseUp(new k.Event("mouseup", {
                    target: null
                })), "original" === this.options.helper ? (this.currentItem.css(this._storedCSS), this._removeClass(this.currentItem, "ui-sortable-helper")) : this.currentItem.show();
                for (var t = this.containers.length - 1; 0 <= t; t--) this.containers[t]._trigger("deactivate", null, this._uiHash(this)), this.containers[t].containerCache.over && (this.containers[t]._trigger("out", null, this._uiHash(this)), this.containers[t].containerCache.over = 0)
            }
            return this.placeholder && (this.placeholder[0].parentNode && this.placeholder[0].parentNode.removeChild(this.placeholder[0]), "original" !== this.options.helper && this.helper && this.helper[0].parentNode && this.helper.remove(), k.extend(this, {
                helper: null,
                dragging: !1,
                reverting: !1,
                _noFinalSort: null
            }), this.domPosition.prev ? k(this.domPosition.prev).after(this.currentItem) : k(this.domPosition.parent).prepend(this.currentItem)), this
        },
        serialize: function(e) {
            var t = this._getItemsAsjQuery(e && e.connected),
                i = [];
            return e = e || {}, k(t).each(function() {
                var t = (k(e.item || this).attr(e.attribute || "id") || "").match(e.expression || /(.+)[\-=_](.+)/);
                t && i.push((e.key || t[1] + "[]") + "=" + (e.key && e.expression ? t[1] : t[2]))
            }), !i.length && e.key && i.push(e.key + "="), i.join("&")
        },
        toArray: function(t) {
            var e = this._getItemsAsjQuery(t && t.connected),
                i = [];
            return t = t || {}, e.each(function() {
                i.push(k(t.item || this).attr(t.attribute || "id") || "")
            }), i
        },
        _intersectsWith: function(t) {
            var e = this.positionAbs.left,
                i = e + this.helperProportions.width,
                s = this.positionAbs.top,
                n = s + this.helperProportions.height,
                o = t.left,
                a = o + t.width,
                r = t.top,
                h = r + t.height,
                l = this.offset.click.top,
                c = this.offset.click.left,
                l = "x" === this.options.axis || r < s + l && s + l < h,
                c = "y" === this.options.axis || o < e + c && e + c < a;
            return "pointer" === this.options.tolerance || this.options.forcePointerForContainers || "pointer" !== this.options.tolerance && this.helperProportions[this.floating ? "width" : "height"] > t[this.floating ? "width" : "height"] ? l && c : o < e + this.helperProportions.width / 2 && i - this.helperProportions.width / 2 < a && r < s + this.helperProportions.height / 2 && n - this.helperProportions.height / 2 < h
        },
        _intersectsWithPointer: function(t) {
            var e = "x" === this.options.axis || this._isOverAxis(this.positionAbs.top + this.offset.click.top, t.top, t.height),
                t = "y" === this.options.axis || this._isOverAxis(this.positionAbs.left + this.offset.click.left, t.left, t.width);
            return !(!e || !t) && (e = this._getDragVerticalDirection(), t = this._getDragHorizontalDirection(), this.floating ? "right" === t || "down" === e ? 2 : 1 : e && ("down" === e ? 2 : 1))
        },
        _intersectsWithSides: function(t) {
            var e = this._isOverAxis(this.positionAbs.top + this.offset.click.top, t.top + t.height / 2, t.height),
                i = this._isOverAxis(this.positionAbs.left + this.offset.click.left, t.left + t.width / 2, t.width),
                s = this._getDragVerticalDirection(),
                t = this._getDragHorizontalDirection();
            return this.floating && t ? "right" === t && i || "left" === t && !i : s && ("down" === s && e || "up" === s && !e)
        },
        _getDragVerticalDirection: function() {
            var t = this.positionAbs.top - this.lastPositionAbs.top;
            return 0 != t && (0 < t ? "down" : "up")
        },
        _getDragHorizontalDirection: function() {
            var t = this.positionAbs.left - this.lastPositionAbs.left;
            return 0 != t && (0 < t ? "right" : "left")
        },
        refresh: function(t) {
            return this._refreshItems(t), this._setHandleClassName(), this.refreshPositions(), this
        },
        _connectWith: function() {
            var t = this.options;
            return t.connectWith.constructor === String ? [t.connectWith] : t.connectWith
        },
        _getItemsAsjQuery: function(t) {
            var e, i, s, n, o = [],
                a = [],
                r = this._connectWith();
            if (r && t)
                for (e = r.length - 1; 0 <= e; e--)
                    for (i = (s = k(r[e], this.document[0])).length - 1; 0 <= i; i--)(n = k.data(s[i], this.widgetFullName)) && n !== this && !n.options.disabled && a.push([k.isFunction(n.options.items) ? n.options.items.call(n.element) : k(n.options.items, n.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), n]);

            function h() {
                o.push(this)
            }
            for (a.push([k.isFunction(this.options.items) ? this.options.items.call(this.element, null, {
                    options: this.options,
                    item: this.currentItem
                }) : k(this.options.items, this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), this]), e = a.length - 1; 0 <= e; e--) a[e][0].each(h);
            return k(o)
        },
        _removeCurrentsFromItems: function() {
            var i = this.currentItem.find(":data(" + this.widgetName + "-item)");
            this.items = k.grep(this.items, function(t) {
                for (var e = 0; e < i.length; e++)
                    if (i[e] === t.item[0]) return !1;
                return !0
            })
        },
        _refreshItems: function(t) {
            this.items = [], this.containers = [this];
            var e, i, s, n, o, a, r, h, l = this.items,
                c = [
                    [k.isFunction(this.options.items) ? this.options.items.call(this.element[0], t, {
                        item: this.currentItem
                    }) : k(this.options.items, this.element), this]
                ],
                u = this._connectWith();
            if (u && this.ready)
                for (e = u.length - 1; 0 <= e; e--)
                    for (i = (s = k(u[e], this.document[0])).length - 1; 0 <= i; i--)(n = k.data(s[i], this.widgetFullName)) && n !== this && !n.options.disabled && (c.push([k.isFunction(n.options.items) ? n.options.items.call(n.element[0], t, {
                        item: this.currentItem
                    }) : k(n.options.items, n.element), n]), this.containers.push(n));
            for (e = c.length - 1; 0 <= e; e--)
                for (o = c[e][1], h = (a = c[e][i = 0]).length; i < h; i++)(r = k(a[i])).data(this.widgetName + "-item", o), l.push({
                    item: r,
                    instance: o,
                    width: 0,
                    height: 0,
                    left: 0,
                    top: 0
                })
        },
        refreshPositions: function(t) {
            var e, i, s, n;
            for (this.floating = !!this.items.length && ("x" === this.options.axis || this._isFloating(this.items[0].item)), this.offsetParent && this.helper && (this.offset.parent = this._getParentOffset()), e = this.items.length - 1; 0 <= e; e--)(i = this.items[e]).instance !== this.currentContainer && this.currentContainer && i.item[0] !== this.currentItem[0] || (s = this.options.toleranceElement ? k(this.options.toleranceElement, i.item) : i.item, t || (i.width = s.outerWidth(), i.height = s.outerHeight()), n = s.offset(), i.left = n.left, i.top = n.top);
            if (this.options.custom && this.options.custom.refreshContainers) this.options.custom.refreshContainers.call(this);
            else
                for (e = this.containers.length - 1; 0 <= e; e--) n = this.containers[e].element.offset(), this.containers[e].containerCache.left = n.left, this.containers[e].containerCache.top = n.top, this.containers[e].containerCache.width = this.containers[e].element.outerWidth(), this.containers[e].containerCache.height = this.containers[e].element.outerHeight();
            return this
        },
        _createPlaceholder: function(i) {
            var s, n = (i = i || this).options;
            n.placeholder && n.placeholder.constructor !== String || (s = n.placeholder, n.placeholder = {
                element: function() {
                    var t = i.currentItem[0].nodeName.toLowerCase(),
                        e = k("<" + t + ">", i.document[0]);
                    return i._addClass(e, "ui-sortable-placeholder", s || i.currentItem[0].className)._removeClass(e, "ui-sortable-helper"), "tbody" === t ? i._createTrPlaceholder(i.currentItem.find("tr").eq(0), k("<tr>", i.document[0]).appendTo(e)) : "tr" === t ? i._createTrPlaceholder(i.currentItem, e) : "img" === t && e.attr("src", i.currentItem.attr("src")), s || e.css("visibility", "hidden"), e
                },
                update: function(t, e) {
                    s && !n.forcePlaceholderSize || (e.height() || e.height(i.currentItem.innerHeight() - parseInt(i.currentItem.css("paddingTop") || 0, 10) - parseInt(i.currentItem.css("paddingBottom") || 0, 10)), e.width() || e.width(i.currentItem.innerWidth() - parseInt(i.currentItem.css("paddingLeft") || 0, 10) - parseInt(i.currentItem.css("paddingRight") || 0, 10)))
                }
            }), i.placeholder = k(n.placeholder.element.call(i.element, i.currentItem)), i.currentItem.after(i.placeholder), n.placeholder.update(i, i.placeholder)
        },
        _createTrPlaceholder: function(t, e) {
            var i = this;
            t.children().each(function() {
                k("<td>&#160;</td>", i.document[0]).attr("colspan", k(this).attr("colspan") || 1).appendTo(e)
            })
        },
        _contactContainers: function(t) {
            for (var e, i, s, n, o, a, r, h, l, c = null, u = null, d = this.containers.length - 1; 0 <= d; d--) k.contains(this.currentItem[0], this.containers[d].element[0]) || (this._intersectsWith(this.containers[d].containerCache) ? c && k.contains(this.containers[d].element[0], c.element[0]) || (c = this.containers[d], u = d) : this.containers[d].containerCache.over && (this.containers[d]._trigger("out", t, this._uiHash(this)), this.containers[d].containerCache.over = 0));
            if (c)
                if (1 === this.containers.length) this.containers[u].containerCache.over || (this.containers[u]._trigger("over", t, this._uiHash(this)), this.containers[u].containerCache.over = 1);
                else {
                    for (i = 1e4, s = null, n = (h = c.floating || this._isFloating(this.currentItem)) ? "left" : "top", o = h ? "width" : "height", l = h ? "pageX" : "pageY", e = this.items.length - 1; 0 <= e; e--) k.contains(this.containers[u].element[0], this.items[e].item[0]) && this.items[e].item[0] !== this.currentItem[0] && (a = this.items[e].item.offset()[n], r = !1, t[l] - a > this.items[e][o] / 2 && (r = !0), Math.abs(t[l] - a) < i && (i = Math.abs(t[l] - a), s = this.items[e], this.direction = r ? "up" : "down"));
                    (s || this.options.dropOnEmpty) && (this.currentContainer !== this.containers[u] ? (s ? this._rearrange(t, s, null, !0) : this._rearrange(t, null, this.containers[u].element, !0), this._trigger("change", t, this._uiHash()), this.containers[u]._trigger("change", t, this._uiHash(this)), this.currentContainer = this.containers[u], this.options.placeholder.update(this.currentContainer, this.placeholder), this.containers[u]._trigger("over", t, this._uiHash(this)), this.containers[u].containerCache.over = 1) : this.currentContainer.containerCache.over || (this.containers[u]._trigger("over", t, this._uiHash()), this.currentContainer.containerCache.over = 1))
                }
        },
        _createHelper: function(t) {
            var e = this.options,
                t = k.isFunction(e.helper) ? k(e.helper.apply(this.element[0], [t, this.currentItem])) : "clone" === e.helper ? this.currentItem.clone() : this.currentItem;
            return t.parents("body").length || k("parent" !== e.appendTo ? e.appendTo : this.currentItem[0].parentNode)[0].appendChild(t[0]), t[0] === this.currentItem[0] && (this._storedCSS = {
                width: this.currentItem[0].style.width,
                height: this.currentItem[0].style.height,
                position: this.currentItem.css("position"),
                top: this.currentItem.css("top"),
                left: this.currentItem.css("left")
            }), t[0].style.width && !e.forceHelperSize || t.width(this.currentItem.width()), t[0].style.height && !e.forceHelperSize || t.height(this.currentItem.height()), t
        },
        _adjustOffsetFromHelper: function(t) {
            "string" == typeof t && (t = t.split(" ")), "left" in (t = k.isArray(t) ? {
                left: +t[0],
                top: +t[1] || 0
            } : t) && (this.offset.click.left = t.left + this.margins.left), "right" in t && (this.offset.click.left = this.helperProportions.width - t.right + this.margins.left), "top" in t && (this.offset.click.top = t.top + this.margins.top), "bottom" in t && (this.offset.click.top = this.helperProportions.height - t.bottom + this.margins.top)
        },
        _getParentOffset: function() {
            this.offsetParent = this.helper.offsetParent();
            var t = this.offsetParent.offset();
            return "absolute" === this.cssPosition && this.scrollParent[0] !== this.document[0] && k.contains(this.scrollParent[0], this.offsetParent[0]) && (t.left += this.scrollParent.scrollLeft(), t.top += this.scrollParent.scrollTop()), {
                top: (t = this.offsetParent[0] === this.document[0].body || this.offsetParent[0].tagName && "html" === this.offsetParent[0].tagName.toLowerCase() && k.ui.ie ? {
                    top: 0,
                    left: 0
                } : t).top + (parseInt(this.offsetParent.css("borderTopWidth"), 10) || 0),
                left: t.left + (parseInt(this.offsetParent.css("borderLeftWidth"), 10) || 0)
            }
        },
        _getRelativeOffset: function() {
            if ("relative" !== this.cssPosition) return {
                top: 0,
                left: 0
            };
            var t = this.currentItem.position();
            return {
                top: t.top - (parseInt(this.helper.css("top"), 10) || 0) + this.scrollParent.scrollTop(),
                left: t.left - (parseInt(this.helper.css("left"), 10) || 0) + this.scrollParent.scrollLeft()
            }
        },
        _cacheMargins: function() {
            this.margins = {
                left: parseInt(this.currentItem.css("marginLeft"), 10) || 0,
                top: parseInt(this.currentItem.css("marginTop"), 10) || 0
            }
        },
        _cacheHelperProportions: function() {
            this.helperProportions = {
                width: this.helper.outerWidth(),
                height: this.helper.outerHeight()
            }
        },
        _setContainment: function() {
            var t, e, i = this.options;
            "parent" === i.containment && (i.containment = this.helper[0].parentNode), "document" !== i.containment && "window" !== i.containment || (this.containment = [0 - this.offset.relative.left - this.offset.parent.left, 0 - this.offset.relative.top - this.offset.parent.top, "document" === i.containment ? this.document.width() : this.window.width() - this.helperProportions.width - this.margins.left, ("document" === i.containment ? this.document.height() || document.body.parentNode.scrollHeight : this.window.height() || this.document[0].body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top]), /^(document|window|parent)$/.test(i.containment) || (t = k(i.containment)[0], e = k(i.containment).offset(), i = "hidden" !== k(t).css("overflow"), this.containment = [e.left + (parseInt(k(t).css("borderLeftWidth"), 10) || 0) + (parseInt(k(t).css("paddingLeft"), 10) || 0) - this.margins.left, e.top + (parseInt(k(t).css("borderTopWidth"), 10) || 0) + (parseInt(k(t).css("paddingTop"), 10) || 0) - this.margins.top, e.left + (i ? Math.max(t.scrollWidth, t.offsetWidth) : t.offsetWidth) - (parseInt(k(t).css("borderLeftWidth"), 10) || 0) - (parseInt(k(t).css("paddingRight"), 10) || 0) - this.helperProportions.width - this.margins.left, e.top + (i ? Math.max(t.scrollHeight, t.offsetHeight) : t.offsetHeight) - (parseInt(k(t).css("borderTopWidth"), 10) || 0) - (parseInt(k(t).css("paddingBottom"), 10) || 0) - this.helperProportions.height - this.margins.top])
        },
        _convertPositionTo: function(t, e) {
            e = e || this.position;
            var i = "absolute" === t ? 1 : -1,
                s = "absolute" !== this.cssPosition || this.scrollParent[0] !== this.document[0] && k.contains(this.scrollParent[0], this.offsetParent[0]) ? this.scrollParent : this.offsetParent,
                t = /(html|body)/i.test(s[0].tagName);
            return {
                top: e.top + this.offset.relative.top * i + this.offset.parent.top * i - ("fixed" === this.cssPosition ? -this.scrollParent.scrollTop() : t ? 0 : s.scrollTop()) * i,
                left: e.left + this.offset.relative.left * i + this.offset.parent.left * i - ("fixed" === this.cssPosition ? -this.scrollParent.scrollLeft() : t ? 0 : s.scrollLeft()) * i
            }
        },
        _generatePosition: function(t) {
            var e = this.options,
                i = t.pageX,
                s = t.pageY,
                n = "absolute" !== this.cssPosition || this.scrollParent[0] !== this.document[0] && k.contains(this.scrollParent[0], this.offsetParent[0]) ? this.scrollParent : this.offsetParent,
                o = /(html|body)/i.test(n[0].tagName);
            return "relative" !== this.cssPosition || this.scrollParent[0] !== this.document[0] && this.scrollParent[0] !== this.offsetParent[0] || (this.offset.relative = this._getRelativeOffset()), this.originalPosition && (this.containment && (t.pageX - this.offset.click.left < this.containment[0] && (i = this.containment[0] + this.offset.click.left), t.pageY - this.offset.click.top < this.containment[1] && (s = this.containment[1] + this.offset.click.top), t.pageX - this.offset.click.left > this.containment[2] && (i = this.containment[2] + this.offset.click.left), t.pageY - this.offset.click.top > this.containment[3] && (s = this.containment[3] + this.offset.click.top)), e.grid && (t = this.originalPageY + Math.round((s - this.originalPageY) / e.grid[1]) * e.grid[1], s = !this.containment || t - this.offset.click.top >= this.containment[1] && t - this.offset.click.top <= this.containment[3] ? t : t - this.offset.click.top >= this.containment[1] ? t - e.grid[1] : t + e.grid[1], t = this.originalPageX + Math.round((i - this.originalPageX) / e.grid[0]) * e.grid[0], i = !this.containment || t - this.offset.click.left >= this.containment[0] && t - this.offset.click.left <= this.containment[2] ? t : t - this.offset.click.left >= this.containment[0] ? t - e.grid[0] : t + e.grid[0])), {
                top: s - this.offset.click.top - this.offset.relative.top - this.offset.parent.top + ("fixed" === this.cssPosition ? -this.scrollParent.scrollTop() : o ? 0 : n.scrollTop()),
                left: i - this.offset.click.left - this.offset.relative.left - this.offset.parent.left + ("fixed" === this.cssPosition ? -this.scrollParent.scrollLeft() : o ? 0 : n.scrollLeft())
            }
        },
        _rearrange: function(t, e, i, s) {
            i ? i[0].appendChild(this.placeholder[0]) : e.item[0].parentNode.insertBefore(this.placeholder[0], "down" === this.direction ? e.item[0] : e.item[0].nextSibling), this.counter = this.counter ? ++this.counter : 1;
            var n = this.counter;
            this._delay(function() {
                n === this.counter && this.refreshPositions(!s)
            })
        },
        _clear: function(t, e) {
            this.reverting = !1;
            var i, s = [];
            if (!this._noFinalSort && this.currentItem.parent().length && this.placeholder.before(this.currentItem), this._noFinalSort = null, this.helper[0] === this.currentItem[0]) {
                for (i in this._storedCSS) "auto" !== this._storedCSS[i] && "static" !== this._storedCSS[i] || (this._storedCSS[i] = "");
                this.currentItem.css(this._storedCSS), this._removeClass(this.currentItem, "ui-sortable-helper")
            } else this.currentItem.show();

            function n(e, i, s) {
                return function(t) {
                    s._trigger(e, t, i._uiHash(i))
                }
            }
            for (this.fromOutside && !e && s.push(function(t) {
                    this._trigger("receive", t, this._uiHash(this.fromOutside))
                }), !this.fromOutside && this.domPosition.prev === this.currentItem.prev().not(".ui-sortable-helper")[0] && this.domPosition.parent === this.currentItem.parent()[0] || e || s.push(function(t) {
                    this._trigger("update", t, this._uiHash())
                }), this !== this.currentContainer && (e || (s.push(function(t) {
                    this._trigger("remove", t, this._uiHash())
                }), s.push(function(e) {
                    return function(t) {
                        e._trigger("receive", t, this._uiHash(this))
                    }
                }.call(this, this.currentContainer)), s.push(function(e) {
                    return function(t) {
                        e._trigger("update", t, this._uiHash(this))
                    }
                }.call(this, this.currentContainer)))), i = this.containers.length - 1; 0 <= i; i--) e || s.push(n("deactivate", this, this.containers[i])), this.containers[i].containerCache.over && (s.push(n("out", this, this.containers[i])), this.containers[i].containerCache.over = 0);
            if (this.storedCursor && (this.document.find("body").css("cursor", this.storedCursor), this.storedStylesheet.remove()), this._storedOpacity && this.helper.css("opacity", this._storedOpacity), this._storedZIndex && this.helper.css("zIndex", "auto" === this._storedZIndex ? "" : this._storedZIndex), this.dragging = !1, e || this._trigger("beforeStop", t, this._uiHash()), this.placeholder[0].parentNode.removeChild(this.placeholder[0]), this.cancelHelperRemoval || (this.helper[0] !== this.currentItem[0] && this.helper.remove(), this.helper = null), !e) {
                for (i = 0; i < s.length; i++) s[i].call(this, t);
                this._trigger("stop", t, this._uiHash())
            }
            return this.fromOutside = !1, !this.cancelHelperRemoval
        },
        _trigger: function() {
            !1 === k.Widget.prototype._trigger.apply(this, arguments) && this.cancel()
        },
        _uiHash: function(t) {
            var e = t || this;
            return {
                helper: e.helper,
                placeholder: e.placeholder || k([]),
                position: e.position,
                originalPosition: e.originalPosition,
                offset: e.positionAbs,
                item: e.currentItem,
                sender: t ? t.element : null
            }
        }
    }), k.widget("ui.accordion", {
        version: "1.12.1",
        options: {
            active: 0,
            animate: {},
            classes: {
                "ui-accordion-header": "ui-corner-top",
                "ui-accordion-header-collapsed": "ui-corner-all",
                "ui-accordion-content": "ui-corner-bottom"
            },
            collapsible: !1,
            event: "click",
            header: "> li > :first-child, > :not(li):even",
            heightStyle: "auto",
            icons: {
                activeHeader: "ui-icon-triangle-1-s",
                header: "ui-icon-triangle-1-e"
            },
            activate: null,
            beforeActivate: null
        },
        hideProps: {
            borderTopWidth: "hide",
            borderBottomWidth: "hide",
            paddingTop: "hide",
            paddingBottom: "hide",
            height: "hide"
        },
        showProps: {
            borderTopWidth: "show",
            borderBottomWidth: "show",
            paddingTop: "show",
            paddingBottom: "show",
            height: "show"
        },
        _create: function() {
            var t = this.options;
            this.prevShow = this.prevHide = k(), this._addClass("ui-accordion", "ui-widget ui-helper-reset"), this.element.attr("role", "tablist"), t.collapsible || !1 !== t.active && null != t.active || (t.active = 0), this._processPanels(), t.active < 0 && (t.active += this.headers.length), this._refresh()
        },
        _getCreateEventData: function() {
            return {
                header: this.active,
                panel: this.active.length ? this.active.next() : k()
            }
        },
        _createIcons: function() {
            var t, e = this.options.icons;
            e && (t = k("<span>"), this._addClass(t, "ui-accordion-header-icon", "ui-icon " + e.header), t.prependTo(this.headers), t = this.active.children(".ui-accordion-header-icon"), this._removeClass(t, e.header)._addClass(t, null, e.activeHeader)._addClass(this.headers, "ui-accordion-icons"))
        },
        _destroyIcons: function() {
            this._removeClass(this.headers, "ui-accordion-icons"), this.headers.children(".ui-accordion-header-icon").remove()
        },
        _destroy: function() {
            var t;
            this.element.removeAttr("role"), this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(), this._destroyIcons(), t = this.headers.next().css("display", "").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(), "content" !== this.options.heightStyle && t.css("height", "")
        },
        _setOption: function(t, e) {
            "active" !== t ? ("event" === t && (this.options.event && this._off(this.headers, this.options.event), this._setupEvents(e)), this._super(t, e), "collapsible" !== t || e || !1 !== this.options.active || this._activate(0), "icons" === t && (this._destroyIcons(), e && this._createIcons())) : this._activate(e)
        },
        _setOptionDisabled: function(t) {
            this._super(t), this.element.attr("aria-disabled", t), this._toggleClass(null, "ui-state-disabled", !!t), this._toggleClass(this.headers.add(this.headers.next()), null, "ui-state-disabled", !!t)
        },
        _keydown: function(t) {
            if (!t.altKey && !t.ctrlKey) {
                var e = k.ui.keyCode,
                    i = this.headers.length,
                    s = this.headers.index(t.target),
                    n = !1;
                switch (t.keyCode) {
                    case e.RIGHT:
                    case e.DOWN:
                        n = this.headers[(s + 1) % i];
                        break;
                    case e.LEFT:
                    case e.UP:
                        n = this.headers[(s - 1 + i) % i];
                        break;
                    case e.SPACE:
                    case e.ENTER:
                        this._eventHandler(t);
                        break;
                    case e.HOME:
                        n = this.headers[0];
                        break;
                    case e.END:
                        n = this.headers[i - 1]
                }
                n && (k(t.target).attr("tabIndex", -1), k(n).attr("tabIndex", 0), k(n).trigger("focus"), t.preventDefault())
            }
        },
        _panelKeyDown: function(t) {
            t.keyCode === k.ui.keyCode.UP && t.ctrlKey && k(t.currentTarget).prev().trigger("focus")
        },
        refresh: function() {
            var t = this.options;
            this._processPanels(), !1 === t.active && !0 === t.collapsible || !this.headers.length ? (t.active = !1, this.active = k()) : !1 === t.active ? this._activate(0) : this.active.length && !k.contains(this.element[0], this.active[0]) ? this.headers.length === this.headers.find(".ui-state-disabled").length ? (t.active = !1, this.active = k()) : this._activate(Math.max(0, t.active - 1)) : t.active = this.headers.index(this.active), this._destroyIcons(), this._refresh()
        },
        _processPanels: function() {
            var t = this.headers,
                e = this.panels;
            this.headers = this.element.find(this.options.header), this._addClass(this.headers, "ui-accordion-header ui-accordion-header-collapsed", "ui-state-default"), this.panels = this.headers.next().filter(":not(.ui-accordion-content-active)").hide(), this._addClass(this.panels, "ui-accordion-content", "ui-helper-reset ui-widget-content"), e && (this._off(t.not(this.headers)), this._off(e.not(this.panels)))
        },
        _refresh: function() {
            var i, t = this.options,
                e = t.heightStyle,
                s = this.element.parent();
            this.active = this._findActive(t.active), this._addClass(this.active, "ui-accordion-header-active", "ui-state-active")._removeClass(this.active, "ui-accordion-header-collapsed"), this._addClass(this.active.next(), "ui-accordion-content-active"), this.active.next().show(), this.headers.attr("role", "tab").each(function() {
                var t = k(this),
                    e = t.uniqueId().attr("id"),
                    i = t.next(),
                    s = i.uniqueId().attr("id");
                t.attr("aria-controls", s), i.attr("aria-labelledby", e)
            }).next().attr("role", "tabpanel"), this.headers.not(this.active).attr({
                "aria-selected": "false",
                "aria-expanded": "false",
                tabIndex: -1
            }).next().attr({
                "aria-hidden": "true"
            }).hide(), this.active.length ? this.active.attr({
                "aria-selected": "true",
                "aria-expanded": "true",
                tabIndex: 0
            }).next().attr({
                "aria-hidden": "false"
            }) : this.headers.eq(0).attr("tabIndex", 0), this._createIcons(), this._setupEvents(t.event), "fill" === e ? (i = s.height(), this.element.siblings(":visible").each(function() {
                var t = k(this),
                    e = t.css("position");
                "absolute" !== e && "fixed" !== e && (i -= t.outerHeight(!0))
            }), this.headers.each(function() {
                i -= k(this).outerHeight(!0)
            }), this.headers.next().each(function() {
                k(this).height(Math.max(0, i - k(this).innerHeight() + k(this).height()))
            }).css("overflow", "auto")) : "auto" === e && (i = 0, this.headers.next().each(function() {
                var t = k(this).is(":visible");
                t || k(this).show(), i = Math.max(i, k(this).css("height", "").height()), t || k(this).hide()
            }).height(i))
        },
        _activate: function(t) {
            t = this._findActive(t)[0];
            t !== this.active[0] && (t = t || this.active[0], this._eventHandler({
                target: t,
                currentTarget: t,
                preventDefault: k.noop
            }))
        },
        _findActive: function(t) {
            return "number" == typeof t ? this.headers.eq(t) : k()
        },
        _setupEvents: function(t) {
            var i = {
                keydown: "_keydown"
            };
            t && k.each(t.split(" "), function(t, e) {
                i[e] = "_eventHandler"
            }), this._off(this.headers.add(this.headers.next())), this._on(this.headers, i), this._on(this.headers.next(), {
                keydown: "_panelKeyDown"
            }), this._hoverable(this.headers), this._focusable(this.headers)
        },
        _eventHandler: function(t) {
            var e = this.options,
                i = this.active,
                s = k(t.currentTarget),
                n = s[0] === i[0],
                o = n && e.collapsible,
                a = o ? k() : s.next(),
                r = i.next(),
                a = {
                    oldHeader: i,
                    oldPanel: r,
                    newHeader: o ? k() : s,
                    newPanel: a
                };
            t.preventDefault(), n && !e.collapsible || !1 === this._trigger("beforeActivate", t, a) || (e.active = !o && this.headers.index(s), this.active = n ? k() : s, this._toggle(a), this._removeClass(i, "ui-accordion-header-active", "ui-state-active"), e.icons && (i = i.children(".ui-accordion-header-icon"), this._removeClass(i, null, e.icons.activeHeader)._addClass(i, null, e.icons.header)), n || (this._removeClass(s, "ui-accordion-header-collapsed")._addClass(s, "ui-accordion-header-active", "ui-state-active"), e.icons && (n = s.children(".ui-accordion-header-icon"), this._removeClass(n, null, e.icons.header)._addClass(n, null, e.icons.activeHeader)), this._addClass(s.next(), "ui-accordion-content-active")))
        },
        _toggle: function(t) {
            var e = t.newPanel,
                i = this.prevShow.length ? this.prevShow : t.oldPanel;
            this.prevShow.add(this.prevHide).stop(!0, !0), this.prevShow = e, this.prevHide = i, this.options.animate ? this._animate(e, i, t) : (i.hide(), e.show(), this._toggleComplete(t)), i.attr({
                "aria-hidden": "true"
            }), i.prev().attr({
                "aria-selected": "false",
                "aria-expanded": "false"
            }), e.length && i.length ? i.prev().attr({
                tabIndex: -1,
                "aria-expanded": "false"
            }) : e.length && this.headers.filter(function() {
                return 0 === parseInt(k(this).attr("tabIndex"), 10)
            }).attr("tabIndex", -1), e.attr("aria-hidden", "false").prev().attr({
                "aria-selected": "true",
                "aria-expanded": "true",
                tabIndex: 0
            })
        },
        _animate: function(t, i, e) {
            var s, n, o, a = this,
                r = 0,
                h = t.css("box-sizing"),
                l = t.length && (!i.length || t.index() < i.index()),
                c = this.options.animate || {},
                u = l && c.down || c,
                l = function() {
                    a._toggleComplete(e)
                };
            return n = (n = "string" == typeof u ? u : n) || u.easing || c.easing, o = (o = "number" == typeof u ? u : o) || u.duration || c.duration, i.length ? t.length ? (s = t.show().outerHeight(), i.animate(this.hideProps, {
                duration: o,
                easing: n,
                step: function(t, e) {
                    e.now = Math.round(t)
                }
            }), void t.hide().animate(this.showProps, {
                duration: o,
                easing: n,
                complete: l,
                step: function(t, e) {
                    e.now = Math.round(t), "height" !== e.prop ? "content-box" === h && (r += e.now) : "content" !== a.options.heightStyle && (e.now = Math.round(s - i.outerHeight() - r), r = 0)
                }
            })) : i.animate(this.hideProps, o, n, l) : t.animate(this.showProps, o, n, l)
        },
        _toggleComplete: function(t) {
            var e = t.oldPanel,
                i = e.prev();
            this._removeClass(e, "ui-accordion-content-active"), this._removeClass(i, "ui-accordion-header-active")._addClass(i, "ui-accordion-header-collapsed"), e.length && (e.parent()[0].className = e.parent()[0].className), this._trigger("activate", null, t)
        }
    }), k.widget("ui.menu", {
        version: "1.12.1",
        defaultElement: "<ul>",
        delay: 300,
        options: {
            icons: {
                submenu: "ui-icon-caret-1-e"
            },
            items: "> *",
            menus: "ul",
            position: {
                my: "left top",
                at: "right top"
            },
            role: "menu",
            blur: null,
            focus: null,
            select: null
        },
        _create: function() {
            this.activeMenu = this.element, this.mouseHandled = !1, this.element.uniqueId().attr({
                role: this.options.role,
                tabIndex: 0
            }), this._addClass("ui-menu", "ui-widget ui-widget-content"), this._on({
                "mousedown .ui-menu-item": function(t) {
                    t.preventDefault()
                },
                "click .ui-menu-item": function(t) {
                    var e = k(t.target),
                        i = k(k.ui.safeActiveElement(this.document[0]));
                    !this.mouseHandled && e.not(".ui-state-disabled").length && (this.select(t), t.isPropagationStopped() || (this.mouseHandled = !0), e.has(".ui-menu").length ? this.expand(t) : !this.element.is(":focus") && i.closest(".ui-menu").length && (this.element.trigger("focus", [!0]), this.active && 1 === this.active.parents(".ui-menu").length && clearTimeout(this.timer)))
                },
                "mouseenter .ui-menu-item": function(t) {
                    var e, i;
                    this.previousFilter || (e = k(t.target).closest(".ui-menu-item"), i = k(t.currentTarget), e[0] === i[0] && (this._removeClass(i.siblings().children(".ui-state-active"), null, "ui-state-active"), this.focus(t, i)))
                },
                mouseleave: "collapseAll",
                "mouseleave .ui-menu": "collapseAll",
                focus: function(t, e) {
                    var i = this.active || this.element.find(this.options.items).eq(0);
                    e || this.focus(t, i)
                },
                blur: function(t) {
                    this._delay(function() {
                        k.contains(this.element[0], k.ui.safeActiveElement(this.document[0])) || this.collapseAll(t)
                    })
                },
                keydown: "_keydown"
            }), this.refresh(), this._on(this.document, {
                click: function(t) {
                    this._closeOnDocumentClick(t) && this.collapseAll(t), this.mouseHandled = !1
                }
            })
        },
        _destroy: function() {
            var t = this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");
            this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(), t.children().each(function() {
                var t = k(this);
                t.data("ui-menu-submenu-caret") && t.remove()
            })
        },
        _keydown: function(t) {
            var e, i, s, n = !0;
            switch (t.keyCode) {
                case k.ui.keyCode.PAGE_UP:
                    this.previousPage(t);
                    break;
                case k.ui.keyCode.PAGE_DOWN:
                    this.nextPage(t);
                    break;
                case k.ui.keyCode.HOME:
                    this._move("first", "first", t);
                    break;
                case k.ui.keyCode.END:
                    this._move("last", "last", t);
                    break;
                case k.ui.keyCode.UP:
                    this.previous(t);
                    break;
                case k.ui.keyCode.DOWN:
                    this.next(t);
                    break;
                case k.ui.keyCode.LEFT:
                    this.collapse(t);
                    break;
                case k.ui.keyCode.RIGHT:
                    this.active && !this.active.is(".ui-state-disabled") && this.expand(t);
                    break;
                case k.ui.keyCode.ENTER:
                case k.ui.keyCode.SPACE:
                    this._activate(t);
                    break;
                case k.ui.keyCode.ESCAPE:
                    this.collapse(t);
                    break;
                default:
                    e = this.previousFilter || "", s = n = !1, i = 96 <= t.keyCode && t.keyCode <= 105 ? (t.keyCode - 96).toString() : String.fromCharCode(t.keyCode), clearTimeout(this.filterTimer), i === e ? s = !0 : i = e + i, e = this._filterMenuItems(i), (e = s && -1 !== e.index(this.active.next()) ? this.active.nextAll(".ui-menu-item") : e).length || (i = String.fromCharCode(t.keyCode), e = this._filterMenuItems(i)), e.length ? (this.focus(t, e), this.previousFilter = i, this.filterTimer = this._delay(function() {
                        delete this.previousFilter
                    }, 1e3)) : delete this.previousFilter
            }
            n && t.preventDefault()
        },
        _activate: function(t) {
            this.active && !this.active.is(".ui-state-disabled") && (this.active.children("[aria-haspopup='true']").length ? this.expand(t) : this.select(t))
        },
        refresh: function() {
            var t, e, s = this,
                n = this.options.icons.submenu,
                i = this.element.find(this.options.menus);
            this._toggleClass("ui-menu-icons", null, !!this.element.find(".ui-icon").length), e = i.filter(":not(.ui-menu)").hide().attr({
                role: this.options.role,
                "aria-hidden": "true",
                "aria-expanded": "false"
            }).each(function() {
                var t = k(this),
                    e = t.prev(),
                    i = k("<span>").data("ui-menu-submenu-caret", !0);
                s._addClass(i, "ui-menu-icon", "ui-icon " + n), e.attr("aria-haspopup", "true").prepend(i), t.attr("aria-labelledby", e.attr("id"))
            }), this._addClass(e, "ui-menu", "ui-widget ui-widget-content ui-front"), (t = i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function() {
                var t = k(this);
                s._isDivider(t) && s._addClass(t, "ui-menu-divider", "ui-widget-content")
            }), i = (e = t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({
                tabIndex: -1,
                role: this._itemRole()
            }), this._addClass(e, "ui-menu-item")._addClass(i, "ui-menu-item-wrapper"), t.filter(".ui-state-disabled").attr("aria-disabled", "true"), this.active && !k.contains(this.element[0], this.active[0]) && this.blur()
        },
        _itemRole: function() {
            return {
                menu: "menuitem",
                listbox: "option"
            }[this.options.role]
        },
        _setOption: function(t, e) {
            var i;
            "icons" === t && (i = this.element.find(".ui-menu-icon"), this._removeClass(i, null, this.options.icons.submenu)._addClass(i, null, e.submenu)), this._super(t, e)
        },
        _setOptionDisabled: function(t) {
            this._super(t), this.element.attr("aria-disabled", String(t)), this._toggleClass(null, "ui-state-disabled", !!t)
        },
        focus: function(t, e) {
            var i;
            this.blur(t, t && "focus" === t.type), this._scrollIntoView(e), this.active = e.first(), i = this.active.children(".ui-menu-item-wrapper"), this._addClass(i, null, "ui-state-active"), this.options.role && this.element.attr("aria-activedescendant", i.attr("id")), i = this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"), this._addClass(i, null, "ui-state-active"), t && "keydown" === t.type ? this._close() : this.timer = this._delay(function() {
                this._close()
            }, this.delay), (i = e.children(".ui-menu")).length && t && /^mouse/.test(t.type) && this._startOpening(i), this.activeMenu = e.parent(), this._trigger("focus", t, {
                item: e
            })
        },
        _scrollIntoView: function(t) {
            var e, i, s;
            this._hasScroll() && (i = parseFloat(k.css(this.activeMenu[0], "borderTopWidth")) || 0, s = parseFloat(k.css(this.activeMenu[0], "paddingTop")) || 0, e = t.offset().top - this.activeMenu.offset().top - i - s, i = this.activeMenu.scrollTop(), s = this.activeMenu.height(), t = t.outerHeight(), e < 0 ? this.activeMenu.scrollTop(i + e) : s < e + t && this.activeMenu.scrollTop(i + e - s + t))
        },
        blur: function(t, e) {
            e || clearTimeout(this.timer), this.active && (this._removeClass(this.active.children(".ui-menu-item-wrapper"), null, "ui-state-active"), this._trigger("blur", t, {
                item: this.active
            }), this.active = null)
        },
        _startOpening: function(t) {
            clearTimeout(this.timer), "true" === t.attr("aria-hidden") && (this.timer = this._delay(function() {
                this._close(), this._open(t)
            }, this.delay))
        },
        _open: function(t) {
            var e = k.extend({
                of: this.active
            }, this.options.position);
            clearTimeout(this.timer), this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden", "true"), t.show().removeAttr("aria-hidden").attr("aria-expanded", "true").position(e)
        },
        collapseAll: function(e, i) {
            clearTimeout(this.timer), this.timer = this._delay(function() {
                var t = i ? this.element : k(e && e.target).closest(this.element.find(".ui-menu"));
                t.length || (t = this.element), this._close(t), this.blur(e), this._removeClass(t.find(".ui-state-active"), null, "ui-state-active"), this.activeMenu = t
            }, this.delay)
        },
        _close: function(t) {
            (t = t || (this.active ? this.active.parent() : this.element)).find(".ui-menu").hide().attr("aria-hidden", "true").attr("aria-expanded", "false")
        },
        _closeOnDocumentClick: function(t) {
            return !k(t.target).closest(".ui-menu").length
        },
        _isDivider: function(t) {
            return !/[^\-\u2014\u2013\s]/.test(t.text())
        },
        collapse: function(t) {
            var e = this.active && this.active.parent().closest(".ui-menu-item", this.element);
            e && e.length && (this._close(), this.focus(t, e))
        },
        expand: function(t) {
            var e = this.active && this.active.children(".ui-menu ").find(this.options.items).first();
            e && e.length && (this._open(e.parent()), this._delay(function() {
                this.focus(t, e)
            }))
        },
        next: function(t) {
            this._move("next", "first", t)
        },
        previous: function(t) {
            this._move("prev", "last", t)
        },
        isFirstItem: function() {
            return this.active && !this.active.prevAll(".ui-menu-item").length
        },
        isLastItem: function() {
            return this.active && !this.active.nextAll(".ui-menu-item").length
        },
        _move: function(t, e, i) {
            var s;
            (s = this.active ? "first" === t || "last" === t ? this.active["first" === t ? "prevAll" : "nextAll"](".ui-menu-item").eq(-1) : this.active[t + "All"](".ui-menu-item").eq(0) : s) && s.length && this.active || (s = this.activeMenu.find(this.options.items)[e]()), this.focus(i, s)
        },
        nextPage: function(t) {
            var e, i, s;
            this.active ? this.isLastItem() || (this._hasScroll() ? (i = this.active.offset().top, s = this.element.height(), this.active.nextAll(".ui-menu-item").each(function() {
                return (e = k(this)).offset().top - i - s < 0
            }), this.focus(t, e)) : this.focus(t, this.activeMenu.find(this.options.items)[this.active ? "last" : "first"]())) : this.next(t)
        },
        previousPage: function(t) {
            var e, i, s;
            this.active ? this.isFirstItem() || (this._hasScroll() ? (i = this.active.offset().top, s = this.element.height(), this.active.prevAll(".ui-menu-item").each(function() {
                return 0 < (e = k(this)).offset().top - i + s
            }), this.focus(t, e)) : this.focus(t, this.activeMenu.find(this.options.items).first())) : this.next(t)
        },
        _hasScroll: function() {
            return this.element.outerHeight() < this.element.prop("scrollHeight")
        },
        select: function(t) {
            this.active = this.active || k(t.target).closest(".ui-menu-item");
            var e = {
                item: this.active
            };
            this.active.has(".ui-menu").length || this.collapseAll(t, !0), this._trigger("select", t, e)
        },
        _filterMenuItems: function(t) {
            var t = t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&"),
                e = new RegExp("^" + t, "i");
            return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function() {
                return e.test(k.trim(k(this).children(".ui-menu-item-wrapper").text()))
            })
        }
    });
    k.widget("ui.autocomplete", {
        version: "1.12.1",
        defaultElement: "<input>",
        options: {
            appendTo: null,
            autoFocus: !1,
            delay: 300,
            minLength: 1,
            position: {
                my: "left top",
                at: "left bottom",
                collision: "none"
            },
            source: null,
            change: null,
            close: null,
            focus: null,
            open: null,
            response: null,
            search: null,
            select: null
        },
        requestIndex: 0,
        pending: 0,
        _create: function() {
            var i, s, n, t = this.element[0].nodeName.toLowerCase(),
                e = "textarea" === t,
                t = "input" === t;
            this.isMultiLine = e || !t && this._isContentEditable(this.element), this.valueMethod = this.element[e || t ? "val" : "text"], this.isNewMenu = !0, this._addClass("ui-autocomplete-input"), this.element.attr("autocomplete", "off"), this._on(this.element, {
                keydown: function(t) {
                    if (this.element.prop("readOnly")) s = n = i = !0;
                    else {
                        s = n = i = !1;
                        var e = k.ui.keyCode;
                        switch (t.keyCode) {
                            case e.PAGE_UP:
                                i = !0, this._move("previousPage", t);
                                break;
                            case e.PAGE_DOWN:
                                i = !0, this._move("nextPage", t);
                                break;
                            case e.UP:
                                i = !0, this._keyEvent("previous", t);
                                break;
                            case e.DOWN:
                                i = !0, this._keyEvent("next", t);
                                break;
                            case e.ENTER:
                                this.menu.active && (i = !0, t.preventDefault(), this.menu.select(t));
                                break;
                            case e.TAB:
                                this.menu.active && this.menu.select(t);
                                break;
                            case e.ESCAPE:
                                this.menu.element.is(":visible") && (this.isMultiLine || this._value(this.term), this.close(t), t.preventDefault());
                                break;
                            default:
                                s = !0, this._searchTimeout(t)
                        }
                    }
                },
                keypress: function(t) {
                    if (i) return i = !1, void(this.isMultiLine && !this.menu.element.is(":visible") || t.preventDefault());
                    if (!s) {
                        var e = k.ui.keyCode;
                        switch (t.keyCode) {
                            case e.PAGE_UP:
                                this._move("previousPage", t);
                                break;
                            case e.PAGE_DOWN:
                                this._move("nextPage", t);
                                break;
                            case e.UP:
                                this._keyEvent("previous", t);
                                break;
                            case e.DOWN:
                                this._keyEvent("next", t)
                        }
                    }
                },
                input: function(t) {
                    if (n) return n = !1, void t.preventDefault();
                    this._searchTimeout(t)
                },
                focus: function() {
                    this.selectedItem = null, this.previous = this._value()
                },
                blur: function(t) {
                    this.cancelBlur ? delete this.cancelBlur : (clearTimeout(this.searching), this.close(t), this._change(t))
                }
            }), this._initSource(), this.menu = k("<ul>").appendTo(this._appendTo()).menu({
                role: null
            }).hide().menu("instance"), this._addClass(this.menu.element, "ui-autocomplete", "ui-front"), this._on(this.menu.element, {
                mousedown: function(t) {
                    t.preventDefault(), this.cancelBlur = !0, this._delay(function() {
                        delete this.cancelBlur, this.element[0] !== k.ui.safeActiveElement(this.document[0]) && this.element.trigger("focus")
                    })
                },
                menufocus: function(t, e) {
                    var i;
                    if (this.isNewMenu && (this.isNewMenu = !1, t.originalEvent && /^mouse/.test(t.originalEvent.type))) return this.menu.blur(), void this.document.one("mousemove", function() {
                        k(t.target).trigger(t.originalEvent)
                    });
                    i = e.item.data("ui-autocomplete-item"), !1 !== this._trigger("focus", t, {
                        item: i
                    }) && t.originalEvent && /^key/.test(t.originalEvent.type) && this._value(i.value), (i = e.item.attr("aria-label") || i.value) && k.trim(i).length && (this.liveRegion.children().hide(), k("<div>").text(i).appendTo(this.liveRegion))
                },
                menuselect: function(t, e) {
                    var i = e.item.data("ui-autocomplete-item"),
                        s = this.previous;
                    this.element[0] !== k.ui.safeActiveElement(this.document[0]) && (this.element.trigger("focus"), this.previous = s, this._delay(function() {
                        this.previous = s, this.selectedItem = i
                    })), !1 !== this._trigger("select", t, {
                        item: i
                    }) && this._value(i.value), this.term = this._value(), this.close(t), this.selectedItem = i
                }
            }), this.liveRegion = k("<div>", {
                role: "status",
                "aria-live": "assertive",
                "aria-relevant": "additions"
            }).appendTo(this.document[0].body), this._addClass(this.liveRegion, null, "ui-helper-hidden-accessible"), this._on(this.window, {
                beforeunload: function() {
                    this.element.removeAttr("autocomplete")
                }
            })
        },
        _destroy: function() {
            clearTimeout(this.searching), this.element.removeAttr("autocomplete"), this.menu.element.remove(), this.liveRegion.remove()
        },
        _setOption: function(t, e) {
            this._super(t, e), "source" === t && this._initSource(), "appendTo" === t && this.menu.element.appendTo(this._appendTo()), "disabled" === t && e && this.xhr && this.xhr.abort()
        },
        _isEventTargetInWidget: function(t) {
            var e = this.menu.element[0];
            return t.target === this.element[0] || t.target === e || k.contains(e, t.target)
        },
        _closeOnClickOutside: function(t) {
            this._isEventTargetInWidget(t) || this.close()
        },
        _appendTo: function() {
            var t = this.options.appendTo;
            return t = !(t = !(t = t && (t.jquery || t.nodeType ? k(t) : this.document.find(t).eq(0))) || !t[0] ? this.element.closest(".ui-front, dialog") : t).length ? this.document[0].body : t
        },
        _initSource: function() {
            var i, s, n = this;
            k.isArray(this.options.source) ? (i = this.options.source, this.source = function(t, e) {
                e(k.ui.autocomplete.filter(i, t.term))
            }) : "string" == typeof this.options.source ? (s = this.options.source, this.source = function(t, e) {
                n.xhr && n.xhr.abort(), n.xhr = k.ajax({
                    url: s,
                    data: t,
                    dataType: "json",
                    success: function(t) {
                        e(t)
                    },
                    error: function() {
                        e([])
                    }
                })
            }) : this.source = this.options.source
        },
        _searchTimeout: function(s) {
            clearTimeout(this.searching), this.searching = this._delay(function() {
                var t = this.term === this._value(),
                    e = this.menu.element.is(":visible"),
                    i = s.altKey || s.ctrlKey || s.metaKey || s.shiftKey;
                t && (e || i) || (this.selectedItem = null, this.search(null, s))
            }, this.options.delay)
        },
        search: function(t, e) {
            return t = null != t ? t : this._value(), this.term = this._value(), t.length < this.options.minLength ? this.close(e) : !1 !== this._trigger("search", e) ? this._search(t) : void 0
        },
        _search: function(t) {
            this.pending++, this._addClass("ui-autocomplete-loading"), this.cancelSearch = !1, this.source({
                term: t
            }, this._response())
        },
        _response: function() {
            var e = ++this.requestIndex;
            return k.proxy(function(t) {
                e === this.requestIndex && this.__response(t), this.pending--, this.pending || this._removeClass("ui-autocomplete-loading")
            }, this)
        },
        __response: function(t) {
            t = t && this._normalize(t), this._trigger("response", null, {
                content: t
            }), !this.options.disabled && t && t.length && !this.cancelSearch ? (this._suggest(t), this._trigger("open")) : this._close()
        },
        close: function(t) {
            this.cancelSearch = !0, this._close(t)
        },
        _close: function(t) {
            this._off(this.document, "mousedown"), this.menu.element.is(":visible") && (this.menu.element.hide(), this.menu.blur(), this.isNewMenu = !0, this._trigger("close", t))
        },
        _change: function(t) {
            this.previous !== this._value() && this._trigger("change", t, {
                item: this.selectedItem
            })
        },
        _normalize: function(t) {
            return t.length && t[0].label && t[0].value ? t : k.map(t, function(t) {
                return "string" == typeof t ? {
                    label: t,
                    value: t
                } : k.extend({}, t, {
                    label: t.label || t.value,
                    value: t.value || t.label
                })
            })
        },
        _suggest: function(t) {
            var e = this.menu.element.empty();
            this._renderMenu(e, t), this.isNewMenu = !0, this.menu.refresh(), e.show(), this._resizeMenu(), e.position(k.extend({
                of: this.element
            }, this.options.position)), this.options.autoFocus && this.menu.next(), this._on(this.document, {
                mousedown: "_closeOnClickOutside"
            })
        },
        _resizeMenu: function() {
            var t = this.menu.element;
            t.outerWidth(Math.max(t.width("").outerWidth() + 1, this.element.outerWidth()))
        },
        _renderMenu: function(i, t) {
            var s = this;
            k.each(t, function(t, e) {
                s._renderItemData(i, e)
            })
        },
        _renderItemData: function(t, e) {
            return this._renderItem(t, e).data("ui-autocomplete-item", e)
        },
        _renderItem: function(t, e) {
            return k("<li>").append(k("<div>").text(e.label)).appendTo(t)
        },
        _move: function(t, e) {
            if (this.menu.element.is(":visible")) return this.menu.isFirstItem() && /^previous/.test(t) || this.menu.isLastItem() && /^next/.test(t) ? (this.isMultiLine || this._value(this.term), void this.menu.blur()) : void this.menu[t](e);
            this.search(null, e)
        },
        widget: function() {
            return this.menu.element
        },
        _value: function() {
            return this.valueMethod.apply(this.element, arguments)
        },
        _keyEvent: function(t, e) {
            this.isMultiLine && !this.menu.element.is(":visible") || (this._move(t, e), e.preventDefault())
        },
        _isContentEditable: function(t) {
            if (!t.length) return !1;
            var e = t.prop("contentEditable");
            return "inherit" === e ? this._isContentEditable(t.parent()) : "true" === e
        }
    }), k.extend(k.ui.autocomplete, {
        escapeRegex: function(t) {
            return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&")
        },
        filter: function(t, e) {
            var i = new RegExp(k.ui.autocomplete.escapeRegex(e), "i");
            return k.grep(t, function(t) {
                return i.test(t.label || t.value || t)
            })
        }
    }), k.widget("ui.autocomplete", k.ui.autocomplete, {
        options: {
            messages: {
                noResults: "No search results.",
                results: function(t) {
                    return t + (1 < t ? " results are" : " result is") + " available, use up and down arrow keys to navigate."
                }
            }
        },
        __response: function(t) {
            var e;
            this._superApply(arguments), this.options.disabled || this.cancelSearch || (e = t && t.length ? this.options.messages.results(t.length) : this.options.messages.noResults, this.liveRegion.children().hide(), k("<div>").text(e).appendTo(this.liveRegion))
        }
    });
    k.ui.autocomplete;
    var g = /ui-corner-([a-z]){2,6}/g;
    k.widget("ui.controlgroup", {
        version: "1.12.1",
        defaultElement: "<div>",
        options: {
            direction: "horizontal",
            disabled: null,
            onlyVisible: !0,
            items: {
                button: "input[type=button], input[type=submit], input[type=reset], button, a",
                controlgroupLabel: ".ui-controlgroup-label",
                checkboxradio: "input[type='checkbox'], input[type='radio']",
                selectmenu: "select",
                spinner: ".ui-spinner-input"
            }
        },
        _create: function() {
            this._enhance()
        },
        _enhance: function() {
            this.element.attr("role", "toolbar"), this.refresh()
        },
        _destroy: function() {
            this._callChildMethod("destroy"), this.childWidgets.removeData("ui-controlgroup-data"), this.element.removeAttr("role"), this.options.items.controlgroupLabel && this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()
        },
        _initWidgets: function() {
            var o = this,
                a = [];
            k.each(this.options.items, function(s, t) {
                var e, n = {};
                if (t) return "controlgroupLabel" === s ? ((e = o.element.find(t)).each(function() {
                    var t = k(this);
                    t.children(".ui-controlgroup-label-contents").length || t.contents().wrapAll("<span class='ui-controlgroup-label-contents'></span>")
                }), o._addClass(e, null, "ui-widget ui-widget-content ui-state-default"), void(a = a.concat(e.get()))) : void(k.fn[s] && (n = o["_" + s + "Options"] ? o["_" + s + "Options"]("middle") : {
                    classes: {}
                }, o.element.find(t).each(function() {
                    var t = k(this),
                        e = t[s]("instance"),
                        i = k.widget.extend({}, n);
                    "button" === s && t.parent(".ui-spinner").length || ((e = e || t[s]()[s]("instance")) && (i.classes = o._resolveClassesValues(i.classes, e)), t[s](i), i = t[s]("widget"), k.data(i[0], "ui-controlgroup-data", e || t[s]("instance")), a.push(i[0]))
                })))
            }), this.childWidgets = k(k.unique(a)), this._addClass(this.childWidgets, "ui-controlgroup-item")
        },
        _callChildMethod: function(e) {
            this.childWidgets.each(function() {
                var t = k(this).data("ui-controlgroup-data");
                t && t[e] && t[e]()
            })
        },
        _updateCornerClass: function(t, e) {
            e = this._buildSimpleOptions(e, "label").classes.label;
            this._removeClass(t, null, "ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all"), this._addClass(t, null, e)
        },
        _buildSimpleOptions: function(t, e) {
            var i = "vertical" === this.options.direction,
                s = {
                    classes: {}
                };
            return s.classes[e] = {
                middle: "",
                first: "ui-corner-" + (i ? "top" : "left"),
                last: "ui-corner-" + (i ? "bottom" : "right"),
                only: "ui-corner-all"
            }[t], s
        },
        _spinnerOptions: function(t) {
            t = this._buildSimpleOptions(t, "ui-spinner");
            return t.classes["ui-spinner-up"] = "", t.classes["ui-spinner-down"] = "", t
        },
        _buttonOptions: function(t) {
            return this._buildSimpleOptions(t, "ui-button")
        },
        _checkboxradioOptions: function(t) {
            return this._buildSimpleOptions(t, "ui-checkboxradio-label")
        },
        _selectmenuOptions: function(t) {
            var e = "vertical" === this.options.direction;
            return {
                width: e && "auto",
                classes: {
                    middle: {
                        "ui-selectmenu-button-open": "",
                        "ui-selectmenu-button-closed": ""
                    },
                    first: {
                        "ui-selectmenu-button-open": "ui-corner-" + (e ? "top" : "tl"),
                        "ui-selectmenu-button-closed": "ui-corner-" + (e ? "top" : "left")
                    },
                    last: {
                        "ui-selectmenu-button-open": e ? "" : "ui-corner-tr",
                        "ui-selectmenu-button-closed": "ui-corner-" + (e ? "bottom" : "right")
                    },
                    only: {
                        "ui-selectmenu-button-open": "ui-corner-top",
                        "ui-selectmenu-button-closed": "ui-corner-all"
                    }
                }[t]
            }
        },
        _resolveClassesValues: function(i, s) {
            var n = {};
            return k.each(i, function(t) {
                var e = s.options.classes[t] || "",
                    e = k.trim(e.replace(g, ""));
                n[t] = (e + " " + i[t]).replace(/\s+/g, " ")
            }), n
        },
        _setOption: function(t, e) {
            "direction" === t && this._removeClass("ui-controlgroup-" + this.options.direction), this._super(t, e), "disabled" !== t ? this.refresh() : this._callChildMethod(e ? "disable" : "enable")
        },
        refresh: function() {
            var n, o = this;
            this._addClass("ui-controlgroup ui-controlgroup-" + this.options.direction), "horizontal" === this.options.direction && this._addClass(null, "ui-helper-clearfix"), this._initWidgets(), n = this.childWidgets, (n = this.options.onlyVisible ? n.filter(":visible") : n).length && (k.each(["first", "last"], function(t, e) {
                var i, s = n[e]().data("ui-controlgroup-data");
                s && o["_" + s.widgetName + "Options"] ? ((i = o["_" + s.widgetName + "Options"](1 === n.length ? "only" : e)).classes = o._resolveClassesValues(i.classes, s), s.element[s.widgetName](i)) : o._updateCornerClass(n[e](), e)
            }), this._callChildMethod("refresh"))
        }
    });
    k.widget("ui.checkboxradio", [k.ui.formResetMixin, {
        version: "1.12.1",
        options: {
            disabled: null,
            label: null,
            icon: !0,
            classes: {
                "ui-checkboxradio-label": "ui-corner-all",
                "ui-checkboxradio-icon": "ui-corner-all"
            }
        },
        _getCreateOptions: function() {
            var t, e = this,
                i = this._super() || {};
            return this._readType(), t = this.element.labels(), this.label = k(t[t.length - 1]), this.label.length || k.error("No label found for checkboxradio widget"), this.originalLabel = "", this.label.contents().not(this.element[0]).each(function() {
                e.originalLabel += 3 === this.nodeType ? k(this).text() : this.outerHTML
            }), this.originalLabel && (i.label = this.originalLabel), null != (t = this.element[0].disabled) && (i.disabled = t), i
        },
        _create: function() {
            var t = this.element[0].checked;
            this._bindFormResetHandler(), null == this.options.disabled && (this.options.disabled = this.element[0].disabled), this._setOption("disabled", this.options.disabled), this._addClass("ui-checkboxradio", "ui-helper-hidden-accessible"), this._addClass(this.label, "ui-checkboxradio-label", "ui-button ui-widget"), "radio" === this.type && this._addClass(this.label, "ui-checkboxradio-radio-label"), this.options.label && this.options.label !== this.originalLabel ? this._updateLabel() : this.originalLabel && (this.options.label = this.originalLabel), this._enhance(), t && (this._addClass(this.label, "ui-checkboxradio-checked", "ui-state-active"), this.icon && this._addClass(this.icon, null, "ui-state-hover")), this._on({
                change: "_toggleClasses",
                focus: function() {
                    this._addClass(this.label, null, "ui-state-focus ui-visual-focus")
                },
                blur: function() {
                    this._removeClass(this.label, null, "ui-state-focus ui-visual-focus")
                }
            })
        },
        _readType: function() {
            var t = this.element[0].nodeName.toLowerCase();
            this.type = this.element[0].type, "input" === t && /radio|checkbox/.test(this.type) || k.error("Can't create checkboxradio on element.nodeName=" + t + " and element.type=" + this.type)
        },
        _enhance: function() {
            this._updateIcon(this.element[0].checked)
        },
        widget: function() {
            return this.label
        },
        _getRadioGroup: function() {
            var t = this.element[0].name,
                e = "input[name='" + k.ui.escapeSelector(t) + "']";
            return t ? (this.form.length ? k(this.form[0].elements).filter(e) : k(e).filter(function() {
                return 0 === k(this).form().length
            })).not(this.element) : k([])
        },
        _toggleClasses: function() {
            var t = this.element[0].checked;
            this._toggleClass(this.label, "ui-checkboxradio-checked", "ui-state-active", t), this.options.icon && "checkbox" === this.type && this._toggleClass(this.icon, null, "ui-icon-check ui-state-checked", t)._toggleClass(this.icon, null, "ui-icon-blank", !t), "radio" === this.type && this._getRadioGroup().each(function() {
                var t = k(this).checkboxradio("instance");
                t && t._removeClass(t.label, "ui-checkboxradio-checked", "ui-state-active")
            })
        },
        _destroy: function() {
            this._unbindFormResetHandler(), this.icon && (this.icon.remove(), this.iconSpace.remove())
        },
        _setOption: function(t, e) {
            if ("label" !== t || e) {
                if (this._super(t, e), "disabled" === t) return this._toggleClass(this.label, null, "ui-state-disabled", e), void(this.element[0].disabled = e);
                this.refresh()
            }
        },
        _updateIcon: function(t) {
            var e = "ui-icon ui-icon-background ";
            this.options.icon ? (this.icon || (this.icon = k("<span>"), this.iconSpace = k("<span> </span>"), this._addClass(this.iconSpace, "ui-checkboxradio-icon-space")), "checkbox" === this.type ? (e += t ? "ui-icon-check ui-state-checked" : "ui-icon-blank", this._removeClass(this.icon, null, t ? "ui-icon-blank" : "ui-icon-check")) : e += "ui-icon-blank", this._addClass(this.icon, "ui-checkboxradio-icon", e), t || this._removeClass(this.icon, null, "ui-icon-check ui-state-checked"), this.icon.prependTo(this.label).after(this.iconSpace)) : void 0 !== this.icon && (this.icon.remove(), this.iconSpace.remove(), delete this.icon)
        },
        _updateLabel: function() {
            var t = this.label.contents().not(this.element[0]);
            this.icon && (t = t.not(this.icon[0])), (t = this.iconSpace ? t.not(this.iconSpace[0]) : t).remove(), this.label.append(this.options.label)
        },
        refresh: function() {
            var t = this.element[0].checked,
                e = this.element[0].disabled;
            this._updateIcon(t), this._toggleClass(this.label, "ui-checkboxradio-checked", "ui-state-active", t), null !== this.options.label && this._updateLabel(), e !== this.options.disabled && this._setOptions({
                disabled: e
            })
        }
    }]);
    var m;
    k.ui.checkboxradio;
    k.widget("ui.button", {
        version: "1.12.1",
        defaultElement: "<button>",
        options: {
            classes: {
                "ui-button": "ui-corner-all"
            },
            disabled: null,
            icon: null,
            iconPosition: "beginning",
            label: null,
            showLabel: !0
        },
        _getCreateOptions: function() {
            var t, e = this._super() || {};
            return this.isInput = this.element.is("input"), null != (t = this.element[0].disabled) && (e.disabled = t), this.originalLabel = this.isInput ? this.element.val() : this.element.html(), this.originalLabel && (e.label = this.originalLabel), e
        },
        _create: function() {
            !this.option.showLabel & !this.options.icon && (this.options.showLabel = !0), null == this.options.disabled && (this.options.disabled = this.element[0].disabled || !1), this.hasTitle = !!this.element.attr("title"), this.options.label && this.options.label !== this.originalLabel && (this.isInput ? this.element.val(this.options.label) : this.element.html(this.options.label)), this._addClass("ui-button", "ui-widget"), this._setOption("disabled", this.options.disabled), this._enhance(), this.element.is("a") && this._on({
                keyup: function(t) {
                    t.keyCode === k.ui.keyCode.SPACE && (t.preventDefault(), this.element[0].click ? this.element[0].click() : this.element.trigger("click"))
                }
            })
        },
        _enhance: function() {
            this.element.is("button") || this.element.attr("role", "button"), this.options.icon && (this._updateIcon("icon", this.options.icon), this._updateTooltip())
        },
        _updateTooltip: function() {
            this.title = this.element.attr("title"), this.options.showLabel || this.title || this.element.attr("title", this.options.label)
        },
        _updateIcon: function(t, e) {
            var i = "iconPosition" !== t,
                s = i ? this.options.iconPosition : e,
                t = "top" === s || "bottom" === s;
            this.icon ? i && this._removeClass(this.icon, null, this.options.icon) : (this.icon = k("<span>"), this._addClass(this.icon, "ui-button-icon", "ui-icon"), this.options.showLabel || this._addClass("ui-button-icon-only")), i && this._addClass(this.icon, null, e), this._attachIcon(s), t ? (this._addClass(this.icon, null, "ui-widget-icon-block"), this.iconSpace && this.iconSpace.remove()) : (this.iconSpace || (this.iconSpace = k("<span> </span>"), this._addClass(this.iconSpace, "ui-button-icon-space")), this._removeClass(this.icon, null, "ui-wiget-icon-block"), this._attachIconSpace(s))
        },
        _destroy: function() {
            this.element.removeAttr("role"), this.icon && this.icon.remove(), this.iconSpace && this.iconSpace.remove(), this.hasTitle || this.element.removeAttr("title")
        },
        _attachIconSpace: function(t) {
            this.icon[/^(?:end|bottom)/.test(t) ? "before" : "after"](this.iconSpace)
        },
        _attachIcon: function(t) {
            this.element[/^(?:end|bottom)/.test(t) ? "append" : "prepend"](this.icon)
        },
        _setOptions: function(t) {
            var e = (void 0 === t.showLabel ? this.options : t).showLabel,
                i = (void 0 === t.icon ? this.options : t).icon;
            e || i || (t.showLabel = !0), this._super(t)
        },
        _setOption: function(t, e) {
            "icon" === t && (e ? this._updateIcon(t, e) : this.icon && (this.icon.remove(), this.iconSpace && this.iconSpace.remove())), "iconPosition" === t && this._updateIcon(t, e), "showLabel" === t && (this._toggleClass("ui-button-icon-only", null, !e), this._updateTooltip()), "label" === t && (this.isInput ? this.element.val(e) : (this.element.html(e), this.icon && (this._attachIcon(this.options.iconPosition), this._attachIconSpace(this.options.iconPosition)))), this._super(t, e), "disabled" === t && (this._toggleClass(null, "ui-state-disabled", e), (this.element[0].disabled = e) && this.element.blur())
        },
        refresh: function() {
            var t = this.element.is("input, button") ? this.element[0].disabled : this.element.hasClass("ui-button-disabled");
            t !== this.options.disabled && this._setOptions({
                disabled: t
            }), this._updateTooltip()
        }
    }), !1 !== k.uiBackCompat && (k.widget("ui.button", k.ui.button, {
        options: {
            text: !0,
            icons: {
                primary: null,
                secondary: null
            }
        },
        _create: function() {
            this.options.showLabel && !this.options.text && (this.options.showLabel = this.options.text), !this.options.showLabel && this.options.text && (this.options.text = this.options.showLabel), this.options.icon || !this.options.icons.primary && !this.options.icons.secondary ? this.options.icon && (this.options.icons.primary = this.options.icon) : this.options.icons.primary ? this.options.icon = this.options.icons.primary : (this.options.icon = this.options.icons.secondary, this.options.iconPosition = "end"), this._super()
        },
        _setOption: function(t, e) {
            "text" !== t ? ("showLabel" === t && (this.options.text = e), "icon" === t && (this.options.icons.primary = e), "icons" === t && (e.primary ? (this._super("icon", e.primary), this._super("iconPosition", "beginning")) : e.secondary && (this._super("icon", e.secondary), this._super("iconPosition", "end"))), this._superApply(arguments)) : this._super("showLabel", e)
        }
    }), k.fn.button = (m = k.fn.button, function() {
        return !this.length || this.length && "INPUT" !== this[0].tagName || this.length && "INPUT" === this[0].tagName && "checkbox" !== this.attr("type") && "radio" !== this.attr("type") ? m.apply(this, arguments) : (k.ui.checkboxradio || k.error("Checkboxradio widget missing"), 0 === arguments.length ? this.checkboxradio({
            icon: !1
        }) : this.checkboxradio.apply(this, arguments))
    }), k.fn.buttonset = function() {
        return k.ui.controlgroup || k.error("Controlgroup widget missing"), "option" === arguments[0] && "items" === arguments[1] && arguments[2] ? this.controlgroup.apply(this, [arguments[0], "items.button", arguments[2]]) : "option" === arguments[0] && "items" === arguments[1] ? this.controlgroup.apply(this, [arguments[0], "items.button"]) : ("object" == typeof arguments[0] && arguments[0].items && (arguments[0].items = {
            button: arguments[0].items
        }), this.controlgroup.apply(this, arguments))
    });
    var _;
    k.ui.button;

    function v() {
        this._curInst = null, this._keyEvent = !1, this._disabledInputs = [], this._datepickerShowing = !1, this._inDialog = !1, this._mainDivId = "ui-datepicker-div", this._inlineClass = "ui-datepicker-inline", this._appendClass = "ui-datepicker-append", this._triggerClass = "ui-datepicker-trigger", this._dialogClass = "ui-datepicker-dialog", this._disableClass = "ui-datepicker-disabled", this._unselectableClass = "ui-datepicker-unselectable", this._currentClass = "ui-datepicker-current-day", this._dayOverClass = "ui-datepicker-days-cell-over", this.regional = [], this.regional[""] = {
            closeText: "Done",
            prevText: "Prev",
            nextText: "Next",
            currentText: "Today",
            monthNames: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
            monthNamesShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
            dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
            dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
            dayNamesMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
            weekHeader: "Wk",
            dateFormat: "mm/dd/yy",
            firstDay: 0,
            isRTL: !1,
            showMonthAfterYear: !1,
            yearSuffix: ""
        }, this._defaults = {
            showOn: "focus",
            showAnim: "fadeIn",
            showOptions: {},
            defaultDate: null,
            appendText: "",
            buttonText: "...",
            buttonImage: "",
            buttonImageOnly: !1,
            hideIfNoPrevNext: !1,
            navigationAsDateFormat: !1,
            gotoCurrent: !1,
            changeMonth: !1,
            changeYear: !1,
            yearRange: "c-10:c+10",
            showOtherMonths: !1,
            selectOtherMonths: !1,
            showWeek: !1,
            calculateWeek: this.iso8601Week,
            shortYearCutoff: "+10",
            minDate: null,
            maxDate: null,
            duration: "fast",
            beforeShowDay: null,
            beforeShow: null,
            onSelect: null,
            onChangeMonthYear: null,
            onClose: null,
            numberOfMonths: 1,
            showCurrentAtPos: 0,
            stepMonths: 1,
            stepBigMonths: 12,
            altField: "",
            altFormat: "",
            constrainInput: !0,
            showButtonPanel: !1,
            autoSize: !1,
            disabled: !1
        }, k.extend(this._defaults, this.regional[""]), this.regional.en = k.extend(!0, {}, this.regional[""]), this.regional["en-US"] = k.extend(!0, {}, this.regional.en), this.dpDiv = b(k("<div id='" + this._mainDivId + "' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))
    }

    function b(t) {
        var e = "button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";
        return t.on("mouseout", e, function() {
            k(this).removeClass("ui-state-hover"), -1 !== this.className.indexOf("ui-datepicker-prev") && k(this).removeClass("ui-datepicker-prev-hover"), -1 !== this.className.indexOf("ui-datepicker-next") && k(this).removeClass("ui-datepicker-next-hover")
        }).on("mouseover", e, y)
    }

    function y() {
        k.datepicker._isDisabledDatepicker((_.inline ? _.dpDiv.parent() : _.input)[0]) || (k(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"), k(this).addClass("ui-state-hover"), -1 !== this.className.indexOf("ui-datepicker-prev") && k(this).addClass("ui-datepicker-prev-hover"), -1 !== this.className.indexOf("ui-datepicker-next") && k(this).addClass("ui-datepicker-next-hover"))
    }

    function w(t, e) {
        for (var i in k.extend(t, e), e) null == e[i] && (t[i] = e[i]);
        return t
    }
    k.extend(k.ui, {
        datepicker: {
            version: "1.12.1"
        }
    }), k.extend(v.prototype, {
        markerClassName: "hasDatepicker",
        maxRows: 4,
        _widgetDatepicker: function() {
            return this.dpDiv
        },
        setDefaults: function(t) {
            return w(this._defaults, t || {}), this
        },
        _attachDatepicker: function(t, e) {
            var i, s = t.nodeName.toLowerCase(),
                n = "div" === s || "span" === s;
            t.id || (this.uuid += 1, t.id = "dp" + this.uuid), (i = this._newInst(k(t), n)).settings = k.extend({}, e || {}), "input" === s ? this._connectDatepicker(t, i) : n && this._inlineDatepicker(t, i)
        },
        _newInst: function(t, e) {
            return {
                id: t[0].id.replace(/([^A-Za-z0-9_\-])/g, "\\\\$1"),
                input: t,
                selectedDay: 0,
                selectedMonth: 0,
                selectedYear: 0,
                drawMonth: 0,
                drawYear: 0,
                inline: e,
                dpDiv: e ? b(k("<div class='" + this._inlineClass + " ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")) : this.dpDiv
            }
        },
        _connectDatepicker: function(t, e) {
            var i = k(t);
            e.append = k([]), e.trigger = k([]), i.hasClass(this.markerClassName) || (this._attachments(i, e), i.addClass(this.markerClassName).on("keydown", this._doKeyDown).on("keypress", this._doKeyPress).on("keyup", this._doKeyUp), this._autoSize(e), k.data(t, "datepicker", e), e.settings.disabled && this._disableDatepicker(t))
        },
        _attachments: function(t, e) {
            var i, s = this._get(e, "appendText"),
                n = this._get(e, "isRTL");
            e.append && e.append.remove(), s && (e.append = k("<span class='" + this._appendClass + "'>" + s + "</span>"), t[n ? "before" : "after"](e.append)), t.off("focus", this._showDatepicker), e.trigger && e.trigger.remove(), "focus" !== (i = this._get(e, "showOn")) && "both" !== i || t.on("focus", this._showDatepicker), "button" !== i && "both" !== i || (s = this._get(e, "buttonText"), i = this._get(e, "buttonImage"), e.trigger = k(this._get(e, "buttonImageOnly") ? k("<img/>").addClass(this._triggerClass).attr({
                src: i,
                alt: s,
                title: s
            }) : k("<button type='button'></button>").addClass(this._triggerClass).html(i ? k("<img/>").attr({
                src: i,
                alt: s,
                title: s
            }) : s)), t[n ? "before" : "after"](e.trigger), e.trigger.on("click", function() {
                return k.datepicker._datepickerShowing && k.datepicker._lastInput === t[0] ? k.datepicker._hideDatepicker() : (k.datepicker._datepickerShowing && k.datepicker._lastInput !== t[0] && k.datepicker._hideDatepicker(), k.datepicker._showDatepicker(t[0])), !1
            }))
        },
        _autoSize: function(t) {
            var e, i, s, n, o, a;
            this._get(t, "autoSize") && !t.inline && (o = new Date(2009, 11, 20), (a = this._get(t, "dateFormat")).match(/[DM]/) && (e = function(t) {
                for (n = s = i = 0; n < t.length; n++) t[n].length > i && (i = t[n].length, s = n);
                return s
            }, o.setMonth(e(this._get(t, a.match(/MM/) ? "monthNames" : "monthNamesShort"))), o.setDate(e(this._get(t, a.match(/DD/) ? "dayNames" : "dayNamesShort")) + 20 - o.getDay())), t.input.attr("size", this._formatDate(t, o).length))
        },
        _inlineDatepicker: function(t, e) {
            var i = k(t);
            i.hasClass(this.markerClassName) || (i.addClass(this.markerClassName).append(e.dpDiv), k.data(t, "datepicker", e), this._setDate(e, this._getDefaultDate(e), !0), this._updateDatepicker(e), this._updateAlternate(e), e.settings.disabled && this._disableDatepicker(t), e.dpDiv.css("display", "block"))
        },
        _dialogDatepicker: function(t, e, i, s, n) {
            var o, a = this._dialogInst;
            return a || (this.uuid += 1, o = "dp" + this.uuid, this._dialogInput = k("<input type='text' id='" + o + "' style='position: absolute; top: -100px; width: 0px;'/>"), this._dialogInput.on("keydown", this._doKeyDown), k("body").append(this._dialogInput), (a = this._dialogInst = this._newInst(this._dialogInput, !1)).settings = {}, k.data(this._dialogInput[0], "datepicker", a)), w(a.settings, s || {}), e = e && e.constructor === Date ? this._formatDate(a, e) : e, this._dialogInput.val(e), this._pos = n ? n.length ? n : [n.pageX, n.pageY] : null, this._pos || (o = document.documentElement.clientWidth, s = document.documentElement.clientHeight, e = document.documentElement.scrollLeft || document.body.scrollLeft, n = document.documentElement.scrollTop || document.body.scrollTop, this._pos = [o / 2 - 100 + e, s / 2 - 150 + n]), this._dialogInput.css("left", this._pos[0] + 20 + "px").css("top", this._pos[1] + "px"), a.settings.onSelect = i, this._inDialog = !0, this.dpDiv.addClass(this._dialogClass), this._showDatepicker(this._dialogInput[0]), k.blockUI && k.blockUI(this.dpDiv), k.data(this._dialogInput[0], "datepicker", a), this
        },
        _destroyDatepicker: function(t) {
            var e, i = k(t),
                s = k.data(t, "datepicker");
            i.hasClass(this.markerClassName) && (e = t.nodeName.toLowerCase(), k.removeData(t, "datepicker"), "input" === e ? (s.append.remove(), s.trigger.remove(), i.removeClass(this.markerClassName).off("focus", this._showDatepicker).off("keydown", this._doKeyDown).off("keypress", this._doKeyPress).off("keyup", this._doKeyUp)) : "div" !== e && "span" !== e || i.removeClass(this.markerClassName).empty(), _ === s && (_ = null))
        },
        _enableDatepicker: function(e) {
            var t, i = k(e),
                s = k.data(e, "datepicker");
            i.hasClass(this.markerClassName) && ("input" === (t = e.nodeName.toLowerCase()) ? (e.disabled = !1, s.trigger.filter("button").each(function() {
                this.disabled = !1
            }).end().filter("img").css({
                opacity: "1.0",
                cursor: ""
            })) : "div" !== t && "span" !== t || ((i = i.children("." + this._inlineClass)).children().removeClass("ui-state-disabled"), i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled", !1)), this._disabledInputs = k.map(this._disabledInputs, function(t) {
                return t === e ? null : t
            }))
        },
        _disableDatepicker: function(e) {
            var t, i = k(e),
                s = k.data(e, "datepicker");
            i.hasClass(this.markerClassName) && ("input" === (t = e.nodeName.toLowerCase()) ? (e.disabled = !0, s.trigger.filter("button").each(function() {
                this.disabled = !0
            }).end().filter("img").css({
                opacity: "0.5",
                cursor: "default"
            })) : "div" !== t && "span" !== t || ((i = i.children("." + this._inlineClass)).children().addClass("ui-state-disabled"), i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled", !0)), this._disabledInputs = k.map(this._disabledInputs, function(t) {
                return t === e ? null : t
            }), this._disabledInputs[this._disabledInputs.length] = e)
        },
        _isDisabledDatepicker: function(t) {
            if (!t) return !1;
            for (var e = 0; e < this._disabledInputs.length; e++)
                if (this._disabledInputs[e] === t) return !0;
            return !1
        },
        _getInst: function(t) {
            try {
                return k.data(t, "datepicker")
            } catch (t) {
                throw "Missing instance data for this datepicker"
            }
        },
        _optionDatepicker: function(t, e, i) {
            var s, n, o, a, r = this._getInst(t);
            if (2 === arguments.length && "string" == typeof e) return "defaults" === e ? k.extend({}, k.datepicker._defaults) : r ? "all" === e ? k.extend({}, r.settings) : this._get(r, e) : null;
            s = e || {}, "string" == typeof e && ((s = {})[e] = i), r && (this._curInst === r && this._hideDatepicker(), n = this._getDateDatepicker(t, !0), o = this._getMinMaxDate(r, "min"), a = this._getMinMaxDate(r, "max"), w(r.settings, s), null !== o && void 0 !== s.dateFormat && void 0 === s.minDate && (r.settings.minDate = this._formatDate(r, o)), null !== a && void 0 !== s.dateFormat && void 0 === s.maxDate && (r.settings.maxDate = this._formatDate(r, a)), "disabled" in s && (s.disabled ? this._disableDatepicker(t) : this._enableDatepicker(t)), this._attachments(k(t), r), this._autoSize(r), this._setDate(r, n), this._updateAlternate(r), this._updateDatepicker(r))
        },
        _changeDatepicker: function(t, e, i) {
            this._optionDatepicker(t, e, i)
        },
        _refreshDatepicker: function(t) {
            t = this._getInst(t);
            t && this._updateDatepicker(t)
        },
        _setDateDatepicker: function(t, e) {
            t = this._getInst(t);
            t && (this._setDate(t, e), this._updateDatepicker(t), this._updateAlternate(t))
        },
        _getDateDatepicker: function(t, e) {
            t = this._getInst(t);
            return t && !t.inline && this._setDateFromField(t, e), t ? this._getDate(t) : null
        },
        _doKeyDown: function(t) {
            var e, i, s = k.datepicker._getInst(t.target),
                n = !0,
                o = s.dpDiv.is(".ui-datepicker-rtl");
            if (s._keyEvent = !0, k.datepicker._datepickerShowing) switch (t.keyCode) {
                case 9:
                    k.datepicker._hideDatepicker(), n = !1;
                    break;
                case 13:
                    return (i = k("td." + k.datepicker._dayOverClass + ":not(." + k.datepicker._currentClass + ")", s.dpDiv))[0] && k.datepicker._selectDay(t.target, s.selectedMonth, s.selectedYear, i[0]), (e = k.datepicker._get(s, "onSelect")) ? (i = k.datepicker._formatDate(s), e.apply(s.input ? s.input[0] : null, [i, s])) : k.datepicker._hideDatepicker(), !1;
                case 27:
                    k.datepicker._hideDatepicker();
                    break;
                case 33:
                    k.datepicker._adjustDate(t.target, t.ctrlKey ? -k.datepicker._get(s, "stepBigMonths") : -k.datepicker._get(s, "stepMonths"), "M");
                    break;
                case 34:
                    k.datepicker._adjustDate(t.target, t.ctrlKey ? +k.datepicker._get(s, "stepBigMonths") : +k.datepicker._get(s, "stepMonths"), "M");
                    break;
                case 35:
                    (t.ctrlKey || t.metaKey) && k.datepicker._clearDate(t.target), n = t.ctrlKey || t.metaKey;
                    break;
                case 36:
                    (t.ctrlKey || t.metaKey) && k.datepicker._gotoToday(t.target), n = t.ctrlKey || t.metaKey;
                    break;
                case 37:
                    (t.ctrlKey || t.metaKey) && k.datepicker._adjustDate(t.target, o ? 1 : -1, "D"), n = t.ctrlKey || t.metaKey, t.originalEvent.altKey && k.datepicker._adjustDate(t.target, t.ctrlKey ? -k.datepicker._get(s, "stepBigMonths") : -k.datepicker._get(s, "stepMonths"), "M");
                    break;
                case 38:
                    (t.ctrlKey || t.metaKey) && k.datepicker._adjustDate(t.target, -7, "D"), n = t.ctrlKey || t.metaKey;
                    break;
                case 39:
                    (t.ctrlKey || t.metaKey) && k.datepicker._adjustDate(t.target, o ? -1 : 1, "D"), n = t.ctrlKey || t.metaKey, t.originalEvent.altKey && k.datepicker._adjustDate(t.target, t.ctrlKey ? +k.datepicker._get(s, "stepBigMonths") : +k.datepicker._get(s, "stepMonths"), "M");
                    break;
                case 40:
                    (t.ctrlKey || t.metaKey) && k.datepicker._adjustDate(t.target, 7, "D"), n = t.ctrlKey || t.metaKey;
                    break;
                default:
                    n = !1
            } else 36 === t.keyCode && t.ctrlKey ? k.datepicker._showDatepicker(this) : n = !1;
            n && (t.preventDefault(), t.stopPropagation())
        },
        _doKeyPress: function(t) {
            var e, i = k.datepicker._getInst(t.target);
            if (k.datepicker._get(i, "constrainInput")) return e = k.datepicker._possibleChars(k.datepicker._get(i, "dateFormat")), i = String.fromCharCode(null == t.charCode ? t.keyCode : t.charCode), t.ctrlKey || t.metaKey || i < " " || !e || -1 < e.indexOf(i)
        },
        _doKeyUp: function(t) {
            t = k.datepicker._getInst(t.target);
            if (t.input.val() !== t.lastVal) try {
                k.datepicker.parseDate(k.datepicker._get(t, "dateFormat"), t.input ? t.input.val() : null, k.datepicker._getFormatConfig(t)) && (k.datepicker._setDateFromField(t), k.datepicker._updateAlternate(t), k.datepicker._updateDatepicker(t))
            } catch (t) {}
            return !0
        },
        _showDatepicker: function(t) {
            var e, i, s, n;
            "input" !== (t = t.target || t).nodeName.toLowerCase() && (t = k("input", t.parentNode)[0]), k.datepicker._isDisabledDatepicker(t) || k.datepicker._lastInput === t || (n = k.datepicker._getInst(t), k.datepicker._curInst && k.datepicker._curInst !== n && (k.datepicker._curInst.dpDiv.stop(!0, !0), n && k.datepicker._datepickerShowing && k.datepicker._hideDatepicker(k.datepicker._curInst.input[0])), !1 !== (i = (s = k.datepicker._get(n, "beforeShow")) ? s.apply(t, [t, n]) : {}) && (w(n.settings, i), n.lastVal = null, k.datepicker._lastInput = t, k.datepicker._setDateFromField(n), k.datepicker._inDialog && (t.value = ""), k.datepicker._pos || (k.datepicker._pos = k.datepicker._findPos(t), k.datepicker._pos[1] += t.offsetHeight), e = !1, k(t).parents().each(function() {
                return !(e |= "fixed" === k(this).css("position"))
            }), s = {
                left: k.datepicker._pos[0],
                top: k.datepicker._pos[1]
            }, k.datepicker._pos = null, n.dpDiv.empty(), n.dpDiv.css({
                position: "absolute",
                display: "block",
                top: "-1000px"
            }), k.datepicker._updateDatepicker(n), s = k.datepicker._checkOffset(n, s, e), n.dpDiv.css({
                position: k.datepicker._inDialog && k.blockUI ? "static" : e ? "fixed" : "absolute",
                display: "none",
                left: s.left + "px",
                top: s.top + "px"
            }), n.inline || (i = k.datepicker._get(n, "showAnim"), s = k.datepicker._get(n, "duration"), n.dpDiv.css("z-index", function(t) {
                for (var e, i; t.length && t[0] !== document;) {
                    if (("absolute" === (e = t.css("position")) || "relative" === e || "fixed" === e) && (i = parseInt(t.css("zIndex"), 10), !isNaN(i) && 0 !== i)) return i;
                    t = t.parent()
                }
                return 0
            }(k(t)) + 1), k.datepicker._datepickerShowing = !0, k.effects && k.effects.effect[i] ? n.dpDiv.show(i, k.datepicker._get(n, "showOptions"), s) : n.dpDiv[i || "show"](i ? s : null), k.datepicker._shouldFocusInput(n) && n.input.trigger("focus"), k.datepicker._curInst = n)))
        },
        _updateDatepicker: function(t) {
            this.maxRows = 4, (_ = t).dpDiv.empty().append(this._generateHTML(t)), this._attachHandlers(t);
            var e, i = this._getNumberOfMonths(t),
                s = i[1],
                n = t.dpDiv.find("." + this._dayOverClass + " a");
            0 < n.length && y.apply(n.get(0)), t.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""), 1 < s && t.dpDiv.addClass("ui-datepicker-multi-" + s).css("width", 17 * s + "em"), t.dpDiv[(1 !== i[0] || 1 !== i[1] ? "add" : "remove") + "Class"]("ui-datepicker-multi"), t.dpDiv[(this._get(t, "isRTL") ? "add" : "remove") + "Class"]("ui-datepicker-rtl"), t === k.datepicker._curInst && k.datepicker._datepickerShowing && k.datepicker._shouldFocusInput(t) && t.input.trigger("focus"), t.yearshtml && (e = t.yearshtml, setTimeout(function() {
                e === t.yearshtml && t.yearshtml && t.dpDiv.find("select.ui-datepicker-year:first").replaceWith(t.yearshtml), e = t.yearshtml = null
            }, 0))
        },
        _shouldFocusInput: function(t) {
            return t.input && t.input.is(":visible") && !t.input.is(":disabled") && !t.input.is(":focus")
        },
        _checkOffset: function(t, e, i) {
            var s = t.dpDiv.outerWidth(),
                n = t.dpDiv.outerHeight(),
                o = t.input ? t.input.outerWidth() : 0,
                a = t.input ? t.input.outerHeight() : 0,
                r = document.documentElement.clientWidth + (i ? 0 : k(document).scrollLeft()),
                h = document.documentElement.clientHeight + (i ? 0 : k(document).scrollTop());
            return e.left -= this._get(t, "isRTL") ? s - o : 0, e.left -= i && e.left === t.input.offset().left ? k(document).scrollLeft() : 0, e.top -= i && e.top === t.input.offset().top + a ? k(document).scrollTop() : 0, e.left -= Math.min(e.left, e.left + s > r && s < r ? Math.abs(e.left + s - r) : 0), e.top -= Math.min(e.top, e.top + n > h && n < h ? Math.abs(n + a) : 0), e
        },
        _findPos: function(t) {
            for (var e = this._getInst(t), i = this._get(e, "isRTL"); t && ("hidden" === t.type || 1 !== t.nodeType || k.expr.filters.hidden(t));) t = t[i ? "previousSibling" : "nextSibling"];
            return [(e = k(t).offset()).left, e.top]
        },
        _hideDatepicker: function(t) {
            var e, i, s = this._curInst;
            !s || t && s !== k.data(t, "datepicker") || this._datepickerShowing && (e = this._get(s, "showAnim"), i = this._get(s, "duration"), t = function() {
                k.datepicker._tidyDialog(s)
            }, k.effects && (k.effects.effect[e] || k.effects[e]) ? s.dpDiv.hide(e, k.datepicker._get(s, "showOptions"), i, t) : s.dpDiv["slideDown" === e ? "slideUp" : "fadeIn" === e ? "fadeOut" : "hide"](e ? i : null, t), e || t(), this._datepickerShowing = !1, (t = this._get(s, "onClose")) && t.apply(s.input ? s.input[0] : null, [s.input ? s.input.val() : "", s]), this._lastInput = null, this._inDialog && (this._dialogInput.css({
                position: "absolute",
                left: "0",
                top: "-100px"
            }), k.blockUI && (k.unblockUI(), k("body").append(this.dpDiv))), this._inDialog = !1)
        },
        _tidyDialog: function(t) {
            t.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar")
        },
        _checkExternalClick: function(t) {
            var e;
            k.datepicker._curInst && (e = k(t.target), t = k.datepicker._getInst(e[0]), (e[0].id === k.datepicker._mainDivId || 0 !== e.parents("#" + k.datepicker._mainDivId).length || e.hasClass(k.datepicker.markerClassName) || e.closest("." + k.datepicker._triggerClass).length || !k.datepicker._datepickerShowing || k.datepicker._inDialog && k.blockUI) && (!e.hasClass(k.datepicker.markerClassName) || k.datepicker._curInst === t) || k.datepicker._hideDatepicker())
        },
        _adjustDate: function(t, e, i) {
            var s = k(t),
                t = this._getInst(s[0]);
            this._isDisabledDatepicker(s[0]) || (this._adjustInstDate(t, e + ("M" === i ? this._get(t, "showCurrentAtPos") : 0), i), this._updateDatepicker(t))
        },
        _gotoToday: function(t) {
            var e = k(t),
                i = this._getInst(e[0]);
            this._get(i, "gotoCurrent") && i.currentDay ? (i.selectedDay = i.currentDay, i.drawMonth = i.selectedMonth = i.currentMonth, i.drawYear = i.selectedYear = i.currentYear) : (t = new Date, i.selectedDay = t.getDate(), i.drawMonth = i.selectedMonth = t.getMonth(), i.drawYear = i.selectedYear = t.getFullYear()), this._notifyChange(i), this._adjustDate(e)
        },
        _selectMonthYear: function(t, e, i) {
            var s = k(t),
                t = this._getInst(s[0]);
            t["selected" + ("M" === i ? "Month" : "Year")] = t["draw" + ("M" === i ? "Month" : "Year")] = parseInt(e.options[e.selectedIndex].value, 10), this._notifyChange(t), this._adjustDate(s)
        },
        _selectDay: function(t, e, i, s) {
            var n = k(t);
            k(s).hasClass(this._unselectableClass) || this._isDisabledDatepicker(n[0]) || ((n = this._getInst(n[0])).selectedDay = n.currentDay = k("a", s).html(), n.selectedMonth = n.currentMonth = e, n.selectedYear = n.currentYear = i, this._selectDate(t, this._formatDate(n, n.currentDay, n.currentMonth, n.currentYear)))
        },
        _clearDate: function(t) {
            t = k(t);
            this._selectDate(t, "")
        },
        _selectDate: function(t, e) {
            var i = k(t),
                t = this._getInst(i[0]);
            e = null != e ? e : this._formatDate(t), t.input && t.input.val(e), this._updateAlternate(t), (i = this._get(t, "onSelect")) ? i.apply(t.input ? t.input[0] : null, [e, t]) : t.input && t.input.trigger("change"), t.inline ? this._updateDatepicker(t) : (this._hideDatepicker(), this._lastInput = t.input[0], "object" != typeof t.input[0] && t.input.trigger("focus"), this._lastInput = null)
        },
        _updateAlternate: function(t) {
            var e, i, s = this._get(t, "altField");
            s && (e = this._get(t, "altFormat") || this._get(t, "dateFormat"), i = this._getDate(t), t = this.formatDate(e, i, this._getFormatConfig(t)), k(s).val(t))
        },
        noWeekends: function(t) {
            t = t.getDay();
            return [0 < t && t < 6, ""]
        },
        iso8601Week: function(t) {
            var e = new Date(t.getTime());
            return e.setDate(e.getDate() + 4 - (e.getDay() || 7)), t = e.getTime(), e.setMonth(0), e.setDate(1), Math.floor(Math.round((t - e) / 864e5) / 7) + 1
        },
        parseDate: function(e, n, t) {
            if (null == e || null == n) throw "Invalid arguments";
            if ("" === (n = "object" == typeof n ? n.toString() : n + "")) return null;

            function i(t) {
                var e = y(t),
                    e = "@" === t ? 14 : "!" === t ? 20 : "y" === t && e ? 4 : "o" === t ? 3 : 2,
                    e = new RegExp("^\\d{" + ("y" === t ? e : 1) + "," + e + "}");
                if (!(e = n.substring(l).match(e))) throw "Missing number at position " + l;
                return l += e[0].length, parseInt(e[0], 10)
            }

            function s(t, e, i) {
                var s = -1,
                    e = k.map(y(t) ? i : e, function(t, e) {
                        return [
                            [e, t]
                        ]
                    }).sort(function(t, e) {
                        return -(t[1].length - e[1].length)
                    });
                if (k.each(e, function(t, e) {
                        var i = e[1];
                        if (n.substr(l, i.length).toLowerCase() === i.toLowerCase()) return s = e[0], l += i.length, !1
                    }), -1 !== s) return s + 1;
                throw "Unknown name at position " + l
            }

            function o() {
                if (n.charAt(l) !== e.charAt(w)) throw "Unexpected literal at position " + l;
                l++
            }
            for (var a, r, h, l = 0, c = (t ? t.shortYearCutoff : null) || this._defaults.shortYearCutoff, c = "string" != typeof c ? c : (new Date).getFullYear() % 100 + parseInt(c, 10), u = (t ? t.dayNamesShort : null) || this._defaults.dayNamesShort, d = (t ? t.dayNames : null) || this._defaults.dayNames, p = (t ? t.monthNamesShort : null) || this._defaults.monthNamesShort, f = (t ? t.monthNames : null) || this._defaults.monthNames, g = -1, m = -1, _ = -1, v = -1, b = !1, y = function(t) {
                    t = w + 1 < e.length && e.charAt(w + 1) === t;
                    return t && w++, t
                }, w = 0; w < e.length; w++)
                if (b) "'" !== e.charAt(w) || y("'") ? o() : b = !1;
                else switch (e.charAt(w)) {
                    case "d":
                        _ = i("d");
                        break;
                    case "D":
                        s("D", u, d);
                        break;
                    case "o":
                        v = i("o");
                        break;
                    case "m":
                        m = i("m");
                        break;
                    case "M":
                        m = s("M", p, f);
                        break;
                    case "y":
                        g = i("y");
                        break;
                    case "@":
                        g = (h = new Date(i("@"))).getFullYear(), m = h.getMonth() + 1, _ = h.getDate();
                        break;
                    case "!":
                        g = (h = new Date((i("!") - this._ticksTo1970) / 1e4)).getFullYear(), m = h.getMonth() + 1, _ = h.getDate();
                        break;
                    case "'":
                        y("'") ? o() : b = !0;
                        break;
                    default:
                        o()
                }
                if (l < n.length && (r = n.substr(l), !/^\s+/.test(r))) throw "Extra/unparsed characters found in date: " + r;
            if (-1 === g ? g = (new Date).getFullYear() : g < 100 && (g += (new Date).getFullYear() - (new Date).getFullYear() % 100 + (g <= c ? 0 : -100)), -1 < v)
                for (m = 1, _ = v;;) {
                    if (_ <= (a = this._getDaysInMonth(g, m - 1))) break;
                    m++, _ -= a
                }
            if ((h = this._daylightSavingAdjust(new Date(g, m - 1, _))).getFullYear() !== g || h.getMonth() + 1 !== m || h.getDate() !== _) throw "Invalid date";
            return h
        },
        ATOM: "yy-mm-dd",
        COOKIE: "D, dd M yy",
        ISO_8601: "yy-mm-dd",
        RFC_822: "D, d M y",
        RFC_850: "DD, dd-M-y",
        RFC_1036: "D, d M y",
        RFC_1123: "D, d M yy",
        RFC_2822: "D, d M yy",
        RSS: "D, d M y",
        TICKS: "!",
        TIMESTAMP: "@",
        W3C: "yy-mm-dd",
        _ticksTo1970: 24 * (718685 + Math.floor(492.5) - Math.floor(19.7) + Math.floor(4.925)) * 60 * 60 * 1e7,
        formatDate: function(e, t, i) {
            if (!t) return "";

            function s(t, e, i) {
                var s = "" + e;
                if (c(t))
                    for (; s.length < i;) s = "0" + s;
                return s
            }

            function n(t, e, i, s) {
                return (c(t) ? s : i)[e]
            }
            var o, a = (i ? i.dayNamesShort : null) || this._defaults.dayNamesShort,
                r = (i ? i.dayNames : null) || this._defaults.dayNames,
                h = (i ? i.monthNamesShort : null) || this._defaults.monthNamesShort,
                l = (i ? i.monthNames : null) || this._defaults.monthNames,
                c = function(t) {
                    t = o + 1 < e.length && e.charAt(o + 1) === t;
                    return t && o++, t
                },
                u = "",
                d = !1;
            if (t)
                for (o = 0; o < e.length; o++)
                    if (d) "'" !== e.charAt(o) || c("'") ? u += e.charAt(o) : d = !1;
                    else switch (e.charAt(o)) {
                        case "d":
                            u += s("d", t.getDate(), 2);
                            break;
                        case "D":
                            u += n("D", t.getDay(), a, r);
                            break;
                        case "o":
                            u += s("o", Math.round((new Date(t.getFullYear(), t.getMonth(), t.getDate()).getTime() - new Date(t.getFullYear(), 0, 0).getTime()) / 864e5), 3);
                            break;
                        case "m":
                            u += s("m", t.getMonth() + 1, 2);
                            break;
                        case "M":
                            u += n("M", t.getMonth(), h, l);
                            break;
                        case "y":
                            u += c("y") ? t.getFullYear() : (t.getFullYear() % 100 < 10 ? "0" : "") + t.getFullYear() % 100;
                            break;
                        case "@":
                            u += t.getTime();
                            break;
                        case "!":
                            u += 1e4 * t.getTime() + this._ticksTo1970;
                            break;
                        case "'":
                            c("'") ? u += "'" : d = !0;
                            break;
                        default:
                            u += e.charAt(o)
                    }
                    return u
        },
        _possibleChars: function(e) {
            function t(t) {
                return (t = n + 1 < e.length && e.charAt(n + 1) === t) && n++, t
            }
            for (var i = "", s = !1, n = 0; n < e.length; n++)
                if (s) "'" !== e.charAt(n) || t("'") ? i += e.charAt(n) : s = !1;
                else switch (e.charAt(n)) {
                    case "d":
                    case "m":
                    case "y":
                    case "@":
                        i += "0123456789";
                        break;
                    case "D":
                    case "M":
                        return null;
                    case "'":
                        t("'") ? i += "'" : s = !0;
                        break;
                    default:
                        i += e.charAt(n)
                }
                return i
        },
        _get: function(t, e) {
            return (void 0 !== t.settings[e] ? t.settings : this._defaults)[e]
        },
        _setDateFromField: function(t, e) {
            if (t.input.val() !== t.lastVal) {
                var i = this._get(t, "dateFormat"),
                    s = t.lastVal = t.input ? t.input.val() : null,
                    n = this._getDefaultDate(t),
                    o = n,
                    a = this._getFormatConfig(t);
                try {
                    o = this.parseDate(i, s, a) || n
                } catch (t) {
                    s = e ? "" : s
                }
                t.selectedDay = o.getDate(), t.drawMonth = t.selectedMonth = o.getMonth(), t.drawYear = t.selectedYear = o.getFullYear(), t.currentDay = s ? o.getDate() : 0, t.currentMonth = s ? o.getMonth() : 0, t.currentYear = s ? o.getFullYear() : 0, this._adjustInstDate(t)
            }
        },
        _getDefaultDate: function(t) {
            return this._restrictMinMax(t, this._determineDate(t, this._get(t, "defaultDate"), new Date))
        },
        _determineDate: function(r, t, e) {
            var i, s, t = null == t || "" === t ? e : "string" == typeof t ? function(t) {
                try {
                    return k.datepicker.parseDate(k.datepicker._get(r, "dateFormat"), t, k.datepicker._getFormatConfig(r))
                } catch (t) {}
                for (var e = (t.toLowerCase().match(/^c/) ? k.datepicker._getDate(r) : null) || new Date, i = e.getFullYear(), s = e.getMonth(), n = e.getDate(), o = /([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g, a = o.exec(t); a;) {
                    switch (a[2] || "d") {
                        case "d":
                        case "D":
                            n += parseInt(a[1], 10);
                            break;
                        case "w":
                        case "W":
                            n += 7 * parseInt(a[1], 10);
                            break;
                        case "m":
                        case "M":
                            s += parseInt(a[1], 10), n = Math.min(n, k.datepicker._getDaysInMonth(i, s));
                            break;
                        case "y":
                        case "Y":
                            i += parseInt(a[1], 10), n = Math.min(n, k.datepicker._getDaysInMonth(i, s))
                    }
                    a = o.exec(t)
                }
                return new Date(i, s, n)
            }(t) : "number" == typeof t ? isNaN(t) ? e : (i = t, (s = new Date).setDate(s.getDate() + i), s) : new Date(t.getTime());
            return (t = t && "Invalid Date" === t.toString() ? e : t) && (t.setHours(0), t.setMinutes(0), t.setSeconds(0), t.setMilliseconds(0)), this._daylightSavingAdjust(t)
        },
        _daylightSavingAdjust: function(t) {
            return t ? (t.setHours(12 < t.getHours() ? t.getHours() + 2 : 0), t) : null
        },
        _setDate: function(t, e, i) {
            var s = !e,
                n = t.selectedMonth,
                o = t.selectedYear,
                e = this._restrictMinMax(t, this._determineDate(t, e, new Date));
            t.selectedDay = t.currentDay = e.getDate(), t.drawMonth = t.selectedMonth = t.currentMonth = e.getMonth(), t.drawYear = t.selectedYear = t.currentYear = e.getFullYear(), n === t.selectedMonth && o === t.selectedYear || i || this._notifyChange(t), this._adjustInstDate(t), t.input && t.input.val(s ? "" : this._formatDate(t))
        },
        _getDate: function(t) {
            return !t.currentYear || t.input && "" === t.input.val() ? null : this._daylightSavingAdjust(new Date(t.currentYear, t.currentMonth, t.currentDay))
        },
        _attachHandlers: function(t) {
            var e = this._get(t, "stepMonths"),
                i = "#" + t.id.replace(/\\\\/g, "\\");
            t.dpDiv.find("[data-handler]").map(function() {
                var t = {
                    prev: function() {
                        k.datepicker._adjustDate(i, -e, "M")
                    },
                    next: function() {
                        k.datepicker._adjustDate(i, +e, "M")
                    },
                    hide: function() {
                        k.datepicker._hideDatepicker()
                    },
                    today: function() {
                        k.datepicker._gotoToday(i)
                    },
                    selectDay: function() {
                        return k.datepicker._selectDay(i, +this.getAttribute("data-month"), +this.getAttribute("data-year"), this), !1
                    },
                    selectMonth: function() {
                        return k.datepicker._selectMonthYear(i, this, "M"), !1
                    },
                    selectYear: function() {
                        return k.datepicker._selectMonthYear(i, this, "Y"), !1
                    }
                };
                k(this).on(this.getAttribute("data-event"), t[this.getAttribute("data-handler")])
            })
        },
        _generateHTML: function(t) {
            var e, i, s, n, o, a, r, h, l, c, u, d, p, f, g, m, _, v, b, y, w, k, x, C, D, I, T, P, M, S, H, z, O = new Date,
                A = this._daylightSavingAdjust(new Date(O.getFullYear(), O.getMonth(), O.getDate())),
                N = this._get(t, "isRTL"),
                W = this._get(t, "showButtonPanel"),
                E = this._get(t, "hideIfNoPrevNext"),
                F = this._get(t, "navigationAsDateFormat"),
                R = this._getNumberOfMonths(t),
                L = this._get(t, "showCurrentAtPos"),
                O = this._get(t, "stepMonths"),
                B = 1 !== R[0] || 1 !== R[1],
                Y = this._daylightSavingAdjust(t.currentDay ? new Date(t.currentYear, t.currentMonth, t.currentDay) : new Date(9999, 9, 9)),
                j = this._getMinMaxDate(t, "min"),
                q = this._getMinMaxDate(t, "max"),
                K = t.drawMonth - L,
                U = t.drawYear;
            if (K < 0 && (K += 12, U--), q)
                for (e = this._daylightSavingAdjust(new Date(q.getFullYear(), q.getMonth() - R[0] * R[1] + 1, q.getDate())), e = j && e < j ? j : e; this._daylightSavingAdjust(new Date(U, K, 1)) > e;) --K < 0 && (K = 11, U--);
            for (t.drawMonth = K, t.drawYear = U, L = this._get(t, "prevText"), L = F ? this.formatDate(L, this._daylightSavingAdjust(new Date(U, K - O, 1)), this._getFormatConfig(t)) : L, i = this._canAdjustMonth(t, -1, U, K) ? "<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='" + L + "'><span class='ui-icon ui-icon-circle-triangle-" + (N ? "e" : "w") + "'>" + L + "</span></a>" : E ? "" : "<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='" + L + "'><span class='ui-icon ui-icon-circle-triangle-" + (N ? "e" : "w") + "'>" + L + "</span></a>", L = this._get(t, "nextText"), L = F ? this.formatDate(L, this._daylightSavingAdjust(new Date(U, K + O, 1)), this._getFormatConfig(t)) : L, s = this._canAdjustMonth(t, 1, U, K) ? "<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='" + L + "'><span class='ui-icon ui-icon-circle-triangle-" + (N ? "w" : "e") + "'>" + L + "</span></a>" : E ? "" : "<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='" + L + "'><span class='ui-icon ui-icon-circle-triangle-" + (N ? "w" : "e") + "'>" + L + "</span></a>", E = this._get(t, "currentText"), L = this._get(t, "gotoCurrent") && t.currentDay ? Y : A, E = F ? this.formatDate(E, L, this._getFormatConfig(t)) : E, F = t.inline ? "" : "<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>" + this._get(t, "closeText") + "</button>", F = W ? "<div class='ui-datepicker-buttonpane ui-widget-content'>" + (N ? F : "") + (this._isInRange(t, L) ? "<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>" + E + "</button>" : "") + (N ? "" : F) + "</div>" : "", n = parseInt(this._get(t, "firstDay"), 10), n = isNaN(n) ? 0 : n, o = this._get(t, "showWeek"), a = this._get(t, "dayNames"), r = this._get(t, "dayNamesMin"), h = this._get(t, "monthNames"), l = this._get(t, "monthNamesShort"), c = this._get(t, "beforeShowDay"), u = this._get(t, "showOtherMonths"), d = this._get(t, "selectOtherMonths"), p = this._getDefaultDate(t), f = "", m = 0; m < R[0]; m++) {
                for (_ = "", this.maxRows = 4, v = 0; v < R[1]; v++) {
                    if (b = this._daylightSavingAdjust(new Date(U, K, t.selectedDay)), y = " ui-corner-all", w = "", B) {
                        if (w += "<div class='ui-datepicker-group", 1 < R[1]) switch (v) {
                            case 0:
                                w += " ui-datepicker-group-first", y = " ui-corner-" + (N ? "right" : "left");
                                break;
                            case R[1] - 1:
                                w += " ui-datepicker-group-last", y = " ui-corner-" + (N ? "left" : "right");
                                break;
                            default:
                                w += " ui-datepicker-group-middle", y = ""
                        }
                        w += "'>"
                    }
                    for (w += "<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix" + y + "'>" + (/all|left/.test(y) && 0 === m ? N ? s : i : "") + (/all|right/.test(y) && 0 === m ? N ? i : s : "") + this._generateMonthYearHeader(t, K, U, j, q, 0 < m || 0 < v, h, l) + "</div><table class='ui-datepicker-calendar'><thead><tr>", k = o ? "<th class='ui-datepicker-week-col'>" + this._get(t, "weekHeader") + "</th>" : "", g = 0; g < 7; g++) k += "<th scope='col'" + (5 <= (g + n + 6) % 7 ? " class='ui-datepicker-week-end'" : "") + "><span title='" + a[x = (g + n) % 7] + "'>" + r[x] + "</span></th>";
                    for (w += k + "</tr></thead><tbody>", D = this._getDaysInMonth(U, K), U === t.selectedYear && K === t.selectedMonth && (t.selectedDay = Math.min(t.selectedDay, D)), C = (this._getFirstDayOfMonth(U, K) - n + 7) % 7, D = Math.ceil((C + D) / 7), I = B && this.maxRows > D ? this.maxRows : D, this.maxRows = I, T = this._daylightSavingAdjust(new Date(U, K, 1 - C)), P = 0; P < I; P++) {
                        for (w += "<tr>", M = o ? "<td class='ui-datepicker-week-col'>" + this._get(t, "calculateWeek")(T) + "</td>" : "", g = 0; g < 7; g++) S = c ? c.apply(t.input ? t.input[0] : null, [T]) : [!0, ""], z = (H = T.getMonth() !== K) && !d || !S[0] || j && T < j || q && q < T, M += "<td class='" + (5 <= (g + n + 6) % 7 ? " ui-datepicker-week-end" : "") + (H ? " ui-datepicker-other-month" : "") + (T.getTime() === b.getTime() && K === t.selectedMonth && t._keyEvent || p.getTime() === T.getTime() && p.getTime() === b.getTime() ? " " + this._dayOverClass : "") + (z ? " " + this._unselectableClass + " ui-state-disabled" : "") + (H && !u ? "" : " " + S[1] + (T.getTime() === Y.getTime() ? " " + this._currentClass : "") + (T.getTime() === A.getTime() ? " ui-datepicker-today" : "")) + "'" + (H && !u || !S[2] ? "" : " title='" + S[2].replace(/'/g, "&#39;") + "'") + (z ? "" : " data-handler='selectDay' data-event='click' data-month='" + T.getMonth() + "' data-year='" + T.getFullYear() + "'") + ">" + (H && !u ? "&#xa0;" : z ? "<span class='ui-state-default'>" + T.getDate() + "</span>" : "<a class='ui-state-default" + (T.getTime() === A.getTime() ? " ui-state-highlight" : "") + (T.getTime() === Y.getTime() ? " ui-state-active" : "") + (H ? " ui-priority-secondary" : "") + "' href='#'>" + T.getDate() + "</a>") + "</td>", T.setDate(T.getDate() + 1), T = this._daylightSavingAdjust(T);
                        w += M + "</tr>"
                    }
                    11 < ++K && (K = 0, U++), _ += w += "</tbody></table>" + (B ? "</div>" + (0 < R[0] && v === R[1] - 1 ? "<div class='ui-datepicker-row-break'></div>" : "") : "")
                }
                f += _
            }
            return f += F, t._keyEvent = !1, f
        },
        _generateMonthYearHeader: function(t, e, i, s, n, o, a, r) {
            var h, l, c, u, d, p, f, g = this._get(t, "changeMonth"),
                m = this._get(t, "changeYear"),
                _ = this._get(t, "showMonthAfterYear"),
                v = "<div class='ui-datepicker-title'>",
                b = "";
            if (o || !g) b += "<span class='ui-datepicker-month'>" + a[e] + "</span>";
            else {
                for (h = s && s.getFullYear() === i, l = n && n.getFullYear() === i, b += "<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>", c = 0; c < 12; c++)(!h || c >= s.getMonth()) && (!l || c <= n.getMonth()) && (b += "<option value='" + c + "'" + (c === e ? " selected='selected'" : "") + ">" + r[c] + "</option>");
                b += "</select>"
            }
            if (_ || (v += b + (!o && g && m ? "" : "&#xa0;")), !t.yearshtml)
                if (t.yearshtml = "", o || !m) v += "<span class='ui-datepicker-year'>" + i + "</span>";
                else {
                    for (u = this._get(t, "yearRange").split(":"), d = (new Date).getFullYear(), p = (a = function(t) {
                            t = t.match(/c[+\-].*/) ? i + parseInt(t.substring(1), 10) : t.match(/[+\-].*/) ? d + parseInt(t, 10) : parseInt(t, 10);
                            return isNaN(t) ? d : t
                        })(u[0]), f = Math.max(p, a(u[1] || "")), p = s ? Math.max(p, s.getFullYear()) : p, f = n ? Math.min(f, n.getFullYear()) : f, t.yearshtml += "<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>"; p <= f; p++) t.yearshtml += "<option value='" + p + "'" + (p === i ? " selected='selected'" : "") + ">" + p + "</option>";
                    t.yearshtml += "</select>", v += t.yearshtml, t.yearshtml = null
                }
            return v += this._get(t, "yearSuffix"), _ && (v += (!o && g && m ? "" : "&#xa0;") + b), v += "</div>"
        },
        _adjustInstDate: function(t, e, i) {
            var s = t.selectedYear + ("Y" === i ? e : 0),
                n = t.selectedMonth + ("M" === i ? e : 0),
                e = Math.min(t.selectedDay, this._getDaysInMonth(s, n)) + ("D" === i ? e : 0),
                e = this._restrictMinMax(t, this._daylightSavingAdjust(new Date(s, n, e)));
            t.selectedDay = e.getDate(), t.drawMonth = t.selectedMonth = e.getMonth(), t.drawYear = t.selectedYear = e.getFullYear(), "M" !== i && "Y" !== i || this._notifyChange(t)
        },
        _restrictMinMax: function(t, e) {
            var i = this._getMinMaxDate(t, "min"),
                t = this._getMinMaxDate(t, "max"),
                e = i && e < i ? i : e;
            return t && t < e ? t : e
        },
        _notifyChange: function(t) {
            var e = this._get(t, "onChangeMonthYear");
            e && e.apply(t.input ? t.input[0] : null, [t.selectedYear, t.selectedMonth + 1, t])
        },
        _getNumberOfMonths: function(t) {
            t = this._get(t, "numberOfMonths");
            return null == t ? [1, 1] : "number" == typeof t ? [1, t] : t
        },
        _getMinMaxDate: function(t, e) {
            return this._determineDate(t, this._get(t, e + "Date"), null)
        },
        _getDaysInMonth: function(t, e) {
            return 32 - this._daylightSavingAdjust(new Date(t, e, 32)).getDate()
        },
        _getFirstDayOfMonth: function(t, e) {
            return new Date(t, e, 1).getDay()
        },
        _canAdjustMonth: function(t, e, i, s) {
            var n = this._getNumberOfMonths(t),
                n = this._daylightSavingAdjust(new Date(i, s + (e < 0 ? e : n[0] * n[1]), 1));
            return e < 0 && n.setDate(this._getDaysInMonth(n.getFullYear(), n.getMonth())), this._isInRange(t, n)
        },
        _isInRange: function(t, e) {
            var i = this._getMinMaxDate(t, "min"),
                s = this._getMinMaxDate(t, "max"),
                n = null,
                o = null,
                a = this._get(t, "yearRange");
            return a && (t = a.split(":"), a = (new Date).getFullYear(), n = parseInt(t[0], 10), o = parseInt(t[1], 10), t[0].match(/[+\-].*/) && (n += a), t[1].match(/[+\-].*/) && (o += a)), (!i || e.getTime() >= i.getTime()) && (!s || e.getTime() <= s.getTime()) && (!n || e.getFullYear() >= n) && (!o || e.getFullYear() <= o)
        },
        _getFormatConfig: function(t) {
            var e = this._get(t, "shortYearCutoff");
            return {
                shortYearCutoff: e = "string" != typeof e ? e : (new Date).getFullYear() % 100 + parseInt(e, 10),
                dayNamesShort: this._get(t, "dayNamesShort"),
                dayNames: this._get(t, "dayNames"),
                monthNamesShort: this._get(t, "monthNamesShort"),
                monthNames: this._get(t, "monthNames")
            }
        },
        _formatDate: function(t, e, i, s) {
            e || (t.currentDay = t.selectedDay, t.currentMonth = t.selectedMonth, t.currentYear = t.selectedYear);
            e = e ? "object" == typeof e ? e : this._daylightSavingAdjust(new Date(s, i, e)) : this._daylightSavingAdjust(new Date(t.currentYear, t.currentMonth, t.currentDay));
            return this.formatDate(this._get(t, "dateFormat"), e, this._getFormatConfig(t))
        }
    }), k.fn.datepicker = function(t) {
        if (!this.length) return this;
        k.datepicker.initialized || (k(document).on("mousedown", k.datepicker._checkExternalClick), k.datepicker.initialized = !0), 0 === k("#" + k.datepicker._mainDivId).length && k("body").append(k.datepicker.dpDiv);
        var e = Array.prototype.slice.call(arguments, 1);
        return "string" == typeof t && ("isDisabled" === t || "getDate" === t || "widget" === t) || "option" === t && 2 === arguments.length && "string" == typeof arguments[1] ? k.datepicker["_" + t + "Datepicker"].apply(k.datepicker, [this[0]].concat(e)) : this.each(function() {
            "string" == typeof t ? k.datepicker["_" + t + "Datepicker"].apply(k.datepicker, [this].concat(e)) : k.datepicker._attachDatepicker(this, t)
        })
    }, k.datepicker = new v, k.datepicker.initialized = !1, k.datepicker.uuid = (new Date).getTime(), k.datepicker.version = "1.12.1";
    k.datepicker;
    k.widget("ui.dialog", {
        version: "1.12.1",
        options: {
            appendTo: "body",
            autoOpen: !0,
            buttons: [],
            classes: {
                "ui-dialog": "ui-corner-all",
                "ui-dialog-titlebar": "ui-corner-all"
            },
            closeOnEscape: !0,
            closeText: "Close",
            draggable: !0,
            hide: null,
            height: "auto",
            maxHeight: null,
            maxWidth: null,
            minHeight: 150,
            minWidth: 150,
            modal: !1,
            position: {
                my: "center",
                at: "center",
                of: window,
                collision: "fit",
                using: function(t) {
                    var e = k(this).css(t).offset().top;
                    e < 0 && k(this).css("top", t.top - e)
                }
            },
            resizable: !0,
            show: null,
            title: null,
            width: 300,
            beforeClose: null,
            close: null,
            drag: null,
            dragStart: null,
            dragStop: null,
            focus: null,
            open: null,
            resize: null,
            resizeStart: null,
            resizeStop: null
        },
        sizeRelatedOptions: {
            buttons: !0,
            height: !0,
            maxHeight: !0,
            maxWidth: !0,
            minHeight: !0,
            minWidth: !0,
            width: !0
        },
        resizableRelatedOptions: {
            maxHeight: !0,
            maxWidth: !0,
            minHeight: !0,
            minWidth: !0
        },
        _create: function() {
            this.originalCss = {
                display: this.element[0].style.display,
                width: this.element[0].style.width,
                minHeight: this.element[0].style.minHeight,
                maxHeight: this.element[0].style.maxHeight,
                height: this.element[0].style.height
            }, this.originalPosition = {
                parent: this.element.parent(),
                index: this.element.parent().children().index(this.element)
            }, this.originalTitle = this.element.attr("title"), null == this.options.title && null != this.originalTitle && (this.options.title = this.originalTitle), this.options.disabled && (this.options.disabled = !1), this._createWrapper(), this.element.show().removeAttr("title").appendTo(this.uiDialog), this._addClass("ui-dialog-content", "ui-widget-content"), this._createTitlebar(), this._createButtonPane(), this.options.draggable && k.fn.draggable && this._makeDraggable(), this.options.resizable && k.fn.resizable && this._makeResizable(), this._isOpen = !1, this._trackFocus()
        },
        _init: function() {
            this.options.autoOpen && this.open()
        },
        _appendTo: function() {
            var t = this.options.appendTo;
            return t && (t.jquery || t.nodeType) ? k(t) : this.document.find(t || "body").eq(0)
        },
        _destroy: function() {
            var t, e = this.originalPosition;
            this._untrackInstance(), this._destroyOverlay(), this.element.removeUniqueId().css(this.originalCss).detach(), this.uiDialog.remove(), this.originalTitle && this.element.attr("title", this.originalTitle), (t = e.parent.children().eq(e.index)).length && t[0] !== this.element[0] ? t.before(this.element) : e.parent.append(this.element)
        },
        widget: function() {
            return this.uiDialog
        },
        disable: k.noop,
        enable: k.noop,
        close: function(t) {
            var e = this;
            this._isOpen && !1 !== this._trigger("beforeClose", t) && (this._isOpen = !1, this._focusedElement = null, this._destroyOverlay(), this._untrackInstance(), this.opener.filter(":focusable").trigger("focus").length || k.ui.safeBlur(k.ui.safeActiveElement(this.document[0])), this._hide(this.uiDialog, this.options.hide, function() {
                e._trigger("close", t)
            }))
        },
        isOpen: function() {
            return this._isOpen
        },
        moveToTop: function() {
            this._moveToTop()
        },
        _moveToTop: function(t, e) {
            var i = !1,
                s = this.uiDialog.siblings(".ui-front:visible").map(function() {
                    return +k(this).css("z-index")
                }).get(),
                s = Math.max.apply(null, s);
            return s >= +this.uiDialog.css("z-index") && (this.uiDialog.css("z-index", s + 1), i = !0), i && !e && this._trigger("focus", t), i
        },
        open: function() {
            var t = this;
            this._isOpen ? this._moveToTop() && this._focusTabbable() : (this._isOpen = !0, this.opener = k(k.ui.safeActiveElement(this.document[0])), this._size(), this._position(), this._createOverlay(), this._moveToTop(null, !0), this.overlay && this.overlay.css("z-index", this.uiDialog.css("z-index") - 1), this._show(this.uiDialog, this.options.show, function() {
                t._focusTabbable(), t._trigger("focus")
            }), this._makeFocusTarget(), this._trigger("open"))
        },
        _focusTabbable: function() {
            var t = this._focusedElement;
            (t = !(t = !(t = !(t = !(t = t || this.element.find("[autofocus]")).length ? this.element.find(":tabbable") : t).length ? this.uiDialogButtonPane.find(":tabbable") : t).length ? this.uiDialogTitlebarClose.filter(":tabbable") : t).length ? this.uiDialog : t).eq(0).trigger("focus")
        },
        _keepFocus: function(t) {
            function e() {
                var t = k.ui.safeActiveElement(this.document[0]);
                this.uiDialog[0] === t || k.contains(this.uiDialog[0], t) || this._focusTabbable()
            }
            t.preventDefault(), e.call(this), this._delay(e)
        },
        _createWrapper: function() {
            this.uiDialog = k("<div>").hide().attr({
                tabIndex: -1,
                role: "dialog"
            }).appendTo(this._appendTo()), this._addClass(this.uiDialog, "ui-dialog", "ui-widget ui-widget-content ui-front"), this._on(this.uiDialog, {
                keydown: function(t) {
                    if (this.options.closeOnEscape && !t.isDefaultPrevented() && t.keyCode && t.keyCode === k.ui.keyCode.ESCAPE) return t.preventDefault(), void this.close(t);
                    var e, i, s;
                    t.keyCode !== k.ui.keyCode.TAB || t.isDefaultPrevented() || (e = this.uiDialog.find(":tabbable"), i = e.filter(":first"), s = e.filter(":last"), t.target !== s[0] && t.target !== this.uiDialog[0] || t.shiftKey ? t.target !== i[0] && t.target !== this.uiDialog[0] || !t.shiftKey || (this._delay(function() {
                        s.trigger("focus")
                    }), t.preventDefault()) : (this._delay(function() {
                        i.trigger("focus")
                    }), t.preventDefault()))
                },
                mousedown: function(t) {
                    this._moveToTop(t) && this._focusTabbable()
                }
            }), this.element.find("[aria-describedby]").length || this.uiDialog.attr({
                "aria-describedby": this.element.uniqueId().attr("id")
            })
        },
        _createTitlebar: function() {
            var t;
            this.uiDialogTitlebar = k("<div>"), this._addClass(this.uiDialogTitlebar, "ui-dialog-titlebar", "ui-widget-header ui-helper-clearfix"), this._on(this.uiDialogTitlebar, {
                mousedown: function(t) {
                    k(t.target).closest(".ui-dialog-titlebar-close") || this.uiDialog.trigger("focus")
                }
            }), this.uiDialogTitlebarClose = k("<button type='button'></button>").button({
                label: k("<a>").text(this.options.closeText).html(),
                icon: "ui-icon-closethick",
                showLabel: !1
            }).appendTo(this.uiDialogTitlebar), this._addClass(this.uiDialogTitlebarClose, "ui-dialog-titlebar-close"), this._on(this.uiDialogTitlebarClose, {
                click: function(t) {
                    t.preventDefault(), this.close(t)
                }
            }), t = k("<span>").uniqueId().prependTo(this.uiDialogTitlebar), this._addClass(t, "ui-dialog-title"), this._title(t), this.uiDialogTitlebar.prependTo(this.uiDialog), this.uiDialog.attr({
                "aria-labelledby": t.attr("id")
            })
        },
        _title: function(t) {
            this.options.title ? t.text(this.options.title) : t.html("&#160;")
        },
        _createButtonPane: function() {
            this.uiDialogButtonPane = k("<div>"), this._addClass(this.uiDialogButtonPane, "ui-dialog-buttonpane", "ui-widget-content ui-helper-clearfix"), this.uiButtonSet = k("<div>").appendTo(this.uiDialogButtonPane), this._addClass(this.uiButtonSet, "ui-dialog-buttonset"), this._createButtons()
        },
        _createButtons: function() {
            var s = this,
                t = this.options.buttons;
            this.uiDialogButtonPane.remove(), this.uiButtonSet.empty(), k.isEmptyObject(t) || k.isArray(t) && !t.length ? this._removeClass(this.uiDialog, "ui-dialog-buttons") : (k.each(t, function(t, e) {
                var i;
                e = k.isFunction(e) ? {
                    click: e,
                    text: t
                } : e, e = k.extend({
                    type: "button"
                }, e), i = e.click, t = {
                    icon: e.icon,
                    iconPosition: e.iconPosition,
                    showLabel: e.showLabel,
                    icons: e.icons,
                    text: e.text
                }, delete e.click, delete e.icon, delete e.iconPosition, delete e.showLabel, delete e.icons, "boolean" == typeof e.text && delete e.text, k("<button></button>", e).button(t).appendTo(s.uiButtonSet).on("click", function() {
                    i.apply(s.element[0], arguments)
                })
            }), this._addClass(this.uiDialog, "ui-dialog-buttons"), this.uiDialogButtonPane.appendTo(this.uiDialog))
        },
        _makeDraggable: function() {
            var n = this,
                o = this.options;

            function a(t) {
                return {
                    position: t.position,
                    offset: t.offset
                }
            }
            this.uiDialog.draggable({
                cancel: ".ui-dialog-content, .ui-dialog-titlebar-close",
                handle: ".ui-dialog-titlebar",
                containment: "document",
                start: function(t, e) {
                    n._addClass(k(this), "ui-dialog-dragging"), n._blockFrames(), n._trigger("dragStart", t, a(e))
                },
                drag: function(t, e) {
                    n._trigger("drag", t, a(e))
                },
                stop: function(t, e) {
                    var i = e.offset.left - n.document.scrollLeft(),
                        s = e.offset.top - n.document.scrollTop();
                    o.position = {
                        my: "left top",
                        at: "left" + (0 <= i ? "+" : "") + i + " top" + (0 <= s ? "+" : "") + s,
                        of: n.window
                    }, n._removeClass(k(this), "ui-dialog-dragging"), n._unblockFrames(), n._trigger("dragStop", t, a(e))
                }
            })
        },
        _makeResizable: function() {
            var n = this,
                o = this.options,
                t = o.resizable,
                e = this.uiDialog.css("position"),
                t = "string" == typeof t ? t : "n,e,s,w,se,sw,ne,nw";

            function a(t) {
                return {
                    originalPosition: t.originalPosition,
                    originalSize: t.originalSize,
                    position: t.position,
                    size: t.size
                }
            }
            this.uiDialog.resizable({
                cancel: ".ui-dialog-content",
                containment: "document",
                alsoResize: this.element,
                maxWidth: o.maxWidth,
                maxHeight: o.maxHeight,
                minWidth: o.minWidth,
                minHeight: this._minHeight(),
                handles: t,
                start: function(t, e) {
                    n._addClass(k(this), "ui-dialog-resizing"), n._blockFrames(), n._trigger("resizeStart", t, a(e))
                },
                resize: function(t, e) {
                    n._trigger("resize", t, a(e))
                },
                stop: function(t, e) {
                    var i = n.uiDialog.offset(),
                        s = i.left - n.document.scrollLeft(),
                        i = i.top - n.document.scrollTop();
                    o.height = n.uiDialog.height(), o.width = n.uiDialog.width(), o.position = {
                        my: "left top",
                        at: "left" + (0 <= s ? "+" : "") + s + " top" + (0 <= i ? "+" : "") + i,
                        of: n.window
                    }, n._removeClass(k(this), "ui-dialog-resizing"), n._unblockFrames(), n._trigger("resizeStop", t, a(e))
                }
            }).css("position", e)
        },
        _trackFocus: function() {
            this._on(this.widget(), {
                focusin: function(t) {
                    this._makeFocusTarget(), this._focusedElement = k(t.target)
                }
            })
        },
        _makeFocusTarget: function() {
            this._untrackInstance(), this._trackingInstances().unshift(this)
        },
        _untrackInstance: function() {
            var t = this._trackingInstances(),
                e = k.inArray(this, t); - 1 !== e && t.splice(e, 1)
        },
        _trackingInstances: function() {
            var t = this.document.data("ui-dialog-instances");
            return t || this.document.data("ui-dialog-instances", t = []), t
        },
        _minHeight: function() {
            var t = this.options;
            return "auto" === t.height ? t.minHeight : Math.min(t.minHeight, t.height)
        },
        _position: function() {
            var t = this.uiDialog.is(":visible");
            t || this.uiDialog.show(), this.uiDialog.position(this.options.position), t || this.uiDialog.hide()
        },
        _setOptions: function(t) {
            var i = this,
                s = !1,
                n = {};
            k.each(t, function(t, e) {
                i._setOption(t, e), t in i.sizeRelatedOptions && (s = !0), t in i.resizableRelatedOptions && (n[t] = e)
            }), s && (this._size(), this._position()), this.uiDialog.is(":data(ui-resizable)") && this.uiDialog.resizable("option", n)
        },
        _setOption: function(t, e) {
            var i, s = this.uiDialog;
            "disabled" !== t && (this._super(t, e), "appendTo" === t && this.uiDialog.appendTo(this._appendTo()), "buttons" === t && this._createButtons(), "closeText" === t && this.uiDialogTitlebarClose.button({
                label: k("<a>").text("" + this.options.closeText).html()
            }), "draggable" === t && ((i = s.is(":data(ui-draggable)")) && !e && s.draggable("destroy"), !i && e && this._makeDraggable()), "position" === t && this._position(), "resizable" === t && ((i = s.is(":data(ui-resizable)")) && !e && s.resizable("destroy"), i && "string" == typeof e && s.resizable("option", "handles", e), i || !1 === e || this._makeResizable()), "title" === t && this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))
        },
        _size: function() {
            var t, e, i, s = this.options;
            this.element.show().css({
                width: "auto",
                minHeight: 0,
                maxHeight: "none",
                height: 0
            }), s.minWidth > s.width && (s.width = s.minWidth), t = this.uiDialog.css({
                height: "auto",
                width: s.width
            }).outerHeight(), e = Math.max(0, s.minHeight - t), i = "number" == typeof s.maxHeight ? Math.max(0, s.maxHeight - t) : "none", "auto" === s.height ? this.element.css({
                minHeight: e,
                maxHeight: i,
                height: "auto"
            }) : this.element.height(Math.max(0, s.height - t)), this.uiDialog.is(":data(ui-resizable)") && this.uiDialog.resizable("option", "minHeight", this._minHeight())
        },
        _blockFrames: function() {
            this.iframeBlocks = this.document.find("iframe").map(function() {
                var t = k(this);
                return k("<div>").css({
                    position: "absolute",
                    width: t.outerWidth(),
                    height: t.outerHeight()
                }).appendTo(t.parent()).offset(t.offset())[0]
            })
        },
        _unblockFrames: function() {
            this.iframeBlocks && (this.iframeBlocks.remove(), delete this.iframeBlocks)
        },
        _allowInteraction: function(t) {
            return !!k(t.target).closest(".ui-dialog").length || !!k(t.target).closest(".ui-datepicker").length
        },
        _createOverlay: function() {
            var e;
            this.options.modal && (e = !0, this._delay(function() {
                e = !1
            }), this.document.data("ui-dialog-overlays") || this._on(this.document, {
                focusin: function(t) {
                    e || this._allowInteraction(t) || (t.preventDefault(), this._trackingInstances()[0]._focusTabbable())
                }
            }), this.overlay = k("<div>").appendTo(this._appendTo()), this._addClass(this.overlay, null, "ui-widget-overlay ui-front"), this._on(this.overlay, {
                mousedown: "_keepFocus"
            }), this.document.data("ui-dialog-overlays", (this.document.data("ui-dialog-overlays") || 0) + 1))
        },
        _destroyOverlay: function() {
            var t;
            this.options.modal && this.overlay && ((t = this.document.data("ui-dialog-overlays") - 1) ? this.document.data("ui-dialog-overlays", t) : (this._off(this.document, "focusin"), this.document.removeData("ui-dialog-overlays")), this.overlay.remove(), this.overlay = null)
        }
    }), !1 !== k.uiBackCompat && k.widget("ui.dialog", k.ui.dialog, {
        options: {
            dialogClass: ""
        },
        _createWrapper: function() {
            this._super(), this.uiDialog.addClass(this.options.dialogClass)
        },
        _setOption: function(t, e) {
            "dialogClass" === t && this.uiDialog.removeClass(this.options.dialogClass).addClass(e), this._superApply(arguments)
        }
    });
    k.ui.dialog, k.widget("ui.progressbar", {
        version: "1.12.1",
        options: {
            classes: {
                "ui-progressbar": "ui-corner-all",
                "ui-progressbar-value": "ui-corner-left",
                "ui-progressbar-complete": "ui-corner-right"
            },
            max: 100,
            value: 0,
            change: null,
            complete: null
        },
        min: 0,
        _create: function() {
            this.oldValue = this.options.value = this._constrainedValue(), this.element.attr({
                role: "progressbar",
                "aria-valuemin": this.min
            }), this._addClass("ui-progressbar", "ui-widget ui-widget-content"), this.valueDiv = k("<div>").appendTo(this.element), this._addClass(this.valueDiv, "ui-progressbar-value", "ui-widget-header"), this._refreshValue()
        },
        _destroy: function() {
            this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"), this.valueDiv.remove()
        },
        value: function(t) {
            if (void 0 === t) return this.options.value;
            this.options.value = this._constrainedValue(t), this._refreshValue()
        },
        _constrainedValue: function(t) {
            return void 0 === t && (t = this.options.value), this.indeterminate = !1 === t, "number" != typeof t && (t = 0), !this.indeterminate && Math.min(this.options.max, Math.max(this.min, t))
        },
        _setOptions: function(t) {
            var e = t.value;
            delete t.value, this._super(t), this.options.value = this._constrainedValue(e), this._refreshValue()
        },
        _setOption: function(t, e) {
            "max" === t && (e = Math.max(this.min, e)), this._super(t, e)
        },
        _setOptionDisabled: function(t) {
            this._super(t), this.element.attr("aria-disabled", t), this._toggleClass(null, "ui-state-disabled", !!t)
        },
        _percentage: function() {
            return this.indeterminate ? 100 : 100 * (this.options.value - this.min) / (this.options.max - this.min)
        },
        _refreshValue: function() {
            var t = this.options.value,
                e = this._percentage();
            this.valueDiv.toggle(this.indeterminate || t > this.min).width(e.toFixed(0) + "%"), this._toggleClass(this.valueDiv, "ui-progressbar-complete", null, t === this.options.max)._toggleClass("ui-progressbar-indeterminate", null, this.indeterminate), this.indeterminate ? (this.element.removeAttr("aria-valuenow"), this.overlayDiv || (this.overlayDiv = k("<div>").appendTo(this.valueDiv), this._addClass(this.overlayDiv, "ui-progressbar-overlay"))) : (this.element.attr({
                "aria-valuemax": this.options.max,
                "aria-valuenow": t
            }), this.overlayDiv && (this.overlayDiv.remove(), this.overlayDiv = null)), this.oldValue !== t && (this.oldValue = t, this._trigger("change")), t === this.options.max && this._trigger("complete")
        }
    }), k.widget("ui.selectmenu", [k.ui.formResetMixin, {
        version: "1.12.1",
        defaultElement: "<select>",
        options: {
            appendTo: null,
            classes: {
                "ui-selectmenu-button-open": "ui-corner-top",
                "ui-selectmenu-button-closed": "ui-corner-all"
            },
            disabled: null,
            icons: {
                button: "ui-icon-triangle-1-s"
            },
            position: {
                my: "left top",
                at: "left bottom",
                collision: "none"
            },
            width: !1,
            change: null,
            close: null,
            focus: null,
            open: null,
            select: null
        },
        _create: function() {
            var t = this.element.uniqueId().attr("id");
            this.ids = {
                element: t,
                button: t + "-button",
                menu: t + "-menu"
            }, this._drawButton(), this._drawMenu(), this._bindFormResetHandler(), this._rendered = !1, this.menuItems = k()
        },
        _drawButton: function() {
            var t, e = this,
                i = this._parseOption(this.element.find("option:selected"), this.element[0].selectedIndex);
            this.labels = this.element.labels().attr("for", this.ids.button), this._on(this.labels, {
                click: function(t) {
                    this.button.focus(), t.preventDefault()
                }
            }), this.element.hide(), this.button = k("<span>", {
                tabindex: this.options.disabled ? -1 : 0,
                id: this.ids.button,
                role: "combobox",
                "aria-expanded": "false",
                "aria-autocomplete": "list",
                "aria-owns": this.ids.menu,
                "aria-haspopup": "true",
                title: this.element.attr("title")
            }).insertAfter(this.element), this._addClass(this.button, "ui-selectmenu-button ui-selectmenu-button-closed", "ui-button ui-widget"), t = k("<span>").appendTo(this.button), this._addClass(t, "ui-selectmenu-icon", "ui-icon " + this.options.icons.button), this.buttonItem = this._renderButtonItem(i).appendTo(this.button), !1 !== this.options.width && this._resizeButton(), this._on(this.button, this._buttonEvents), this.button.one("focusin", function() {
                e._rendered || e._refreshMenu()
            })
        },
        _drawMenu: function() {
            var i = this;
            this.menu = k("<ul>", {
                "aria-hidden": "true",
                "aria-labelledby": this.ids.button,
                id: this.ids.menu
            }), this.menuWrap = k("<div>").append(this.menu), this._addClass(this.menuWrap, "ui-selectmenu-menu", "ui-front"), this.menuWrap.appendTo(this._appendTo()), this.menuInstance = this.menu.menu({
                classes: {
                    "ui-menu": "ui-corner-bottom"
                },
                role: "listbox",
                select: function(t, e) {
                    t.preventDefault(), i._setSelection(), i._select(e.item.data("ui-selectmenu-item"), t)
                },
                focus: function(t, e) {
                    e = e.item.data("ui-selectmenu-item");
                    null != i.focusIndex && e.index !== i.focusIndex && (i._trigger("focus", t, {
                        item: e
                    }), i.isOpen || i._select(e, t)), i.focusIndex = e.index, i.button.attr("aria-activedescendant", i.menuItems.eq(e.index).attr("id"))
                }
            }).menu("instance"), this.menuInstance._off(this.menu, "mouseleave"), this.menuInstance._closeOnDocumentClick = function() {
                return !1
            }, this.menuInstance._isDivider = function() {
                return !1
            }
        },
        refresh: function() {
            this._refreshMenu(), this.buttonItem.replaceWith(this.buttonItem = this._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item") || {})), null === this.options.width && this._resizeButton()
        },
        _refreshMenu: function() {
            var t = this.element.find("option");
            this.menu.empty(), this._parseOptions(t), this._renderMenu(this.menu, this.items), this.menuInstance.refresh(), this.menuItems = this.menu.find("li").not(".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"), this._rendered = !0, t.length && (t = this._getSelectedItem(), this.menuInstance.focus(null, t), this._setAria(t.data("ui-selectmenu-item")), this._setOption("disabled", this.element.prop("disabled")))
        },
        open: function(t) {
            this.options.disabled || (this._rendered ? (this._removeClass(this.menu.find(".ui-state-active"), null, "ui-state-active"), this.menuInstance.focus(null, this._getSelectedItem())) : this._refreshMenu(), this.menuItems.length && (this.isOpen = !0, this._toggleAttr(), this._resizeMenu(), this._position(), this._on(this.document, this._documentClick), this._trigger("open", t)))
        },
        _position: function() {
            this.menuWrap.position(k.extend({
                of: this.button
            }, this.options.position))
        },
        close: function(t) {
            this.isOpen && (this.isOpen = !1, this._toggleAttr(), this.range = null, this._off(this.document), this._trigger("close", t))
        },
        widget: function() {
            return this.button
        },
        menuWidget: function() {
            return this.menu
        },
        _renderButtonItem: function(t) {
            var e = k("<span>");
            return this._setText(e, t.label), this._addClass(e, "ui-selectmenu-text"), e
        },
        _renderMenu: function(s, t) {
            var n = this,
                o = "";
            k.each(t, function(t, e) {
                var i;
                e.optgroup !== o && (i = k("<li>", {
                    text: e.optgroup
                }), n._addClass(i, "ui-selectmenu-optgroup", "ui-menu-divider" + (e.element.parent("optgroup").prop("disabled") ? " ui-state-disabled" : "")), i.appendTo(s), o = e.optgroup), n._renderItemData(s, e)
            })
        },
        _renderItemData: function(t, e) {
            return this._renderItem(t, e).data("ui-selectmenu-item", e)
        },
        _renderItem: function(t, e) {
            var i = k("<li>"),
                s = k("<div>", {
                    title: e.element.attr("title")
                });
            return e.disabled && this._addClass(i, null, "ui-state-disabled"), this._setText(s, e.label), i.append(s).appendTo(t)
        },
        _setText: function(t, e) {
            e ? t.text(e) : t.html("&#160;")
        },
        _move: function(t, e) {
            var i, s = ".ui-menu-item";
            this.isOpen ? i = this.menuItems.eq(this.focusIndex).parent("li") : (i = this.menuItems.eq(this.element[0].selectedIndex).parent("li"), s += ":not(.ui-state-disabled)"), (s = "first" === t || "last" === t ? i["first" === t ? "prevAll" : "nextAll"](s).eq(-1) : i[t + "All"](s).eq(0)).length && this.menuInstance.focus(e, s)
        },
        _getSelectedItem: function() {
            return this.menuItems.eq(this.element[0].selectedIndex).parent("li")
        },
        _toggle: function(t) {
            this[this.isOpen ? "close" : "open"](t)
        },
        _setSelection: function() {
            var t;
            this.range && (window.getSelection ? ((t = window.getSelection()).removeAllRanges(), t.addRange(this.range)) : this.range.select(), this.button.focus())
        },
        _documentClick: {
            mousedown: function(t) {
                this.isOpen && (k(t.target).closest(".ui-selectmenu-menu, #" + k.ui.escapeSelector(this.ids.button)).length || this.close(t))
            }
        },
        _buttonEvents: {
            mousedown: function() {
                var t;
                window.getSelection ? (t = window.getSelection()).rangeCount && (this.range = t.getRangeAt(0)) : this.range = document.selection.createRange()
            },
            click: function(t) {
                this._setSelection(), this._toggle(t)
            },
            keydown: function(t) {
                var e = !0;
                switch (t.keyCode) {
                    case k.ui.keyCode.TAB:
                    case k.ui.keyCode.ESCAPE:
                        this.close(t), e = !1;
                        break;
                    case k.ui.keyCode.ENTER:
                        this.isOpen && this._selectFocusedItem(t);
                        break;
                    case k.ui.keyCode.UP:
                        t.altKey ? this._toggle(t) : this._move("prev", t);
                        break;
                    case k.ui.keyCode.DOWN:
                        t.altKey ? this._toggle(t) : this._move("next", t);
                        break;
                    case k.ui.keyCode.SPACE:
                        this.isOpen ? this._selectFocusedItem(t) : this._toggle(t);
                        break;
                    case k.ui.keyCode.LEFT:
                        this._move("prev", t);
                        break;
                    case k.ui.keyCode.RIGHT:
                        this._move("next", t);
                        break;
                    case k.ui.keyCode.HOME:
                    case k.ui.keyCode.PAGE_UP:
                        this._move("first", t);
                        break;
                    case k.ui.keyCode.END:
                    case k.ui.keyCode.PAGE_DOWN:
                        this._move("last", t);
                        break;
                    default:
                        this.menu.trigger(t), e = !1
                }
                e && t.preventDefault()
            }
        },
        _selectFocusedItem: function(t) {
            var e = this.menuItems.eq(this.focusIndex).parent("li");
            e.hasClass("ui-state-disabled") || this._select(e.data("ui-selectmenu-item"), t)
        },
        _select: function(t, e) {
            var i = this.element[0].selectedIndex;
            this.element[0].selectedIndex = t.index, this.buttonItem.replaceWith(this.buttonItem = this._renderButtonItem(t)), this._setAria(t), this._trigger("select", e, {
                item: t
            }), t.index !== i && this._trigger("change", e, {
                item: t
            }), this.close(e)
        },
        _setAria: function(t) {
            t = this.menuItems.eq(t.index).attr("id");
            this.button.attr({
                "aria-labelledby": t,
                "aria-activedescendant": t
            }), this.menu.attr("aria-activedescendant", t)
        },
        _setOption: function(t, e) {
            var i;
            "icons" === t && (i = this.button.find("span.ui-icon"), this._removeClass(i, null, this.options.icons.button)._addClass(i, null, e.button)), this._super(t, e), "appendTo" === t && this.menuWrap.appendTo(this._appendTo()), "width" === t && this._resizeButton()
        },
        _setOptionDisabled: function(t) {
            this._super(t), this.menuInstance.option("disabled", t), this.button.attr("aria-disabled", t), this._toggleClass(this.button, null, "ui-state-disabled", t), this.element.prop("disabled", t), t ? (this.button.attr("tabindex", -1), this.close()) : this.button.attr("tabindex", 0)
        },
        _appendTo: function() {
            var t = this.options.appendTo;
            return t = !(t = !(t = t && (t.jquery || t.nodeType ? k(t) : this.document.find(t).eq(0))) || !t[0] ? this.element.closest(".ui-front, dialog") : t).length ? this.document[0].body : t
        },
        _toggleAttr: function() {
            this.button.attr("aria-expanded", this.isOpen), this._removeClass(this.button, "ui-selectmenu-button-" + (this.isOpen ? "closed" : "open"))._addClass(this.button, "ui-selectmenu-button-" + (this.isOpen ? "open" : "closed"))._toggleClass(this.menuWrap, "ui-selectmenu-open", null, this.isOpen), this.menu.attr("aria-hidden", !this.isOpen)
        },
        _resizeButton: function() {
            var t = this.options.width;
            !1 !== t ? (null === t && (t = this.element.show().outerWidth(), this.element.hide()), this.button.outerWidth(t)) : this.button.css("width", "")
        },
        _resizeMenu: function() {
            this.menu.outerWidth(Math.max(this.button.outerWidth(), this.menu.width("").outerWidth() + 1))
        },
        _getCreateOptions: function() {
            var t = this._super();
            return t.disabled = this.element.prop("disabled"), t
        },
        _parseOptions: function(t) {
            var i = this,
                s = [];
            t.each(function(t, e) {
                s.push(i._parseOption(k(e), t))
            }), this.items = s
        },
        _parseOption: function(t, e) {
            var i = t.parent("optgroup");
            return {
                element: t,
                index: e,
                value: t.val(),
                label: t.text(),
                optgroup: i.attr("label") || "",
                disabled: i.prop("disabled") || t.prop("disabled")
            }
        },
        _destroy: function() {
            this._unbindFormResetHandler(), this.menuWrap.remove(), this.button.remove(), this.element.show(), this.element.removeUniqueId(), this.labels.attr("for", this.ids.element)
        }
    }]), k.widget("ui.slider", k.ui.mouse, {
        version: "1.12.1",
        widgetEventPrefix: "slide",
        options: {
            animate: !1,
            classes: {
                "ui-slider": "ui-corner-all",
                "ui-slider-handle": "ui-corner-all",
                "ui-slider-range": "ui-corner-all ui-widget-header"
            },
            distance: 0,
            max: 100,
            min: 0,
            orientation: "horizontal",
            range: !1,
            step: 1,
            value: 0,
            values: null,
            change: null,
            slide: null,
            start: null,
            stop: null
        },
        numPages: 5,
        _create: function() {
            this._keySliding = !1, this._mouseSliding = !1, this._animateOff = !0, this._handleIndex = null, this._detectOrientation(), this._mouseInit(), this._calculateNewMax(), this._addClass("ui-slider ui-slider-" + this.orientation, "ui-widget ui-widget-content"), this._refresh(), this._animateOff = !1
        },
        _refresh: function() {
            this._createRange(), this._createHandles(), this._setupEvents(), this._refreshValue()
        },
        _createHandles: function() {
            var t, e = this.options,
                i = this.element.find(".ui-slider-handle"),
                s = [],
                n = e.values && e.values.length || 1;
            for (i.length > n && (i.slice(n).remove(), i = i.slice(0, n)), t = i.length; t < n; t++) s.push("<span tabindex='0'></span>");
            this.handles = i.add(k(s.join("")).appendTo(this.element)), this._addClass(this.handles, "ui-slider-handle", "ui-state-default"), this.handle = this.handles.eq(0), this.handles.each(function(t) {
                k(this).data("ui-slider-handle-index", t).attr("tabIndex", 0)
            })
        },
        _createRange: function() {
            var t = this.options;
            t.range ? (!0 === t.range && (t.values ? t.values.length && 2 !== t.values.length ? t.values = [t.values[0], t.values[0]] : k.isArray(t.values) && (t.values = t.values.slice(0)) : t.values = [this._valueMin(), this._valueMin()]), this.range && this.range.length ? (this._removeClass(this.range, "ui-slider-range-min ui-slider-range-max"), this.range.css({
                left: "",
                bottom: ""
            })) : (this.range = k("<div>").appendTo(this.element), this._addClass(this.range, "ui-slider-range")), "min" !== t.range && "max" !== t.range || this._addClass(this.range, "ui-slider-range-" + t.range)) : (this.range && this.range.remove(), this.range = null)
        },
        _setupEvents: function() {
            this._off(this.handles), this._on(this.handles, this._handleEvents), this._hoverable(this.handles), this._focusable(this.handles)
        },
        _destroy: function() {
            this.handles.remove(), this.range && this.range.remove(), this._mouseDestroy()
        },
        _mouseCapture: function(t) {
            var i, s, n, o, e, a, r = this,
                h = this.options;
            return !h.disabled && (this.elementSize = {
                width: this.element.outerWidth(),
                height: this.element.outerHeight()
            }, this.elementOffset = this.element.offset(), a = {
                x: t.pageX,
                y: t.pageY
            }, i = this._normValueFromMouse(a), s = this._valueMax() - this._valueMin() + 1, this.handles.each(function(t) {
                var e = Math.abs(i - r.values(t));
                (e < s || s === e && (t === r._lastChangedValue || r.values(t) === h.min)) && (s = e, n = k(this), o = t)
            }), !1 !== this._start(t, o) && (this._mouseSliding = !0, this._handleIndex = o, this._addClass(n, null, "ui-state-active"), n.trigger("focus"), e = n.offset(), a = !k(t.target).parents().addBack().is(".ui-slider-handle"), this._clickOffset = a ? {
                left: 0,
                top: 0
            } : {
                left: t.pageX - e.left - n.width() / 2,
                top: t.pageY - e.top - n.height() / 2 - (parseInt(n.css("borderTopWidth"), 10) || 0) - (parseInt(n.css("borderBottomWidth"), 10) || 0) + (parseInt(n.css("marginTop"), 10) || 0)
            }, this.handles.hasClass("ui-state-hover") || this._slide(t, o, i), this._animateOff = !0))
        },
        _mouseStart: function() {
            return !0
        },
        _mouseDrag: function(t) {
            var e = {
                    x: t.pageX,
                    y: t.pageY
                },
                e = this._normValueFromMouse(e);
            return this._slide(t, this._handleIndex, e), !1
        },
        _mouseStop: function(t) {
            return this._removeClass(this.handles, null, "ui-state-active"), this._mouseSliding = !1, this._stop(t, this._handleIndex), this._change(t, this._handleIndex), this._handleIndex = null, this._clickOffset = null, this._animateOff = !1
        },
        _detectOrientation: function() {
            this.orientation = "vertical" === this.options.orientation ? "vertical" : "horizontal"
        },
        _normValueFromMouse: function(t) {
            var e, t = "horizontal" === this.orientation ? (e = this.elementSize.width, t.x - this.elementOffset.left - (this._clickOffset ? this._clickOffset.left : 0)) : (e = this.elementSize.height, t.y - this.elementOffset.top - (this._clickOffset ? this._clickOffset.top : 0)),
                t = t / e;
            return (t = 1 < t ? 1 : t) < 0 && (t = 0), "vertical" === this.orientation && (t = 1 - t), e = this._valueMax() - this._valueMin(), e = this._valueMin() + t * e, this._trimAlignValue(e)
        },
        _uiHash: function(t, e, i) {
            var s = {
                handle: this.handles[t],
                handleIndex: t,
                value: void 0 !== e ? e : this.value()
            };
            return this._hasMultipleValues() && (s.value = void 0 !== e ? e : this.values(t), s.values = i || this.values()), s
        },
        _hasMultipleValues: function() {
            return this.options.values && this.options.values.length
        },
        _start: function(t, e) {
            return this._trigger("start", t, this._uiHash(e))
        },
        _slide: function(t, e, i) {
            var s, n = this.value(),
                o = this.values();
            this._hasMultipleValues() && (s = this.values(e ? 0 : 1), n = this.values(e), 2 === this.options.values.length && !0 === this.options.range && (i = 0 === e ? Math.min(s, i) : Math.max(s, i)), o[e] = i), i !== n && !1 !== this._trigger("slide", t, this._uiHash(e, i, o)) && (this._hasMultipleValues() ? this.values(e, i) : this.value(i))
        },
        _stop: function(t, e) {
            this._trigger("stop", t, this._uiHash(e))
        },
        _change: function(t, e) {
            this._keySliding || this._mouseSliding || (this._lastChangedValue = e, this._trigger("change", t, this._uiHash(e)))
        },
        value: function(t) {
            return arguments.length ? (this.options.value = this._trimAlignValue(t), this._refreshValue(), void this._change(null, 0)) : this._value()
        },
        values: function(t, e) {
            var i, s, n;
            if (1 < arguments.length) return this.options.values[t] = this._trimAlignValue(e), this._refreshValue(), void this._change(null, t);
            if (!arguments.length) return this._values();
            if (!k.isArray(t)) return this._hasMultipleValues() ? this._values(t) : this.value();
            for (i = this.options.values, s = t, n = 0; n < i.length; n += 1) i[n] = this._trimAlignValue(s[n]), this._change(null, n);
            this._refreshValue()
        },
        _setOption: function(t, e) {
            var i, s = 0;
            switch ("range" === t && !0 === this.options.range && ("min" === e ? (this.options.value = this._values(0), this.options.values = null) : "max" === e && (this.options.value = this._values(this.options.values.length - 1), this.options.values = null)), k.isArray(this.options.values) && (s = this.options.values.length), this._super(t, e), t) {
                case "orientation":
                    this._detectOrientation(), this._removeClass("ui-slider-horizontal ui-slider-vertical")._addClass("ui-slider-" + this.orientation), this._refreshValue(), this.options.range && this._refreshRange(e), this.handles.css("horizontal" === e ? "bottom" : "left", "");
                    break;
                case "value":
                    this._animateOff = !0, this._refreshValue(), this._change(null, 0), this._animateOff = !1;
                    break;
                case "values":
                    for (this._animateOff = !0, this._refreshValue(), i = s - 1; 0 <= i; i--) this._change(null, i);
                    this._animateOff = !1;
                    break;
                case "step":
                case "min":
                case "max":
                    this._animateOff = !0, this._calculateNewMax(), this._refreshValue(), this._animateOff = !1;
                    break;
                case "range":
                    this._animateOff = !0, this._refresh(), this._animateOff = !1
            }
        },
        _setOptionDisabled: function(t) {
            this._super(t), this._toggleClass(null, "ui-state-disabled", !!t)
        },
        _value: function() {
            var t = this.options.value;
            return t = this._trimAlignValue(t)
        },
        _values: function(t) {
            var e, i, s;
            if (arguments.length) return e = this.options.values[t], this._trimAlignValue(e);
            if (this._hasMultipleValues()) {
                for (i = this.options.values.slice(), s = 0; s < i.length; s += 1) i[s] = this._trimAlignValue(i[s]);
                return i
            }
            return []
        },
        _trimAlignValue: function(t) {
            if (t <= this._valueMin()) return this._valueMin();
            if (t >= this._valueMax()) return this._valueMax();
            var e = 0 < this.options.step ? this.options.step : 1,
                i = (t - this._valueMin()) % e,
                t = t - i;
            return 2 * Math.abs(i) >= e && (t += 0 < i ? e : -e), parseFloat(t.toFixed(5))
        },
        _calculateNewMax: function() {
            var t = this.options.max,
                e = this._valueMin(),
                i = this.options.step;
            (t = Math.round((t - e) / i) * i + e) > this.options.max && (t -= i), this.max = parseFloat(t.toFixed(this._precision()))
        },
        _precision: function() {
            var t = this._precisionOf(this.options.step);
            return t = null !== this.options.min ? Math.max(t, this._precisionOf(this.options.min)) : t
        },
        _precisionOf: function(t) {
            var e = t.toString(),
                t = e.indexOf(".");
            return -1 === t ? 0 : e.length - t - 1
        },
        _valueMin: function() {
            return this.options.min
        },
        _valueMax: function() {
            return this.max
        },
        _refreshRange: function(t) {
            "vertical" === t && this.range.css({
                width: "",
                left: ""
            }), "horizontal" === t && this.range.css({
                height: "",
                bottom: ""
            })
        },
        _refreshValue: function() {
            var e, i, t, s, n, o = this.options.range,
                a = this.options,
                r = this,
                h = !this._animateOff && a.animate,
                l = {};
            this._hasMultipleValues() ? this.handles.each(function(t) {
                i = (r.values(t) - r._valueMin()) / (r._valueMax() - r._valueMin()) * 100, l["horizontal" === r.orientation ? "left" : "bottom"] = i + "%", k(this).stop(1, 1)[h ? "animate" : "css"](l, a.animate), !0 === r.options.range && ("horizontal" === r.orientation ? (0 === t && r.range.stop(1, 1)[h ? "animate" : "css"]({
                    left: i + "%"
                }, a.animate), 1 === t && r.range[h ? "animate" : "css"]({
                    width: i - e + "%"
                }, {
                    queue: !1,
                    duration: a.animate
                })) : (0 === t && r.range.stop(1, 1)[h ? "animate" : "css"]({
                    bottom: i + "%"
                }, a.animate), 1 === t && r.range[h ? "animate" : "css"]({
                    height: i - e + "%"
                }, {
                    queue: !1,
                    duration: a.animate
                }))), e = i
            }) : (t = this.value(), s = this._valueMin(), n = this._valueMax(), i = n !== s ? (t - s) / (n - s) * 100 : 0, l["horizontal" === this.orientation ? "left" : "bottom"] = i + "%", this.handle.stop(1, 1)[h ? "animate" : "css"](l, a.animate), "min" === o && "horizontal" === this.orientation && this.range.stop(1, 1)[h ? "animate" : "css"]({
                width: i + "%"
            }, a.animate), "max" === o && "horizontal" === this.orientation && this.range.stop(1, 1)[h ? "animate" : "css"]({
                width: 100 - i + "%"
            }, a.animate), "min" === o && "vertical" === this.orientation && this.range.stop(1, 1)[h ? "animate" : "css"]({
                height: i + "%"
            }, a.animate), "max" === o && "vertical" === this.orientation && this.range.stop(1, 1)[h ? "animate" : "css"]({
                height: 100 - i + "%"
            }, a.animate))
        },
        _handleEvents: {
            keydown: function(t) {
                var e, i, s, n = k(t.target).data("ui-slider-handle-index");
                switch (t.keyCode) {
                    case k.ui.keyCode.HOME:
                    case k.ui.keyCode.END:
                    case k.ui.keyCode.PAGE_UP:
                    case k.ui.keyCode.PAGE_DOWN:
                    case k.ui.keyCode.UP:
                    case k.ui.keyCode.RIGHT:
                    case k.ui.keyCode.DOWN:
                    case k.ui.keyCode.LEFT:
                        if (t.preventDefault(), !this._keySliding && (this._keySliding = !0, this._addClass(k(t.target), null, "ui-state-active"), !1 === this._start(t, n))) return
                }
                switch (s = this.options.step, e = i = this._hasMultipleValues() ? this.values(n) : this.value(), t.keyCode) {
                    case k.ui.keyCode.HOME:
                        i = this._valueMin();
                        break;
                    case k.ui.keyCode.END:
                        i = this._valueMax();
                        break;
                    case k.ui.keyCode.PAGE_UP:
                        i = this._trimAlignValue(e + (this._valueMax() - this._valueMin()) / this.numPages);
                        break;
                    case k.ui.keyCode.PAGE_DOWN:
                        i = this._trimAlignValue(e - (this._valueMax() - this._valueMin()) / this.numPages);
                        break;
                    case k.ui.keyCode.UP:
                    case k.ui.keyCode.RIGHT:
                        if (e === this._valueMax()) return;
                        i = this._trimAlignValue(e + s);
                        break;
                    case k.ui.keyCode.DOWN:
                    case k.ui.keyCode.LEFT:
                        if (e === this._valueMin()) return;
                        i = this._trimAlignValue(e - s)
                }
                this._slide(t, n, i)
            },
            keyup: function(t) {
                var e = k(t.target).data("ui-slider-handle-index");
                this._keySliding && (this._keySliding = !1, this._stop(t, e), this._change(t, e), this._removeClass(k(t.target), null, "ui-state-active"))
            }
        }
    });

    function P(e) {
        return function() {
            var t = this.element.val();
            e.apply(this, arguments), this._refresh(), t !== this.element.val() && this._trigger("change")
        }
    }
    k.widget("ui.spinner", {
        version: "1.12.1",
        defaultElement: "<input>",
        widgetEventPrefix: "spin",
        options: {
            classes: {
                "ui-spinner": "ui-corner-all",
                "ui-spinner-down": "ui-corner-br",
                "ui-spinner-up": "ui-corner-tr"
            },
            culture: null,
            icons: {
                down: "ui-icon-triangle-1-s",
                up: "ui-icon-triangle-1-n"
            },
            incremental: !0,
            max: null,
            min: null,
            numberFormat: null,
            page: 10,
            step: 1,
            change: null,
            spin: null,
            start: null,
            stop: null
        },
        _create: function() {
            this._setOption("max", this.options.max), this._setOption("min", this.options.min), this._setOption("step", this.options.step), "" !== this.value() && this._value(this.element.val(), !0), this._draw(), this._on(this._events), this._refresh(), this._on(this.window, {
                beforeunload: function() {
                    this.element.removeAttr("autocomplete")
                }
            })
        },
        _getCreateOptions: function() {
            var s = this._super(),
                n = this.element;
            return k.each(["min", "max", "step"], function(t, e) {
                var i = n.attr(e);
                null != i && i.length && (s[e] = i)
            }), s
        },
        _events: {
            keydown: function(t) {
                this._start(t) && this._keydown(t) && t.preventDefault()
            },
            keyup: "_stop",
            focus: function() {
                this.previous = this.element.val()
            },
            blur: function(t) {
                this.cancelBlur ? delete this.cancelBlur : (this._stop(), this._refresh(), this.previous !== this.element.val() && this._trigger("change", t))
            },
            mousewheel: function(t, e) {
                if (e) {
                    if (!this.spinning && !this._start(t)) return !1;
                    this._spin((0 < e ? 1 : -1) * this.options.step, t), clearTimeout(this.mousewheelTimer), this.mousewheelTimer = this._delay(function() {
                        this.spinning && this._stop(t)
                    }, 100), t.preventDefault()
                }
            },
            "mousedown .ui-spinner-button": function(t) {
                var e;

                function i() {
                    this.element[0] === k.ui.safeActiveElement(this.document[0]) || (this.element.trigger("focus"), this.previous = e, this._delay(function() {
                        this.previous = e
                    }))
                }
                e = this.element[0] === k.ui.safeActiveElement(this.document[0]) ? this.previous : this.element.val(), t.preventDefault(), i.call(this), this.cancelBlur = !0, this._delay(function() {
                    delete this.cancelBlur, i.call(this)
                }), !1 !== this._start(t) && this._repeat(null, k(t.currentTarget).hasClass("ui-spinner-up") ? 1 : -1, t)
            },
            "mouseup .ui-spinner-button": "_stop",
            "mouseenter .ui-spinner-button": function(t) {
                if (k(t.currentTarget).hasClass("ui-state-active")) return !1 !== this._start(t) && void this._repeat(null, k(t.currentTarget).hasClass("ui-spinner-up") ? 1 : -1, t)
            },
            "mouseleave .ui-spinner-button": "_stop"
        },
        _enhance: function() {
            this.uiSpinner = this.element.attr("autocomplete", "off").wrap("<span>").parent().append("<a></a><a></a>")
        },
        _draw: function() {
            this._enhance(), this._addClass(this.uiSpinner, "ui-spinner", "ui-widget ui-widget-content"), this._addClass("ui-spinner-input"), this.element.attr("role", "spinbutton"), this.buttons = this.uiSpinner.children("a").attr("tabIndex", -1).attr("aria-hidden", !0).button({
                classes: {
                    "ui-button": ""
                }
            }), this._removeClass(this.buttons, "ui-corner-all"), this._addClass(this.buttons.first(), "ui-spinner-button ui-spinner-up"), this._addClass(this.buttons.last(), "ui-spinner-button ui-spinner-down"), this.buttons.first().button({
                icon: this.options.icons.up,
                showLabel: !1
            }), this.buttons.last().button({
                icon: this.options.icons.down,
                showLabel: !1
            }), this.buttons.height() > Math.ceil(.5 * this.uiSpinner.height()) && 0 < this.uiSpinner.height() && this.uiSpinner.height(this.uiSpinner.height())
        },
        _keydown: function(t) {
            var e = this.options,
                i = k.ui.keyCode;
            switch (t.keyCode) {
                case i.UP:
                    return this._repeat(null, 1, t), !0;
                case i.DOWN:
                    return this._repeat(null, -1, t), !0;
                case i.PAGE_UP:
                    return this._repeat(null, e.page, t), !0;
                case i.PAGE_DOWN:
                    return this._repeat(null, -e.page, t), !0
            }
            return !1
        },
        _start: function(t) {
            return !(!this.spinning && !1 === this._trigger("start", t)) && (this.counter || (this.counter = 1), this.spinning = !0)
        },
        _repeat: function(t, e, i) {
            t = t || 500, clearTimeout(this.timer), this.timer = this._delay(function() {
                this._repeat(40, e, i)
            }, t), this._spin(e * this.options.step, i)
        },
        _spin: function(t, e) {
            var i = this.value() || 0;
            this.counter || (this.counter = 1), i = this._adjustValue(i + t * this._increment(this.counter)), this.spinning && !1 === this._trigger("spin", e, {
                value: i
            }) || (this._value(i), this.counter++)
        },
        _increment: function(t) {
            var e = this.options.incremental;
            return e ? k.isFunction(e) ? e(t) : Math.floor(t * t * t / 5e4 - t * t / 500 + 17 * t / 200 + 1) : 1
        },
        _precision: function() {
            var t = this._precisionOf(this.options.step);
            return t = null !== this.options.min ? Math.max(t, this._precisionOf(this.options.min)) : t
        },
        _precisionOf: function(t) {
            var e = t.toString(),
                t = e.indexOf(".");
            return -1 === t ? 0 : e.length - t - 1
        },
        _adjustValue: function(t) {
            var e = this.options,
                i = null !== e.min ? e.min : 0,
                s = t - i;
            return t = i + Math.round(s / e.step) * e.step, t = parseFloat(t.toFixed(this._precision())), null !== e.max && t > e.max ? e.max : null !== e.min && t < e.min ? e.min : t
        },
        _stop: function(t) {
            this.spinning && (clearTimeout(this.timer), clearTimeout(this.mousewheelTimer), this.counter = 0, this.spinning = !1, this._trigger("stop", t))
        },
        _setOption: function(t, e) {
            var i;
            if ("culture" === t || "numberFormat" === t) return i = this._parse(this.element.val()), this.options[t] = e, void this.element.val(this._format(i));
            "max" !== t && "min" !== t && "step" !== t || "string" == typeof e && (e = this._parse(e)), "icons" === t && (i = this.buttons.first().find(".ui-icon"), this._removeClass(i, null, this.options.icons.up), this._addClass(i, null, e.up), i = this.buttons.last().find(".ui-icon"), this._removeClass(i, null, this.options.icons.down), this._addClass(i, null, e.down)), this._super(t, e)
        },
        _setOptionDisabled: function(t) {
            this._super(t), this._toggleClass(this.uiSpinner, null, "ui-state-disabled", !!t), this.element.prop("disabled", !!t), this.buttons.button(t ? "disable" : "enable")
        },
        _setOptions: P(function(t) {
            this._super(t)
        }),
        _parse: function(t) {
            return "" === (t = "string" == typeof t && "" !== t ? window.Globalize && this.options.numberFormat ? Globalize.parseFloat(t, 10, this.options.culture) : +t : t) || isNaN(t) ? null : t
        },
        _format: function(t) {
            return "" === t ? "" : window.Globalize && this.options.numberFormat ? Globalize.format(t, this.options.numberFormat, this.options.culture) : t
        },
        _refresh: function() {
            this.element.attr({
                "aria-valuemin": this.options.min,
                "aria-valuemax": this.options.max,
                "aria-valuenow": this._parse(this.element.val())
            })
        },
        isValid: function() {
            var t = this.value();
            return null !== t && t === this._adjustValue(t)
        },
        _value: function(t, e) {
            var i;
            "" !== t && null !== (i = this._parse(t)) && (e || (i = this._adjustValue(i)), t = this._format(i)), this.element.val(t), this._refresh()
        },
        _destroy: function() {
            this.element.prop("disabled", !1).removeAttr("autocomplete role aria-valuemin aria-valuemax aria-valuenow"), this.uiSpinner.replaceWith(this.element)
        },
        stepUp: P(function(t) {
            this._stepUp(t)
        }),
        _stepUp: function(t) {
            this._start() && (this._spin((t || 1) * this.options.step), this._stop())
        },
        stepDown: P(function(t) {
            this._stepDown(t)
        }),
        _stepDown: function(t) {
            this._start() && (this._spin((t || 1) * -this.options.step), this._stop())
        },
        pageUp: P(function(t) {
            this._stepUp((t || 1) * this.options.page)
        }),
        pageDown: P(function(t) {
            this._stepDown((t || 1) * this.options.page)
        }),
        value: function(t) {
            if (!arguments.length) return this._parse(this.element.val());
            P(this._value).call(this, t)
        },
        widget: function() {
            return this.uiSpinner
        }
    }), !1 !== k.uiBackCompat && k.widget("ui.spinner", k.ui.spinner, {
        _enhance: function() {
            this.uiSpinner = this.element.attr("autocomplete", "off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml())
        },
        _uiSpinnerHtml: function() {
            return "<span>"
        },
        _buttonHtml: function() {
            return "<a></a><a></a>"
        }
    });
    var M;
    k.ui.spinner;
    k.widget("ui.tabs", {
        version: "1.12.1",
        delay: 300,
        options: {
            active: null,
            classes: {
                "ui-tabs": "ui-corner-all",
                "ui-tabs-nav": "ui-corner-all",
                "ui-tabs-panel": "ui-corner-bottom",
                "ui-tabs-tab": "ui-corner-top"
            },
            collapsible: !1,
            event: "click",
            heightStyle: "content",
            hide: null,
            show: null,
            activate: null,
            beforeActivate: null,
            beforeLoad: null,
            load: null
        },
        _isLocal: (M = /#.*$/, function(t) {
            var e = t.href.replace(M, ""),
                i = location.href.replace(M, "");
            try {
                e = decodeURIComponent(e)
            } catch (t) {}
            try {
                i = decodeURIComponent(i)
            } catch (t) {}
            return 1 < t.hash.length && e === i
        }),
        _create: function() {
            var e = this,
                t = this.options;
            this.running = !1, this._addClass("ui-tabs", "ui-widget ui-widget-content"), this._toggleClass("ui-tabs-collapsible", null, t.collapsible), this._processTabs(), t.active = this._initialActive(), k.isArray(t.disabled) && (t.disabled = k.unique(t.disabled.concat(k.map(this.tabs.filter(".ui-state-disabled"), function(t) {
                return e.tabs.index(t)
            }))).sort()), !1 !== this.options.active && this.anchors.length ? this.active = this._findActive(t.active) : this.active = k(), this._refresh(), this.active.length && this.load(t.active)
        },
        _initialActive: function() {
            var i = this.options.active,
                t = this.options.collapsible,
                s = location.hash.substring(1);
            return null === i && (s && this.tabs.each(function(t, e) {
                if (k(e).attr("aria-controls") === s) return i = t, !1
            }), null !== (i = null === i ? this.tabs.index(this.tabs.filter(".ui-tabs-active")) : i) && -1 !== i || (i = !!this.tabs.length && 0)), !1 !== i && -1 === (i = this.tabs.index(this.tabs.eq(i))) && (i = !t && 0), i = !t && !1 === i && this.anchors.length ? 0 : i
        },
        _getCreateEventData: function() {
            return {
                tab: this.active,
                panel: this.active.length ? this._getPanelForTab(this.active) : k()
            }
        },
        _tabKeydown: function(t) {
            var e = k(k.ui.safeActiveElement(this.document[0])).closest("li"),
                i = this.tabs.index(e),
                s = !0;
            if (!this._handlePageNav(t)) {
                switch (t.keyCode) {
                    case k.ui.keyCode.RIGHT:
                    case k.ui.keyCode.DOWN:
                        i++;
                        break;
                    case k.ui.keyCode.UP:
                    case k.ui.keyCode.LEFT:
                        s = !1, i--;
                        break;
                    case k.ui.keyCode.END:
                        i = this.anchors.length - 1;
                        break;
                    case k.ui.keyCode.HOME:
                        i = 0;
                        break;
                    case k.ui.keyCode.SPACE:
                        return t.preventDefault(), clearTimeout(this.activating), void this._activate(i);
                    case k.ui.keyCode.ENTER:
                        return t.preventDefault(), clearTimeout(this.activating), void this._activate(i !== this.options.active && i);
                    default:
                        return
                }
                t.preventDefault(), clearTimeout(this.activating), i = this._focusNextTab(i, s), t.ctrlKey || t.metaKey || (e.attr("aria-selected", "false"), this.tabs.eq(i).attr("aria-selected", "true"), this.activating = this._delay(function() {
                    this.option("active", i)
                }, this.delay))
            }
        },
        _panelKeydown: function(t) {
            this._handlePageNav(t) || t.ctrlKey && t.keyCode === k.ui.keyCode.UP && (t.preventDefault(), this.active.trigger("focus"))
        },
        _handlePageNav: function(t) {
            return t.altKey && t.keyCode === k.ui.keyCode.PAGE_UP ? (this._activate(this._focusNextTab(this.options.active - 1, !1)), !0) : t.altKey && t.keyCode === k.ui.keyCode.PAGE_DOWN ? (this._activate(this._focusNextTab(this.options.active + 1, !0)), !0) : void 0
        },
        _findNextTab: function(t, e) {
            var i = this.tabs.length - 1;
            for (; - 1 !== k.inArray(t = (t = i < t ? 0 : t) < 0 ? i : t, this.options.disabled);) t = e ? t + 1 : t - 1;
            return t
        },
        _focusNextTab: function(t, e) {
            return t = this._findNextTab(t, e), this.tabs.eq(t).trigger("focus"), t
        },
        _setOption: function(t, e) {
            "active" !== t ? (this._super(t, e), "collapsible" === t && (this._toggleClass("ui-tabs-collapsible", null, e), e || !1 !== this.options.active || this._activate(0)), "event" === t && this._setupEvents(e), "heightStyle" === t && this._setupHeightStyle(e)) : this._activate(e)
        },
        _sanitizeSelector: function(t) {
            return t ? t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g, "\\$&") : ""
        },
        refresh: function() {
            var t = this.options,
                e = this.tablist.children(":has(a[href])");
            t.disabled = k.map(e.filter(".ui-state-disabled"), function(t) {
                return e.index(t)
            }), this._processTabs(), !1 !== t.active && this.anchors.length ? this.active.length && !k.contains(this.tablist[0], this.active[0]) ? this.tabs.length === t.disabled.length ? (t.active = !1, this.active = k()) : this._activate(this._findNextTab(Math.max(0, t.active - 1), !1)) : t.active = this.tabs.index(this.active) : (t.active = !1, this.active = k()), this._refresh()
        },
        _refresh: function() {
            this._setOptionDisabled(this.options.disabled), this._setupEvents(this.options.event), this._setupHeightStyle(this.options.heightStyle), this.tabs.not(this.active).attr({
                "aria-selected": "false",
                "aria-expanded": "false",
                tabIndex: -1
            }), this.panels.not(this._getPanelForTab(this.active)).hide().attr({
                "aria-hidden": "true"
            }), this.active.length ? (this.active.attr({
                "aria-selected": "true",
                "aria-expanded": "true",
                tabIndex: 0
            }), this._addClass(this.active, "ui-tabs-active", "ui-state-active"), this._getPanelForTab(this.active).show().attr({
                "aria-hidden": "false"
            })) : this.tabs.eq(0).attr("tabIndex", 0)
        },
        _processTabs: function() {
            var h = this,
                t = this.tabs,
                e = this.anchors,
                i = this.panels;
            this.tablist = this._getList().attr("role", "tablist"), this._addClass(this.tablist, "ui-tabs-nav", "ui-helper-reset ui-helper-clearfix ui-widget-header"), this.tablist.on("mousedown" + this.eventNamespace, "> li", function(t) {
                k(this).is(".ui-state-disabled") && t.preventDefault()
            }).on("focus" + this.eventNamespace, ".ui-tabs-anchor", function() {
                k(this).closest("li").is(".ui-state-disabled") && this.blur()
            }), this.tabs = this.tablist.find("> li:has(a[href])").attr({
                role: "tab",
                tabIndex: -1
            }), this._addClass(this.tabs, "ui-tabs-tab", "ui-state-default"), this.anchors = this.tabs.map(function() {
                return k("a", this)[0]
            }).attr({
                role: "presentation",
                tabIndex: -1
            }), this._addClass(this.anchors, "ui-tabs-anchor"), this.panels = k(), this.anchors.each(function(t, e) {
                var i, s, n, o = k(e).uniqueId().attr("id"),
                    a = k(e).closest("li"),
                    r = a.attr("aria-controls");
                h._isLocal(e) ? (n = (i = e.hash).substring(1), s = h.element.find(h._sanitizeSelector(i))) : (n = a.attr("aria-controls") || k({}).uniqueId()[0].id, (s = h.element.find(i = "#" + n)).length || (s = h._createPanel(n)).insertAfter(h.panels[t - 1] || h.tablist), s.attr("aria-live", "polite")), s.length && (h.panels = h.panels.add(s)), r && a.data("ui-tabs-aria-controls", r), a.attr({
                    "aria-controls": n,
                    "aria-labelledby": o
                }), s.attr("aria-labelledby", o)
            }), this.panels.attr("role", "tabpanel"), this._addClass(this.panels, "ui-tabs-panel", "ui-widget-content"), t && (this._off(t.not(this.tabs)), this._off(e.not(this.anchors)), this._off(i.not(this.panels)))
        },
        _getList: function() {
            return this.tablist || this.element.find("ol, ul").eq(0)
        },
        _createPanel: function(t) {
            return k("<div>").attr("id", t).data("ui-tabs-destroy", !0)
        },
        _setOptionDisabled: function(t) {
            var e, i;
            for (k.isArray(t) && (t.length ? t.length === this.anchors.length && (t = !0) : t = !1), i = 0; e = this.tabs[i]; i++) e = k(e), !0 === t || -1 !== k.inArray(i, t) ? (e.attr("aria-disabled", "true"), this._addClass(e, null, "ui-state-disabled")) : (e.removeAttr("aria-disabled"), this._removeClass(e, null, "ui-state-disabled"));
            this.options.disabled = t, this._toggleClass(this.widget(), this.widgetFullName + "-disabled", null, !0 === t)
        },
        _setupEvents: function(t) {
            var i = {};
            t && k.each(t.split(" "), function(t, e) {
                i[e] = "_eventHandler"
            }), this._off(this.anchors.add(this.tabs).add(this.panels)), this._on(!0, this.anchors, {
                click: function(t) {
                    t.preventDefault()
                }
            }), this._on(this.anchors, i), this._on(this.tabs, {
                keydown: "_tabKeydown"
            }), this._on(this.panels, {
                keydown: "_panelKeydown"
            }), this._focusable(this.tabs), this._hoverable(this.tabs)
        },
        _setupHeightStyle: function(t) {
            var i, e = this.element.parent();
            "fill" === t ? (i = e.height(), i -= this.element.outerHeight() - this.element.height(), this.element.siblings(":visible").each(function() {
                var t = k(this),
                    e = t.css("position");
                "absolute" !== e && "fixed" !== e && (i -= t.outerHeight(!0))
            }), this.element.children().not(this.panels).each(function() {
                i -= k(this).outerHeight(!0)
            }), this.panels.each(function() {
                k(this).height(Math.max(0, i - k(this).innerHeight() + k(this).height()))
            }).css("overflow", "auto")) : "auto" === t && (i = 0, this.panels.each(function() {
                i = Math.max(i, k(this).height("").height())
            }).height(i))
        },
        _eventHandler: function(t) {
            var e = this.options,
                i = this.active,
                s = k(t.currentTarget).closest("li"),
                n = s[0] === i[0],
                o = n && e.collapsible,
                a = o ? k() : this._getPanelForTab(s),
                r = i.length ? this._getPanelForTab(i) : k(),
                i = {
                    oldTab: i,
                    oldPanel: r,
                    newTab: o ? k() : s,
                    newPanel: a
                };
            t.preventDefault(), s.hasClass("ui-state-disabled") || s.hasClass("ui-tabs-loading") || this.running || n && !e.collapsible || !1 === this._trigger("beforeActivate", t, i) || (e.active = !o && this.tabs.index(s), this.active = n ? k() : s, this.xhr && this.xhr.abort(), r.length || a.length || k.error("jQuery UI Tabs: Mismatching fragment identifier."), a.length && this.load(this.tabs.index(s), t), this._toggle(t, i))
        },
        _toggle: function(t, e) {
            var i = this,
                s = e.newPanel,
                n = e.oldPanel;

            function o() {
                i.running = !1, i._trigger("activate", t, e)
            }

            function a() {
                i._addClass(e.newTab.closest("li"), "ui-tabs-active", "ui-state-active"), s.length && i.options.show ? i._show(s, i.options.show, o) : (s.show(), o())
            }
            this.running = !0, n.length && this.options.hide ? this._hide(n, this.options.hide, function() {
                i._removeClass(e.oldTab.closest("li"), "ui-tabs-active", "ui-state-active"), a()
            }) : (this._removeClass(e.oldTab.closest("li"), "ui-tabs-active", "ui-state-active"), n.hide(), a()), n.attr("aria-hidden", "true"), e.oldTab.attr({
                "aria-selected": "false",
                "aria-expanded": "false"
            }), s.length && n.length ? e.oldTab.attr("tabIndex", -1) : s.length && this.tabs.filter(function() {
                return 0 === k(this).attr("tabIndex")
            }).attr("tabIndex", -1), s.attr("aria-hidden", "false"), e.newTab.attr({
                "aria-selected": "true",
                "aria-expanded": "true",
                tabIndex: 0
            })
        },
        _activate: function(t) {
            var t = this._findActive(t);
            t[0] !== this.active[0] && (t = (t = !t.length ? this.active : t).find(".ui-tabs-anchor")[0], this._eventHandler({
                target: t,
                currentTarget: t,
                preventDefault: k.noop
            }))
        },
        _findActive: function(t) {
            return !1 === t ? k() : this.tabs.eq(t)
        },
        _getIndex: function(t) {
            return t = "string" == typeof t ? this.anchors.index(this.anchors.filter("[href$='" + k.ui.escapeSelector(t) + "']")) : t
        },
        _destroy: function() {
            this.xhr && this.xhr.abort(), this.tablist.removeAttr("role").off(this.eventNamespace), this.anchors.removeAttr("role tabIndex").removeUniqueId(), this.tabs.add(this.panels).each(function() {
                k.data(this, "ui-tabs-destroy") ? k(this).remove() : k(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")
            }), this.tabs.each(function() {
                var t = k(this),
                    e = t.data("ui-tabs-aria-controls");
                e ? t.attr("aria-controls", e).removeData("ui-tabs-aria-controls") : t.removeAttr("aria-controls")
            }), this.panels.show(), "content" !== this.options.heightStyle && this.panels.css("height", "")
        },
        enable: function(i) {
            var t = this.options.disabled;
            !1 !== t && (t = void 0 !== i && (i = this._getIndex(i), k.isArray(t) ? k.map(t, function(t) {
                return t !== i ? t : null
            }) : k.map(this.tabs, function(t, e) {
                return e !== i ? e : null
            })), this._setOptionDisabled(t))
        },
        disable: function(t) {
            var e = this.options.disabled;
            if (!0 !== e) {
                if (void 0 === t) e = !0;
                else {
                    if (t = this._getIndex(t), -1 !== k.inArray(t, e)) return;
                    e = k.isArray(e) ? k.merge([t], e).sort() : [t]
                }
                this._setOptionDisabled(e)
            }
        },
        load: function(t, s) {
            t = this._getIndex(t);

            function n(t, e) {
                "abort" === e && o.panels.stop(!1, !0), o._removeClass(i, "ui-tabs-loading"), a.removeAttr("aria-busy"), t === o.xhr && delete o.xhr
            }
            var o = this,
                i = this.tabs.eq(t),
                t = i.find(".ui-tabs-anchor"),
                a = this._getPanelForTab(i),
                r = {
                    tab: i,
                    panel: a
                };
            this._isLocal(t[0]) || (this.xhr = k.ajax(this._ajaxSettings(t, s, r)), this.xhr && "canceled" !== this.xhr.statusText && (this._addClass(i, "ui-tabs-loading"), a.attr("aria-busy", "true"), this.xhr.done(function(t, e, i) {
                setTimeout(function() {
                    a.html(t), o._trigger("load", s, r), n(i, e)
                }, 1)
            }).fail(function(t, e) {
                setTimeout(function() {
                    n(t, e)
                }, 1)
            })))
        },
        _ajaxSettings: function(t, i, s) {
            var n = this;
            return {
                url: t.attr("href").replace(/#.*$/, ""),
                beforeSend: function(t, e) {
                    return n._trigger("beforeLoad", i, k.extend({
                        jqXHR: t,
                        ajaxSettings: e
                    }, s))
                }
            }
        },
        _getPanelForTab: function(t) {
            t = k(t).attr("aria-controls");
            return this.element.find(this._sanitizeSelector("#" + t))
        }
    }), !1 !== k.uiBackCompat && k.widget("ui.tabs", k.ui.tabs, {
        _processTabs: function() {
            this._superApply(arguments), this._addClass(this.tabs, "ui-tab")
        }
    });
    k.ui.tabs;
    k.widget("ui.tooltip", {
        version: "1.12.1",
        options: {
            classes: {
                "ui-tooltip": "ui-corner-all ui-widget-shadow"
            },
            content: function() {
                var t = k(this).attr("title") || "";
                return k("<a>").text(t).html()
            },
            hide: !0,
            items: "[title]:not([disabled])",
            position: {
                my: "left top+15",
                at: "left bottom",
                collision: "flipfit flip"
            },
            show: !0,
            track: !1,
            close: null,
            open: null
        },
        _addDescribedBy: function(t, e) {
            var i = (t.attr("aria-describedby") || "").split(/\s+/);
            i.push(e), t.data("ui-tooltip-id", e).attr("aria-describedby", k.trim(i.join(" ")))
        },
        _removeDescribedBy: function(t) {
            var e = t.data("ui-tooltip-id"),
                i = (t.attr("aria-describedby") || "").split(/\s+/),
                e = k.inArray(e, i); - 1 !== e && i.splice(e, 1), t.removeData("ui-tooltip-id"), (i = k.trim(i.join(" "))) ? t.attr("aria-describedby", i) : t.removeAttr("aria-describedby")
        },
        _create: function() {
            this._on({
                mouseover: "open",
                focusin: "open"
            }), this.tooltips = {}, this.parents = {}, this.liveRegion = k("<div>").attr({
                role: "log",
                "aria-live": "assertive",
                "aria-relevant": "additions"
            }).appendTo(this.document[0].body), this._addClass(this.liveRegion, null, "ui-helper-hidden-accessible"), this.disabledTitles = k([])
        },
        _setOption: function(t, e) {
            var i = this;
            this._super(t, e), "content" === t && k.each(this.tooltips, function(t, e) {
                i._updateContent(e.element)
            })
        },
        _setOptionDisabled: function(t) {
            this[t ? "_disable" : "_enable"]()
        },
        _disable: function() {
            var s = this;
            k.each(this.tooltips, function(t, e) {
                var i = k.Event("blur");
                i.target = i.currentTarget = e.element[0], s.close(i, !0)
            }), this.disabledTitles = this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function() {
                var t = k(this);
                if (t.is("[title]")) return t.data("ui-tooltip-title", t.attr("title")).removeAttr("title")
            }))
        },
        _enable: function() {
            this.disabledTitles.each(function() {
                var t = k(this);
                t.data("ui-tooltip-title") && t.attr("title", t.data("ui-tooltip-title"))
            }), this.disabledTitles = k([])
        },
        open: function(t) {
            var i = this,
                e = k(t ? t.target : this.element).closest(this.options.items);
            e.length && !e.data("ui-tooltip-id") && (e.attr("title") && e.data("ui-tooltip-title", e.attr("title")), e.data("ui-tooltip-open", !0), t && "mouseover" === t.type && e.parents().each(function() {
                var t, e = k(this);
                e.data("ui-tooltip-open") && ((t = k.Event("blur")).target = t.currentTarget = this, i.close(t, !0)), e.attr("title") && (e.uniqueId(), i.parents[this.id] = {
                    element: this,
                    title: e.attr("title")
                }, e.attr("title", ""))
            }), this._registerCloseHandlers(t, e), this._updateContent(e, t))
        },
        _updateContent: function(e, i) {
            var t = this.options.content,
                s = this,
                n = i ? i.type : null;
            if ("string" == typeof t || t.nodeType || t.jquery) return this._open(i, e, t);
            (t = t.call(e[0], function(t) {
                s._delay(function() {
                    e.data("ui-tooltip-open") && (i && (i.type = n), this._open(i, e, t))
                })
            })) && this._open(i, e, t)
        },
        _open: function(t, e, i) {
            var s, n, o, a = k.extend({}, this.options.position);

            function r(t) {
                a.of = t, n.is(":hidden") || n.position(a)
            }
            i && ((s = this._find(e)) ? s.tooltip.find(".ui-tooltip-content").html(i) : (e.is("[title]") && (t && "mouseover" === t.type ? e.attr("title", "") : e.removeAttr("title")), s = this._tooltip(e), n = s.tooltip, this._addDescribedBy(e, n.attr("id")), n.find(".ui-tooltip-content").html(i), this.liveRegion.children().hide(), (i = k("<div>").html(n.find(".ui-tooltip-content").html())).removeAttr("name").find("[name]").removeAttr("name"), i.removeAttr("id").find("[id]").removeAttr("id"), i.appendTo(this.liveRegion), this.options.track && t && /^mouse/.test(t.type) ? (this._on(this.document, {
                mousemove: r
            }), r(t)) : n.position(k.extend({
                of: e
            }, this.options.position)), n.hide(), this._show(n, this.options.show), this.options.track && this.options.show && this.options.show.delay && (o = this.delayedShow = setInterval(function() {
                n.is(":visible") && (r(a.of), clearInterval(o))
            }, k.fx.interval)), this._trigger("open", t, {
                tooltip: n
            })))
        },
        _registerCloseHandlers: function(t, e) {
            var i = {
                keyup: function(t) {
                    t.keyCode === k.ui.keyCode.ESCAPE && ((t = k.Event(t)).currentTarget = e[0], this.close(t, !0))
                }
            };
            e[0] !== this.element[0] && (i.remove = function() {
                this._removeTooltip(this._find(e).tooltip)
            }), t && "mouseover" !== t.type || (i.mouseleave = "close"), t && "focusin" !== t.type || (i.focusout = "close"), this._on(!0, e, i)
        },
        close: function(t) {
            var e, i = this,
                s = k(t ? t.currentTarget : this.element),
                n = this._find(s);
            n ? (e = n.tooltip, n.closing || (clearInterval(this.delayedShow), s.data("ui-tooltip-title") && !s.attr("title") && s.attr("title", s.data("ui-tooltip-title")), this._removeDescribedBy(s), n.hiding = !0, e.stop(!0), this._hide(e, this.options.hide, function() {
                i._removeTooltip(k(this))
            }), s.removeData("ui-tooltip-open"), this._off(s, "mouseleave focusout keyup"), s[0] !== this.element[0] && this._off(s, "remove"), this._off(this.document, "mousemove"), t && "mouseleave" === t.type && k.each(this.parents, function(t, e) {
                k(e.element).attr("title", e.title), delete i.parents[t]
            }), n.closing = !0, this._trigger("close", t, {
                tooltip: e
            }), n.hiding || (n.closing = !1))) : s.removeData("ui-tooltip-open")
        },
        _tooltip: function(t) {
            var e = k("<div>").attr("role", "tooltip"),
                i = k("<div>").appendTo(e),
                s = e.uniqueId().attr("id");
            return this._addClass(i, "ui-tooltip-content"), this._addClass(e, "ui-tooltip", "ui-widget ui-widget-content"), e.appendTo(this._appendTo(t)), this.tooltips[s] = {
                element: t,
                tooltip: e
            }
        },
        _find: function(t) {
            t = t.data("ui-tooltip-id");
            return t ? this.tooltips[t] : null
        },
        _removeTooltip: function(t) {
            t.remove(), delete this.tooltips[t.attr("id")]
        },
        _appendTo: function(t) {
            t = t.closest(".ui-front, dialog");
            return t = !t.length ? this.document[0].body : t
        },
        _destroy: function() {
            var s = this;
            k.each(this.tooltips, function(t, e) {
                var i = k.Event("blur"),
                    e = e.element;
                i.target = i.currentTarget = e[0], s.close(i, !0), k("#" + t).remove(), e.data("ui-tooltip-title") && (e.attr("title") || e.attr("title", e.data("ui-tooltip-title")), e.removeData("ui-tooltip-title"))
            }), this.liveRegion.remove()
        }
    }), !1 !== k.uiBackCompat && k.widget("ui.tooltip", k.ui.tooltip, {
        options: {
            tooltipClass: null
        },
        _tooltip: function() {
            var t = this._superApply(arguments);
            return this.options.tooltipClass && t.tooltip.addClass(this.options.tooltipClass), t
        }
    });
    k.ui.tooltip;
    var S, H, z, O, A, N, W, E, F, R, L, B, Y, j, q, K, U, V, $, X, G = "ui-effects-",
        Q = "ui-effects-style",
        J = "ui-effects-animated",
        Z = k;

    function tt(t, e, i) {
        var s = E[e.type] || {};
        return null == t ? i || !e.def ? null : e.def : (t = s.floor ? ~~t : parseFloat(t), isNaN(t) ? e.def : s.mod ? (t + s.mod) % s.mod : t < 0 ? 0 : s.max < t ? s.max : t)
    }

    function et(s) {
        var n = N(),
            o = n._rgba = [];
        return s = s.toLowerCase(), R(A, function(t, e) {
            var i = e.re.exec(s),
                i = i && e.parse(i),
                e = e.space || "rgba";
            if (i) return i = n[e](i), n[W[e].cache] = i[W[e].cache], o = n._rgba = i._rgba, !1
        }), o.length ? ("0,0,0,0" === o.join() && S.extend(o, z.transparent), n) : z[s]
    }

    function it(t, e, i) {
        return 6 * (i = (i + 1) % 1) < 1 ? t + (e - t) * i * 6 : 2 * i < 1 ? e : 3 * i < 2 ? t + (e - t) * (2 / 3 - i) * 6 : t
    }

    function st(t) {
        var e, i, s = t.ownerDocument.defaultView ? t.ownerDocument.defaultView.getComputedStyle(t, null) : t.currentStyle,
            n = {};
        if (s && s.length && s[0] && s[s[0]])
            for (i = s.length; i--;) "string" == typeof s[e = s[i]] && (n[k.camelCase(e)] = s[e]);
        else
            for (e in s) "string" == typeof s[e] && (n[e] = s[e]);
        return n
    }

    function nt(t, e, i, s) {
        return t = {
            effect: t = k.isPlainObject(t) ? (e = t).effect : t
        }, k.isFunction(e = null == e ? {} : e) && (s = e, i = null, e = {}), "number" != typeof e && !k.fx.speeds[e] || (s = i, i = e, e = {}), k.isFunction(i) && (s = i, i = null), e && k.extend(t, e), i = i || e.duration, t.duration = k.fx.off ? 0 : "number" == typeof i ? i : i in k.fx.speeds ? k.fx.speeds[i] : k.fx.speeds._default, t.complete = s || e.complete, t
    }

    function ot(t) {
        return !t || "number" == typeof t || k.fx.speeds[t] || ("string" == typeof t && !k.effects.effect[t] || (k.isFunction(t) || "object" == typeof t && !t.effect))
    }

    function at(t, e) {
        var i = e.outerWidth(),
            e = e.outerHeight(),
            t = /^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/.exec(t) || ["", 0, i, e, 0];
        return {
            top: parseFloat(t[1]) || 0,
            right: "auto" === t[2] ? i : parseFloat(t[2]),
            bottom: "auto" === t[3] ? e : parseFloat(t[3]),
            left: parseFloat(t[4]) || 0
        }
    }
    k.effects = {
        effect: {}
    }, O = /^([\-+])=\s*(\d+\.?\d*)/, A = [{
        re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
        parse: function(t) {
            return [t[1], t[2], t[3], t[4]]
        }
    }, {
        re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
        parse: function(t) {
            return [2.55 * t[1], 2.55 * t[2], 2.55 * t[3], t[4]]
        }
    }, {
        re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,
        parse: function(t) {
            return [parseInt(t[1], 16), parseInt(t[2], 16), parseInt(t[3], 16)]
        }
    }, {
        re: /#([a-f0-9])([a-f0-9])([a-f0-9])/,
        parse: function(t) {
            return [parseInt(t[1] + t[1], 16), parseInt(t[2] + t[2], 16), parseInt(t[3] + t[3], 16)]
        }
    }, {
        re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
        space: "hsla",
        parse: function(t) {
            return [t[1], t[2] / 100, t[3] / 100, t[4]]
        }
    }], N = (S = Z).Color = function(t, e, i, s) {
        return new S.Color.fn.parse(t, e, i, s)
    }, W = {
        rgba: {
            props: {
                red: {
                    idx: 0,
                    type: "byte"
                },
                green: {
                    idx: 1,
                    type: "byte"
                },
                blue: {
                    idx: 2,
                    type: "byte"
                }
            }
        },
        hsla: {
            props: {
                hue: {
                    idx: 0,
                    type: "degrees"
                },
                saturation: {
                    idx: 1,
                    type: "percent"
                },
                lightness: {
                    idx: 2,
                    type: "percent"
                }
            }
        }
    }, E = {
        byte: {
            floor: !0,
            max: 255
        },
        percent: {
            max: 1
        },
        degrees: {
            mod: 360,
            floor: !0
        }
    }, F = N.support = {}, rt = S("<p>")[0], R = S.each, rt.style.cssText = "background-color:rgba(1,1,1,.5)", F.rgba = -1 < rt.style.backgroundColor.indexOf("rgba"), R(W, function(t, e) {
        e.cache = "_" + t, e.props.alpha = {
            idx: 3,
            type: "percent",
            def: 1
        }
    }), (N.fn = S.extend(N.prototype, {
        parse: function(n, t, e, i) {
            if (n === H) return this._rgba = [null, null, null, null], this;
            (n.jquery || n.nodeType) && (n = S(n).css(t), t = H);
            var o = this,
                s = S.type(n),
                a = this._rgba = [];
            return t !== H && (n = [n, t, e, i], s = "array"), "string" === s ? this.parse(et(n) || z._default) : "array" === s ? (R(W.rgba.props, function(t, e) {
                a[e.idx] = tt(n[e.idx], e)
            }), this) : "object" === s ? (R(W, n instanceof N ? function(t, e) {
                n[e.cache] && (o[e.cache] = n[e.cache].slice())
            } : function(t, i) {
                var s = i.cache;
                R(i.props, function(t, e) {
                    if (!o[s] && i.to) {
                        if ("alpha" === t || null == n[t]) return;
                        o[s] = i.to(o._rgba)
                    }
                    o[s][e.idx] = tt(n[t], e, !0)
                }), o[s] && S.inArray(null, o[s].slice(0, 3)) < 0 && (o[s][3] = 1, i.from && (o._rgba = i.from(o[s])))
            }), this) : void 0
        },
        is: function(t) {
            var n = N(t),
                o = !0,
                a = this;
            return R(W, function(t, e) {
                var i, s = n[e.cache];
                return s && (i = a[e.cache] || e.to && e.to(a._rgba) || [], R(e.props, function(t, e) {
                    if (null != s[e.idx]) return o = s[e.idx] === i[e.idx]
                })), o
            }), o
        },
        _space: function() {
            var i = [],
                s = this;
            return R(W, function(t, e) {
                s[e.cache] && i.push(t)
            }), i.pop()
        },
        transition: function(t, a) {
            var e = (l = N(t))._space(),
                i = W[e],
                t = 0 === this.alpha() ? N("transparent") : this,
                r = t[i.cache] || i.to(t._rgba),
                h = r.slice(),
                l = l[i.cache];
            return R(i.props, function(t, e) {
                var i = e.idx,
                    s = r[i],
                    n = l[i],
                    o = E[e.type] || {};
                null !== n && (null === s ? h[i] = n : (o.mod && (n - s > o.mod / 2 ? s += o.mod : s - n > o.mod / 2 && (s -= o.mod)), h[i] = tt((n - s) * a + s, e)))
            }), this[e](h)
        },
        blend: function(t) {
            if (1 === this._rgba[3]) return this;
            var e = this._rgba.slice(),
                i = e.pop(),
                s = N(t)._rgba;
            return N(S.map(e, function(t, e) {
                return (1 - i) * s[e] + i * t
            }))
        },
        toRgbaString: function() {
            var t = "rgba(",
                e = S.map(this._rgba, function(t, e) {
                    return null == t ? 2 < e ? 1 : 0 : t
                });
            return 1 === e[3] && (e.pop(), t = "rgb("), t + e.join() + ")"
        },
        toHslaString: function() {
            var t = "hsla(",
                e = S.map(this.hsla(), function(t, e) {
                    return null == t && (t = 2 < e ? 1 : 0), t = e && e < 3 ? Math.round(100 * t) + "%" : t
                });
            return 1 === e[3] && (e.pop(), t = "hsl("), t + e.join() + ")"
        },
        toHexString: function(t) {
            var e = this._rgba.slice(),
                i = e.pop();
            return t && e.push(~~(255 * i)), "#" + S.map(e, function(t) {
                return 1 === (t = (t || 0).toString(16)).length ? "0" + t : t
            }).join("")
        },
        toString: function() {
            return 0 === this._rgba[3] ? "transparent" : this.toRgbaString()
        }
    })).parse.prototype = N.fn, W.hsla.to = function(t) {
        if (null == t[0] || null == t[1] || null == t[2]) return [null, null, null, t[3]];
        var e = t[0] / 255,
            i = t[1] / 255,
            s = t[2] / 255,
            n = t[3],
            o = Math.max(e, i, s),
            a = Math.min(e, i, s),
            r = o - a,
            h = o + a,
            t = .5 * h,
            i = a === o ? 0 : e === o ? 60 * (i - s) / r + 360 : i === o ? 60 * (s - e) / r + 120 : 60 * (e - i) / r + 240,
            h = 0 == r ? 0 : t <= .5 ? r / h : r / (2 - h);
        return [Math.round(i) % 360, h, t, null == n ? 1 : n]
    }, W.hsla.from = function(t) {
        if (null == t[0] || null == t[1] || null == t[2]) return [null, null, null, t[3]];
        var e = t[0] / 360,
            i = t[1],
            s = t[2],
            t = t[3],
            i = s <= .5 ? s * (1 + i) : s + i - s * i,
            s = 2 * s - i;
        return [Math.round(255 * it(s, i, e + 1 / 3)), Math.round(255 * it(s, i, e)), Math.round(255 * it(s, i, e - 1 / 3)), t]
    }, R(W, function(h, t) {
        var o = t.props,
            a = t.cache,
            r = t.to,
            l = t.from;
        N.fn[h] = function(t) {
            if (r && !this[a] && (this[a] = r(this._rgba)), t === H) return this[a].slice();
            var e, i = S.type(t),
                s = "array" === i || "object" === i ? t : arguments,
                n = this[a].slice();
            return R(o, function(t, e) {
                t = s["object" === i ? t : e.idx];
                null == t && (t = n[e.idx]), n[e.idx] = tt(t, e)
            }), l ? ((e = N(l(n)))[a] = n, e) : N(n)
        }, R(o, function(a, r) {
            N.fn[a] || (N.fn[a] = function(t) {
                var e, i = S.type(t),
                    s = "alpha" === a ? this._hsla ? "hsla" : "rgba" : h,
                    n = this[s](),
                    o = n[r.idx];
                return "undefined" === i ? o : ("function" === i && (t = t.call(this, o), i = S.type(t)), null == t && r.empty ? this : ("string" === i && (e = O.exec(t)) && (t = o + parseFloat(e[2]) * ("+" === e[1] ? 1 : -1)), n[r.idx] = t, this[s](n)))
            })
        })
    }), (N.hook = function(t) {
        t = t.split(" ");
        R(t, function(t, o) {
            S.cssHooks[o] = {set: function(t, e) {
                    var i, s, n = "";
                    if ("transparent" !== e && ("string" !== S.type(e) || (i = et(e)))) {
                        if (e = N(i || e), !F.rgba && 1 !== e._rgba[3]) {
                            for (s = "backgroundColor" === o ? t.parentNode : t;
                                ("" === n || "transparent" === n) && s && s.style;) try {
                                n = S.css(s, "backgroundColor"), s = s.parentNode
                            } catch (t) {}
                            e = e.blend(n && "transparent" !== n ? n : "_default")
                        }
                        e = e.toRgbaString()
                    }
                    try {
                        t.style[o] = e
                    } catch (t) {}
                }
            }, S.fx.step[o] = function(t) {
                t.colorInit || (t.start = N(t.elem, o), t.end = N(t.end), t.colorInit = !0), S.cssHooks[o].set(t.elem, t.start.transition(t.end, t.pos))
            }
        })
    })("backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor"), S.cssHooks.borderColor = {
        expand: function(i) {
            var s = {};
            return R(["Top", "Right", "Bottom", "Left"], function(t, e) {
                s["border" + e + "Color"] = i
            }), s
        }
    }, z = S.Color.names = {
        aqua: "#00ffff",
        black: "#000000",
        blue: "#0000ff",
        fuchsia: "#ff00ff",
        gray: "#808080",
        green: "#008000",
        lime: "#00ff00",
        maroon: "#800000",
        navy: "#000080",
        olive: "#808000",
        purple: "#800080",
        red: "#ff0000",
        silver: "#c0c0c0",
        teal: "#008080",
        white: "#ffffff",
        yellow: "#ffff00",
        transparent: [null, null, null, 0],
        _default: "#ffffff"
    }, j = ["add", "remove", "toggle"], q = {
        border: 1,
        borderBottom: 1,
        borderColor: 1,
        borderLeft: 1,
        borderRight: 1,
        borderTop: 1,
        borderWidth: 1,
        margin: 1,
        padding: 1
    }, k.each(["borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle"], function(t, e) {
        k.fx.step[e] = function(t) {
            ("none" !== t.end && !t.setAttr || 1 === t.pos && !t.setAttr) && (Z.style(t.elem, e, t.end), t.setAttr = !0)
        }
    }), k.fn.addBack || (k.fn.addBack = function(t) {
        return this.add(null == t ? this.prevObject : this.prevObject.filter(t))
    }), k.effects.animateClass = function(n, t, e, i) {
        var o = k.speed(t, e, i);
        return this.queue(function() {
            var i = k(this),
                t = i.attr("class") || "",
                e = (e = o.children ? i.find("*").addBack() : i).map(function() {
                    return {
                        el: k(this),
                        start: st(this)
                    }
                }),
                s = function() {
                    k.each(j, function(t, e) {
                        n[e] && i[e + "Class"](n[e])
                    })
                };
            s(), e = e.map(function() {
                return this.end = st(this.el[0]), this.diff = function(t, e) {
                    var i, s, n = {};
                    for (i in e) s = e[i], t[i] !== s && (q[i] || !k.fx.step[i] && isNaN(parseFloat(s)) || (n[i] = s));
                    return n
                }(this.start, this.end), this
            }), i.attr("class", t), e = e.map(function() {
                var t = this,
                    e = k.Deferred(),
                    i = k.extend({}, o, {
                        queue: !1,
                        complete: function() {
                            e.resolve(t)
                        }
                    });
                return this.el.animate(this.diff, i), e.promise()
            }), k.when.apply(k, e.get()).done(function() {
                s(), k.each(arguments, function() {
                    var e = this.el;
                    k.each(this.diff, function(t) {
                        e.css(t, "")
                    })
                }), o.complete.call(i[0])
            })
        })
    }, k.fn.extend({
        addClass: (Y = k.fn.addClass, function(t, e, i, s) {
            return e ? k.effects.animateClass.call(this, {
                add: t
            }, e, i, s) : Y.apply(this, arguments)
        }),
        removeClass: (B = k.fn.removeClass, function(t, e, i, s) {
            return 1 < arguments.length ? k.effects.animateClass.call(this, {
                remove: t
            }, e, i, s) : B.apply(this, arguments)
        }),
        toggleClass: (L = k.fn.toggleClass, function(t, e, i, s, n) {
            return "boolean" == typeof e || void 0 === e ? i ? k.effects.animateClass.call(this, e ? {
                add: t
            } : {
                remove: t
            }, i, s, n) : L.apply(this, arguments) : k.effects.animateClass.call(this, {
                toggle: t
            }, e, i, s)
        }),
        switchClass: function(t, e, i, s, n) {
            return k.effects.animateClass.call(this, {
                add: e,
                remove: t
            }, i, s, n)
        }
    }), k.expr && k.expr.filters && k.expr.filters.animated && (k.expr.filters.animated = (K = k.expr.filters.animated, function(t) {
        return !!k(t).data(J) || K(t)
    })), !1 !== k.uiBackCompat && k.extend(k.effects, {
        save: function(t, e) {
            for (var i = 0, s = e.length; i < s; i++) null !== e[i] && t.data(G + e[i], t[0].style[e[i]])
        },
        restore: function(t, e) {
            for (var i, s = 0, n = e.length; s < n; s++) null !== e[s] && (i = t.data(G + e[s]), t.css(e[s], i))
        },
        setMode: function(t, e) {
            return e = "toggle" === e ? t.is(":hidden") ? "show" : "hide" : e
        },
        createWrapper: function(i) {
            if (i.parent().is(".ui-effects-wrapper")) return i.parent();
            var s = {
                    width: i.outerWidth(!0),
                    height: i.outerHeight(!0),
                    float: i.css("float")
                },
                t = k("<div></div>").addClass("ui-effects-wrapper").css({
                    fontSize: "100%",
                    background: "transparent",
                    border: "none",
                    margin: 0,
                    padding: 0
                }),
                e = {
                    width: i.width(),
                    height: i.height()
                },
                n = document.activeElement;
            try {
                n.id
            } catch (t) {
                n = document.body
            }
            return i.wrap(t), i[0] !== n && !k.contains(i[0], n) || k(n).trigger("focus"), t = i.parent(), "static" === i.css("position") ? (t.css({
                position: "relative"
            }), i.css({
                position: "relative"
            })) : (k.extend(s, {
                position: i.css("position"),
                zIndex: i.css("z-index")
            }), k.each(["top", "left", "bottom", "right"], function(t, e) {
                s[e] = i.css(e), isNaN(parseInt(s[e], 10)) && (s[e] = "auto")
            }), i.css({
                position: "relative",
                top: 0,
                left: 0,
                right: "auto",
                bottom: "auto"
            })), i.css(e), t.css(s).show()
        },
        removeWrapper: function(t) {
            var e = document.activeElement;
            return t.parent().is(".ui-effects-wrapper") && (t.parent().replaceWith(t), t[0] !== e && !k.contains(t[0], e) || k(e).trigger("focus")), t
        }
    }), k.extend(k.effects, {
        version: "1.12.1",
        define: function(t, e, i) {
            return i || (i = e, e = "effect"), k.effects.effect[t] = i, k.effects.effect[t].mode = e, i
        },
        scaledDimensions: function(t, e, i) {
            if (0 === e) return {
                height: 0,
                width: 0,
                outerHeight: 0,
                outerWidth: 0
            };
            var s = "horizontal" !== i ? (e || 100) / 100 : 1,
                e = "vertical" !== i ? (e || 100) / 100 : 1;
            return {
                height: t.height() * e,
                width: t.width() * s,
                outerHeight: t.outerHeight() * e,
                outerWidth: t.outerWidth() * s
            }
        },
        clipToBox: function(t) {
            return {
                width: t.clip.right - t.clip.left,
                height: t.clip.bottom - t.clip.top,
                left: t.clip.left,
                top: t.clip.top
            }
        },
        unshift: function(t, e, i) {
            var s = t.queue();
            1 < e && s.splice.apply(s, [1, 0].concat(s.splice(e, i))), t.dequeue()
        },
        saveStyle: function(t) {
            t.data(Q, t[0].style.cssText)
        },
        restoreStyle: function(t) {
            t[0].style.cssText = t.data(Q) || "", t.removeData(Q)
        },
        mode: function(t, e) {
            t = t.is(":hidden");
            return "toggle" === e && (e = t ? "show" : "hide"), e = (t ? "hide" === e : "show" === e) ? "none" : e
        },
        getBaseline: function(t, e) {
            var i, s;
            switch (t[0]) {
                case "top":
                    i = 0;
                    break;
                case "middle":
                    i = .5;
                    break;
                case "bottom":
                    i = 1;
                    break;
                default:
                    i = t[0] / e.height
            }
            switch (t[1]) {
                case "left":
                    s = 0;
                    break;
                case "center":
                    s = .5;
                    break;
                case "right":
                    s = 1;
                    break;
                default:
                    s = t[1] / e.width
            }
            return {
                x: s,
                y: i
            }
        },
        createPlaceholder: function(t) {
            var e, i = t.css("position"),
                s = t.position();
            return t.css({
                marginTop: t.css("marginTop"),
                marginBottom: t.css("marginBottom"),
                marginLeft: t.css("marginLeft"),
                marginRight: t.css("marginRight")
            }).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()), /^(static|relative)/.test(i) && (i = "absolute", e = k("<" + t[0].nodeName + ">").insertAfter(t).css({
                display: /^(inline|ruby)/.test(t.css("display")) ? "inline-block" : "block",
                visibility: "hidden",
                marginTop: t.css("marginTop"),
                marginBottom: t.css("marginBottom"),
                marginLeft: t.css("marginLeft"),
                marginRight: t.css("marginRight"),
                float: t.css("float")
            }).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).addClass("ui-effects-placeholder"), t.data(G + "placeholder", e)), t.css({
                position: i,
                left: s.left,
                top: s.top
            }), e
        },
        removePlaceholder: function(t) {
            var e = G + "placeholder",
                i = t.data(e);
            i && (i.remove(), t.removeData(e))
        },
        cleanUp: function(t) {
            k.effects.restoreStyle(t), k.effects.removePlaceholder(t)
        },
        setTransition: function(s, t, n, o) {
            return o = o || {}, k.each(t, function(t, e) {
                var i = s.cssUnit(e);
                0 < i[0] && (o[e] = i[0] * n + i[1])
            }), o
        }
    }), k.fn.extend({
        effect: function() {
            function t(t) {
                var e = k(this),
                    i = k.effects.mode(e, r) || o;
                e.data(J, !0), h.push(i), o && ("show" === i || i === o && "hide" === i) && e.show(), o && "none" === i || k.effects.saveStyle(e), k.isFunction(t) && t()
            }
            var s = nt.apply(this, arguments),
                n = k.effects.effect[s.effect],
                o = n.mode,
                e = s.queue,
                i = e || "fx",
                a = s.complete,
                r = s.mode,
                h = [];
            return k.fx.off || !n ? r ? this[r](s.duration, a) : this.each(function() {
                a && a.call(this)
            }) : !1 === e ? this.each(t).each(l) : this.queue(i, t).queue(i, l);

            function l(t) {
                var e = k(this);

                function i() {
                    k.isFunction(a) && a.call(e[0]), k.isFunction(t) && t()
                }
                s.mode = h.shift(), !1 === k.uiBackCompat || o ? "none" === s.mode ? (e[r](), i()) : n.call(e[0], s, function() {
                    e.removeData(J), k.effects.cleanUp(e), "hide" === s.mode && e.hide(), i()
                }) : (e.is(":hidden") ? "hide" === r : "show" === r) ? (e[r](), i()) : n.call(e[0], s, i)
            }
        },
        show: ($ = k.fn.show, function(t) {
            if (ot(t)) return $.apply(this, arguments);
            var e = nt.apply(this, arguments);
            return e.mode = "show", this.effect.call(this, e)
        }),
        hide: (V = k.fn.hide, function(t) {
            if (ot(t)) return V.apply(this, arguments);
            var e = nt.apply(this, arguments);
            return e.mode = "hide", this.effect.call(this, e)
        }),
        toggle: (U = k.fn.toggle, function(t) {
            if (ot(t) || "boolean" == typeof t) return U.apply(this, arguments);
            var e = nt.apply(this, arguments);
            return e.mode = "toggle", this.effect.call(this, e)
        }),
        cssUnit: function(t) {
            var i = this.css(t),
                s = [];
            return k.each(["em", "px", "%", "pt"], function(t, e) {
                0 < i.indexOf(e) && (s = [parseFloat(i), e])
            }), s
        },
        cssClip: function(t) {
            return t ? this.css("clip", "rect(" + t.top + "px " + t.right + "px " + t.bottom + "px " + t.left + "px)") : at(this.css("clip"), this)
        },
        transfer: function(t, e) {
            var i = k(this),
                s = k(t.to),
                n = "fixed" === s.css("position"),
                o = k("body"),
                a = n ? o.scrollTop() : 0,
                r = n ? o.scrollLeft() : 0,
                o = s.offset(),
                o = {
                    top: o.top - a,
                    left: o.left - r,
                    height: s.innerHeight(),
                    width: s.innerWidth()
                },
                s = i.offset(),
                h = k("<div class='ui-effects-transfer'></div>").appendTo("body").addClass(t.className).css({
                    top: s.top - a,
                    left: s.left - r,
                    height: i.innerHeight(),
                    width: i.innerWidth(),
                    position: n ? "fixed" : "absolute"
                }).animate(o, t.duration, t.easing, function() {
                    h.remove(), k.isFunction(e) && e()
                })
        }
    }), k.fx.step.clip = function(t) {
        t.clipInit || (t.start = k(t.elem).cssClip(), "string" == typeof t.end && (t.end = at(t.end, t.elem)), t.clipInit = !0), k(t.elem).cssClip({
            top: t.pos * (t.end.top - t.start.top) + t.start.top,
            right: t.pos * (t.end.right - t.start.right) + t.start.right,
            bottom: t.pos * (t.end.bottom - t.start.bottom) + t.start.bottom,
            left: t.pos * (t.end.left - t.start.left) + t.start.left
        })
    }, X = {}, k.each(["Quad", "Cubic", "Quart", "Quint", "Expo"], function(e, t) {
        X[t] = function(t) {
            return Math.pow(t, e + 2)
        }
    }), k.extend(X, {
        Sine: function(t) {
            return 1 - Math.cos(t * Math.PI / 2)
        },
        Circ: function(t) {
            return 1 - Math.sqrt(1 - t * t)
        },
        Elastic: function(t) {
            return 0 === t || 1 === t ? t : -Math.pow(2, 8 * (t - 1)) * Math.sin((80 * (t - 1) - 7.5) * Math.PI / 15)
        },
        Back: function(t) {
            return t * t * (3 * t - 2)
        },
        Bounce: function(t) {
            for (var e, i = 4; t < ((e = Math.pow(2, --i)) - 1) / 11;);
            return 1 / Math.pow(4, 3 - i) - 7.5625 * Math.pow((3 * e - 2) / 22 - t, 2)
        }
    }), k.each(X, function(t, e) {
        k.easing["easeIn" + t] = e, k.easing["easeOut" + t] = function(t) {
            return 1 - e(1 - t)
        }, k.easing["easeInOut" + t] = function(t) {
            return t < .5 ? e(2 * t) / 2 : 1 - e(-2 * t + 2) / 2
        }
    });
    var rt = k.effects;
    k.effects.define("blind", "hide", function(t, e) {
        var i = {
                up: ["bottom", "top"],
                vertical: ["bottom", "top"],
                down: ["top", "bottom"],
                left: ["right", "left"],
                horizontal: ["right", "left"],
                right: ["left", "right"]
            },
            s = k(this),
            n = t.direction || "up",
            o = s.cssClip(),
            a = {
                clip: k.extend({}, o)
            },
            r = k.effects.createPlaceholder(s);
        a.clip[i[n][0]] = a.clip[i[n][1]], "show" === t.mode && (s.cssClip(a.clip), r && r.css(k.effects.clipToBox(a)), a.clip = o), r && r.animate(k.effects.clipToBox(a), t.duration, t.easing), s.animate(a, {
            queue: !1,
            duration: t.duration,
            easing: t.easing,
            complete: e
        })
    }), k.effects.define("bounce", function(t, e) {
        var i, s, n = k(this),
            o = t.mode,
            a = "hide" === o,
            r = "show" === o,
            h = t.direction || "up",
            l = t.distance,
            c = t.times || 5,
            o = 2 * c + (r || a ? 1 : 0),
            u = t.duration / o,
            d = t.easing,
            p = "up" === h || "down" === h ? "top" : "left",
            f = "up" === h || "left" === h,
            g = 0,
            t = n.queue().length;
        for (k.effects.createPlaceholder(n), h = n.css(p), l = l || n["top" == p ? "outerHeight" : "outerWidth"]() / 3, r && ((s = {
                opacity: 1
            })[p] = h, n.css("opacity", 0).css(p, f ? 2 * -l : 2 * l).animate(s, u, d)), a && (l /= Math.pow(2, c - 1)), (s = {})[p] = h; g < c; g++)(i = {})[p] = (f ? "-=" : "+=") + l, n.animate(i, u, d).animate(s, u, d), l = a ? 2 * l : l / 2;
        a && ((i = {
            opacity: 0
        })[p] = (f ? "-=" : "+=") + l, n.animate(i, u, d)), n.queue(e), k.effects.unshift(n, t, 1 + o)
    }), k.effects.define("clip", "hide", function(t, e) {
        var i = {},
            s = k(this),
            n = t.direction || "vertical",
            o = "both" === n,
            a = o || "horizontal" === n,
            o = o || "vertical" === n,
            n = s.cssClip();
        i.clip = {
            top: o ? (n.bottom - n.top) / 2 : n.top,
            right: a ? (n.right - n.left) / 2 : n.right,
            bottom: o ? (n.bottom - n.top) / 2 : n.bottom,
            left: a ? (n.right - n.left) / 2 : n.left
        }, k.effects.createPlaceholder(s), "show" === t.mode && (s.cssClip(i.clip), i.clip = n), s.animate(i, {
            queue: !1,
            duration: t.duration,
            easing: t.easing,
            complete: e
        })
    }), k.effects.define("drop", "hide", function(t, e) {
        var i = k(this),
            s = "show" === t.mode,
            n = t.direction || "left",
            o = "up" === n || "down" === n ? "top" : "left",
            a = "up" === n || "left" === n ? "-=" : "+=",
            r = "+=" == a ? "-=" : "+=",
            h = {
                opacity: 0
            };
        k.effects.createPlaceholder(i), n = t.distance || i["top" == o ? "outerHeight" : "outerWidth"](!0) / 2, h[o] = a + n, s && (i.css(h), h[o] = r + n, h.opacity = 1), i.animate(h, {
            queue: !1,
            duration: t.duration,
            easing: t.easing,
            complete: e
        })
    }), k.effects.define("explode", "hide", function(t, e) {
        var i, s, n, o, a, r, h = t.pieces ? Math.round(Math.sqrt(t.pieces)) : 3,
            l = h,
            c = k(this),
            u = "show" === t.mode,
            d = c.show().css("visibility", "hidden").offset(),
            p = Math.ceil(c.outerWidth() / l),
            f = Math.ceil(c.outerHeight() / h),
            g = [];

        function m() {
            g.push(this), g.length === h * l && (c.css({
                visibility: "visible"
            }), k(g).remove(), e())
        }
        for (i = 0; i < h; i++)
            for (o = d.top + i * f, r = i - (h - 1) / 2, s = 0; s < l; s++) n = d.left + s * p, a = s - (l - 1) / 2, c.clone().appendTo("body").wrap("<div></div>").css({
                position: "absolute",
                visibility: "visible",
                left: -s * p,
                top: -i * f
            }).parent().addClass("ui-effects-explode").css({
                position: "absolute",
                overflow: "hidden",
                width: p,
                height: f,
                left: n + (u ? a * p : 0),
                top: o + (u ? r * f : 0),
                opacity: u ? 0 : 1
            }).animate({
                left: n + (u ? 0 : a * p),
                top: o + (u ? 0 : r * f),
                opacity: u ? 1 : 0
            }, t.duration || 500, t.easing, m)
    }), k.effects.define("fade", "toggle", function(t, e) {
        var i = "show" === t.mode;
        k(this).css("opacity", i ? 0 : 1).animate({
            opacity: i ? 1 : 0
        }, {
            queue: !1,
            duration: t.duration,
            easing: t.easing,
            complete: e
        })
    }), k.effects.define("fold", "hide", function(e, t) {
        var i = k(this),
            s = e.mode,
            n = "show" === s,
            o = "hide" === s,
            a = e.size || 15,
            r = /([0-9]+)%/.exec(a),
            h = !!e.horizFirst ? ["right", "bottom"] : ["bottom", "right"],
            l = e.duration / 2,
            c = k.effects.createPlaceholder(i),
            u = i.cssClip(),
            d = {
                clip: k.extend({}, u)
            },
            p = {
                clip: k.extend({}, u)
            },
            f = [u[h[0]], u[h[1]]],
            s = i.queue().length;
        r && (a = parseInt(r[1], 10) / 100 * f[o ? 0 : 1]), d.clip[h[0]] = a, p.clip[h[0]] = a, p.clip[h[1]] = 0, n && (i.cssClip(p.clip), c && c.css(k.effects.clipToBox(p)), p.clip = u), i.queue(function(t) {
            c && c.animate(k.effects.clipToBox(d), l, e.easing).animate(k.effects.clipToBox(p), l, e.easing), t()
        }).animate(d, l, e.easing).animate(p, l, e.easing).queue(t), k.effects.unshift(i, s, 4)
    }), k.effects.define("highlight", "show", function(t, e) {
        var i = k(this),
            s = {
                backgroundColor: i.css("backgroundColor")
            };
        "hide" === t.mode && (s.opacity = 0), k.effects.saveStyle(i), i.css({
            backgroundImage: "none",
            backgroundColor: t.color || "#ffff99"
        }).animate(s, {
            queue: !1,
            duration: t.duration,
            easing: t.easing,
            complete: e
        })
    }), k.effects.define("size", function(s, e) {
        var n, i = k(this),
            t = ["fontSize"],
            o = ["borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom"],
            a = ["borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight"],
            r = s.mode,
            h = "effect" !== r,
            l = s.scale || "both",
            c = s.origin || ["middle", "center"],
            u = i.css("position"),
            d = i.position(),
            p = k.effects.scaledDimensions(i),
            f = s.from || p,
            g = s.to || k.effects.scaledDimensions(i, 0);
        k.effects.createPlaceholder(i), "show" === r && (r = f, f = g, g = r), n = {
            from: {
                y: f.height / p.height,
                x: f.width / p.width
            },
            to: {
                y: g.height / p.height,
                x: g.width / p.width
            }
        }, "box" !== l && "both" !== l || (n.from.y !== n.to.y && (f = k.effects.setTransition(i, o, n.from.y, f), g = k.effects.setTransition(i, o, n.to.y, g)), n.from.x !== n.to.x && (f = k.effects.setTransition(i, a, n.from.x, f), g = k.effects.setTransition(i, a, n.to.x, g))), "content" !== l && "both" !== l || n.from.y !== n.to.y && (f = k.effects.setTransition(i, t, n.from.y, f), g = k.effects.setTransition(i, t, n.to.y, g)), c && (c = k.effects.getBaseline(c, p), f.top = (p.outerHeight - f.outerHeight) * c.y + d.top, f.left = (p.outerWidth - f.outerWidth) * c.x + d.left, g.top = (p.outerHeight - g.outerHeight) * c.y + d.top, g.left = (p.outerWidth - g.outerWidth) * c.x + d.left), i.css(f), "content" !== l && "both" !== l || (o = o.concat(["marginTop", "marginBottom"]).concat(t), a = a.concat(["marginLeft", "marginRight"]), i.find("*[width]").each(function() {
            var t = k(this),
                e = k.effects.scaledDimensions(t),
                i = {
                    height: e.height * n.from.y,
                    width: e.width * n.from.x,
                    outerHeight: e.outerHeight * n.from.y,
                    outerWidth: e.outerWidth * n.from.x
                },
                e = {
                    height: e.height * n.to.y,
                    width: e.width * n.to.x,
                    outerHeight: e.height * n.to.y,
                    outerWidth: e.width * n.to.x
                };
            n.from.y !== n.to.y && (i = k.effects.setTransition(t, o, n.from.y, i), e = k.effects.setTransition(t, o, n.to.y, e)), n.from.x !== n.to.x && (i = k.effects.setTransition(t, a, n.from.x, i), e = k.effects.setTransition(t, a, n.to.x, e)), h && k.effects.saveStyle(t), t.css(i), t.animate(e, s.duration, s.easing, function() {
                h && k.effects.restoreStyle(t)
            })
        })), i.animate(g, {
            queue: !1,
            duration: s.duration,
            easing: s.easing,
            complete: function() {
                var t = i.offset();
                0 === g.opacity && i.css("opacity", f.opacity), h || (i.css("position", "static" === u ? "relative" : u).offset(t), k.effects.saveStyle(i)), e()
            }
        })
    }), k.effects.define("scale", function(t, e) {
        var i = k(this),
            s = t.mode,
            s = parseInt(t.percent, 10) || (0 === parseInt(t.percent, 10) || "effect" !== s ? 0 : 100),
            s = k.extend(!0, {
                from: k.effects.scaledDimensions(i),
                to: k.effects.scaledDimensions(i, s, t.direction || "both"),
                origin: t.origin || ["middle", "center"]
            }, t);
        t.fade && (s.from.opacity = 1, s.to.opacity = 0), k.effects.effect.size.call(this, s, e)
    }), k.effects.define("puff", "hide", function(t, e) {
        t = k.extend(!0, {}, t, {
            fade: !0,
            percent: parseInt(t.percent, 10) || 150
        });
        k.effects.effect.scale.call(this, t, e)
    }), k.effects.define("pulsate", "show", function(t, e) {
        var i = k(this),
            s = t.mode,
            n = "show" === s,
            o = 2 * (t.times || 5) + (n || "hide" === s ? 1 : 0),
            a = t.duration / o,
            r = 0,
            h = 1,
            s = i.queue().length;
        for (!n && i.is(":visible") || (i.css("opacity", 0).show(), r = 1); h < o; h++) i.animate({
            opacity: r
        }, a, t.easing), r = 1 - r;
        i.animate({
            opacity: r
        }, a, t.easing), i.queue(e), k.effects.unshift(i, s, 1 + o)
    }), k.effects.define("shake", function(t, e) {
        var i = 1,
            s = k(this),
            n = t.direction || "left",
            o = t.distance || 20,
            a = t.times || 3,
            r = 2 * a + 1,
            h = Math.round(t.duration / r),
            l = "up" === n || "down" === n ? "top" : "left",
            c = "up" === n || "left" === n,
            u = {},
            d = {},
            p = {},
            n = s.queue().length;
        for (k.effects.createPlaceholder(s), u[l] = (c ? "-=" : "+=") + o, d[l] = (c ? "+=" : "-=") + 2 * o, p[l] = (c ? "-=" : "+=") + 2 * o, s.animate(u, h, t.easing); i < a; i++) s.animate(d, h, t.easing).animate(p, h, t.easing);
        s.animate(d, h, t.easing).animate(u, h / 2, t.easing).queue(e), k.effects.unshift(s, n, 1 + r)
    }), k.effects.define("slide", "show", function(t, e) {
        var i, s, n = k(this),
            o = {
                up: ["bottom", "top"],
                down: ["top", "bottom"],
                left: ["right", "left"],
                right: ["left", "right"]
            },
            a = t.mode,
            r = t.direction || "left",
            h = "up" === r || "down" === r ? "top" : "left",
            l = "up" === r || "left" === r,
            c = t.distance || n["top" == h ? "outerHeight" : "outerWidth"](!0),
            u = {};
        k.effects.createPlaceholder(n), i = n.cssClip(), s = n.position()[h], u[h] = (l ? -1 : 1) * c + s, u.clip = n.cssClip(), u.clip[o[r][1]] = u.clip[o[r][0]], "show" === a && (n.cssClip(u.clip), n.css(h, u[h]), u.clip = i, u[h] = s), n.animate(u, {
            queue: !1,
            duration: t.duration,
            easing: t.easing,
            complete: e
        })
    }), !1 !== k.uiBackCompat && k.effects.define("transfer", function(t, e) {
        k(this).transfer(t, e)
    })
});
                                    

#7 JavaScript::Eval (size: 8768, repeated: 1) - SHA256: df18675c7284d734f9e3abf7da2e57d64ee37222cbcc78887eb3daa00dab0882

                                        (function(factory) {
    //CommonJS
    if (
        typeof require === "function" &&
        typeof exports === "object" &&
        typeof module === "object"
    ) {
        factory(require("knockout"), exports);
        //AMD
    } else if (typeof define === "function" && define.amd) {
        define(["knockout", "exports"], factory);
        //normal script tag
    } else {
        factory(ko, (ko.postbox = {}));
    }
})(function(ko, exports, undefined) {
    var disposeTopicSubscription,
        ensureDispose,
        existingSubscribe,
        subscriptions = {},
        subId = 1;

    exports.subscriptions = subscriptions;

    //create a global postbox that supports subscribing/publishing
    ko.subscribable.call(exports);

    //keep a cache of the latest value and subscribers
    exports.topicCache = {};

    //allow customization of the function used to serialize values for the topic cache
    exports.serializer = ko.toJSON;

    //wrap notifySubscribers passing topic first and caching latest value
    exports.publish = function(topic, value) {
        if (topic) {
            //keep the value and a serialized version for comparison
            exports.topicCache[topic] = {
                value: value,
                serialized: exports.serializer(value),
            };
            exports.notifySubscribers(value, topic);
        }
    };

    //provide a subscribe API for the postbox that takes in the topic as first arg
    existingSubscribe = exports.subscribe;
    exports.subscribe = function(
        topic,
        action,
        target,
        initializeWithLatestValue
    ) {
        var subscription, current, existingDispose;

        if (topic) {
            if (typeof target === "boolean") {
                initializeWithLatestValue = target;
                target = undefined;
            }

            subscription = existingSubscribe.call(exports, action, target, topic);
            subscription.subId = ++subId;
            subscriptions[subId] = subscription;

            if (initializeWithLatestValue) {
                current = exports.topicCache[topic];

                if (current !== undefined) {
                    action.call(target, current.value);
                }
            }

            existingDispose = subscription.dispose;
            subscription.dispose = function() {
                delete subscriptions[subscription.subId];
                existingDispose.call(subscription);
            };

            return subscription;
        }
    };

    //clean up all subscriptions and references
    exports.reset = function() {
        var subscription;

        for (var id in subscriptions) {
            if (subscriptions.hasOwnProperty(id)) {
                subscription = subscriptions[id];

                if (subscription && typeof subscription.dispose === "function") {
                    subscription.dispose();
                }
            }
        }

        exports.topicCache = {};
    };

    //by default publish when the previous cached value does not equal the new value
    exports.defaultComparer = function(newValue, cacheItem) {
        return cacheItem && exports.serializer(newValue) === cacheItem.serialized;
    };

    // Ensures that a `subscribable` has a `dispose` method which cleans up all
    // subscriptions added by `knockout-postbox`.
    ensureDispose = function() {
        var existingDispose,
            self = this;

        // Make sure we're adding the custom `dispose` method at most once.
        if (!self.willDisposePostbox) {
            self.willDisposePostbox = true;

            existingDispose = self.dispose;
            self.dispose = function() {
                var topic,
                    types,
                    type,
                    sub,
                    subs = self.postboxSubs;

                if (subs) {
                    for (topic in subs) {
                        if (subs.hasOwnProperty(topic)) {
                            types = subs[topic];
                            if (types) {
                                for (type in types) {
                                    if (types.hasOwnProperty(type)) {
                                        sub = types[type];
                                        if (sub && typeof sub.dispose == "function") {
                                            sub.dispose();
                                        }
                                    }
                                }
                            }
                        }
                    }
                }

                if (existingDispose) {
                    existingDispose.call(self);
                }
            };
        }
    };

    //augment observables/computeds with the ability to automatically publish updates on a topic
    ko.subscribable.fn.publishOn = function(
        topic,
        skipInitialOrEqualityComparer,
        equalityComparer
    ) {
        var skipInitialPublish, subscription, existingDispose;

        ensureDispose.call(this);

        if (topic) {
            //allow passing the equalityComparer as the second argument
            if (typeof skipInitialOrEqualityComparer === "function") {
                equalityComparer = skipInitialOrEqualityComparer;
            } else {
                skipInitialPublish = skipInitialOrEqualityComparer;
            }

            equalityComparer = equalityComparer || exports.defaultComparer;

            //remove any existing subs
            disposeTopicSubscription.call(this, topic, "publishOn");

            //keep a reference to the subscription, so we can stop publishing
            subscription = this.subscribe(function(newValue) {
                if (!equalityComparer.call(this, newValue, exports.topicCache[topic])) {
                    exports.publish(topic, newValue);
                }
            }, this);

            //track the subscription in case of a reset
            subscription.id = ++subId;
            subscriptions[subId] = subscription;

            //ensure that we cleanup pointers to subscription on dispose
            existingDispose = subscription.dispose;
            subscription.dispose = function() {
                delete this.postboxSubs[topic].publishOn;
                delete subscriptions[subscription.id];

                existingDispose.call(subscription);
            }.bind(this);

            this.postboxSubs[topic].publishOn = subscription;

            //do an initial publish
            if (!skipInitialPublish) {
                exports.publish(topic, this());
            }
        }

        return this;
    };

    //handle disposing a subscription used to publish or subscribe to a topic
    disposeTopicSubscription = function(topic, type) {
        var subs = (this.postboxSubs = this.postboxSubs || {});
        subs[topic] = subs[topic] || {};

        if (subs[topic][type]) {
            subs[topic][type].dispose();
        }
    };

    //discontinue automatically publishing on a topic
    ko.subscribable.fn.stopPublishingOn = function(topic) {
        disposeTopicSubscription.call(this, topic, "publishOn");

        return this;
    };

    //augment observables/computeds to automatically be updated by notifications on a topic
    ko.subscribable.fn.subscribeTo = function(
        topic,
        initializeWithLatestValueOrTransform,
        transform
    ) {
        var initializeWithLatestValue,
            current,
            callback,
            subscription,
            existingDispose,
            self = this;

        ensureDispose.call(this);

        //allow passing the filter as the second argument
        if (typeof initializeWithLatestValueOrTransform === "function") {
            transform = initializeWithLatestValueOrTransform;
        } else {
            initializeWithLatestValue = initializeWithLatestValueOrTransform;
        }

        if (topic && ko.isWriteableObservable(this)) {
            //remove any existing subs
            disposeTopicSubscription.call(this, topic, "subscribeTo");

            //if specified, apply a filter function in the subscription
            callback = function(newValue) {
                self(transform ? transform.call(self, newValue) : newValue);
            };

            ////keep a reference to the subscription, so we can unsubscribe, if necessary
            subscription = exports.subscribe(topic, callback);
            this.postboxSubs[topic].subscribeTo = subscription;

            //ensure that we cleanup pointers to subscription on dispose
            existingDispose = subscription.dispose;
            subscription.dispose = function() {
                delete this.postboxSubs[topic].subscribeTo;
                existingDispose.call(subscription);
            }.bind(this);

            if (initializeWithLatestValue) {
                current = exports.topicCache[topic];

                if (current !== undefined) {
                    callback(current.value);
                }
            }
        }

        return this;
    };

    //discontinue receiving updates on a topic
    ko.subscribable.fn.unsubscribeFrom = function(topic) {
        disposeTopicSubscription.call(this, topic, "subscribeTo");

        return this;
    };

    // both subscribe and publish on the same topic
    //   -allows the ability to sync an observable/writeable computed/observableArray between view models
    //   -subscribeTo should really not use a filter function, as it would likely cause infinite recursion
    ko.subscribable.fn.syncWith = function(
        topic,
        initializeWithLatestValue,
        skipInitialOrEqualityComparer,
        equalityComparer
    ) {
        this.subscribeTo(topic, initializeWithLatestValue).publishOn(
            topic,
            skipInitialOrEqualityComparer,
            equalityComparer
        );

        return this;
    };

    ko.subscribable.fn.stopSyncingWith = function(topic) {
        this.unsubscribeFrom(topic).stopPublishingOn(topic);

        return this;
    };

    ko.postbox = exports;
});
                                    

#8 JavaScript::Eval (size: 21, repeated: 1) - SHA256: ca9fa56f171229574dad96d514b9fcb5a695946c5fcb286102cf8d821e069669

                                        0,
function(A) {
    S(1, A)
}
                                    

#9 JavaScript::Eval (size: 14181, repeated: 1) - SHA256: 3d45f5c3cf9cac0d838e33cd82a9904b499ac750a7d0242402ff43b658f7968a

                                        /*! iFrame Resizer (iframeSizer.contentWindow.min.js) - v3.5.14 - 2017-03-30
 *  *  Desc: Include this file in any page being loaded into an iframe
 *   *        to force the iframe to resize to the content size.
 *    *  Requires: iframeResizer.min.js on host page.
 *     *  Copyright: (c) 2017 David J. Bradshaw - dave@bradshaw.net
 *      *  License: MIT
 *       */

! function(a) {
    "use strict";

    function b(a, b, c) {
        "addEventListener" in window ? a.addEventListener(b, c, !1) : "attachEvent" in window && a.attachEvent("on" + b, c)
    }

    function c(a, b, c) {
        "removeEventListener" in window ? a.removeEventListener(b, c, !1) : "detachEvent" in window && a.detachEvent("on" + b, c)
    }

    function d(a) {
        return a.charAt(0).toUpperCase() + a.slice(1)
    }

    function e(a) {
        var b, c, d, e = null,
            f = 0,
            g = function() {
                f = Ha(), e = null, d = a.apply(b, c), e || (b = c = null)
            };
        return function() {
            var h = Ha();
            f || (f = h);
            var i = xa - (h - f);
            return b = this, c = arguments, 0 >= i || i > xa ? (e && (clearTimeout(e), e = null), f = h, d = a.apply(b, c), e || (b = c = null)) : e || (e = setTimeout(g, i)), d
        }
    }

    function f(a) {
        return ma + "[" + oa + "] " + a
    }

    function g(a) {
        la && "object" == typeof window.console && console.log(f(a))
    }

    function h(a) {
        "object" == typeof window.console && console.warn(f(a))
    }

    function i() {
        j(), g("Initialising iFrame (" + location.href + ")"), k(), n(), m("background", W), m("padding", $), A(), s(), t(), o(), C(), u(), ia = B(), N("init", "Init message from host page"), Da()
    }

    function j() {
        function b(a) {
            return "true" === a ? !0 : !1
        }
        var c = ha.substr(na).split(":");
        oa = c[0], X = a !== c[1] ? Number(c[1]) : X, _ = a !== c[2] ? b(c[2]) : _, la = a !== c[3] ? b(c[3]) : la, ja = a !== c[4] ? Number(c[4]) : ja, U = a !== c[6] ? b(c[6]) : U, Y = c[7], fa = a !== c[8] ? c[8] : fa, W = c[9], $ = c[10], ua = a !== c[11] ? Number(c[11]) : ua, ia.enable = a !== c[12] ? b(c[12]) : !1, qa = a !== c[13] ? c[13] : qa, Aa = a !== c[14] ? c[14] : Aa
    }

    function k() {
        function a() {
            var a = window.iFrameResizer;
            g("Reading data from page: " + JSON.stringify(a)), Ca = "messageCallback" in a ? a.messageCallback : Ca, Da = "readyCallback" in a ? a.readyCallback : Da, ta = "targetOrigin" in a ? a.targetOrigin : ta, fa = "heightCalculationMethod" in a ? a.heightCalculationMethod : fa, Aa = "widthCalculationMethod" in a ? a.widthCalculationMethod : Aa
        }

        function b(a, b) {
            return "function" == typeof a && (g("Setup custom " + b + "CalcMethod"), Fa[b] = a, a = "custom"), a
        }
        "iFrameResizer" in window && Object === window.iFrameResizer.constructor && (a(), fa = b(fa, "height"), Aa = b(Aa, "width")), g("TargetOrigin for parent set to: " + ta)
    }

    function l(a, b) {
        return -1 !== b.indexOf("-") && (h("Negative CSS value ignored for " + a), b = ""), b
    }

    function m(b, c) {
        a !== c && "" !== c && "null" !== c && (document.body.style[b] = c, g("Body " + b + ' set to "' + c + '"'))
    }

    function n() {
        a === Y && (Y = X + "px"), m("margin", l("margin", Y))
    }

    function o() {
        document.documentElement.style.height = "", document.body.style.height = "", g('HTML & body height set to "auto"')
    }

    function p(a) {
        var e = {
            add: function(c) {
                function d() {
                    N(a.eventName, a.eventType)
                }
                Ga[c] = d, b(window, c, d)
            },
            remove: function(a) {
                var b = Ga[a];
                delete Ga[a], c(window, a, b)
            }
        };
        a.eventNames && Array.prototype.map ? (a.eventName = a.eventNames[0], a.eventNames.map(e[a.method])) : e[a.method](a.eventName), g(d(a.method) + " event listener: " + a.eventType)
    }

    function q(a) {
        p({
            method: a,
            eventType: "Animation Start",
            eventNames: ["animationstart", "webkitAnimationStart"]
        }), p({
            method: a,
            eventType: "Animation Iteration",
            eventNames: ["animationiteration", "webkitAnimationIteration"]
        }), p({
            method: a,
            eventType: "Animation End",
            eventNames: ["animationend", "webkitAnimationEnd"]
        }), p({
            method: a,
            eventType: "Input",
            eventName: "input"
        }), p({
            method: a,
            eventType: "Mouse Up",
            eventName: "mouseup"
        }), p({
            method: a,
            eventType: "Mouse Down",
            eventName: "mousedown"
        }), p({
            method: a,
            eventType: "Orientation Change",
            eventName: "orientationchange"
        }), p({
            method: a,
            eventType: "Print",
            eventName: ["afterprint", "beforeprint"]
        }), p({
            method: a,
            eventType: "Ready State Change",
            eventName: "readystatechange"
        }), p({
            method: a,
            eventType: "Touch Start",
            eventName: "touchstart"
        }), p({
            method: a,
            eventType: "Touch End",
            eventName: "touchend"
        }), p({
            method: a,
            eventType: "Touch Cancel",
            eventName: "touchcancel"
        }), p({
            method: a,
            eventType: "Transition Start",
            eventNames: ["transitionstart", "webkitTransitionStart", "MSTransitionStart", "oTransitionStart", "otransitionstart"]
        }), p({
            method: a,
            eventType: "Transition Iteration",
            eventNames: ["transitioniteration", "webkitTransitionIteration", "MSTransitionIteration", "oTransitionIteration", "otransitioniteration"]
        }), p({
            method: a,
            eventType: "Transition End",
            eventNames: ["transitionend", "webkitTransitionEnd", "MSTransitionEnd", "oTransitionEnd", "otransitionend"]
        }), "child" === qa && p({
            method: a,
            eventType: "IFrame Resized",
            eventName: "resize"
        })
    }

    function r(a, b, c, d) {
        return b !== a && (a in c || (h(a + " is not a valid option for " + d + "CalculationMethod."), a = b), g(d + ' calculation method set to "' + a + '"')), a
    }

    function s() {
        fa = r(fa, ea, Ia, "height")
    }

    function t() {
        Aa = r(Aa, za, Ja, "width")
    }

    function u() {
        !0 === U ? (q("add"), F()) : g("Auto Resize disabled")
    }

    function v() {
        g("Disable outgoing messages"), ra = !1
    }

    function w() {
        g("Remove event listener: Message"), c(window, "message", S)
    }

    function x() {
        null !== Z && Z.disconnect()
    }

    function y() {
        q("remove"), x(), clearInterval(ka)
    }

    function z() {
        v(), w(), !0 === U && y()
    }

    function A() {
        var a = document.createElement("div");
        a.style.clear = "both", a.style.display = "block", document.body.appendChild(a)
    }

    function B() {
        function c() {
            return {
                x: window.pageXOffset !== a ? window.pageXOffset : document.documentElement.scrollLeft,
                y: window.pageYOffset !== a ? window.pageYOffset : document.documentElement.scrollTop
            }
        }

        function d(a) {
            var b = a.getBoundingClientRect(),
                d = c();
            return {
                x: parseInt(b.left, 10) + parseInt(d.x, 10),
                y: parseInt(b.top, 10) + parseInt(d.y, 10)
            }
        }

        function e(b) {
            function c(a) {
                var b = d(a);
                g("Moving to in page link (#" + e + ") at x: " + b.x + " y: " + b.y), R(b.y, b.x, "scrollToOffset")
            }
            var e = b.split("#")[1] || b,
                f = decodeURIComponent(e),
                h = document.getElementById(f) || document.getElementsByName(f)[0];
            a !== h ? c(h) : (g("In page link (#" + e + ") not found in iFrame, so sending to parent"), R(0, 0, "inPageLink", "#" + e))
        }

        function f() {
            "" !== location.hash && "#" !== location.hash && e(location.href)
        }

        function i() {
            function a(a) {
                function c(a) {
                    a.preventDefault(), e(this.getAttribute("href"))
                }
                "#" !== a.getAttribute("href") && b(a, "click", c)
            }
            Array.prototype.forEach.call(document.querySelectorAll('a[href^="#"]'), a)
        }

        function j() {
            b(window, "hashchange", f)
        }

        function k() {
            setTimeout(f, ba)
        }

        function l() {
            Array.prototype.forEach && document.querySelectorAll ? (g("Setting up location.hash handlers"), i(), j(), k()) : h("In page linking not fully supported in this browser! (See README.md for IE8 workaround)")
        }
        return ia.enable ? l() : g("In page linking not enabled"), {
            findTarget: e
        }
    }

    function C() {
        g("Enable public methods"), Ba.parentIFrame = {
            autoResize: function(a) {
                return !0 === a && !1 === U ? (U = !0, u()) : !1 === a && !0 === U && (U = !1, y()), U
            },
            close: function() {
                R(0, 0, "close"), z()
            },
            getId: function() {
                return oa
            },
            getPageInfo: function(a) {
                "function" == typeof a ? (Ea = a, R(0, 0, "pageInfo")) : (Ea = function() {}, R(0, 0, "pageInfoStop"))
            },
            moveToAnchor: function(a) {
                ia.findTarget(a)
            },
            reset: function() {
                Q("parentIFrame.reset")
            },
            scrollTo: function(a, b) {
                R(b, a, "scrollTo")
            },
            scrollToOffset: function(a, b) {
                R(b, a, "scrollToOffset")
            },
            sendMessage: function(a, b) {
                R(0, 0, "message", JSON.stringify(a), b)
            },
            setHeightCalculationMethod: function(a) {
                fa = a, s()
            },
            setWidthCalculationMethod: function(a) {
                Aa = a, t()
            },
            setTargetOrigin: function(a) {
                g("Set targetOrigin: " + a), ta = a
            },
            size: function(a, b) {
                var c = "" + (a ? a : "") + (b ? "," + b : "");
                N("size", "parentIFrame.size(" + c + ")", a, b)
            }
        }
    }

    function D() {
        0 !== ja && (g("setInterval: " + ja + "ms"), ka = setInterval(function() {
            N("interval", "setInterval: " + ja)
        }, Math.abs(ja)))
    }

    function E() {
        function b(a) {
            function b(a) {
                !1 === a.complete && (g("Attach listeners to " + a.src), a.addEventListener("load", f, !1), a.addEventListener("error", h, !1), k.push(a))
            }
            "attributes" === a.type && "src" === a.attributeName ? b(a.target) : "childList" === a.type && Array.prototype.forEach.call(a.target.querySelectorAll("img"), b)
        }

        function c(a) {
            k.splice(k.indexOf(a), 1)
        }

        function d(a) {
            g("Remove listeners from " + a.src), a.removeEventListener("load", f, !1), a.removeEventListener("error", h, !1), c(a)
        }

        function e(b, c, e) {
            d(b.target), N(c, e + ": " + b.target.src, a, a)
        }

        function f(a) {
            e(a, "imageLoad", "Image loaded")
        }

        function h(a) {
            e(a, "imageLoadFailed", "Image load failed")
        }

        function i(a) {
            N("mutationObserver", "mutationObserver: " + a[0].target + " " + a[0].type), a.forEach(b)
        }

        function j() {
            var a = document.querySelector("body"),
                b = {
                    attributes: !0,
                    attributeOldValue: !1,
                    characterData: !0,
                    characterDataOldValue: !1,
                    childList: !0,
                    subtree: !0
                };
            return m = new l(i), g("Create body MutationObserver"), m.observe(a, b), m
        }
        var k = [],
            l = window.MutationObserver || window.WebKitMutationObserver,
            m = j();
        return {
            disconnect: function() {
                "disconnect" in m && (g("Disconnect body MutationObserver"), m.disconnect(), k.forEach(d))
            }
        }
    }

    function F() {
        var a = 0 > ja;
        window.MutationObserver || window.WebKitMutationObserver ? a ? D() : Z = E() : (g("MutationObserver not supported in this browser!"), D())
    }

    function G(a, b) {
        function c(a) {
            var c = /^\d+(px)?$/i;
            if (c.test(a)) return parseInt(a, V);
            var d = b.style.left,
                e = b.runtimeStyle.left;
            return b.runtimeStyle.left = b.currentStyle.left, b.style.left = a || 0, a = b.style.pixelLeft, b.style.left = d, b.runtimeStyle.left = e, a
        }
        var d = 0;
        return b = b || document.body, "defaultView" in document && "getComputedStyle" in document.defaultView ? (d = document.defaultView.getComputedStyle(b, null), d = null !== d ? d[a] : 0) : d = c(b.currentStyle[a]), parseInt(d, V)
    }

    function H(a) {
        a > xa / 2 && (xa = 2 * a, g("Event throttle increased to " + xa + "ms"))
    }

    function I(a, b) {
        for (var c = b.length, e = 0, f = 0, h = d(a), i = Ha(), j = 0; c > j; j++) e = b[j].getBoundingClientRect()[a] + G("margin" + h, b[j]), e > f && (f = e);
        return i = Ha() - i, g("Parsed " + c + " HTML elements"), g("Element position calculated in " + i + "ms"), H(i), f
    }

    function J(a) {
        return [a.bodyOffset(), a.bodyScroll(), a.documentElementOffset(), a.documentElementScroll()]
    }

    function K(a, b) {
        function c() {
            return h("No tagged elements (" + b + ") found on page"), document.querySelectorAll("body *")
        }
        var d = document.querySelectorAll("[" + b + "]");
        return 0 === d.length && c(), I(a, d)
    }

    function L() {
        return document.querySelectorAll("body *")
    }

    function M(b, c, d, e) {
        function f() {
            da = m, ya = n, R(da, ya, b)
        }

        function h() {
            function b(a, b) {
                var c = Math.abs(a - b) <= ua;
                return !c
            }
            return m = a !== d ? d : Ia[fa](), n = a !== e ? e : Ja[Aa](), b(da, m) || _ && b(ya, n)
        }

        function i() {
            return !(b in {
                init: 1,
                interval: 1,
                size: 1
            })
        }

        function j() {
            return fa in pa || _ && Aa in pa
        }

        function k() {
            g("No change in size detected")
        }

        function l() {
            i() && j() ? Q(c) : b in {
                interval: 1
            } || k()
        }
        var m, n;
        h() || "init" === b ? (O(), f()) : l()
    }

    function N(a, b, c, d) {
        function e() {
            a in {
                reset: 1,
                resetPage: 1,
                init: 1
            } || g("Trigger event: " + b)
        }

        function f() {
            return va && a in aa
        }
        f() ? g("Trigger event cancelled: " + a) : (e(), Ka(a, b, c, d))
    }

    function O() {
        va || (va = !0, g("Trigger event lock on")), clearTimeout(wa), wa = setTimeout(function() {
            va = !1, g("Trigger event lock off"), g("--")
        }, ba)
    }

    function P(a) {
        da = Ia[fa](), ya = Ja[Aa](), R(da, ya, a)
    }

    function Q(a) {
        var b = fa;
        fa = ea, g("Reset trigger event: " + a), O(), P("reset"), fa = b
    }

    function R(b, c, d, e, f) {
        function h() {
            a === f ? f = ta : g("Message targetOrigin: " + f)
        }

        function i() {
            var h = b + ":" + c,
                i = oa + ":" + h + ":" + d + (a !== e ? ":" + e : "");
            g("Sending message to host page (" + i + ")"), sa.postMessage(ma + i, f)
        }!0 === ra && (h(), i())
    }

    function S(a) {
        function c() {
            return ma === ("" + a.data).substr(0, na)
        }

        function d() {
            return a.data.split("]")[1].split(":")[0]
        }

        function e() {
            return a.data.substr(a.data.indexOf(":") + 1)
        }

        function f() {
            return !("undefined" != typeof module && module.exports) && "iFrameResize" in window
        }

        function j() {
            return a.data.split(":")[2] in {
                "true": 1,
                "false": 1
            }
        }

        function k() {
            var b = d();
            b in m ? m[b]() : f() || j() || h("Unexpected message (" + a.data + ")")
        }

        function l() {
            !1 === ca ? k() : j() ? m.init() : g('Ignored message of type "' + d() + '". Received before initialization.')
        }
        var m = {
            init: function() {
                function c() {
                    ha = a.data, sa = a.source, i(), ca = !1, setTimeout(function() {
                        ga = !1
                    }, ba)
                }
                document.body ? c() : (g("Waiting for page ready"), b(window, "readystatechange", m.initFromParent))
            },
            reset: function() {
                ga ? g("Page reset ignored by init") : (g("Page size reset by host page"), P("resetPage"))
            },
            resize: function() {
                N("resizeParent", "Parent window requested size check")
            },
            moveToAnchor: function() {
                ia.findTarget(e())
            },
            inPageLink: function() {
                this.moveToAnchor()
            },
            pageInfo: function() {
                var a = e();
                g("PageInfoFromParent called from parent: " + a), Ea(JSON.parse(a)), g(" --")
            },
            message: function() {
                var a = e();
                g("MessageCallback called from parent: " + a), Ca(JSON.parse(a)), g(" --")
            }
        };
        c() && l()
    }

    function T() {
        "loading" !== document.readyState && window.parent.postMessage("[iFrameResizerChild]Ready", "*")
    }
    if ("undefined" != typeof window) {
        var U = !0,
            V = 10,
            W = "",
            X = 0,
            Y = "",
            Z = null,
            $ = "",
            _ = !1,
            aa = {
                resize: 1,
                click: 1
            },
            ba = 128,
            ca = !0,
            da = 1,
            ea = "bodyOffset",
            fa = ea,
            ga = !0,
            ha = "",
            ia = {},
            ja = 32,
            ka = null,
            la = !1,
            ma = "[iFrameSizer]",
            na = ma.length,
            oa = "",
            pa = {
                max: 1,
                min: 1,
                bodyScroll: 1,
                documentElementScroll: 1
            },
            qa = "child",
            ra = !0,
            sa = window.parent,
            ta = "*",
            ua = 0,
            va = !1,
            wa = null,
            xa = 16,
            ya = 1,
            za = "scroll",
            Aa = za,
            Ba = window,
            Ca = function() {
                h("MessageCallback function not defined")
            },
            Da = function() {},
            Ea = function() {},
            Fa = {
                height: function() {
                    return h("Custom height calculation function not defined"), document.documentElement.offsetHeight
                },
                width: function() {
                    return h("Custom width calculation function not defined"), document.body.scrollWidth
                }
            },
            Ga = {},
            Ha = Date.now || function() {
                return (new Date).getTime()
            },
            Ia = {
                bodyOffset: function() {
                    return document.body.offsetHeight + G("marginTop") + G("marginBottom")
                },
                offset: function() {
                    return Ia.bodyOffset()
                },
                bodyScroll: function() {
                    return document.body.scrollHeight
                },
                custom: function() {
                    return Fa.height()
                },
                documentElementOffset: function() {
                    return document.documentElement.offsetHeight
                },
                documentElementScroll: function() {
                    return document.documentElement.scrollHeight
                },
                max: function() {
                    return Math.max.apply(null, J(Ia))
                },
                min: function() {
                    return Math.min.apply(null, J(Ia))
                },
                grow: function() {
                    return Ia.max()
                },
                lowestElement: function() {
                    return Math.max(Ia.bodyOffset(), I("bottom", L()))
                },
                taggedElement: function() {
                    return K("bottom", "data-iframe-height")
                }
            },
            Ja = {
                bodyScroll: function() {
                    return document.body.scrollWidth
                },
                bodyOffset: function() {
                    return document.body.offsetWidth
                },
                custom: function() {
                    return Fa.width()
                },
                documentElementScroll: function() {
                    return document.documentElement.scrollWidth
                },
                documentElementOffset: function() {
                    return document.documentElement.offsetWidth
                },
                scroll: function() {
                    return Math.max(Ja.bodyScroll(), Ja.documentElementScroll())
                },
                max: function() {
                    return Math.max.apply(null, J(Ja))
                },
                min: function() {
                    return Math.min.apply(null, J(Ja))
                },
                rightMostElement: function() {
                    return I("right", L())
                },
                taggedElement: function() {
                    return K("right", "data-iframe-width")
                }
            },
            Ka = e(M);
        b(window, "message", S), T()
    }
}();
//# sourceMappingURL=iframeResizer.contentWindow.map
                                    

#10 JavaScript::Eval (size: 30637, repeated: 1) - SHA256: cf27cb4a231c6177590879e34124ce95febb42e0816d941434b49f75a0a6cde8

                                        /**
 * @version: 1.0 Alpha-1
 * @author: Coolite Inc. http://www.coolite.com/
 * @date: 2008-05-13
 * @copyright: Copyright (c) 2006-2008, Coolite Inc. (http://www.coolite.com/). All rights reserved.
 * @license: Licensed under The MIT License. See license.txt and http://www.datejs.com/license/.
 * @website: http://www.datejs.com/
 */
Date.CultureInfo = {
    name: "en-US",
    englishName: "English (United States)",
    nativeName: "English (United States)",
    dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
    abbreviatedDayNames: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
    shortestDayNames: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
    firstLetterDayNames: ["S", "M", "T", "W", "T", "F", "S"],
    monthNames: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
    abbreviatedMonthNames: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
    amDesignator: "AM",
    pmDesignator: "PM",
    firstDayOfWeek: 0,
    twoDigitYearMax: 2029,
    dateElementOrder: "mdy",
    formatPatterns: {
        shortDate: "M/d/yyyy",
        longDate: "dddd, MMMM dd, yyyy",
        shortTime: "h:mm tt",
        longTime: "h:mm:ss tt",
        fullDateTime: "dddd, MMMM dd, yyyy h:mm:ss tt",
        sortableDateTime: "yyyy-MM-ddTHH:mm:ss",
        universalSortableDateTime: "yyyy-MM-dd HH:mm:ssZ",
        rfc1123: "ddd, dd MMM yyyy HH:mm:ss GMT",
        monthDay: "MMMM dd",
        yearMonth: "MMMM, yyyy"
    },
    regexPatterns: {
        jan: /^jan(uary)?/i,
        feb: /^feb(ruary)?/i,
        mar: /^mar(ch)?/i,
        apr: /^apr(il)?/i,
        may: /^may/i,
        jun: /^jun(e)?/i,
        jul: /^jul(y)?/i,
        aug: /^aug(ust)?/i,
        sep: /^sep(t(ember)?)?/i,
        oct: /^oct(ober)?/i,
        nov: /^nov(ember)?/i,
        dec: /^dec(ember)?/i,
        sun: /^su(n(day)?)?/i,
        mon: /^mo(n(day)?)?/i,
        tue: /^tu(e(s(day)?)?)?/i,
        wed: /^we(d(nesday)?)?/i,
        thu: /^th(u(r(s(day)?)?)?)?/i,
        fri: /^fr(i(day)?)?/i,
        sat: /^sa(t(urday)?)?/i,
        future: /^next/i,
        past: /^last|past|prev(ious)?/i,
        add: /^(\+|aft(er)?|from|hence)/i,
        subtract: /^(\-|bef(ore)?|ago)/i,
        yesterday: /^yes(terday)?/i,
        today: /^t(od(ay)?)?/i,
        tomorrow: /^tom(orrow)?/i,
        now: /^n(ow)?/i,
        millisecond: /^ms|milli(second)?s?/i,
        second: /^sec(ond)?s?/i,
        minute: /^mn|min(ute)?s?/i,
        hour: /^h(our)?s?/i,
        week: /^w(eek)?s?/i,
        month: /^m(onth)?s?/i,
        day: /^d(ay)?s?/i,
        year: /^y(ear)?s?/i,
        shortMeridian: /^(a|p)/i,
        longMeridian: /^(a\.?m?\.?|p\.?m?\.?)/i,
        timezone: /^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\s*(\+|\-)\s*\d\d\d\d?)|gmt|utc)/i,
        ordinalSuffix: /^\s*(st|nd|rd|th)/i,
        timeContext: /^\s*(\:|a(?!u|p)|p)/i
    },
    timezones: [{
        name: "UTC",
        offset: "-000"
    }, {
        name: "GMT",
        offset: "-000"
    }, {
        name: "EST",
        offset: "-0500"
    }, {
        name: "EDT",
        offset: "-0400"
    }, {
        name: "CST",
        offset: "-0600"
    }, {
        name: "CDT",
        offset: "-0500"
    }, {
        name: "MST",
        offset: "-0700"
    }, {
        name: "MDT",
        offset: "-0600"
    }, {
        name: "PST",
        offset: "-0800"
    }, {
        name: "PDT",
        offset: "-0700"
    }]
};
(function() {
    var $D = Date,
        $P = $D.prototype,
        $C = $D.CultureInfo,
        p = function(s, l) {
            if (!l) {
                l = 2;
            }
            return ("000" + s).slice(l * -1);
        };
    $P.clearTime = function() {
        this.setHours(0);
        this.setMinutes(0);
        this.setSeconds(0);
        this.setMilliseconds(0);
        return this;
    };
    $P.setTimeToNow = function() {
        var n = new Date();
        this.setHours(n.getHours());
        this.setMinutes(n.getMinutes());
        this.setSeconds(n.getSeconds());
        this.setMilliseconds(n.getMilliseconds());
        return this;
    };
    $D.today = function() {
        return new Date().clearTime();
    };
    $D.compare = function(date1, date2) {
        if (isNaN(date1) || isNaN(date2)) {
            throw new Error(date1 + " - " + date2);
        } else if (date1 instanceof Date && date2 instanceof Date) {
            return (date1 < date2) ? -1 : (date1 > date2) ? 1 : 0;
        } else {
            throw new TypeError(date1 + " - " + date2);
        }
    };
    $D.equals = function(date1, date2) {
        return (date1.compareTo(date2) === 0);
    };
    $D.getDayNumberFromName = function(name) {
        var n = $C.dayNames,
            m = $C.abbreviatedDayNames,
            o = $C.shortestDayNames,
            s = name.toLowerCase();
        for (var i = 0; i < n.length; i++) {
            if (n[i].toLowerCase() == s || m[i].toLowerCase() == s || o[i].toLowerCase() == s) {
                return i;
            }
        }
        return -1;
    };
    $D.getMonthNumberFromName = function(name) {
        var n = $C.monthNames,
            m = $C.abbreviatedMonthNames,
            s = name.toLowerCase();
        for (var i = 0; i < n.length; i++) {
            if (n[i].toLowerCase() == s || m[i].toLowerCase() == s) {
                return i;
            }
        }
        return -1;
    };
    $D.isLeapYear = function(year) {
        return ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0);
    };
    $D.getDaysInMonth = function(year, month) {
        return [31, ($D.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];
    };
    $D.getTimezoneAbbreviation = function(offset) {
        var z = $C.timezones,
            p;
        for (var i = 0; i < z.length; i++) {
            if (z[i].offset === offset) {
                return z[i].name;
            }
        }
        return null;
    };
    $D.getTimezoneOffset = function(name) {
        var z = $C.timezones,
            p;
        for (var i = 0; i < z.length; i++) {
            if (z[i].name === name.toUpperCase()) {
                return z[i].offset;
            }
        }
        return null;
    };
    $P.clone = function() {
        return new Date(this.getTime());
    };
    $P.compareTo = function(date) {
        return Date.compare(this, date);
    };
    $P.equals = function(date) {
        return Date.equals(this, date || new Date());
    };
    $P.between = function(start, end) {
        return this.getTime() >= start.getTime() && this.getTime() <= end.getTime();
    };
    $P.isAfter = function(date) {
        return this.compareTo(date || new Date()) === 1;
    };
    $P.isBefore = function(date) {
        return (this.compareTo(date || new Date()) === -1);
    };
    $P.isToday = function() {
        return this.isSameDay(new Date());
    };
    $P.isSameDay = function(date) {
        return this.clone().clearTime().equals(date.clone().clearTime());
    };
    $P.addMilliseconds = function(value) {
        this.setMilliseconds(this.getMilliseconds() + value);
        return this;
    };
    $P.addSeconds = function(value) {
        return this.addMilliseconds(value * 1000);
    };
    $P.addMinutes = function(value) {
        return this.addMilliseconds(value * 60000);
    };
    $P.addHours = function(value) {
        return this.addMilliseconds(value * 3600000);
    };
    $P.addDays = function(value) {
        this.setDate(this.getDate() + value);
        return this;
    };
    $P.addWeeks = function(value) {
        return this.addDays(value * 7);
    };
    $P.addMonths = function(value) {
        var n = this.getDate();
        this.setDate(1);
        this.setMonth(this.getMonth() + value);
        this.setDate(Math.min(n, $D.getDaysInMonth(this.getFullYear(), this.getMonth())));
        return this;
    };
    $P.addYears = function(value) {
        return this.addMonths(value * 12);
    };
    $P.add = function(config) {
        if (typeof config == "number") {
            this._orient = config;
            return this;
        }
        var x = config;
        if (x.milliseconds) {
            this.addMilliseconds(x.milliseconds);
        }
        if (x.seconds) {
            this.addSeconds(x.seconds);
        }
        if (x.minutes) {
            this.addMinutes(x.minutes);
        }
        if (x.hours) {
            this.addHours(x.hours);
        }
        if (x.weeks) {
            this.addWeeks(x.weeks);
        }
        if (x.months) {
            this.addMonths(x.months);
        }
        if (x.years) {
            this.addYears(x.years);
        }
        if (x.days) {
            this.addDays(x.days);
        }
        return this;
    };
    var $y, $m, $d;
    $P.getWeek = function() {
        var a, b, c, d, e, f, g, n, s, w;
        $y = (!$y) ? this.getFullYear() : $y;
        $m = (!$m) ? this.getMonth() + 1 : $m;
        $d = (!$d) ? this.getDate() : $d;
        if ($m <= 2) {
            a = $y - 1;
            b = (a / 4 | 0) - (a / 100 | 0) + (a / 400 | 0);
            c = ((a - 1) / 4 | 0) - ((a - 1) / 100 | 0) + ((a - 1) / 400 | 0);
            s = b - c;
            e = 0;
            f = $d - 1 + (31 * ($m - 1));
        } else {
            a = $y;
            b = (a / 4 | 0) - (a / 100 | 0) + (a / 400 | 0);
            c = ((a - 1) / 4 | 0) - ((a - 1) / 100 | 0) + ((a - 1) / 400 | 0);
            s = b - c;
            e = s + 1;
            f = $d + ((153 * ($m - 3) + 2) / 5) + 58 + s;
        }
        g = (a + b) % 7;
        d = (f + g - e) % 7;
        n = (f + 3 - d) | 0;
        if (n < 0) {
            w = 53 - ((g - s) / 5 | 0);
        } else if (n > 364 + s) {
            w = 1;
        } else {
            w = (n / 7 | 0) + 1;
        }
        $y = $m = $d = null;
        return w;
    };
    $P.getISOWeek = function() {
        $y = this.getUTCFullYear();
        $m = this.getUTCMonth() + 1;
        $d = this.getUTCDate();
        return p(this.getWeek());
    };
    $P.setWeek = function(n) {
        return this.moveToDayOfWeek(1).addWeeks(n - this.getWeek());
    };
    $D._validate = function(n, min, max, name) {
        if (typeof n == "undefined") {
            return false;
        } else if (typeof n != "number") {
            throw new TypeError(n + " is not a Number.");
        } else if (n < min || n > max) {
            throw new RangeError(n + " is not a valid value for " + name + ".");
        }
        return true;
    };
    $D.validateMillisecond = function(value) {
        return $D._validate(value, 0, 999, "millisecond");
    };
    $D.validateSecond = function(value) {
        return $D._validate(value, 0, 59, "second");
    };
    $D.validateMinute = function(value) {
        return $D._validate(value, 0, 59, "minute");
    };
    $D.validateHour = function(value) {
        return $D._validate(value, 0, 23, "hour");
    };
    $D.validateDay = function(value, year, month) {
        return $D._validate(value, 1, $D.getDaysInMonth(year, month), "day");
    };
    $D.validateMonth = function(value) {
        return $D._validate(value, 0, 11, "month");
    };
    $D.validateYear = function(value) {
        return $D._validate(value, 0, 9999, "year");
    };
    $P.set = function(config) {
        if ($D.validateMillisecond(config.millisecond)) {
            this.addMilliseconds(config.millisecond - this.getMilliseconds());
        }
        if ($D.validateSecond(config.second)) {
            this.addSeconds(config.second - this.getSeconds());
        }
        if ($D.validateMinute(config.minute)) {
            this.addMinutes(config.minute - this.getMinutes());
        }
        if ($D.validateHour(config.hour)) {
            this.addHours(config.hour - this.getHours());
        }
        if ($D.validateMonth(config.month)) {
            this.addMonths(config.month - this.getMonth());
        }
        if ($D.validateYear(config.year)) {
            this.addYears(config.year - this.getFullYear());
        }
        if ($D.validateDay(config.day, this.getFullYear(), this.getMonth())) {
            this.addDays(config.day - this.getDate());
        }
        if (config.timezone) {
            this.setTimezone(config.timezone);
        }
        if (config.timezoneOffset) {
            this.setTimezoneOffset(config.timezoneOffset);
        }
        if (config.week && $D._validate(config.week, 0, 53, "week")) {
            this.setWeek(config.week);
        }
        return this;
    };
    $P.moveToFirstDayOfMonth = function() {
        return this.set({
            day: 1
        });
    };
    $P.moveToLastDayOfMonth = function() {
        return this.set({
            day: $D.getDaysInMonth(this.getFullYear(), this.getMonth())
        });
    };
    $P.moveToNthOccurrence = function(dayOfWeek, occurrence) {
        var shift = 0;
        if (occurrence > 0) {
            shift = occurrence - 1;
        } else if (occurrence === -1) {
            this.moveToLastDayOfMonth();
            if (this.getDay() !== dayOfWeek) {
                this.moveToDayOfWeek(dayOfWeek, -1);
            }
            return this;
        }
        return this.moveToFirstDayOfMonth().addDays(-1).moveToDayOfWeek(dayOfWeek, +1).addWeeks(shift);
    };
    $P.moveToDayOfWeek = function(dayOfWeek, orient) {
        var diff = (dayOfWeek - this.getDay() + 7 * (orient || +1)) % 7;
        return this.addDays((diff === 0) ? diff += 7 * (orient || +1) : diff);
    };
    $P.moveToMonth = function(month, orient) {
        var diff = (month - this.getMonth() + 12 * (orient || +1)) % 12;
        return this.addMonths((diff === 0) ? diff += 12 * (orient || +1) : diff);
    };
    $P.getOrdinalNumber = function() {
        return Math.ceil((this.clone().clearTime() - new Date(this.getFullYear(), 0, 1)) / 86400000) + 1;
    };
    $P.getTimezone = function() {
        return $D.getTimezoneAbbreviation(this.getUTCOffset());
    };
    $P.setTimezoneOffset = function(offset) {
        var here = this.getTimezoneOffset(),
            there = Number(offset) * -6 / 10;
        return this.addMinutes(there - here);
    };
    $P.setTimezone = function(offset) {
        return this.setTimezoneOffset($D.getTimezoneOffset(offset));
    };
    $P.hasDaylightSavingTime = function() {
        return (Date.today().set({
            month: 0,
            day: 1
        }).getTimezoneOffset() !== Date.today().set({
            month: 6,
            day: 1
        }).getTimezoneOffset());
    };
    $P.isDaylightSavingTime = function() {
        return (this.hasDaylightSavingTime() && new Date().getTimezoneOffset() === Date.today().set({
            month: 6,
            day: 1
        }).getTimezoneOffset());
    };
    $P.getUTCOffset = function() {
        var n = this.getTimezoneOffset() * -10 / 6,
            r;
        if (n < 0) {
            r = (n - 10000).toString();
            return r.charAt(0) + r.substr(2);
        } else {
            r = (n + 10000).toString();
            return "+" + r.substr(1);
        }
    };
    $P.getElapsed = function(date) {
        return (date || new Date()) - this;
    };
    if (!$P.toISOString) {
        $P.toISOString = function() {
            function f(n) {
                return n < 10 ? '0' + n : n;
            }
            return '"' + this.getUTCFullYear() + '-' +
                f(this.getUTCMonth() + 1) + '-' +
                f(this.getUTCDate()) + 'T' +
                f(this.getUTCHours()) + ':' +
                f(this.getUTCMinutes()) + ':' +
                f(this.getUTCSeconds()) + 'Z"';
        };
    }
    $P._toString = $P.toString;
    $P.toString = function(format) {
        var x = this;
        if (format && format.length == 1) {
            var c = $C.formatPatterns;
            x.t = x.toString;
            switch (format) {
                case "d":
                    return x.t(c.shortDate);
                case "D":
                    return x.t(c.longDate);
                case "F":
                    return x.t(c.fullDateTime);
                case "m":
                    return x.t(c.monthDay);
                case "r":
                    return x.t(c.rfc1123);
                case "s":
                    return x.t(c.sortableDateTime);
                case "t":
                    return x.t(c.shortTime);
                case "T":
                    return x.t(c.longTime);
                case "u":
                    return x.t(c.universalSortableDateTime);
                case "y":
                    return x.t(c.yearMonth);
            }
        }
        var ord = function(n) {
            switch (n * 1) {
                case 1:
                case 21:
                case 31:
                    return "st";
                case 2:
                case 22:
                    return "nd";
                case 3:
                case 23:
                    return "rd";
                default:
                    return "th";
            }
        };
        return format ? format.replace(/(\\)?(dd?d?d?|MM?M?M?|yy?y?y?|hh?|HH?|mm?|ss?|tt?|S)/g, function(m) {
            if (m.charAt(0) === "\\") {
                return m.replace("\\", "");
            }
            x.h = x.getHours;
            switch (m) {
                case "hh":
                    return p(x.h() < 13 ? (x.h() === 0 ? 12 : x.h()) : (x.h() - 12));
                case "h":
                    return x.h() < 13 ? (x.h() === 0 ? 12 : x.h()) : (x.h() - 12);
                case "HH":
                    return p(x.h());
                case "H":
                    return x.h();
                case "mm":
                    return p(x.getMinutes());
                case "m":
                    return x.getMinutes();
                case "ss":
                    return p(x.getSeconds());
                case "s":
                    return x.getSeconds();
                case "yyyy":
                    return p(x.getFullYear(), 4);
                case "yy":
                    return p(x.getFullYear());
                case "dddd":
                    return $C.dayNames[x.getDay()];
                case "ddd":
                    return $C.abbreviatedDayNames[x.getDay()];
                case "dd":
                    return p(x.getDate());
                case "d":
                    return x.getDate();
                case "MMMM":
                    return $C.monthNames[x.getMonth()];
                case "MMM":
                    return $C.abbreviatedMonthNames[x.getMonth()];
                case "MM":
                    return p((x.getMonth() + 1));
                case "M":
                    return x.getMonth() + 1;
                case "t":
                    return x.h() < 12 ? $C.amDesignator.substring(0, 1) : $C.pmDesignator.substring(0, 1);
                case "tt":
                    return x.h() < 12 ? $C.amDesignator : $C.pmDesignator;
                case "S":
                    return ord(x.getDate());
                default:
                    return m;
            }
        }) : this._toString();
    };
}());
(function() {
    var $D = Date,
        $P = $D.prototype,
        $C = $D.CultureInfo,
        $N = Number.prototype;
    $P._orient = +1;
    $P._nth = null;
    $P._is = false;
    $P._same = false;
    $P._isSecond = false;
    $N._dateElement = "day";
    $P.next = function() {
        this._orient = +1;
        return this;
    };
    $D.next = function() {
        return $D.today().next();
    };
    $P.last = $P.prev = $P.previous = function() {
        this._orient = -1;
        return this;
    };
    $D.last = $D.prev = $D.previous = function() {
        return $D.today().last();
    };
    $P.is = function() {
        this._is = true;
        return this;
    };
    $P.same = function() {
        this._same = true;
        this._isSecond = false;
        return this;
    };
    $P.today = function() {
        return this.same().day();
    };
    $P.weekday = function() {
        if (this._is) {
            this._is = false;
            return (!this.is().sat() && !this.is().sun());
        }
        return false;
    };
    $P.at = function(time) {
        return (typeof time === "string") ? $D.parse(this.toString("d") + " " + time) : this.set(time);
    };
    $N.fromNow = $N.after = function(date) {
        var c = {};
        c[this._dateElement] = this;
        return ((!date) ? new Date() : date.clone()).add(c);
    };
    $N.ago = $N.before = function(date) {
        var c = {};
        c[this._dateElement] = this * -1;
        return ((!date) ? new Date() : date.clone()).add(c);
    };
    var dx = ("sunday monday tuesday wednesday thursday friday saturday").split(/\s/),
        mx = ("january february march april may june july august september october november december").split(/\s/),
        px = ("Millisecond Second Minute Hour Day Week Month Year").split(/\s/),
        pxf = ("Milliseconds Seconds Minutes Hours Date Week Month FullYear").split(/\s/),
        nth = ("final first second third fourth fifth").split(/\s/),
        de;
    $P.toObject = function() {
        var o = {};
        for (var i = 0; i < px.length; i++) {
            o[px[i].toLowerCase()] = this["get" + pxf[i]]();
        }
        return o;
    };
    $D.fromObject = function(config) {
        config.week = null;
        return Date.today().set(config);
    };
    var df = function(n) {
        return function() {
            if (this._is) {
                this._is = false;
                return this.getDay() == n;
            }
            if (this._nth !== null) {
                if (this._isSecond) {
                    this.addSeconds(this._orient * -1);
                }
                this._isSecond = false;
                var ntemp = this._nth;
                this._nth = null;
                var temp = this.clone().moveToLastDayOfMonth();
                this.moveToNthOccurrence(n, ntemp);
                if (this > temp) {
                    throw new RangeError($D.getDayName(n) + " does not occur " + ntemp + " times in the month of " + $D.getMonthName(temp.getMonth()) + " " + temp.getFullYear() + ".");
                }
                return this;
            }
            return this.moveToDayOfWeek(n, this._orient);
        };
    };
    var sdf = function(n) {
        return function() {
            var t = $D.today(),
                shift = n - t.getDay();
            if (n === 0 && $C.firstDayOfWeek === 1 && t.getDay() !== 0) {
                shift = shift + 7;
            }
            return t.addDays(shift);
        };
    };
    for (var i = 0; i < dx.length; i++) {
        $D[dx[i].toUpperCase()] = $D[dx[i].toUpperCase().substring(0, 3)] = i;
        $D[dx[i]] = $D[dx[i].substring(0, 3)] = sdf(i);
        $P[dx[i]] = $P[dx[i].substring(0, 3)] = df(i);
    }
    var mf = function(n) {
        return function() {
            if (this._is) {
                this._is = false;
                return this.getMonth() === n;
            }
            return this.moveToMonth(n, this._orient);
        };
    };
    var smf = function(n) {
        return function() {
            return $D.today().set({
                month: n,
                day: 1
            });
        };
    };
    for (var j = 0; j < mx.length; j++) {
        $D[mx[j].toUpperCase()] = $D[mx[j].toUpperCase().substring(0, 3)] = j;
        $D[mx[j]] = $D[mx[j].substring(0, 3)] = smf(j);
        $P[mx[j]] = $P[mx[j].substring(0, 3)] = mf(j);
    }
    var ef = function(j) {
        return function() {
            if (this._isSecond) {
                this._isSecond = false;
                return this;
            }
            if (this._same) {
                this._same = this._is = false;
                var o1 = this.toObject(),
                    o2 = (arguments[0] || new Date()).toObject(),
                    v = "",
                    k = j.toLowerCase();
                for (var m = (px.length - 1); m > -1; m--) {
                    v = px[m].toLowerCase();
                    if (o1[v] != o2[v]) {
                        return false;
                    }
                    if (k == v) {
                        break;
                    }
                }
                return true;
            }
            if (j.substring(j.length - 1) != "s") {
                j += "s";
            }
            return this["add" + j](this._orient);
        };
    };
    var nf = function(n) {
        return function() {
            this._dateElement = n;
            return this;
        };
    };
    for (var k = 0; k < px.length; k++) {
        de = px[k].toLowerCase();
        $P[de] = $P[de + "s"] = ef(px[k]);
        $N[de] = $N[de + "s"] = nf(de);
    }
    $P._ss = ef("Second");
    var nthfn = function(n) {
        return function(dayOfWeek) {
            if (this._same) {
                return this._ss(arguments[0]);
            }
            if (dayOfWeek || dayOfWeek === 0) {
                return this.moveToNthOccurrence(dayOfWeek, n);
            }
            this._nth = n;
            if (n === 2 && (dayOfWeek === undefined || dayOfWeek === null)) {
                this._isSecond = true;
                return this.addSeconds(this._orient);
            }
            return this;
        };
    };
    for (var l = 0; l < nth.length; l++) {
        $P[nth[l]] = (l === 0) ? nthfn(-1) : nthfn(l);
    }
}());
(function() {
    Date.Parsing = {
        Exception: function(s) {
            this.message = "Parse error at '" + s.substring(0, 10) + " ...'";
        }
    };
    var $P = Date.Parsing;
    var _ = $P.Operators = {
        rtoken: function(r) {
            return function(s) {
                var mx = s.match(r);
                if (mx) {
                    return ([mx[0], s.substring(mx[0].length)]);
                } else {
                    throw new $P.Exception(s);
                }
            };
        },
        token: function(s) {
            return function(s) {
                return _.rtoken(new RegExp("^\s*" + s + "\s*"))(s);
            };
        },
        stoken: function(s) {
            return _.rtoken(new RegExp("^" + s));
        },
        until: function(p) {
            return function(s) {
                var qx = [],
                    rx = null;
                while (s.length) {
                    try {
                        rx = p.call(this, s);
                    } catch (e) {
                        qx.push(rx[0]);
                        s = rx[1];
                        continue;
                    }
                    break;
                }
                return [qx, s];
            };
        },
        many: function(p) {
            return function(s) {
                var rx = [],
                    r = null;
                while (s.length) {
                    try {
                        r = p.call(this, s);
                    } catch (e) {
                        return [rx, s];
                    }
                    rx.push(r[0]);
                    s = r[1];
                }
                return [rx, s];
            };
        },
        optional: function(p) {
            return function(s) {
                var r = null;
                try {
                    r = p.call(this, s);
                } catch (e) {
                    return [null, s];
                }
                return [r[0], r[1]];
            };
        },
        not: function(p) {
            return function(s) {
                try {
                    p.call(this, s);
                } catch (e) {
                    return [null, s];
                }
                throw new $P.Exception(s);
            };
        },
        ignore: function(p) {
            return p ? function(s) {
                var r = null;
                r = p.call(this, s);
                return [null, r[1]];
            } : null;
        },
        product: function() {
            var px = arguments[0],
                qx = Array.prototype.slice.call(arguments, 1),
                rx = [];
            for (var i = 0; i < px.length; i++) {
                rx.push(_.each(px[i], qx));
            }
            return rx;
        },
        cache: function(rule) {
            var cache = {},
                r = null;
            return function(s) {
                try {
                    r = cache[s] = (cache[s] || rule.call(this, s));
                } catch (e) {
                    r = cache[s] = e;
                }
                if (r instanceof $P.Exception) {
                    throw r;
                } else {
                    return r;
                }
            };
        },
        any: function() {
            var px = arguments;
            return function(s) {
                var r = null;
                for (var i = 0; i < px.length; i++) {
                    if (px[i] == null) {
                        continue;
                    }
                    try {
                        r = (px[i].call(this, s));
                    } catch (e) {
                        r = null;
                    }
                    if (r) {
                        return r;
                    }
                }
                throw new $P.Exception(s);
            };
        },
        each: function() {
            var px = arguments;
            return function(s) {
                var rx = [],
                    r = null;
                for (var i = 0; i < px.length; i++) {
                    if (px[i] == null) {
                        continue;
                    }
                    try {
                        r = (px[i].call(this, s));
                    } catch (e) {
                        throw new $P.Exception(s);
                    }
                    rx.push(r[0]);
                    s = r[1];
                }
                return [rx, s];
            };
        },
        all: function() {
            var px = arguments,
                _ = _;
            return _.each(_.optional(px));
        },
        sequence: function(px, d, c) {
            d = d || _.rtoken(/^\s*/);
            c = c || null;
            if (px.length == 1) {
                return px[0];
            }
            return function(s) {
                var r = null,
                    q = null;
                var rx = [];
                for (var i = 0; i < px.length; i++) {
                    try {
                        r = px[i].call(this, s);
                    } catch (e) {
                        break;
                    }
                    rx.push(r[0]);
                    try {
                        q = d.call(this, r[1]);
                    } catch (ex) {
                        q = null;
                        break;
                    }
                    s = q[1];
                }
                if (!r) {
                    throw new $P.Exception(s);
                }
                if (q) {
                    throw new $P.Exception(q[1]);
                }
                if (c) {
                    try {
                        r = c.call(this, r[1]);
                    } catch (ey) {
                        throw new $P.Exception(r[1]);
                    }
                }
                return [rx, (r ? r[1] : s)];
            };
        },
        between: function(d1, p, d2) {
            d2 = d2 || d1;
            var _fn = _.each(_.ignore(d1), p, _.ignore(d2));
            return function(s) {
                var rx = _fn.call(this, s);
                return [
                    [rx[0][0], r[0][2]], rx[1]
                ];
            };
        },
        list: function(p, d, c) {
            d = d || _.rtoken(/^\s*/);
            c = c || null;
            return (p instanceof Array ? _.each(_.product(p.slice(0, -1), _.ignore(d)), p.slice(-1), _.ignore(c)) : _.each(_.many(_.each(p, _.ignore(d))), px, _.ignore(c)));
        },
        set: function(px, d, c) {
            d = d || _.rtoken(/^\s*/);
            c = c || null;
            return function(s) {
                var r = null,
                    p = null,
                    q = null,
                    rx = null,
                    best = [
                        [], s
                    ],
                    last = false;
                for (var i = 0; i < px.length; i++) {
                    q = null;
                    p = null;
                    r = null;
                    last = (px.length == 1);
                    try {
                        r = px[i].call(this, s);
                    } catch (e) {
                        continue;
                    }
                    rx = [
                        [r[0]], r[1]
                    ];
                    if (r[1].length > 0 && !last) {
                        try {
                            q = d.call(this, r[1]);
                        } catch (ex) {
                            last = true;
                        }
                    } else {
                        last = true;
                    }
                    if (!last && q[1].length === 0) {
                        last = true;
                    }
                    if (!last) {
                        var qx = [];
                        for (var j = 0; j < px.length; j++) {
                            if (i != j) {
                                qx.push(px[j]);
                            }
                        }
                        p = _.set(qx, d).call(this, q[1]);
                        if (p[0].length > 0) {
                            rx[0] = rx[0].concat(p[0]);
                            rx[1] = p[1];
                        }
                    }
                    if (rx[1].length < best[1].length) {
                        best = rx;
                    }
                    if (best[1].length === 0) {
                        break;
                    }
                }
                if (best[0].length === 0) {
                    return best;
                }
                if (c) {
                    try {
                        q = c.call(this, best[1]);
                    } catch (ey) {
                        throw new $P.Exception(best[1]);
                    }
                    best[1] = q[1];
                }
                return best;
            };
        },
        forward: function(gr, fname) {
            return function(s) {
                return gr[fname].call(this, s);
            };
        },
        replace: function(rule, repl) {
            return function(s) {
                var r = rule.call(this, s);
                return [repl, r[1]];
            };
        },
        process: function(rule, fn) {
            return function(s) {
                var r = rule.call(this, s);
                return [fn.call(this, r[0]), r[1]];
            };
        },
        min: function(min, rule) {
            return function(s) {
                var rx = rule.call(this, s);
                if (rx[0].length < min) {
                    throw new $P.Exception(s);
                }
                return rx;
            };
        }
    };
    var _generator = function(op) {
        return function() {
            var args = null,
                rx = [];
            if (arguments.length > 1) {
                args = Array.prototype.slice.call(arguments);
            } else if (arguments[0] instanceof Array) {
                args = arguments[0];
            }
            if (args) {
                for (var i = 0, px = args.shift(); i < px.length; i++) {
                    args.unshift(px[i]);
                    rx.push(op.apply(null, args));
                    args.shift();
                    return rx;
                }
            } else {
                return op.apply(null, arguments);
            }
        };
    };
    var gx = "optional not ignore cache".split(/\s/);
    for (var i = 0; i < gx.length; i++) {
        _[gx[i]] = _generator(_[gx[i]]);
    }
    var _vector = function(op) {
        return function() {
            if (arguments[0] instanceof Array) {
                return op.apply(null, arguments[0]);
            } else {
                return op.apply(null, arguments);
            }
        };
    };
    var vx = "each any all".split(/\s/);
    for (var j = 0; j < vx.length; j++) {
        _[vx[j]] = _vector(_[vx[j]]);
    }
}());
(function() {
    var $D = Date,
        $P = $D.prototype,
        $C = $D.CultureInfo;
    var flattenAndCompact = function(ax) {
        var rx = [];
        for (var i = 0; i < ax.length; i++) {
            if (ax[i] instanceof Array) {
                rx = rx.concat(flattenAndCompact(ax[i]));
            } else {
                if (ax[i]) {
                    rx.push(ax[i]);
                }
            }
        }
        return rx;
    };
    $D.Grammar = {};
    $D.Translator = {
        hour: function(s) {
            return function() {
                this.hour = Number(s);
            };
        },
        minute: function(s) {
            return function() {
                this.minute = Number(s);
            };
        },
        second: function(s) {
            return function() {
                this.second = Number(s);
            };
        },
        meridian: function(s) {
            return function() {
                this.meridian = s.slice(0, 1).toLowerCase();
            };
        },
        timezone: function(s) {
            return function() {
                var n = s.replace(/[^\d\+\-]/g, "");
                if (n.length) {
                    this.timezoneOffset = Number(n);
                } else {
                    this.timezone = s.toLowerCase();
                }
            };
        },
        day: function(x) {
            var s = x[0];
            return function() {
                this.day = Number(s.match(/\d+/)[0]);
            };
        },
        month: function(s) {
            return function() {
                this.month = (s.length == 3) ? "jan feb mar apr may jun jul aug sep oct nov dec".indexOf(s) / 4 : Number(s) - 1;
            };
        },
        year: function(s) {
            return function() {
                var n = Number(s);
                this.year = ((s.length > 2) ? n : (n + (((n + 2000) < $C.twoDigitYearMax) ? 2000 : 1900)));
            };
        },
        rday: function(s) {
            return function() {
                switch (s) {
                    case "yesterday":
                        this.days = -1;
                        break;
                    case "tomorrow":
                        this.days = 1;
                        break;
                    case "today":
                        this.days = 0;
                        break;
                    case "now":
                        this.days = 0;
                        this.now = true;
                        break;
                }
            };
        },
        finishExact: function(x) {
            x = (x instanceof Array) ? x : [x];
            for (var i = 0; i < x.length; i++) {
                if (x[i]) {
                    x[i].call(this);
                }
            }
            var now = new Date();
            if ((this.hour || this.minute) && (!this.month && !this.year && !this.day)) {
                this.day = now.getDate();
            }
            if (!this.year) {
                this.year = now.getFullYear();
            }
            if (!this.month && this.month !== 0) {
                this.month = now.getMonth();
            }
            if (!this.day) {
                this.day = 1;
            }
            if (!this.hour) {
                this.hour = 0;
            }
            if (!this.minute) {
                this.minute = 0;
            }
            if (!this.second) {
                this.second = 0;
            }
            if (this.meridian && this.hour) {
                if (this.meridian == "p" && this.hour < 12) {
                    this.hour = this.hour + 12;
                } else if (this.meridian == "a" && this.hour == 12) {
                    this.hour = 0;
                }
            }
            if (this.day > $D.getDaysInMonth(this.year, this.month)) {
                throw new RangeError(this.day + " is not a valid value for days.");
            }
            var r = new Date(this.year, this.month, this.day, this.hour, this.minute, this.second);
            if (this.timezone) {
                r.set({
                    timezone: this.timezone
                });
            } else if (this.timezoneOffset) {
                r.set({
                    timezoneOffset: this.timezoneOffset
                });
            }
            return r;
        },
        finish: function(x) {
            x = (x instanceof Array) ? flattenAndCompact(x) : [x];
            if (x.length === 0) {
                return null;
            }
            for (var i = 0; i < x.length; i++) {
                if (typeof x[i] == "function") {
                    x[i].call(this);
                }
            }
            var today = $D.today();
            if (this.now && !this.unit && !this.operator) {
                return new Date();
            } else if (this.now) {
                today = new Date();
            }
            var expression = !!(this.days && this.days !== null || this.orient || this.operator);
            var gap, mod, orient;
            orient = ((this.orient == "past" || this.operator == "subtract") ? -1 : 1);
            if (!this.now && "hour minute second".indexOf(this.unit) != -1) {
                today.setTimeToNow();
            }
            if (this.month || this.month === 0) {
                if ("year day hour minute second".indexOf(this.unit) != -1) {
                    this.value = this.month + 1;
                    this.month = null;
                    expression = true;
                }
            }
            if (!expression && this.weekday && !this.day && !this.days) {
                var temp = Date[this.weekday]();
                this.day = temp.getDate();
                if (!this.month) {
                    this.month = temp.getMonth();
                }
                this.year = temp.getFullYear();
            }
            if (expression && this.weekday && this.unit != "month") {
                this.unit = "day";
                gap = ($D.getDayNumberFromName(this.weekday) - today.getDay());
                mod = 7;
                this.days = gap ? ((gap + (orient * mod)) % mod) : (orient * mod);
            }
            if (this.month && this.unit == "day" && this.operator) {
                this.value = (this.month + 1);
                this.month = null;
            }
            if (this.value != null && this.month != null && this.year != null) {
                this.day = this.value * 1;
            }
            if (this.month && !this.day && this.value) {
                today.set({
                    day: this.value * 1
                });
                if (!expression) {
                    this.day = this.value * 1;
                }
            }
            if (!this.month && this.value && this.unit == "month" && !this.now) {
                this.month = this.value;
                expression = true;
            }
            if (expression && (this.month || this.month === 0) && this.unit != "year") {
                this.unit = "month";
                gap = (this.month - today.getMonth());
                mod = 12;
                this.months = gap ? ((gap + (orient * mod)) % mod) : (orient * mod);
                this.month = null;
            }
            if (!this.unit) {
                this.unit = "day";
            }
            if (!this.value && this.operator && this.operator !== null && this[this.unit + "s"] && this[this.unit + "s"] !== null) {
                this[this.unit + "s"] = this[this.unit + "s"] + ((this.operator == "add") ? 1 : -1) + (this.value || 0) * orient;
            } else if (this[this.unit + "s"] == null || this.operator != null) {
                if (!this.value) {
                    this.value = 1;
                }
                this[this.unit + "s"] = this.value * orient;
            }
            if (this.meridian && this.hour) {
                if (this.meridian == "p" && this.hour < 12) {
                    this.hour = this.hour + 12;
                } else if (this.meridian == "a" && this.hour == 12) {
                    this.hour = 0;
                }
            }
            if (this.weekday && !this.day && !this.days) {
                var temp = Date[this.weekday]();
                this.day = temp.getDate();
                if (temp.getMonth() !== today.getMonth()) {
                    this.month = temp.getMonth();
                }
            }
            if ((this.month || this.month === 0) && !this.day) {
                this.day = 1;
            }
            if (!this.orient && !this.operator && this.unit == "week" && this.value && !this.day && !this.month) {
                return Date.today().setWeek(this.value);
            }
            if (expression && this.timezone && this.day && this.days) {
                this.day = this.days;
            }
            return (expression) ? today.add(this) : today.set(this);
        }
    };
    var _ = $D.Parsing.Operators,
        g = $D.Grammar,
        t = $D.Translator,
        _fn;
    g.datePartDelimiter = _.rtoken(/^([\s\-\.\,\/\x27]+)/);
    g.timePartDelimiter = _.stoken(":");
    g.whiteSpace = _.rtoken(/^\s*/);
    g.generalDelimiter = _.rtoken(/^(([\s\,]|at|@|on)+)/);
    var _C = {};
    g.ctoken = function(keys) {
        var fn = _C[keys];
        if (!fn) {
            var c = $C.regexPatterns;
            var kx = keys.split(/\s+/),
                px = [];
            for (var i = 0; i < kx.length; i++) {
                px.push(_.replace(_.rtoken(c[kx[i]]), kx[i]));
            }
            fn = _C[keys] = _.any.apply(null, px);
        }
        return fn;
    };
    g.ctoken2 = function(key) {
        return _.rtoken($C.regexPatterns[key]);
    };
    g.h = _.cache(_.process(_.rtoken(/^(0[0-9]|1[0-2]|[1-9])/), t.hour));
    g.hh = _.cache(_.process(_.rtoken(/^(0[0-9]|1[0-2])/), t.hour));
    g.H = _.cache(_.process(_.rtoken(/^([0-1][0-9]|2[0-3]|[0-9])/), t.hour));
    g.HH = _.cache(_.process(_.rtoken(/^([0-1][0-9]|2[0-3])/), t.hour));
    g.m = _.cache(_.process(_.rtoken(/^([0-5][0-9]|[0-9])/), t.minute));
    g.mm = _.cache(_.process(_.rtoken(/^[0-5][0-9]/), t.minute));
    g.s = _.cache(_.process(_.rtoken(/^([0-5][0-9]|[0-9])/), t.second));
    g.ss = _.cache(_.process(_.rtoken(/^[0-5][0-9]/), t.second));
    g.hms = _.cache(_.sequence([g.H, g.m, g.s], g.timePartDelimiter));
    g.t = _.cache(_.process(g.ctoken2("shortMeridian"), t.meridian));
    g.tt = _.cache(_.process(g.ctoken2("longMeridian"), t.meridian));
    g.z = _.cache(_.process(_.rtoken(/^((\+|\-)\s*\d\d\d\d)|((\+|\-)\d\d\:?\d\d)/), t.timezone));
    g.zz = _.cache(_.process(_.rtoken(/^((\+|\-)\s*\d\d\d\d)|((\+|\-)\d\d\:?\d\d)/), t.timezone));
    g.zzz = _.cache(_.process(g.ctoken2("timezone"), t.timezone));
    g.timeSuffix = _.each(_.ignore(g.whiteSpace), _.set([g.tt, g.zzz]));
    g.time = _.each(_.optional(_.ignore(_.stoken("T"))), g.hms, g.timeSuffix);
    g.d = _.cache(_.process(_.each(_.rtoken(/^([0-2]\d|3[0-1]|\d)/), _.optional(g.ctoken2("ordinalSuffix"))), t.day));
    g.dd = _.cache(_.process(_.each(_.rtoken(/^([0-2]\d|3[0-1])/), _.optional(g.ctoken2("ordinalSuffix"))), t.day));
    g.ddd = g.dddd = _.cache(_.process(g.ctoken("sun mon tue wed thu fri sat"), function(s) {
        return function() {
            this.weekday = s;
        };
    }));
    g.M = _.cache(_.process(_.rtoken(/^(1[0-2]|0\d|\d)/), t.month));
    g.MM = _.cache(_.process(_.rtoken(/^(1[0-2]|0\d)/), t.month));
    g.MMM = g.MMMM = _.cache(_.process(g.ctoken("jan feb mar apr may jun jul aug sep oct nov dec"), t.month));
    g.y = _.cache(_.process(_.rtoken(/^(\d\d?)/), t.year));
    g.yy = _.cache(_.process(_.rtoken(/^(\d\d)/), t.year));
    g.yyy = _.cache(_.process(_.rtoken(/^(\d\d?\d?\d?)/), t.year));
    g.yyyy = _.cache(_.process(_.rtoken(/^(\d\d\d\d)/), t.year));
    _fn = function() {
        return _.each(_.any.apply(null, arguments), _.not(g.ctoken2("timeContext")));
    };
    g.day = _fn(g.d, g.dd);
    g.month = _fn(g.M, g.MMM);
    g.year = _fn(g.yyyy, g.yy);
    g.orientation = _.process(g.ctoken("past future"), function(s) {
        return function() {
            this.orient = s;
        };
    });
    g.operator = _.process(g.ctoken("add subtract"), function(s) {
        return function() {
            this.operator = s;
        };
    });
    g.rday = _.process(g.ctoken("yesterday tomorrow today now"), t.rday);
    g.unit = _.process(g.ctoken("second minute hour day week month year"), function(s) {
        return function() {
            this.unit = s;
        };
    });
    g.value = _.process(_.rtoken(/^\d\d?(st|nd|rd|th)?/), function(s) {
        return function() {
            this.value = s.replace(/\D/g, "");
        };
    });
    g.expression = _.set([g.rday, g.operator, g.value, g.unit, g.orientation, g.ddd, g.MMM]);
    _fn = function() {
        return _.set(arguments, g.datePartDelimiter);
    };
    g.mdy = _fn(g.ddd, g.month, g.day, g.year);
    g.ymd = _fn(g.ddd, g.year, g.month, g.day);
    g.dmy = _fn(g.ddd, g.day, g.month, g.year);
    g.date = function(s) {
        return ((g[$C.dateElementOrder] || g.mdy).call(this, s));
    };
    g.format = _.process(_.many(_.any(_.process(_.rtoken(/^(dd?d?d?|MM?M?M?|yy?y?y?|hh?|HH?|mm?|ss?|tt?|zz?z?)/), function(fmt) {
        if (g[fmt]) {
            return g[fmt];
        } else {
            throw $D.Parsing.Exception(fmt);
        }
    }), _.process(_.rtoken(/^[^dMyhHmstz]+/), function(s) {
        return _.ignore(_.stoken(s));
    }))), function(rules) {
        return _.process(_.each.apply(null, rules), t.finishExact);
    });
    var _F = {};
    var _get = function(f) {
        return _F[f] = (_F[f] || g.format(f)[0]);
    };
    g.formats = function(fx) {
        if (fx instanceof Array) {
            var rx = [];
            for (var i = 0; i < fx.length; i++) {
                rx.push(_get(fx[i]));
            }
            return _.any.apply(null, rx);
        } else {
            return _get(fx);
        }
    };
    g._formats = g.formats(["\"yyyy-MM-ddTHH:mm:ssZ\"", "yyyy-MM-ddTHH:mm:ssZ", "yyyy-MM-ddTHH:mm:ssz", "yyyy-MM-ddTHH:mm:ss", "yyyy-MM-ddTHH:mmZ", "yyyy-MM-ddTHH:mmz", "yyyy-MM-ddTHH:mm", "ddd, MMM dd, yyyy H:mm:ss tt", "ddd MMM d yyyy HH:mm:ss zzz", "MMddyyyy", "ddMMyyyy", "Mddyyyy", "ddMyyyy", "Mdyyyy", "dMyyyy", "yyyy", "Mdyy", "dMyy", "d"]);
    g._start = _.process(_.set([g.date, g.time, g.expression], g.generalDelimiter, g.whiteSpace), t.finish);
    g.start = function(s) {
        try {
            var r = g._formats.call({}, s);
            if (r[1].length === 0) {
                return r;
            }
        } catch (e) {}
        return g._start.call({}, s);
    };
    $D._parse = $D.parse;
    $D.parse = function(s) {
        var r = null;
        if (!s) {
            return null;
        }
        if (s instanceof Date) {
            return s;
        }
        try {
            r = $D.Grammar.start.call({}, s.replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1"));
        } catch (e) {
            return null;
        }
        return ((r[1].length === 0) ? r[0] : null);
    };
    $D.getParseFunction = function(fx) {
        var fn = $D.Grammar.formats(fx);
        return function(s) {
            var r = null;
            try {
                r = fn.call({}, s);
            } catch (e) {
                return null;
            }
            return ((r[1].length === 0) ? r[0] : null);
        };
    };
    $D.parseExact = function(s, fx) {
        return $D.getParseFunction(fx)(s);
    };
}());
                                    

#11 JavaScript::Eval (size: 125587, repeated: 1) - SHA256: 7db17459a120fc3200da8085a525e75eff218e793590530ce0733307745b6d25

                                        /**
 * mOxie - multi-runtime File API & XMLHttpRequest L2 Polyfill
 * v1.5.7
 *
 * Copyright 2013, Moxiecode Systems AB
 * Released under GPL License.
 *
 * License: http://www.plupload.com/license
 * Contributing: http://www.plupload.com/contributing
 *
 * Date: 2017-11-03
 */
! function(e, t) {
    var i = function() {
        var e = {};
        return t.apply(e, arguments), e.moxie
    };
    "function" == typeof define && define.amd ? define("moxie", [], i) : "object" == typeof module && module.exports ? module.exports = i() : e.moxie = i()
}(this || window, function() {
    ! function(e, t) {
        "use strict";

        function i(e, t) {
            for (var i, n = [], r = 0; r < e.length; ++r) {
                if (i = s[e[r]] || o(e[r]), !i) throw "module definition dependecy not found: " + e[r];
                n.push(i)
            }
            t.apply(null, n)
        }

        function n(e, n, r) {
            if ("string" != typeof e) throw "invalid module definition, module id must be defined and be a string";
            if (n === t) throw "invalid module definition, dependencies must be specified";
            if (r === t) throw "invalid module definition, definition function must be specified";
            i(n, function() {
                s[e] = r.apply(null, arguments)
            })
        }

        function r(e) {
            return !!s[e]
        }

        function o(t) {
            for (var i = e, n = t.split(/[.\/]/), r = 0; r < n.length; ++r) {
                if (!i[n[r]]) return;
                i = i[n[r]]
            }
            return i
        }

        function a(i) {
            for (var n = 0; n < i.length; n++) {
                for (var r = e, o = i[n], a = o.split(/[.\/]/), u = 0; u < a.length - 1; ++u) r[a[u]] === t && (r[a[u]] = {}), r = r[a[u]];
                r[a[a.length - 1]] = s[o]
            }
        }
        var s = {};
        n("moxie/core/utils/Basic", [], function() {
            function e(e) {
                var t;
                return e === t ? "undefined" : null === e ? "null" : e.nodeType ? "node" : {}.toString.call(e).match(/\s([a-z|A-Z]+)/)[1].toLowerCase()
            }

            function t() {
                return s(!1, !1, arguments)
            }

            function i() {
                return s(!0, !1, arguments)
            }

            function n() {
                return s(!1, !0, arguments)
            }

            function r() {
                return s(!0, !0, arguments)
            }

            function o(t) {
                switch (e(t)) {
                    case "array":
                        return s(!1, !0, [
                            [], t
                        ]);
                    case "object":
                        return s(!1, !0, [{}, t]);
                    default:
                        return t
                }
            }

            function a(i) {
                switch (e(i)) {
                    case "array":
                        return Array.prototype.slice.call(i);
                    case "object":
                        return t({}, i)
                }
                return i
            }

            function s(t, i, n) {
                var r, o = n[0];
                return c(n, function(n, u) {
                    u > 0 && c(n, function(n, u) {
                        var c = -1 !== h(e(n), ["array", "object"]);
                        return n === r || t && o[u] === r ? !0 : (c && i && (n = a(n)), e(o[u]) === e(n) && c ? s(t, i, [o[u], n]) : o[u] = n, void 0)
                    })
                }), o
            }

            function u(e, t) {
                function i() {
                    this.constructor = e
                }
                for (var n in t)({}).hasOwnProperty.call(t, n) && (e[n] = t[n]);
                return i.prototype = t.prototype, e.prototype = new i, e.parent = t.prototype, e
            }

            function c(e, t) {
                var i, n, r, o;
                if (e) {
                    try {
                        i = e.length
                    } catch (a) {
                        i = o
                    }
                    if (i === o || "number" != typeof i) {
                        for (n in e)
                            if (e.hasOwnProperty(n) && t(e[n], n) === !1) return
                    } else
                        for (r = 0; i > r; r++)
                            if (t(e[r], r) === !1) return
                }
            }

            function l(t) {
                var i;
                if (!t || "object" !== e(t)) return !0;
                for (i in t) return !1;
                return !0
            }

            function d(t, i) {
                function n(r) {
                    "function" === e(t[r]) && t[r](function(e) {
                        ++r < o && !e ? n(r) : i(e)
                    })
                }
                var r = 0,
                    o = t.length;
                "function" !== e(i) && (i = function() {}), t && t.length || i(), n(r)
            }

            function m(e, t) {
                var i = 0,
                    n = e.length,
                    r = new Array(n);
                c(e, function(e, o) {
                    e(function(e) {
                        if (e) return t(e);
                        var a = [].slice.call(arguments);
                        a.shift(), r[o] = a, i++, i === n && (r.unshift(null), t.apply(this, r))
                    })
                })
            }

            function h(e, t) {
                if (t) {
                    if (Array.prototype.indexOf) return Array.prototype.indexOf.call(t, e);
                    for (var i = 0, n = t.length; n > i; i++)
                        if (t[i] === e) return i
                }
                return -1
            }

            function f(t, i) {
                var n = [];
                "array" !== e(t) && (t = [t]), "array" !== e(i) && (i = [i]);
                for (var r in t) - 1 === h(t[r], i) && n.push(t[r]);
                return n.length ? n : !1
            }

            function p(e, t) {
                var i = [];
                return c(e, function(e) {
                    -1 !== h(e, t) && i.push(e)
                }), i.length ? i : null
            }

            function g(e) {
                var t, i = [];
                for (t = 0; t < e.length; t++) i[t] = e[t];
                return i
            }

            function x(e) {
                return e ? String.prototype.trim ? String.prototype.trim.call(e) : e.toString().replace(/^\s*/, "").replace(/\s*$/, "") : e
            }

            function v(e) {
                if ("string" != typeof e) return e;
                var t, i = {
                    t: 1099511627776,
                    g: 1073741824,
                    m: 1048576,
                    k: 1024
                };
                return e = /^([0-9\.]+)([tmgk]?)$/.exec(e.toLowerCase().replace(/[^0-9\.tmkg]/g, "")), t = e[2], e = +e[1], i.hasOwnProperty(t) && (e *= i[t]), Math.floor(e)
            }

            function w(e) {
                var t = [].slice.call(arguments, 1);
                return e.replace(/%([a-z])/g, function(e, i) {
                    var n = t.shift();
                    switch (i) {
                        case "s":
                            return n + "";
                        case "d":
                            return parseInt(n, 10);
                        case "f":
                            return parseFloat(n);
                        case "c":
                            return "";
                        default:
                            return n
                    }
                })
            }

            function y(e, t) {
                var i = this;
                setTimeout(function() {
                    e.call(i)
                }, t || 1)
            }
            var E = function() {
                var e = 0;
                return function(t) {
                    var i, n = (new Date).getTime().toString(32);
                    for (i = 0; 5 > i; i++) n += Math.floor(65535 * Math.random()).toString(32);
                    return (t || "o_") + n + (e++).toString(32)
                }
            }();
            return {
                guid: E,
                typeOf: e,
                extend: t,
                extendIf: i,
                extendImmutable: n,
                extendImmutableIf: r,
                clone: o,
                inherit: u,
                each: c,
                isEmptyObj: l,
                inSeries: d,
                inParallel: m,
                inArray: h,
                arrayDiff: f,
                arrayIntersect: p,
                toArray: g,
                trim: x,
                sprintf: w,
                parseSizeStr: v,
                delay: y
            }
        }), n("moxie/core/utils/Encode", [], function() {
            var e = function(e) {
                    return unescape(encodeURIComponent(e))
                },
                t = function(e) {
                    return decodeURIComponent(escape(e))
                },
                i = function(e, i) {
                    if ("function" == typeof window.atob) return i ? t(window.atob(e)) : window.atob(e);
                    var n, r, o, a, s, u, c, l, d = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
                        m = 0,
                        h = 0,
                        f = "",
                        p = [];
                    if (!e) return e;
                    e += "";
                    do a = d.indexOf(e.charAt(m++)), s = d.indexOf(e.charAt(m++)), u = d.indexOf(e.charAt(m++)), c = d.indexOf(e.charAt(m++)), l = a << 18 | s << 12 | u << 6 | c, n = 255 & l >> 16, r = 255 & l >> 8, o = 255 & l, p[h++] = 64 == u ? String.fromCharCode(n) : 64 == c ? String.fromCharCode(n, r) : String.fromCharCode(n, r, o); while (m < e.length);
                    return f = p.join(""), i ? t(f) : f
                },
                n = function(t, i) {
                    if (i && (t = e(t)), "function" == typeof window.btoa) return window.btoa(t);
                    var n, r, o, a, s, u, c, l, d = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
                        m = 0,
                        h = 0,
                        f = "",
                        p = [];
                    if (!t) return t;
                    do n = t.charCodeAt(m++), r = t.charCodeAt(m++), o = t.charCodeAt(m++), l = n << 16 | r << 8 | o, a = 63 & l >> 18, s = 63 & l >> 12, u = 63 & l >> 6, c = 63 & l, p[h++] = d.charAt(a) + d.charAt(s) + d.charAt(u) + d.charAt(c); while (m < t.length);
                    f = p.join("");
                    var g = t.length % 3;
                    return (g ? f.slice(0, g - 3) : f) + "===".slice(g || 3)
                };
            return {
                utf8_encode: e,
                utf8_decode: t,
                atob: i,
                btoa: n
            }
        }), n("moxie/core/utils/Env", ["moxie/core/utils/Basic"], function(e) {
            function i(e, t, i) {
                var n = 0,
                    r = 0,
                    o = 0,
                    a = {
                        dev: -6,
                        alpha: -5,
                        a: -5,
                        beta: -4,
                        b: -4,
                        RC: -3,
                        rc: -3,
                        "#": -2,
                        p: 1,
                        pl: 1
                    },
                    s = function(e) {
                        return e = ("" + e).replace(/[_\-+]/g, "."), e = e.replace(/([^.\d]+)/g, ".$1.").replace(/\.{2,}/g, "."), e.length ? e.split(".") : [-8]
                    },
                    u = function(e) {
                        return e ? isNaN(e) ? a[e] || -7 : parseInt(e, 10) : 0
                    };
                for (e = s(e), t = s(t), r = Math.max(e.length, t.length), n = 0; r > n; n++)
                    if (e[n] != t[n]) {
                        if (e[n] = u(e[n]), t[n] = u(t[n]), e[n] < t[n]) {
                            o = -1;
                            break
                        }
                        if (e[n] > t[n]) {
                            o = 1;
                            break
                        }
                    }
                if (!i) return o;
                switch (i) {
                    case ">":
                    case "gt":
                        return o > 0;
                    case ">=":
                    case "ge":
                        return o >= 0;
                    case "<=":
                    case "le":
                        return 0 >= o;
                    case "==":
                    case "=":
                    case "eq":
                        return 0 === o;
                    case "<>":
                    case "!=":
                    case "ne":
                        return 0 !== o;
                    case "":
                    case "<":
                    case "lt":
                        return 0 > o;
                    default:
                        return null
                }
            }
            var n = function(e) {
                    var t = "",
                        i = "?",
                        n = "function",
                        r = "undefined",
                        o = "object",
                        a = "name",
                        s = "version",
                        u = {
                            has: function(e, t) {
                                return -1 !== t.toLowerCase().indexOf(e.toLowerCase())
                            },
                            lowerize: function(e) {
                                return e.toLowerCase()
                            }
                        },
                        c = {
                            rgx: function() {
                                for (var t, i, a, s, u, c, l, d = 0, m = arguments; d < m.length; d += 2) {
                                    var h = m[d],
                                        f = m[d + 1];
                                    if (typeof t === r) {
                                        t = {};
                                        for (s in f) u = f[s], typeof u === o ? t[u[0]] = e : t[u] = e
                                    }
                                    for (i = a = 0; i < h.length; i++)
                                        if (c = h[i].exec(this.getUA())) {
                                            for (s = 0; s < f.length; s++) l = c[++a], u = f[s], typeof u === o && u.length > 0 ? 2 == u.length ? t[u[0]] = typeof u[1] == n ? u[1].call(this, l) : u[1] : 3 == u.length ? t[u[0]] = typeof u[1] !== n || u[1].exec && u[1].test ? l ? l.replace(u[1], u[2]) : e : l ? u[1].call(this, l, u[2]) : e : 4 == u.length && (t[u[0]] = l ? u[3].call(this, l.replace(u[1], u[2])) : e) : t[u] = l ? l : e;
                                            break
                                        }
                                    if (c) break
                                }
                                return t
                            },
                            str: function(t, n) {
                                for (var r in n)
                                    if (typeof n[r] === o && n[r].length > 0) {
                                        for (var a = 0; a < n[r].length; a++)
                                            if (u.has(n[r][a], t)) return r === i ? e : r
                                    } else if (u.has(n[r], t)) return r === i ? e : r;
                                return t
                            }
                        },
                        l = {
                            browser: {
                                oldsafari: {
                                    major: {
                                        1: ["/8", "/1", "/3"],
                                        2: "/4",
                                        "?": "/"
                                    },
                                    version: {
                                        "1.0": "/8",
                                        1.2: "/1",
                                        1.3: "/3",
                                        "2.0": "/412",
                                        "2.0.2": "/416",
                                        "2.0.3": "/417",
                                        "2.0.4": "/419",
                                        "?": "/"
                                    }
                                }
                            },
                            device: {
                                sprint: {
                                    model: {
                                        "Evo Shift 4G": "7373KT"
                                    },
                                    vendor: {
                                        HTC: "APA",
                                        Sprint: "Sprint"
                                    }
                                }
                            },
                            os: {
                                windows: {
                                    version: {
                                        ME: "4.90",
                                        "NT 3.11": "NT3.51",
                                        "NT 4.0": "NT4.0",
                                        2000: "NT 5.0",
                                        XP: ["NT 5.1", "NT 5.2"],
                                        Vista: "NT 6.0",
                                        7: "NT 6.1",
                                        8: "NT 6.2",
                                        8.1: "NT 6.3",
                                        RT: "ARM"
                                    }
                                }
                            }
                        },
                        d = {
                            browser: [
                                [/(opera\smini)\/([\w\.-]+)/i, /(opera\s[mobiletab]+).+version\/([\w\.-]+)/i, /(opera).+version\/([\w\.]+)/i, /(opera)[\/\s]+([\w\.]+)/i],
                                [a, s],
                                [/\s(opr)\/([\w\.]+)/i],
                                [
                                    [a, "Opera"], s
                                ],
                                [/(kindle)\/([\w\.]+)/i, /(lunascape|maxthon|netfront|jasmine|blazer)[\/\s]?([\w\.]+)*/i, /(avant\s|iemobile|slim|baidu)(?:browser)?[\/\s]?([\w\.]*)/i, /(?:ms|\()(ie)\s([\w\.]+)/i, /(rekonq)\/([\w\.]+)*/i, /(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi)\/([\w\.-]+)/i],
                                [a, s],
                                [/(trident).+rv[:\s]([\w\.]+).+like\sgecko/i],
                                [
                                    [a, "IE"], s
                                ],
                                [/(edge)\/((\d+)?[\w\.]+)/i],
                                [a, s],
                                [/(yabrowser)\/([\w\.]+)/i],
                                [
                                    [a, "Yandex"], s
                                ],
                                [/(comodo_dragon)\/([\w\.]+)/i],
                                [
                                    [a, /_/g, " "], s
                                ],
                                [/(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?([\w\.]+)/i, /(uc\s?browser|qqbrowser)[\/\s]?([\w\.]+)/i],
                                [a, s],
                                [/(dolfin)\/([\w\.]+)/i],
                                [
                                    [a, "Dolphin"], s
                                ],
                                [/((?:android.+)crmo|crios)\/([\w\.]+)/i],
                                [
                                    [a, "Chrome"], s
                                ],
                                [/XiaoMi\/MiuiBrowser\/([\w\.]+)/i],
                                [s, [a, "MIUI Browser"]],
                                [/android.+version\/([\w\.]+)\s+(?:mobile\s?safari|safari)/i],
                                [s, [a, "Android Browser"]],
                                [/FBAV\/([\w\.]+);/i],
                                [s, [a, "Facebook"]],
                                [/version\/([\w\.]+).+?mobile\/\w+\s(safari)/i],
                                [s, [a, "Mobile Safari"]],
                                [/version\/([\w\.]+).+?(mobile\s?safari|safari)/i],
                                [s, a],
                                [/webkit.+?(mobile\s?safari|safari)(\/[\w\.]+)/i],
                                [a, [s, c.str, l.browser.oldsafari.version]],
                                [/(konqueror)\/([\w\.]+)/i, /(webkit|khtml)\/([\w\.]+)/i],
                                [a, s],
                                [/(navigator|netscape)\/([\w\.-]+)/i],
                                [
                                    [a, "Netscape"], s
                                ],
                                [/(swiftfox)/i, /(icedragon|iceweasel|camino|chimera|fennec|maemo\sbrowser|minimo|conkeror)[\/\s]?([\w\.\+]+)/i, /(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix)\/([\w\.-]+)/i, /(mozilla)\/([\w\.]+).+rv\:.+gecko\/\d+/i, /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf)[\/\s]?([\w\.]+)/i, /(links)\s\(([\w\.]+)/i, /(gobrowser)\/?([\w\.]+)*/i, /(ice\s?browser)\/v?([\w\._]+)/i, /(mosaic)[\/\s]([\w\.]+)/i],
                                [a, s]
                            ],
                            engine: [
                                [/windows.+\sedge\/([\w\.]+)/i],
                                [s, [a, "EdgeHTML"]],
                                [/(presto)\/([\w\.]+)/i, /(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\/([\w\.]+)/i, /(khtml|tasman|links)[\/\s]\(?([\w\.]+)/i, /(icab)[\/\s]([23]\.[\d\.]+)/i],
                                [a, s],
                                [/rv\:([\w\.]+).*(gecko)/i],
                                [s, a]
                            ],
                            os: [
                                [/microsoft\s(windows)\s(vista|xp)/i],
                                [a, s],
                                [/(windows)\snt\s6\.2;\s(arm)/i, /(windows\sphone(?:\sos)*|windows\smobile|windows)[\s\/]?([ntce\d\.\s]+\w)/i],
                                [a, [s, c.str, l.os.windows.version]],
                                [/(win(?=3|9|n)|win\s9x\s)([nt\d\.]+)/i],
                                [
                                    [a, "Windows"],
                                    [s, c.str, l.os.windows.version]
                                ],
                                [/\((bb)(10);/i],
                                [
                                    [a, "BlackBerry"], s
                                ],
                                [/(blackberry)\w*\/?([\w\.]+)*/i, /(tizen)[\/\s]([\w\.]+)/i, /(android|webos|palm\os|qnx|bada|rim\stablet\sos|meego|contiki)[\/\s-]?([\w\.]+)*/i, /linux;.+(sailfish);/i],
                                [a, s],
                                [/(symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]+)*/i],
                                [
                                    [a, "Symbian"], s
                                ],
                                [/\((series40);/i],
                                [a],
                                [/mozilla.+\(mobile;.+gecko.+firefox/i],
                                [
                                    [a, "Firefox OS"], s
                                ],
                                [/(nintendo|playstation)\s([wids3portablevu]+)/i, /(mint)[\/\s\(]?(\w+)*/i, /(mageia|vectorlinux)[;\s]/i, /(joli|[kxln]?ubuntu|debian|[open]*suse|gentoo|arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\/\s-]?([\w\.-]+)*/i, /(hurd|linux)\s?([\w\.]+)*/i, /(gnu)\s?([\w\.]+)*/i],
                                [a, s],
                                [/(cros)\s[\w]+\s([\w\.]+\w)/i],
                                [
                                    [a, "Chromium OS"], s
                                ],
                                [/(sunos)\s?([\w\.]+\d)*/i],
                                [
                                    [a, "Solaris"], s
                                ],
                                [/\s([frentopc-]{0,4}bsd|dragonfly)\s?([\w\.]+)*/i],
                                [a, s],
                                [/(ip[honead]+)(?:.*os\s*([\w]+)*\slike\smac|;\sopera)/i],
                                [
                                    [a, "iOS"],
                                    [s, /_/g, "."]
                                ],
                                [/(mac\sos\sx)\s?([\w\s\.]+\w)*/i, /(macintosh|mac(?=_powerpc)\s)/i],
                                [
                                    [a, "Mac OS"],
                                    [s, /_/g, "."]
                                ],
                                [/((?:open)?solaris)[\/\s-]?([\w\.]+)*/i, /(haiku)\s(\w+)/i, /(aix)\s((\d)(?=\.|\)|\s)[\w\.]*)*/i, /(plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos|openvms)/i, /(unix)\s?([\w\.]+)*/i],
                                [a, s]
                            ]
                        },
                        m = function(e) {
                            var i = e || (window && window.navigator && window.navigator.userAgent ? window.navigator.userAgent : t);
                            this.getBrowser = function() {
                                return c.rgx.apply(this, d.browser)
                            }, this.getEngine = function() {
                                return c.rgx.apply(this, d.engine)
                            }, this.getOS = function() {
                                return c.rgx.apply(this, d.os)
                            }, this.getResult = function() {
                                return {
                                    ua: this.getUA(),
                                    browser: this.getBrowser(),
                                    engine: this.getEngine(),
                                    os: this.getOS()
                                }
                            }, this.getUA = function() {
                                return i
                            }, this.setUA = function(e) {
                                return i = e, this
                            }, this.setUA(i)
                        };
                    return m
                }(),
                r = function() {
                    var i = {
                        access_global_ns: function() {
                            return !!window.moxie
                        },
                        define_property: function() {
                            return !1
                        }(),
                        create_canvas: function() {
                            var e = document.createElement("canvas"),
                                t = !(!e.getContext || !e.getContext("2d"));
                            return i.create_canvas = t, t
                        },
                        return_response_type: function(t) {
                            try {
                                if (-1 !== e.inArray(t, ["", "text", "document"])) return !0;
                                if (window.XMLHttpRequest) {
                                    var i = new XMLHttpRequest;
                                    if (i.open("get", "/"), "responseType" in i) return i.responseType = t, i.responseType !== t ? !1 : !0
                                }
                            } catch (n) {}
                            return !1
                        },
                        use_blob_uri: function() {
                            var e = window.URL;
                            return i.use_blob_uri = e && "createObjectURL" in e && "revokeObjectURL" in e && ("IE" !== a.browser || a.verComp(a.version, "11.0.46", ">=")), i.use_blob_uri
                        },
                        use_data_uri: function() {
                            var e = new Image;
                            return e.onload = function() {
                                i.use_data_uri = 1 === e.width && 1 === e.height
                            }, setTimeout(function() {
                                e.src = "data:image/gif;base64,R0lGODlhAQABAIAAAP8AAAAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw=="
                            }, 1), !1
                        }(),
                        use_data_uri_over32kb: function() {
                            return i.use_data_uri && ("IE" !== a.browser || a.version >= 9)
                        },
                        use_data_uri_of: function(e) {
                            return i.use_data_uri && 33e3 > e || i.use_data_uri_over32kb()
                        },
                        use_fileinput: function() {
                            if (navigator.userAgent.match(/(Android (1.0|1.1|1.5|1.6|2.0|2.1))|(Windows Phone (OS 7|8.0))|(XBLWP)|(ZuneWP)|(w(eb)?OSBrowser)|(webOS)|(Kindle\/(1.0|2.0|2.5|3.0))/)) return !1;
                            var e = document.createElement("input");
                            return e.setAttribute("type", "file"), i.use_fileinput = !e.disabled
                        },
                        use_webgl: function() {
                            var e, n = document.createElement("canvas"),
                                r = null;
                            try {
                                r = n.getContext("webgl") || n.getContext("experimental-webgl")
                            } catch (o) {}
                            return r || (r = null), e = !!r, i.use_webgl = e, n = t, e
                        }
                    };
                    return function(t) {
                        var n = [].slice.call(arguments);
                        return n.shift(), "function" === e.typeOf(i[t]) ? i[t].apply(this, n) : !!i[t]
                    }
                }(),
                o = (new n).getResult(),
                a = {
                    can: r,
                    uaParser: n,
                    browser: o.browser.name,
                    version: o.browser.version,
                    os: o.os.name,
                    osVersion: o.os.version,
                    verComp: i,
                    swf_url: "../flash/Moxie.swf",
                    xap_url: "../silverlight/Moxie.xap",
                    global_event_dispatcher: "moxie.core.EventTarget.instance.dispatchEvent"
                };
            return a.OS = a.os, a
        }), n("moxie/core/Exceptions", ["moxie/core/utils/Basic"], function(e) {
            function t(e, t) {
                var i;
                for (i in e)
                    if (e[i] === t) return i;
                return null
            }
            return {
                RuntimeError: function() {
                    function i(e, i) {
                        this.code = e, this.name = t(n, e), this.message = this.name + (i || ": RuntimeError " + this.code)
                    }
                    var n = {
                        NOT_INIT_ERR: 1,
                        EXCEPTION_ERR: 3,
                        NOT_SUPPORTED_ERR: 9,
                        JS_ERR: 4
                    };
                    return e.extend(i, n), i.prototype = Error.prototype, i
                }(),
                OperationNotAllowedException: function() {
                    function t(e) {
                        this.code = e, this.name = "OperationNotAllowedException"
                    }
                    return e.extend(t, {
                        NOT_ALLOWED_ERR: 1
                    }), t.prototype = Error.prototype, t
                }(),
                ImageError: function() {
                    function i(e) {
                        this.code = e, this.name = t(n, e), this.message = this.name + ": ImageError " + this.code
                    }
                    var n = {
                        WRONG_FORMAT: 1,
                        MAX_RESOLUTION_ERR: 2,
                        INVALID_META_ERR: 3
                    };
                    return e.extend(i, n), i.prototype = Error.prototype, i
                }(),
                FileException: function() {
                    function i(e) {
                        this.code = e, this.name = t(n, e), this.message = this.name + ": FileException " + this.code
                    }
                    var n = {
                        NOT_FOUND_ERR: 1,
                        SECURITY_ERR: 2,
                        ABORT_ERR: 3,
                        NOT_READABLE_ERR: 4,
                        ENCODING_ERR: 5,
                        NO_MODIFICATION_ALLOWED_ERR: 6,
                        INVALID_STATE_ERR: 7,
                        SYNTAX_ERR: 8
                    };
                    return e.extend(i, n), i.prototype = Error.prototype, i
                }(),
                DOMException: function() {
                    function i(e) {
                        this.code = e, this.name = t(n, e), this.message = this.name + ": DOMException " + this.code
                    }
                    var n = {
                        INDEX_SIZE_ERR: 1,
                        DOMSTRING_SIZE_ERR: 2,
                        HIERARCHY_REQUEST_ERR: 3,
                        WRONG_DOCUMENT_ERR: 4,
                        INVALID_CHARACTER_ERR: 5,
                        NO_DATA_ALLOWED_ERR: 6,
                        NO_MODIFICATION_ALLOWED_ERR: 7,
                        NOT_FOUND_ERR: 8,
                        NOT_SUPPORTED_ERR: 9,
                        INUSE_ATTRIBUTE_ERR: 10,
                        INVALID_STATE_ERR: 11,
                        SYNTAX_ERR: 12,
                        INVALID_MODIFICATION_ERR: 13,
                        NAMESPACE_ERR: 14,
                        INVALID_ACCESS_ERR: 15,
                        VALIDATION_ERR: 16,
                        TYPE_MISMATCH_ERR: 17,
                        SECURITY_ERR: 18,
                        NETWORK_ERR: 19,
                        ABORT_ERR: 20,
                        URL_MISMATCH_ERR: 21,
                        QUOTA_EXCEEDED_ERR: 22,
                        TIMEOUT_ERR: 23,
                        INVALID_NODE_TYPE_ERR: 24,
                        DATA_CLONE_ERR: 25
                    };
                    return e.extend(i, n), i.prototype = Error.prototype, i
                }(),
                EventException: function() {
                    function t(e) {
                        this.code = e, this.name = "EventException"
                    }
                    return e.extend(t, {
                        UNSPECIFIED_EVENT_TYPE_ERR: 0
                    }), t.prototype = Error.prototype, t
                }()
            }
        }), n("moxie/core/utils/Dom", ["moxie/core/utils/Env"], function(e) {
            var t = function(e) {
                    return "string" != typeof e ? e : document.getElementById(e)
                },
                i = function(e, t) {
                    if (!e.className) return !1;
                    var i = new RegExp("(^|\\s+)" + t + "(\\s+|$)");
                    return i.test(e.className)
                },
                n = function(e, t) {
                    i(e, t) || (e.className = e.className ? e.className.replace(/\s+$/, "") + " " + t : t)
                },
                r = function(e, t) {
                    if (e.className) {
                        var i = new RegExp("(^|\\s+)" + t + "(\\s+|$)");
                        e.className = e.className.replace(i, function(e, t, i) {
                            return " " === t && " " === i ? " " : ""
                        })
                    }
                },
                o = function(e, t) {
                    return e.currentStyle ? e.currentStyle[t] : window.getComputedStyle ? window.getComputedStyle(e, null)[t] : void 0
                },
                a = function(t, i) {
                    function n(e) {
                        var t, i, n = 0,
                            r = 0;
                        return e && (i = e.getBoundingClientRect(), t = "CSS1Compat" === c.compatMode ? c.documentElement : c.body, n = i.left + t.scrollLeft, r = i.top + t.scrollTop), {
                            x: n,
                            y: r
                        }
                    }
                    var r, o, a, s = 0,
                        u = 0,
                        c = document;
                    if (t = t, i = i || c.body, t && t.getBoundingClientRect && "IE" === e.browser && (!c.documentMode || c.documentMode < 8)) return o = n(t), a = n(i), {
                        x: o.x - a.x,
                        y: o.y - a.y
                    };
                    for (r = t; r && r != i && r.nodeType;) s += r.offsetLeft || 0, u += r.offsetTop || 0, r = r.offsetParent;
                    for (r = t.parentNode; r && r != i && r.nodeType;) s -= r.scrollLeft || 0, u -= r.scrollTop || 0, r = r.parentNode;
                    return {
                        x: s,
                        y: u
                    }
                },
                s = function(e) {
                    return {
                        w: e.offsetWidth || e.clientWidth,
                        h: e.offsetHeight || e.clientHeight
                    }
                };
            return {get: t,
                hasClass: i,
                addClass: n,
                removeClass: r,
                getStyle: o,
                getPos: a,
                getSize: s
            }
        }), n("moxie/core/EventTarget", ["moxie/core/utils/Env", "moxie/core/Exceptions", "moxie/core/utils/Basic"], function(e, t, i) {
            function n() {
                this.uid = i.guid()
            }
            var r = {};
            return i.extend(n.prototype, {
                init: function() {
                    this.uid || (this.uid = i.guid("uid_"))
                },
                addEventListener: function(e, t, n, o) {
                    var a, s = this;
                    return this.hasOwnProperty("uid") || (this.uid = i.guid("uid_")), e = i.trim(e), /\s/.test(e) ? (i.each(e.split(/\s+/), function(e) {
                        s.addEventListener(e, t, n, o)
                    }), void 0) : (e = e.toLowerCase(), n = parseInt(n, 10) || 0, a = r[this.uid] && r[this.uid][e] || [], a.push({
                        fn: t,
                        priority: n,
                        scope: o || this
                    }), r[this.uid] || (r[this.uid] = {}), r[this.uid][e] = a, void 0)
                },
                hasEventListener: function(e) {
                    var t;
                    return e ? (e = e.toLowerCase(), t = r[this.uid] && r[this.uid][e]) : t = r[this.uid], t ? t : !1
                },
                removeEventListener: function(e, t) {
                    var n, o, a = this;
                    if (e = e.toLowerCase(), /\s/.test(e)) return i.each(e.split(/\s+/), function(e) {
                        a.removeEventListener(e, t)
                    }), void 0;
                    if (n = r[this.uid] && r[this.uid][e]) {
                        if (t) {
                            for (o = n.length - 1; o >= 0; o--)
                                if (n[o].fn === t) {
                                    n.splice(o, 1);
                                    break
                                }
                        } else n = [];
                        n.length || (delete r[this.uid][e], i.isEmptyObj(r[this.uid]) && delete r[this.uid])
                    }
                },
                removeAllEventListeners: function() {
                    r[this.uid] && delete r[this.uid]
                },
                dispatchEvent: function(e) {
                    var n, o, a, s, u, c = {},
                        l = !0;
                    if ("string" !== i.typeOf(e)) {
                        if (s = e, "string" !== i.typeOf(s.type)) throw new t.EventException(t.EventException.UNSPECIFIED_EVENT_TYPE_ERR);
                        e = s.type, s.total !== u && s.loaded !== u && (c.total = s.total, c.loaded = s.loaded), c.async = s.async || !1
                    }
                    if (-1 !== e.indexOf("::") ? function(t) {
                            n = t[0], e = t[1]
                        }(e.split("::")) : n = this.uid, e = e.toLowerCase(), o = r[n] && r[n][e]) {
                        o.sort(function(e, t) {
                            return t.priority - e.priority
                        }), a = [].slice.call(arguments), a.shift(), c.type = e, a.unshift(c);
                        var d = [];
                        i.each(o, function(e) {
                            a[0].target = e.scope, c.async ? d.push(function(t) {
                                setTimeout(function() {
                                    t(e.fn.apply(e.scope, a) === !1)
                                }, 1)
                            }) : d.push(function(t) {
                                t(e.fn.apply(e.scope, a) === !1)
                            })
                        }), d.length && i.inSeries(d, function(e) {
                            l = !e
                        })
                    }
                    return l
                },
                bindOnce: function(e, t, i, n) {
                    var r = this;
                    r.bind.call(this, e, function o() {
                        return r.unbind(e, o), t.apply(this, arguments)
                    }, i, n)
                },
                bind: function() {
                    this.addEventListener.apply(this, arguments)
                },
                unbind: function() {
                    this.removeEventListener.apply(this, arguments)
                },
                unbindAll: function() {
                    this.removeAllEventListeners.apply(this, arguments)
                },
                trigger: function() {
                    return this.dispatchEvent.apply(this, arguments)
                },
                handleEventProps: function(e) {
                    var t = this;
                    this.bind(e.join(" "), function(e) {
                        var t = "on" + e.type.toLowerCase();
                        "function" === i.typeOf(this[t]) && this[t].apply(this, arguments)
                    }), i.each(e, function(e) {
                        e = "on" + e.toLowerCase(e), "undefined" === i.typeOf(t[e]) && (t[e] = null)
                    })
                }
            }), n.instance = new n, n
        }), n("moxie/runtime/Runtime", ["moxie/core/utils/Env", "moxie/core/utils/Basic", "moxie/core/utils/Dom", "moxie/core/EventTarget"], function(e, t, i, n) {
            function r(e, n, o, s, u) {
                var c, l = this,
                    d = t.guid(n + "_"),
                    m = u || "browser";
                e = e || {}, a[d] = this, o = t.extend({
                    access_binary: !1,
                    access_image_binary: !1,
                    display_media: !1,
                    do_cors: !1,
                    drag_and_drop: !1,
                    filter_by_extension: !0,
                    resize_image: !1,
                    report_upload_progress: !1,
                    return_response_headers: !1,
                    return_response_type: !1,
                    return_status_code: !0,
                    send_custom_headers: !1,
                    select_file: !1,
                    select_folder: !1,
                    select_multiple: !0,
                    send_binary_string: !1,
                    send_browser_cookies: !0,
                    send_multipart: !0,
                    slice_blob: !1,
                    stream_upload: !1,
                    summon_file_dialog: !1,
                    upload_filesize: !0,
                    use_http_method: !0
                }, o), e.preferred_caps && (m = r.getMode(s, e.preferred_caps, m)), c = function() {
                    var e = {};
                    return {
                        exec: function(t, i, n, r) {
                            return c[i] && (e[t] || (e[t] = {
                                context: this,
                                instance: new c[i]
                            }), e[t].instance[n]) ? e[t].instance[n].apply(this, r) : void 0
                        },
                        removeInstance: function(t) {
                            delete e[t]
                        },
                        removeAllInstances: function() {
                            var i = this;
                            t.each(e, function(e, n) {
                                "function" === t.typeOf(e.instance.destroy) && e.instance.destroy.call(e.context), i.removeInstance(n)
                            })
                        }
                    }
                }(), t.extend(this, {
                    initialized: !1,
                    uid: d,
                    type: n,
                    mode: r.getMode(s, e.required_caps, m),
                    shimid: d + "_container",
                    clients: 0,
                    options: e,
                    can: function(e, i) {
                        var n = arguments[2] || o;
                        if ("string" === t.typeOf(e) && "undefined" === t.typeOf(i) && (e = r.parseCaps(e)), "object" === t.typeOf(e)) {
                            for (var a in e)
                                if (!this.can(a, e[a], n)) return !1;
                            return !0
                        }
                        return "function" === t.typeOf(n[e]) ? n[e].call(this, i) : i === n[e]
                    },
                    getShimContainer: function() {
                        var e, n = i.get(this.shimid);
                        return n || (e = i.get(this.options.container) || document.body, n = document.createElement("div"), n.id = this.shimid, n.className = "moxie-shim moxie-shim-" + this.type, t.extend(n.style, {
                            position: "absolute",
                            top: "0px",
                            left: "0px",
                            width: "1px",
                            height: "1px",
                            overflow: "hidden"
                        }), e.appendChild(n), e = null), n
                    },
                    getShim: function() {
                        return c
                    },
                    shimExec: function(e, t) {
                        var i = [].slice.call(arguments, 2);
                        return l.getShim().exec.call(this, this.uid, e, t, i)
                    },
                    exec: function(e, t) {
                        var i = [].slice.call(arguments, 2);
                        return l[e] && l[e][t] ? l[e][t].apply(this, i) : l.shimExec.apply(this, arguments)
                    },
                    destroy: function() {
                        if (l) {
                            var e = i.get(this.shimid);
                            e && e.parentNode.removeChild(e), c && c.removeAllInstances(), this.unbindAll(), delete a[this.uid], this.uid = null, d = l = c = e = null
                        }
                    }
                }), this.mode && e.required_caps && !this.can(e.required_caps) && (this.mode = !1)
            }
            var o = {},
                a = {};
            return r.order = "html5,flash,silverlight,html4", r.getRuntime = function(e) {
                return a[e] ? a[e] : !1
            }, r.addConstructor = function(e, t) {
                t.prototype = n.instance, o[e] = t
            }, r.getConstructor = function(e) {
                return o[e] || null
            }, r.getInfo = function(e) {
                var t = r.getRuntime(e);
                return t ? {
                    uid: t.uid,
                    type: t.type,
                    mode: t.mode,
                    can: function() {
                        return t.can.apply(t, arguments)
                    }
                } : null
            }, r.parseCaps = function(e) {
                var i = {};
                return "string" !== t.typeOf(e) ? e || {} : (t.each(e.split(","), function(e) {
                    i[e] = !0
                }), i)
            }, r.can = function(e, t) {
                var i, n, o = r.getConstructor(e);
                return o ? (i = new o({
                    required_caps: t
                }), n = i.mode, i.destroy(), !!n) : !1
            }, r.thatCan = function(e, t) {
                var i = (t || r.order).split(/\s*,\s*/);
                for (var n in i)
                    if (r.can(i[n], e)) return i[n];
                return null
            }, r.getMode = function(e, i, n) {
                var r = null;
                if ("undefined" === t.typeOf(n) && (n = "browser"), i && !t.isEmptyObj(e)) {
                    if (t.each(i, function(i, n) {
                            if (e.hasOwnProperty(n)) {
                                var o = e[n](i);
                                if ("string" == typeof o && (o = [o]), r) {
                                    if (!(r = t.arrayIntersect(r, o))) return r = !1
                                } else r = o
                            }
                        }), r) return -1 !== t.inArray(n, r) ? n : r[0];
                    if (r === !1) return !1
                }
                return n
            }, r.getGlobalEventTarget = function() {
                if (/^moxie\./.test(e.global_event_dispatcher) && !e.can("access_global_ns")) {
                    var i = t.guid("moxie_event_target_");
                    window[i] = function(e, t) {
                        n.instance.dispatchEvent(e, t)
                    }, e.global_event_dispatcher = i
                }
                return e.global_event_dispatcher
            }, r.capTrue = function() {
                return !0
            }, r.capFalse = function() {
                return !1
            }, r.capTest = function(e) {
                return function() {
                    return !!e
                }
            }, r
        }), n("moxie/runtime/RuntimeClient", ["moxie/core/utils/Env", "moxie/core/Exceptions", "moxie/core/utils/Basic", "moxie/runtime/Runtime"], function(e, t, i, n) {
            return function() {
                var e;
                i.extend(this, {
                    connectRuntime: function(r) {
                        function o(i) {
                            var a, u;
                            return i.length ? (a = i.shift().toLowerCase(), (u = n.getConstructor(a)) ? (e = new u(r), e.bind("Init", function() {
                                e.initialized = !0, setTimeout(function() {
                                    e.clients++, s.ruid = e.uid, s.trigger("RuntimeInit", e)
                                }, 1)
                            }), e.bind("Error", function() {
                                e.destroy(), o(i)
                            }), e.bind("Exception", function(e, i) {
                                var n = i.name + "(#" + i.code + ")" + (i.message ? ", from: " + i.message : "");
                                s.trigger("RuntimeError", new t.RuntimeError(t.RuntimeError.EXCEPTION_ERR, n))
                            }), e.mode ? (e.init(), void 0) : (e.trigger("Error"), void 0)) : (o(i), void 0)) : (s.trigger("RuntimeError", new t.RuntimeError(t.RuntimeError.NOT_INIT_ERR)), e = null, void 0)
                        }
                        var a, s = this;
                        if ("string" === i.typeOf(r) ? a = r : "string" === i.typeOf(r.ruid) && (a = r.ruid), a) {
                            if (e = n.getRuntime(a)) return s.ruid = a, e.clients++, e;
                            throw new t.RuntimeError(t.RuntimeError.NOT_INIT_ERR)
                        }
                        o((r.runtime_order || n.order).split(/\s*,\s*/))
                    },
                    disconnectRuntime: function() {
                        e && --e.clients <= 0 && e.destroy(), e = null
                    },
                    getRuntime: function() {
                        return e && e.uid ? e : e = null
                    },
                    exec: function() {
                        return e ? e.exec.apply(this, arguments) : null
                    },
                    can: function(t) {
                        return e ? e.can(t) : !1
                    }
                })
            }
        }), n("moxie/file/Blob", ["moxie/core/utils/Basic", "moxie/core/utils/Encode", "moxie/runtime/RuntimeClient"], function(e, t, i) {
            function n(o, a) {
                function s(t, i, o) {
                    var a, s = r[this.uid];
                    return "string" === e.typeOf(s) && s.length ? (a = new n(null, {
                        type: o,
                        size: i - t
                    }), a.detach(s.substr(t, a.size)), a) : null
                }
                i.call(this), o && this.connectRuntime(o), a ? "string" === e.typeOf(a) && (a = {
                    data: a
                }) : a = {}, e.extend(this, {
                    uid: a.uid || e.guid("uid_"),
                    ruid: o,
                    size: a.size || 0,
                    type: a.type || "",
                    slice: function(e, t, i) {
                        return this.isDetached() ? s.apply(this, arguments) : this.getRuntime().exec.call(this, "Blob", "slice", this.getSource(), e, t, i)
                    },
                    getSource: function() {
                        return r[this.uid] ? r[this.uid] : null
                    },
                    detach: function(e) {
                        if (this.ruid && (this.getRuntime().exec.call(this, "Blob", "destroy"), this.disconnectRuntime(), this.ruid = null), e = e || "", "data:" == e.substr(0, 5)) {
                            var i = e.indexOf(";base64,");
                            this.type = e.substring(5, i), e = t.atob(e.substring(i + 8))
                        }
                        this.size = e.length, r[this.uid] = e
                    },
                    isDetached: function() {
                        return !this.ruid && "string" === e.typeOf(r[this.uid])
                    },
                    destroy: function() {
                        this.detach(), delete r[this.uid]
                    }
                }), a.data ? this.detach(a.data) : r[this.uid] = a
            }
            var r = {};
            return n
        }), n("moxie/core/I18n", ["moxie/core/utils/Basic"], function(e) {
            var t = {};
            return {
                addI18n: function(i) {
                    return e.extend(t, i)
                },
                translate: function(e) {
                    return t[e] || e
                },
                _: function(e) {
                    return this.translate(e)
                },
                sprintf: function(t) {
                    var i = [].slice.call(arguments, 1);
                    return t.replace(/%[a-z]/g, function() {
                        var t = i.shift();
                        return "undefined" !== e.typeOf(t) ? t : ""
                    })
                }
            }
        }), n("moxie/core/utils/Mime", ["moxie/core/utils/Basic", "moxie/core/I18n"], function(e, t) {
            var i = "application/msword,doc dot,application/pdf,pdf,application/pgp-signature,pgp,application/postscript,ps ai eps,application/rtf,rtf,application/vnd.ms-excel,xls xlb xlt xla,application/vnd.ms-powerpoint,ppt pps pot ppa,application/zip,zip,application/x-shockwave-flash,swf swfl,application/vnd.openxmlformats-officedocument.wordprocessingml.document,docx,application/vnd.openxmlformats-officedocument.wordprocessingml.template,dotx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,xlsx,application/vnd.openxmlformats-officedocument.presentationml.presentation,pptx,application/vnd.openxmlformats-officedocument.presentationml.template,potx,application/vnd.openxmlformats-officedocument.presentationml.slideshow,ppsx,application/x-javascript,js,application/json,json,audio/mpeg,mp3 mpga mpega mp2,audio/x-wav,wav,audio/x-m4a,m4a,audio/ogg,oga ogg,audio/aiff,aiff aif,audio/flac,flac,audio/aac,aac,audio/ac3,ac3,audio/x-ms-wma,wma,image/bmp,bmp,image/gif,gif,image/jpeg,jpg jpeg jpe,image/photoshop,psd,image/png,png,image/svg+xml,svg svgz,image/tiff,tiff tif,text/plain,asc txt text diff log,text/html,htm html xhtml,text/css,css,text/csv,csv,text/rtf,rtf,video/mpeg,mpeg mpg mpe m2v,video/quicktime,qt mov,video/mp4,mp4,video/x-m4v,m4v,video/x-flv,flv,video/x-ms-wmv,wmv,video/avi,avi,video/webm,webm,video/3gpp,3gpp 3gp,video/3gpp2,3g2,video/vnd.rn-realvideo,rv,video/ogg,ogv,video/x-matroska,mkv,application/vnd.oasis.opendocument.formula-template,otf,application/octet-stream,exe",
                n = {},
                r = {},
                o = function(e) {
                    var t, i, o, a = e.split(/,/);
                    for (t = 0; t < a.length; t += 2) {
                        for (o = a[t + 1].split(/ /), i = 0; i < o.length; i++) n[o[i]] = a[t];
                        r[a[t]] = o
                    }
                },
                a = function(t, i) {
                    var n, r, o, a, s = [];
                    for (r = 0; r < t.length; r++)
                        for (n = t[r].extensions.toLowerCase().split(/\s*,\s*/), o = 0; o < n.length; o++) {
                            if ("*" === n[o]) return [];
                            if (a = s[n[o]], i && /^\w+$/.test(n[o])) s.push("." + n[o]);
                            else if (a && -1 === e.inArray(a, s)) s.push(a);
                            else if (!a) return []
                        }
                    return s
                },
                s = function(t) {
                    var i = [];
                    return e.each(t, function(t) {
                        if (t = t.toLowerCase(), "*" === t) return i = [], !1;
                        var n = t.match(/^(\w+)\/(\*|\w+)$/);
                        n && ("*" === n[2] ? e.each(r, function(e, t) {
                            new RegExp("^" + n[1] + "/").test(t) && [].push.apply(i, r[t])
                        }) : r[t] && [].push.apply(i, r[t]))
                    }), i
                },
                u = function(i) {
                    var n = [],
                        r = [];
                    return "string" === e.typeOf(i) && (i = e.trim(i).split(/\s*,\s*/)), r = s(i), n.push({
                        title: t.translate("Files"),
                        extensions: r.length ? r.join(",") : "*"
                    }), n
                },
                c = function(e) {
                    var t = e && e.match(/\.([^.]+)$/);
                    return t ? t[1].toLowerCase() : ""
                },
                l = function(e) {
                    return n[c(e)] || ""
                };
            return o(i), {
                mimes: n,
                extensions: r,
                addMimeType: o,
                extList2mimes: a,
                mimes2exts: s,
                mimes2extList: u,
                getFileExtension: c,
                getFileMime: l
            }
        }), n("moxie/file/FileInput", ["moxie/core/utils/Basic", "moxie/core/utils/Env", "moxie/core/utils/Mime", "moxie/core/utils/Dom", "moxie/core/Exceptions", "moxie/core/EventTarget", "moxie/core/I18n", "moxie/runtime/Runtime", "moxie/runtime/RuntimeClient"], function(e, t, i, n, r, o, a, s, u) {
            function c(t) {
                var o, c, d;
                if (-1 !== e.inArray(e.typeOf(t), ["string", "node"]) && (t = {
                        browse_button: t
                    }), c = n.get(t.browse_button), !c) throw new r.DOMException(r.DOMException.NOT_FOUND_ERR);
                d = {
                    accept: [{
                        title: a.translate("All Files"),
                        extensions: "*"
                    }],
                    multiple: !1,
                    required_caps: !1,
                    container: c.parentNode || document.body
                }, t = e.extend({}, d, t), "string" == typeof t.required_caps && (t.required_caps = s.parseCaps(t.required_caps)), "string" == typeof t.accept && (t.accept = i.mimes2extList(t.accept)), o = n.get(t.container), o || (o = document.body), "static" === n.getStyle(o, "position") && (o.style.position = "relative"), o = c = null, u.call(this), e.extend(this, {
                    uid: e.guid("uid_"),
                    ruid: null,
                    shimid: null,
                    files: null,
                    init: function() {
                        var i = this;
                        i.bind("RuntimeInit", function(r, o) {
                            i.ruid = o.uid, i.shimid = o.shimid, i.bind("Ready", function() {
                                i.trigger("Refresh")
                            }, 999), i.bind("Refresh", function() {
                                var i, r, a, s, u;
                                a = n.get(t.browse_button), s = n.get(o.shimid), a && (i = n.getPos(a, n.get(t.container)), r = n.getSize(a), u = parseInt(n.getStyle(a, "z-index"), 10) || 0, s && e.extend(s.style, {
                                    top: i.y + "px",
                                    left: i.x + "px",
                                    width: r.w + "px",
                                    height: r.h + "px",
                                    zIndex: u + 1
                                })), s = a = null
                            }), o.exec.call(i, "FileInput", "init", t)
                        }), i.connectRuntime(e.extend({}, t, {
                            required_caps: {
                                select_file: !0
                            }
                        }))
                    },
                    getOption: function(e) {
                        return t[e]
                    },
                    setOption: function(e, n) {
                        if (t.hasOwnProperty(e)) {
                            var o = t[e];
                            switch (e) {
                                case "accept":
                                    "string" == typeof n && (n = i.mimes2extList(n));
                                    break;
                                case "container":
                                case "required_caps":
                                    throw new r.FileException(r.FileException.NO_MODIFICATION_ALLOWED_ERR)
                            }
                            t[e] = n, this.exec("FileInput", "setOption", e, n), this.trigger("OptionChanged", e, n, o)
                        }
                    },
                    disable: function(t) {
                        var i = this.getRuntime();
                        i && this.exec("FileInput", "disable", "undefined" === e.typeOf(t) ? !0 : t)
                    },
                    refresh: function() {
                        this.trigger("Refresh")
                    },
                    destroy: function() {
                        var t = this.getRuntime();
                        t && (t.exec.call(this, "FileInput", "destroy"), this.disconnectRuntime()), "array" === e.typeOf(this.files) && e.each(this.files, function(e) {
                            e.destroy()
                        }), this.files = null, this.unbindAll()
                    }
                }), this.handleEventProps(l)
            }
            var l = ["ready", "change", "cancel", "mouseenter", "mouseleave", "mousedown", "mouseup"];
            return c.prototype = o.instance, c
        }), n("moxie/file/File", ["moxie/core/utils/Basic", "moxie/core/utils/Mime", "moxie/file/Blob"], function(e, t, i) {
            function n(n, r) {
                r || (r = {}), i.apply(this, arguments), this.type || (this.type = t.getFileMime(r.name));
                var o;
                if (r.name) o = r.name.replace(/\\/g, "/"), o = o.substr(o.lastIndexOf("/") + 1);
                else if (this.type) {
                    var a = this.type.split("/")[0];
                    o = e.guid(("" !== a ? a : "file") + "_"), t.extensions[this.type] && (o += "." + t.extensions[this.type][0])
                }
                e.extend(this, {
                    name: o || e.guid("file_"),
                    relativePath: "",
                    lastModifiedDate: r.lastModifiedDate || (new Date).toLocaleString()
                })
            }
            return n.prototype = i.prototype, n
        }), n("moxie/file/FileDrop", ["moxie/core/I18n", "moxie/core/utils/Dom", "moxie/core/Exceptions", "moxie/core/utils/Basic", "moxie/core/utils/Env", "moxie/file/File", "moxie/runtime/RuntimeClient", "moxie/core/EventTarget", "moxie/core/utils/Mime"], function(e, t, i, n, r, o, a, s, u) {
            function c(i) {
                var r, o = this;
                "string" == typeof i && (i = {
                    drop_zone: i
                }), r = {
                    accept: [{
                        title: e.translate("All Files"),
                        extensions: "*"
                    }],
                    required_caps: {
                        drag_and_drop: !0
                    }
                }, i = "object" == typeof i ? n.extend({}, r, i) : r, i.container = t.get(i.drop_zone) || document.body, "static" === t.getStyle(i.container, "position") && (i.container.style.position = "relative"), "string" == typeof i.accept && (i.accept = u.mimes2extList(i.accept)), a.call(o), n.extend(o, {
                    uid: n.guid("uid_"),
                    ruid: null,
                    files: null,
                    init: function() {
                        o.bind("RuntimeInit", function(e, t) {
                            o.ruid = t.uid, t.exec.call(o, "FileDrop", "init", i), o.dispatchEvent("ready")
                        }), o.connectRuntime(i)
                    },
                    destroy: function() {
                        var e = this.getRuntime();
                        e && (e.exec.call(this, "FileDrop", "destroy"), this.disconnectRuntime()), this.files = null, this.unbindAll()
                    }
                }), this.handleEventProps(l)
            }
            var l = ["ready", "dragenter", "dragleave", "drop", "error"];
            return c.prototype = s.instance, c
        }), n("moxie/file/FileReader", ["moxie/core/utils/Basic", "moxie/core/utils/Encode", "moxie/core/Exceptions", "moxie/core/EventTarget", "moxie/file/Blob", "moxie/runtime/RuntimeClient"], function(e, t, i, n, r, o) {
            function a() {
                function n(e, n) {
                    if (this.trigger("loadstart"), this.readyState === a.LOADING) return this.trigger("error", new i.DOMException(i.DOMException.INVALID_STATE_ERR)), this.trigger("loadend"), void 0;
                    if (!(n instanceof r)) return this.trigger("error", new i.DOMException(i.DOMException.NOT_FOUND_ERR)), this.trigger("loadend"), void 0;
                    if (this.result = null, this.readyState = a.LOADING, n.isDetached()) {
                        var o = n.getSource();
                        switch (e) {
                            case "readAsText":
                            case "readAsBinaryString":
                                this.result = o;
                                break;
                            case "readAsDataURL":
                                this.result = "data:" + n.type + ";base64," + t.btoa(o)
                        }
                        this.readyState = a.DONE, this.trigger("load"), this.trigger("loadend")
                    } else this.connectRuntime(n.ruid), this.exec("FileReader", "read", e, n)
                }
                o.call(this), e.extend(this, {
                    uid: e.guid("uid_"),
                    readyState: a.EMPTY,
                    result: null,
                    error: null,
                    readAsBinaryString: function(e) {
                        n.call(this, "readAsBinaryString", e)
                    },
                    readAsDataURL: function(e) {
                        n.call(this, "readAsDataURL", e)
                    },
                    readAsText: function(e) {
                        n.call(this, "readAsText", e)
                    },
                    abort: function() {
                        this.result = null, -1 === e.inArray(this.readyState, [a.EMPTY, a.DONE]) && (this.readyState === a.LOADING && (this.readyState = a.DONE), this.exec("FileReader", "abort"), this.trigger("abort"), this.trigger("loadend"))
                    },
                    destroy: function() {
                        this.abort(), this.exec("FileReader", "destroy"), this.disconnectRuntime(), this.unbindAll()
                    }
                }), this.handleEventProps(s), this.bind("Error", function(e, t) {
                    this.readyState = a.DONE, this.error = t
                }, 999), this.bind("Load", function() {
                    this.readyState = a.DONE
                }, 999)
            }
            var s = ["loadstart", "progress", "load", "abort", "error", "loadend"];
            return a.EMPTY = 0, a.LOADING = 1, a.DONE = 2, a.prototype = n.instance, a
        }), n("moxie/core/utils/Url", ["moxie/core/utils/Basic"], function(e) {
            var t = function(i, n) {
                    var r, o = ["source", "scheme", "authority", "userInfo", "user", "pass", "host", "port", "relative", "path", "directory", "file", "query", "fragment"],
                        a = o.length,
                        s = {
                            http: 80,
                            https: 443
                        },
                        u = {},
                        c = /^(?:([^:\/?#]+):)?(?:\/\/()(?:(?:()(?:([^:@\/]*):?([^:@\/]*))?@)?(\[[\da-fA-F:]+\]|[^:\/?#]*)(?::(\d*))?))?()(?:(()(?:(?:[^?#\/]*\/)*)()(?:[^?#]*))(?:\\?([^#]*))?(?:#(.*))?)/,
                        l = c.exec(i || ""),
                        d = /^\/\/\w/.test(i);
                    switch (e.typeOf(n)) {
                        case "undefined":
                            n = t(document.location.href, !1);
                            break;
                        case "string":
                            n = t(n, !1)
                    }
                    for (; a--;) l[a] && (u[o[a]] = l[a]);
                    if (r = !d && !u.scheme, (d || r) && (u.scheme = n.scheme), r) {
                        u.host = n.host, u.port = n.port;
                        var m = "";
                        /^[^\/]/.test(u.path) && (m = n.path, m = /\/[^\/]*\.[^\/]*$/.test(m) ? m.replace(/\/[^\/]+$/, "/") : m.replace(/\/?$/, "/")), u.path = m + (u.path || "")
                    }
                    return u.port || (u.port = s[u.scheme] || 80), u.port = parseInt(u.port, 10), u.path || (u.path = "/"), delete u.source, u
                },
                i = function(e) {
                    var i = {
                            http: 80,
                            https: 443
                        },
                        n = "object" == typeof e ? e : t(e);
                    return n.scheme + "://" + n.host + (n.port !== i[n.scheme] ? ":" + n.port : "") + n.path + (n.query ? n.query : "")
                },
                n = function(e) {
                    function i(e) {
                        return [e.scheme, e.host, e.port].join("/")
                    }
                    return "string" == typeof e && (e = t(e)), i(t()) === i(e)
                };
            return {
                parseUrl: t,
                resolveUrl: i,
                hasSameOrigin: n
            }
        }), n("moxie/runtime/RuntimeTarget", ["moxie/core/utils/Basic", "moxie/runtime/RuntimeClient", "moxie/core/EventTarget"], function(e, t, i) {
            function n() {
                this.uid = e.guid("uid_"), t.call(this), this.destroy = function() {
                    this.disconnectRuntime(), this.unbindAll()
                }
            }
            return n.prototype = i.instance, n
        }), n("moxie/file/FileReaderSync", ["moxie/core/utils/Basic", "moxie/runtime/RuntimeClient", "moxie/core/utils/Encode"], function(e, t, i) {
            return function() {
                function n(e, t) {
                    if (!t.isDetached()) {
                        var n = this.connectRuntime(t.ruid).exec.call(this, "FileReaderSync", "read", e, t);
                        return this.disconnectRuntime(), n
                    }
                    var r = t.getSource();
                    switch (e) {
                        case "readAsBinaryString":
                            return r;
                        case "readAsDataURL":
                            return "data:" + t.type + ";base64," + i.btoa(r);
                        case "readAsText":
                            for (var o = "", a = 0, s = r.length; s > a; a++) o += String.fromCharCode(r[a]);
                            return o
                    }
                }
                t.call(this), e.extend(this, {
                    uid: e.guid("uid_"),
                    readAsBinaryString: function(e) {
                        return n.call(this, "readAsBinaryString", e)
                    },
                    readAsDataURL: function(e) {
                        return n.call(this, "readAsDataURL", e)
                    },
                    readAsText: function(e) {
                        return n.call(this, "readAsText", e)
                    }
                })
            }
        }), n("moxie/xhr/FormData", ["moxie/core/Exceptions", "moxie/core/utils/Basic", "moxie/file/Blob"], function(e, t, i) {
            function n() {
                var e, n = [];
                t.extend(this, {
                    append: function(r, o) {
                        var a = this,
                            s = t.typeOf(o);
                        o instanceof i ? e = {
                            name: r,
                            value: o
                        } : "array" === s ? (r += "[]", t.each(o, function(e) {
                            a.append(r, e)
                        })) : "object" === s ? t.each(o, function(e, t) {
                            a.append(r + "[" + t + "]", e)
                        }) : "null" === s || "undefined" === s || "number" === s && isNaN(o) ? a.append(r, "false") : n.push({
                            name: r,
                            value: o.toString()
                        })
                    },
                    hasBlob: function() {
                        return !!this.getBlob()
                    },
                    getBlob: function() {
                        return e && e.value || null
                    },
                    getBlobName: function() {
                        return e && e.name || null
                    },
                    each: function(i) {
                        t.each(n, function(e) {
                            i(e.value, e.name)
                        }), e && i(e.value, e.name)
                    },
                    destroy: function() {
                        e = null, n = []
                    }
                })
            }
            return n
        }), n("moxie/xhr/XMLHttpRequest", ["moxie/core/utils/Basic", "moxie/core/Exceptions", "moxie/core/EventTarget", "moxie/core/utils/Encode", "moxie/core/utils/Url", "moxie/runtime/Runtime", "moxie/runtime/RuntimeTarget", "moxie/file/Blob", "moxie/file/FileReaderSync", "moxie/xhr/FormData", "moxie/core/utils/Env", "moxie/core/utils/Mime"], function(e, t, i, n, r, o, a, s, u, c, l, d) {
            function m() {
                this.uid = e.guid("uid_")
            }

            function h() {
                function i(e, t) {
                    return I.hasOwnProperty(e) ? 1 === arguments.length ? l.can("define_property") ? I[e] : A[e] : (l.can("define_property") ? I[e] = t : A[e] = t, void 0) : void 0
                }

                function u(t) {
                    function n() {
                        _ && (_.destroy(), _ = null), s.dispatchEvent("loadend"), s = null
                    }

                    function r(r) {
                        _.bind("LoadStart", function(e) {
                            i("readyState", h.LOADING), s.dispatchEvent("readystatechange"), s.dispatchEvent(e), L && s.upload.dispatchEvent(e)
                        }), _.bind("Progress", function(e) {
                            i("readyState") !== h.LOADING && (i("readyState", h.LOADING), s.dispatchEvent("readystatechange")), s.dispatchEvent(e)
                        }), _.bind("UploadProgress", function(e) {
                            L && s.upload.dispatchEvent({
                                type: "progress",
                                lengthComputable: !1,
                                total: e.total,
                                loaded: e.loaded
                            })
                        }), _.bind("Load", function(t) {
                            i("readyState", h.DONE), i("status", Number(r.exec.call(_, "XMLHttpRequest", "getStatus") || 0)), i("statusText", f[i("status")] || ""), i("response", r.exec.call(_, "XMLHttpRequest", "getResponse", i("responseType"))), ~e.inArray(i("responseType"), ["text", ""]) ? i("responseText", i("response")) : "document" === i("responseType") && i("responseXML", i("response")), U = r.exec.call(_, "XMLHttpRequest", "getAllResponseHeaders"), s.dispatchEvent("readystatechange"), i("status") > 0 ? (L && s.upload.dispatchEvent(t), s.dispatchEvent(t)) : (F = !0, s.dispatchEvent("error")), n()
                        }), _.bind("Abort", function(e) {
                            s.dispatchEvent(e), n()
                        }), _.bind("Error", function(e) {
                            F = !0, i("readyState", h.DONE), s.dispatchEvent("readystatechange"), M = !0, s.dispatchEvent(e), n()
                        }), r.exec.call(_, "XMLHttpRequest", "send", {
                            url: x,
                            method: v,
                            async: T,
                            user: w,
                            password: y,
                            headers: S,
                            mimeType: D,
                            encoding: O,
                            responseType: s.responseType,
                            withCredentials: s.withCredentials,
                            options: k
                        }, t)
                    }
                    var s = this;
                    E = (new Date).getTime(), _ = new a, "string" == typeof k.required_caps && (k.required_caps = o.parseCaps(k.required_caps)), k.required_caps = e.extend({}, k.required_caps, {
                        return_response_type: s.responseType
                    }), t instanceof c && (k.required_caps.send_multipart = !0), e.isEmptyObj(S) || (k.required_caps.send_custom_headers = !0), B || (k.required_caps.do_cors = !0), k.ruid ? r(_.connectRuntime(k)) : (_.bind("RuntimeInit", function(e, t) {
                        r(t)
                    }), _.bind("RuntimeError", function(e, t) {
                        s.dispatchEvent("RuntimeError", t)
                    }), _.connectRuntime(k))
                }

                function g() {
                    i("responseText", ""), i("responseXML", null), i("response", null), i("status", 0), i("statusText", ""), E = b = null
                }
                var x, v, w, y, E, b, _, R, A = this,
                    I = {
                        timeout: 0,
                        readyState: h.UNSENT,
                        withCredentials: !1,
                        status: 0,
                        statusText: "",
                        responseType: "",
                        responseXML: null,
                        responseText: null,
                        response: null
                    },
                    T = !0,
                    S = {},
                    O = null,
                    D = null,
                    N = !1,
                    C = !1,
                    L = !1,
                    M = !1,
                    F = !1,
                    B = !1,
                    P = null,
                    H = null,
                    k = {},
                    U = "";
                e.extend(this, I, {
                    uid: e.guid("uid_"),
                    upload: new m,
                    open: function(o, a, s, u, c) {
                        var l;
                        if (!o || !a) throw new t.DOMException(t.DOMException.SYNTAX_ERR);
                        if (/[\u0100-\uffff]/.test(o) || n.utf8_encode(o) !== o) throw new t.DOMException(t.DOMException.SYNTAX_ERR);
                        if (~e.inArray(o.toUpperCase(), ["CONNECT", "DELETE", "GET", "HEAD", "OPTIONS", "POST", "PUT", "TRACE", "TRACK"]) && (v = o.toUpperCase()), ~e.inArray(v, ["CONNECT", "TRACE", "TRACK"])) throw new t.DOMException(t.DOMException.SECURITY_ERR);
                        if (a = n.utf8_encode(a), l = r.parseUrl(a), B = r.hasSameOrigin(l), x = r.resolveUrl(a), (u || c) && !B) throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);
                        if (w = u || l.user, y = c || l.pass, T = s || !0, T === !1 && (i("timeout") || i("withCredentials") || "" !== i("responseType"))) throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);
                        N = !T, C = !1, S = {}, g.call(this), i("readyState", h.OPENED), this.dispatchEvent("readystatechange")
                    },
                    setRequestHeader: function(r, o) {
                        var a = ["accept-charset", "accept-encoding", "access-control-request-headers", "access-control-request-method", "connection", "content-length", "cookie", "cookie2", "content-transfer-encoding", "date", "expect", "host", "keep-alive", "origin", "referer", "te", "trailer", "transfer-encoding", "upgrade", "user-agent", "via"];
                        if (i("readyState") !== h.OPENED || C) throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);
                        if (/[\u0100-\uffff]/.test(r) || n.utf8_encode(r) !== r) throw new t.DOMException(t.DOMException.SYNTAX_ERR);
                        return r = e.trim(r).toLowerCase(), ~e.inArray(r, a) || /^(proxy\-|sec\-)/.test(r) ? !1 : (S[r] ? S[r] += ", " + o : S[r] = o, !0)
                    },
                    hasRequestHeader: function(e) {
                        return e && S[e.toLowerCase()] || !1
                    },
                    getAllResponseHeaders: function() {
                        return U || ""
                    },
                    getResponseHeader: function(t) {
                        return t = t.toLowerCase(), F || ~e.inArray(t, ["set-cookie", "set-cookie2"]) ? null : U && "" !== U && (R || (R = {}, e.each(U.split(/\r\n/), function(t) {
                            var i = t.split(/:\s+/);
                            2 === i.length && (i[0] = e.trim(i[0]), R[i[0].toLowerCase()] = {
                                header: i[0],
                                value: e.trim(i[1])
                            })
                        })), R.hasOwnProperty(t)) ? R[t].header + ": " + R[t].value : null
                    },
                    overrideMimeType: function(n) {
                        var r, o;
                        if (~e.inArray(i("readyState"), [h.LOADING, h.DONE])) throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);
                        if (n = e.trim(n.toLowerCase()), /;/.test(n) && (r = n.match(/^([^;]+)(?:;\scharset\=)?(.*)$/)) && (n = r[1], r[2] && (o = r[2])), !d.mimes[n]) throw new t.DOMException(t.DOMException.SYNTAX_ERR);
                        P = n, H = o
                    },
                    send: function(i, r) {
                        if (k = "string" === e.typeOf(r) ? {
                                ruid: r
                            } : r ? r : {}, this.readyState !== h.OPENED || C) throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);
                        if (i instanceof s) k.ruid = i.ruid, D = i.type || "application/octet-stream";
                        else if (i instanceof c) {
                            if (i.hasBlob()) {
                                var o = i.getBlob();
                                k.ruid = o.ruid, D = o.type || "application/octet-stream"
                            }
                        } else "string" == typeof i && (O = "UTF-8", D = "text/plain;charset=UTF-8", i = n.utf8_encode(i));
                        this.withCredentials || (this.withCredentials = k.required_caps && k.required_caps.send_browser_cookies && !B), L = !N && this.upload.hasEventListener(), F = !1, M = !i, N || (C = !0), u.call(this, i)
                    },
                    abort: function() {
                        if (F = !0, N = !1, ~e.inArray(i("readyState"), [h.UNSENT, h.OPENED, h.DONE])) i("readyState", h.UNSENT);
                        else {
                            if (i("readyState", h.DONE), C = !1, !_) throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);
                            _.getRuntime().exec.call(_, "XMLHttpRequest", "abort", M), M = !0
                        }
                    },
                    destroy: function() {
                        _ && ("function" === e.typeOf(_.destroy) && _.destroy(), _ = null), this.unbindAll(), this.upload && (this.upload.unbindAll(), this.upload = null)
                    }
                }), this.handleEventProps(p.concat(["readystatechange"])), this.upload.handleEventProps(p)
            }
            var f = {
                100: "Continue",
                101: "Switching Protocols",
                102: "Processing",
                200: "OK",
                201: "Created",
                202: "Accepted",
                203: "Non-Authoritative Information",
                204: "No Content",
                205: "Reset Content",
                206: "Partial Content",
                207: "Multi-Status",
                226: "IM Used",
                300: "Multiple Choices",
                301: "Moved Permanently",
                302: "Found",
                303: "See Other",
                304: "Not Modified",
                305: "Use Proxy",
                306: "Reserved",
                307: "Temporary Redirect",
                400: "Bad Request",
                401: "Unauthorized",
                402: "Payment Required",
                403: "Forbidden",
                404: "Not Found",
                405: "Method Not Allowed",
                406: "Not Acceptable",
                407: "Proxy Authentication Required",
                408: "Request Timeout",
                409: "Conflict",
                410: "Gone",
                411: "Length Required",
                412: "Precondition Failed",
                413: "Request Entity Too Large",
                414: "Request-URI Too Long",
                415: "Unsupported Media Type",
                416: "Requested Range Not Satisfiable",
                417: "Expectation Failed",
                422: "Unprocessable Entity",
                423: "Locked",
                424: "Failed Dependency",
                426: "Upgrade Required",
                500: "Internal Server Error",
                501: "Not Implemented",
                502: "Bad Gateway",
                503: "Service Unavailable",
                504: "Gateway Timeout",
                505: "HTTP Version Not Supported",
                506: "Variant Also Negotiates",
                507: "Insufficient Storage",
                510: "Not Extended"
            };
            m.prototype = i.instance;
            var p = ["loadstart", "progress", "abort", "error", "load", "timeout", "loadend"];
            return h.UNSENT = 0, h.OPENED = 1, h.HEADERS_RECEIVED = 2, h.LOADING = 3, h.DONE = 4, h.prototype = i.instance, h
        }), n("moxie/runtime/Transporter", ["moxie/core/utils/Basic", "moxie/core/utils/Encode", "moxie/runtime/RuntimeClient", "moxie/core/EventTarget"], function(e, t, i, n) {
            function r() {
                function n() {
                    l = d = 0, c = this.result = null
                }

                function o(t, i) {
                    var n = this;
                    u = i, n.bind("TransportingProgress", function(t) {
                        d = t.loaded, l > d && -1 === e.inArray(n.state, [r.IDLE, r.DONE]) && a.call(n)
                    }, 999), n.bind("TransportingComplete", function() {
                        d = l, n.state = r.DONE, c = null, n.result = u.exec.call(n, "Transporter", "getAsBlob", t || "")
                    }, 999), n.state = r.BUSY, n.trigger("TransportingStarted"), a.call(n)
                }

                function a() {
                    var e, i = this,
                        n = l - d;
                    m > n && (m = n), e = t.btoa(c.substr(d, m)), u.exec.call(i, "Transporter", "receive", e, l)
                }
                var s, u, c, l, d, m;
                i.call(this), e.extend(this, {
                    uid: e.guid("uid_"),
                    state: r.IDLE,
                    result: null,
                    transport: function(t, i, r) {
                        var a = this;
                        if (r = e.extend({
                                chunk_size: 204798
                            }, r), (s = r.chunk_size % 3) && (r.chunk_size += 3 - s), m = r.chunk_size, n.call(this), c = t, l = t.length, "string" === e.typeOf(r) || r.ruid) o.call(a, i, this.connectRuntime(r));
                        else {
                            var u = function(e, t) {
                                a.unbind("RuntimeInit", u), o.call(a, i, t)
                            };
                            this.bind("RuntimeInit", u), this.connectRuntime(r)
                        }
                    },
                    abort: function() {
                        var e = this;
                        e.state = r.IDLE, u && (u.exec.call(e, "Transporter", "clear"), e.trigger("TransportingAborted")), n.call(e)
                    },
                    destroy: function() {
                        this.unbindAll(), u = null, this.disconnectRuntime(), n.call(this)
                    }
                })
            }
            return r.IDLE = 0, r.BUSY = 1, r.DONE = 2, r.prototype = n.instance, r
        }), n("moxie/image/Image", ["moxie/core/utils/Basic", "moxie/core/utils/Dom", "moxie/core/Exceptions", "moxie/file/FileReaderSync", "moxie/xhr/XMLHttpRequest", "moxie/runtime/Runtime", "moxie/runtime/RuntimeClient", "moxie/runtime/Transporter", "moxie/core/utils/Env", "moxie/core/EventTarget", "moxie/file/Blob", "moxie/file/File", "moxie/core/utils/Encode"], function(e, t, i, n, r, o, a, s, u, c, l, d, m) {
            function h() {
                function n(e) {
                    try {
                        return e || (e = this.exec("Image", "getInfo")), this.size = e.size, this.width = e.width, this.height = e.height, this.type = e.type, this.meta = e.meta, "" === this.name && (this.name = e.name), !0
                    } catch (t) {
                        return this.trigger("error", t.code), !1
                    }
                }

                function c(t) {
                    var n = e.typeOf(t);
                    try {
                        if (t instanceof h) {
                            if (!t.size) throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);
                            p.apply(this, arguments)
                        } else if (t instanceof l) {
                            if (!~e.inArray(t.type, ["image/jpeg", "image/png"])) throw new i.ImageError(i.ImageError.WRONG_FORMAT);
                            g.apply(this, arguments)
                        } else if (-1 !== e.inArray(n, ["blob", "file"])) c.call(this, new d(null, t), arguments[1]);
                        else if ("string" === n) "data:" === t.substr(0, 5) ? c.call(this, new l(null, {
                            data: t
                        }), arguments[1]) : x.apply(this, arguments);
                        else {
                            if ("node" !== n || "img" !== t.nodeName.toLowerCase()) throw new i.DOMException(i.DOMException.TYPE_MISMATCH_ERR);
                            c.call(this, t.src, arguments[1])
                        }
                    } catch (r) {
                        this.trigger("error", r.code)
                    }
                }

                function p(t, i) {
                    var n = this.connectRuntime(t.ruid);
                    this.ruid = n.uid, n.exec.call(this, "Image", "loadFromImage", t, "undefined" === e.typeOf(i) ? !0 : i)
                }

                function g(t, i) {
                    function n(e) {
                        r.ruid = e.uid, e.exec.call(r, "Image", "loadFromBlob", t)
                    }
                    var r = this;
                    r.name = t.name || "", t.isDetached() ? (this.bind("RuntimeInit", function(e, t) {
                        n(t)
                    }), i && "string" == typeof i.required_caps && (i.required_caps = o.parseCaps(i.required_caps)), this.connectRuntime(e.extend({
                        required_caps: {
                            access_image_binary: !0,
                            resize_image: !0
                        }
                    }, i))) : n(this.connectRuntime(t.ruid))
                }

                function x(e, t) {
                    var i, n = this;
                    i = new r, i.open("get", e), i.responseType = "blob", i.onprogress = function(e) {
                        n.trigger(e)
                    }, i.onload = function() {
                        g.call(n, i.response, !0)
                    }, i.onerror = function(e) {
                        n.trigger(e)
                    }, i.onloadend = function() {
                        i.destroy()
                    }, i.bind("RuntimeError", function(e, t) {
                        n.trigger("RuntimeError", t)
                    }), i.send(null, t)
                }
                a.call(this), e.extend(this, {
                    uid: e.guid("uid_"),
                    ruid: null,
                    name: "",
                    size: 0,
                    width: 0,
                    height: 0,
                    type: "",
                    meta: {},
                    clone: function() {
                        this.load.apply(this, arguments)
                    },
                    load: function() {
                        c.apply(this, arguments)
                    },
                    resize: function(t) {
                        var n, r, o = this,
                            a = {
                                x: 0,
                                y: 0,
                                width: o.width,
                                height: o.height
                            },
                            s = e.extendIf({
                                width: o.width,
                                height: o.height,
                                type: o.type || "image/jpeg",
                                quality: 90,
                                crop: !1,
                                fit: !0,
                                preserveHeaders: !0,
                                resample: "default",
                                multipass: !0
                            }, t);
                        try {
                            if (!o.size) throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);
                            if (o.width > h.MAX_RESIZE_WIDTH || o.height > h.MAX_RESIZE_HEIGHT) throw new i.ImageError(i.ImageError.MAX_RESOLUTION_ERR);
                            if (n = o.meta && o.meta.tiff && o.meta.tiff.Orientation || 1, -1 !== e.inArray(n, [5, 6, 7, 8])) {
                                var u = s.width;
                                s.width = s.height, s.height = u
                            }
                            if (s.crop) {
                                switch (r = Math.max(s.width / o.width, s.height / o.height), t.fit ? (a.width = Math.min(Math.ceil(s.width / r), o.width), a.height = Math.min(Math.ceil(s.height / r), o.height), r = s.width / a.width) : (a.width = Math.min(s.width, o.width), a.height = Math.min(s.height, o.height), r = 1), "boolean" == typeof s.crop && (s.crop = "cc"), s.crop.toLowerCase().replace(/_/, "-")) {
                                    case "rb":
                                    case "right-bottom":
                                        a.x = o.width - a.width, a.y = o.height - a.height;
                                        break;
                                    case "cb":
                                    case "center-bottom":
                                        a.x = Math.floor((o.width - a.width) / 2), a.y = o.height - a.height;
                                        break;
                                    case "lb":
                                    case "left-bottom":
                                        a.x = 0, a.y = o.height - a.height;
                                        break;
                                    case "lt":
                                    case "left-top":
                                        a.x = 0, a.y = 0;
                                        break;
                                    case "ct":
                                    case "center-top":
                                        a.x = Math.floor((o.width - a.width) / 2), a.y = 0;
                                        break;
                                    case "rt":
                                    case "right-top":
                                        a.x = o.width - a.width, a.y = 0;
                                        break;
                                    case "rc":
                                    case "right-center":
                                    case "right-middle":
                                        a.x = o.width - a.width, a.y = Math.floor((o.height - a.height) / 2);
                                        break;
                                    case "lc":
                                    case "left-center":
                                    case "left-middle":
                                        a.x = 0, a.y = Math.floor((o.height - a.height) / 2);
                                        break;
                                    case "cc":
                                    case "center-center":
                                    case "center-middle":
                                    default:
                                        a.x = Math.floor((o.width - a.width) / 2), a.y = Math.floor((o.height - a.height) / 2)
                                }
                                a.x = Math.max(a.x, 0), a.y = Math.max(a.y, 0)
                            } else r = Math.min(s.width / o.width, s.height / o.height), r > 1 && !s.fit && (r = 1);
                            this.exec("Image", "resize", a, r, s)
                        } catch (c) {
                            o.trigger("error", c.code)
                        }
                    },
                    downsize: function(t) {
                        var i, n = {
                            width: this.width,
                            height: this.height,
                            type: this.type || "image/jpeg",
                            quality: 90,
                            crop: !1,
                            fit: !1,
                            preserveHeaders: !0,
                            resample: "default"
                        };
                        i = "object" == typeof t ? e.extend(n, t) : e.extend(n, {
                            width: arguments[0],
                            height: arguments[1],
                            crop: arguments[2],
                            preserveHeaders: arguments[3]
                        }), this.resize(i)
                    },
                    crop: function(e, t, i) {
                        this.downsize(e, t, !0, i)
                    },
                    getAsCanvas: function() {
                        if (!u.can("create_canvas")) throw new i.RuntimeError(i.RuntimeError.NOT_SUPPORTED_ERR);
                        return this.exec("Image", "getAsCanvas")
                    },
                    getAsBlob: function(e, t) {
                        if (!this.size) throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);
                        return this.exec("Image", "getAsBlob", e || "image/jpeg", t || 90)
                    },
                    getAsDataURL: function(e, t) {
                        if (!this.size) throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);
                        return this.exec("Image", "getAsDataURL", e || "image/jpeg", t || 90)
                    },
                    getAsBinaryString: function(e, t) {
                        var i = this.getAsDataURL(e, t);
                        return m.atob(i.substring(i.indexOf("base64,") + 7))
                    },
                    embed: function(n, r) {
                        function o(t, r) {
                            var o = this;
                            if (u.can("create_canvas")) {
                                var l = o.getAsCanvas();
                                if (l) return n.appendChild(l), l = null, o.destroy(), c.trigger("embedded"), void 0
                            }
                            var d = o.getAsDataURL(t, r);
                            if (!d) throw new i.ImageError(i.ImageError.WRONG_FORMAT);
                            if (u.can("use_data_uri_of", d.length)) n.innerHTML = '<img src="' + d + '" width="' + o.width + '" height="' + o.height + '" alt="" />', o.destroy(), c.trigger("embedded");
                            else {
                                var h = new s;
                                h.bind("TransportingComplete", function() {
                                    a = c.connectRuntime(this.result.ruid), c.bind("Embedded", function() {
                                        e.extend(a.getShimContainer().style, {
                                            top: "0px",
                                            left: "0px",
                                            width: o.width + "px",
                                            height: o.height + "px"
                                        }), a = null
                                    }, 999), a.exec.call(c, "ImageView", "display", this.result.uid, width, height), o.destroy()
                                }), h.transport(m.atob(d.substring(d.indexOf("base64,") + 7)), t, {
                                    required_caps: {
                                        display_media: !0
                                    },
                                    runtime_order: "flash,silverlight",
                                    container: n
                                })
                            }
                        }
                        var a, c = this,
                            l = e.extend({
                                width: this.width,
                                height: this.height,
                                type: this.type || "image/jpeg",
                                quality: 90,
                                fit: !0,
                                resample: "nearest"
                            }, r);
                        try {
                            if (!(n = t.get(n))) throw new i.DOMException(i.DOMException.INVALID_NODE_TYPE_ERR);
                            if (!this.size) throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);
                            this.width > h.MAX_RESIZE_WIDTH || this.height > h.MAX_RESIZE_HEIGHT;
                            var d = new h;
                            return d.bind("Resize", function() {
                                o.call(this, l.type, l.quality)
                            }), d.bind("Load", function() {
                                this.downsize(l)
                            }), this.meta.thumb && this.meta.thumb.width >= l.width && this.meta.thumb.height >= l.height ? d.load(this.meta.thumb.data) : d.clone(this, !1), d
                        } catch (f) {
                            this.trigger("error", f.code)
                        }
                    },
                    destroy: function() {
                        this.ruid && (this.getRuntime().exec.call(this, "Image", "destroy"), this.disconnectRuntime()), this.meta && this.meta.thumb && this.meta.thumb.data.destroy(), this.unbindAll()
                    }
                }), this.handleEventProps(f), this.bind("Load Resize", function() {
                    return n.call(this)
                }, 999)
            }
            var f = ["progress", "load", "error", "resize", "embedded"];
            return h.MAX_RESIZE_WIDTH = 8192, h.MAX_RESIZE_HEIGHT = 8192, h.prototype = c.instance, h
        }), n("moxie/runtime/html5/Runtime", ["moxie/core/utils/Basic", "moxie/core/Exceptions", "moxie/runtime/Runtime", "moxie/core/utils/Env"], function(e, t, i, n) {
            function o(t) {
                var o = this,
                    u = i.capTest,
                    c = i.capTrue,
                    l = e.extend({
                        access_binary: u(window.FileReader || window.File && window.File.getAsDataURL),
                        access_image_binary: function() {
                            return o.can("access_binary") && !!s.Image
                        },
                        display_media: u((n.can("create_canvas") || n.can("use_data_uri_over32kb")) && r("moxie/image/Image")),
                        do_cors: u(window.XMLHttpRequest && "withCredentials" in new XMLHttpRequest),
                        drag_and_drop: u(function() {
                            var e = document.createElement("div");
                            return ("draggable" in e || "ondragstart" in e && "ondrop" in e) && ("IE" !== n.browser || n.verComp(n.version, 9, ">"))
                        }()),
                        filter_by_extension: u(function() {
                            return !("Chrome" === n.browser && n.verComp(n.version, 28, "<") || "IE" === n.browser && n.verComp(n.version, 10, "<") || "Safari" === n.browser && n.verComp(n.version, 7, "<") || "Firefox" === n.browser && n.verComp(n.version, 37, "<"))
                        }()),
                        return_response_headers: c,
                        return_response_type: function(e) {
                            return "json" === e && window.JSON ? !0 : n.can("return_response_type", e)
                        },
                        return_status_code: c,
                        report_upload_progress: u(window.XMLHttpRequest && (new XMLHttpRequest).upload),
                        resize_image: function() {
                            return o.can("access_binary") && n.can("create_canvas")
                        },
                        select_file: function() {
                            return n.can("use_fileinput") && window.File
                        },
                        select_folder: function() {
                            return o.can("select_file") && ("Chrome" === n.browser && n.verComp(n.version, 21, ">=") || "Firefox" === n.browser && n.verComp(n.version, 42, ">="))
                        },
                        select_multiple: function() {
                            return !(!o.can("select_file") || "Safari" === n.browser && "Windows" === n.os || "iOS" === n.os && n.verComp(n.osVersion, "7.0.0", ">") && n.verComp(n.osVersion, "8.0.0", "<"))
                        },
                        send_binary_string: u(window.XMLHttpRequest && ((new XMLHttpRequest).sendAsBinary || window.Uint8Array && window.ArrayBuffer)),
                        send_custom_headers: u(window.XMLHttpRequest),
                        send_multipart: function() {
                            return !!(window.XMLHttpRequest && (new XMLHttpRequest).upload && window.FormData) || o.can("send_binary_string")
                        },
                        slice_blob: u(window.File && (File.prototype.mozSlice || File.prototype.webkitSlice || File.prototype.slice)),
                        stream_upload: function() {
                            return o.can("slice_blob") && o.can("send_multipart")
                        },
                        summon_file_dialog: function() {
                            return o.can("select_file") && !("Firefox" === n.browser && n.verComp(n.version, 4, "<") || "Opera" === n.browser && n.verComp(n.version, 12, "<") || "IE" === n.browser && n.verComp(n.version, 10, "<"))
                        },
                        upload_filesize: c,
                        use_http_method: c
                    }, arguments[2]);
                i.call(this, t, arguments[1] || a, l), e.extend(this, {
                    init: function() {
                        this.trigger("Init")
                    },
                    destroy: function(e) {
                        return function() {
                            e.call(o), e = o = null
                        }
                    }(this.destroy)
                }), e.extend(this.getShim(), s)
            }
            var a = "html5",
                s = {};
            return i.addConstructor(a, o), s
        }), n("moxie/runtime/html5/file/Blob", ["moxie/runtime/html5/Runtime", "moxie/file/Blob"], function(e, t) {
            function i() {
                function e(e, t, i) {
                    var n;
                    if (!window.File.prototype.slice) return (n = window.File.prototype.webkitSlice || window.File.prototype.mozSlice) ? n.call(e, t, i) : null;
                    try {
                        return e.slice(), e.slice(t, i)
                    } catch (r) {
                        return e.slice(t, i - t)
                    }
                }
                this.slice = function() {
                    return new t(this.getRuntime().uid, e.apply(this, arguments))
                }, this.destroy = function() {
                    this.getRuntime().getShim().removeInstance(this.uid)
                }
            }
            return e.Blob = i
        }), n("moxie/core/utils/Events", ["moxie/core/utils/Basic"], function(e) {
            function t() {
                this.returnValue = !1
            }

            function i() {
                this.cancelBubble = !0
            }
            var n = {},
                r = "moxie_" + e.guid(),
                o = function(o, a, s, u) {
                    var c, l;
                    a = a.toLowerCase(), o.addEventListener ? (c = s, o.addEventListener(a, c, !1)) : o.attachEvent && (c = function() {
                        var e = window.event;
                        e.target || (e.target = e.srcElement), e.preventDefault = t, e.stopPropagation = i, s(e)
                    }, o.attachEvent("on" + a, c)), o[r] || (o[r] = e.guid()), n.hasOwnProperty(o[r]) || (n[o[r]] = {}), l = n[o[r]], l.hasOwnProperty(a) || (l[a] = []), l[a].push({
                        func: c,
                        orig: s,
                        key: u
                    })
                },
                a = function(t, i, o) {
                    var a, s;
                    if (i = i.toLowerCase(), t[r] && n[t[r]] && n[t[r]][i]) {
                        a = n[t[r]][i];
                        for (var u = a.length - 1; u >= 0 && (a[u].orig !== o && a[u].key !== o || (t.removeEventListener ? t.removeEventListener(i, a[u].func, !1) : t.detachEvent && t.detachEvent("on" + i, a[u].func), a[u].orig = null, a[u].func = null, a.splice(u, 1), o === s)); u--);
                        if (a.length || delete n[t[r]][i], e.isEmptyObj(n[t[r]])) {
                            delete n[t[r]];
                            try {
                                delete t[r]
                            } catch (c) {
                                t[r] = s
                            }
                        }
                    }
                },
                s = function(t, i) {
                    t && t[r] && e.each(n[t[r]], function(e, n) {
                        a(t, n, i)
                    })
                };
            return {
                addEvent: o,
                removeEvent: a,
                removeAllEvents: s
            }
        }), n("moxie/runtime/html5/file/FileInput", ["moxie/runtime/html5/Runtime", "moxie/file/File", "moxie/core/utils/Basic", "moxie/core/utils/Dom", "moxie/core/utils/Events", "moxie/core/utils/Mime", "moxie/core/utils/Env"], function(e, t, i, n, r, o, a) {
            function s() {
                var e, s;
                i.extend(this, {
                    init: function(u) {
                        var c, l, d, m, h, f, p = this,
                            g = p.getRuntime();
                        e = u, d = o.extList2mimes(e.accept, g.can("filter_by_extension")), l = g.getShimContainer(), l.innerHTML = '<input id="' + g.uid + '" type="file" style="font-size:999px;opacity:0;"' + (e.multiple && g.can("select_multiple") ? "multiple" : "") + (e.directory && g.can("select_folder") ? "webkitdirectory directory" : "") + (d ? ' accept="' + d.join(",") + '"' : "") + " />", c = n.get(g.uid), i.extend(c.style, {
                            position: "absolute",
                            top: 0,
                            left: 0,
                            width: "100%",
                            height: "100%"
                        }), m = n.get(e.browse_button), s = n.getStyle(m, "z-index") || "auto", g.can("summon_file_dialog") && ("static" === n.getStyle(m, "position") && (m.style.position = "relative"), r.addEvent(m, "click", function(e) {
                            var t = n.get(g.uid);
                            t && !t.disabled && t.click(), e.preventDefault()
                        }, p.uid), p.bind("Refresh", function() {
                            h = parseInt(s, 10) || 1, n.get(e.browse_button).style.zIndex = h, this.getRuntime().getShimContainer().style.zIndex = h - 1
                        })), f = g.can("summon_file_dialog") ? m : l, r.addEvent(f, "mouseover", function() {
                            p.trigger("mouseenter")
                        }, p.uid), r.addEvent(f, "mouseout", function() {
                            p.trigger("mouseleave")
                        }, p.uid), r.addEvent(f, "mousedown", function() {
                            p.trigger("mousedown")
                        }, p.uid), r.addEvent(n.get(e.container), "mouseup", function() {
                            p.trigger("mouseup")
                        }, p.uid), (g.can("summon_file_dialog") ? c : m).setAttribute("tabindex", -1), c.onchange = function x() {
                            if (p.files = [], i.each(this.files, function(i) {
                                    var n = "";
                                    return e.directory && "." == i.name ? !0 : (i.webkitRelativePath && (n = "/" + i.webkitRelativePath.replace(/^\//, "")), i = new t(g.uid, i), i.relativePath = n, p.files.push(i), void 0)
                                }), "IE" !== a.browser && "IEMobile" !== a.browser) this.value = "";
                            else {
                                var n = this.cloneNode(!0);
                                this.parentNode.replaceChild(n, this), n.onchange = x
                            }
                            p.files.length && p.trigger("change")
                        }, p.trigger({
                            type: "ready",
                            async: !0
                        }), l = null
                    },
                    setOption: function(e, t) {
                        var i = this.getRuntime(),
                            r = n.get(i.uid);
                        switch (e) {
                            case "accept":
                                if (t) {
                                    var a = t.mimes || o.extList2mimes(t, i.can("filter_by_extension"));
                                    r.setAttribute("accept", a.join(","))
                                } else r.removeAttribute("accept");
                                break;
                            case "directory":
                                t && i.can("select_folder") ? (r.setAttribute("directory", ""), r.setAttribute("webkitdirectory", "")) : (r.removeAttribute("directory"), r.removeAttribute("webkitdirectory"));
                                break;
                            case "multiple":
                                t && i.can("select_multiple") ? r.setAttribute("multiple", "") : r.removeAttribute("multiple")
                        }
                    },
                    disable: function(e) {
                        var t, i = this.getRuntime();
                        (t = n.get(i.uid)) && (t.disabled = !!e)
                    },
                    destroy: function() {
                        var t = this.getRuntime(),
                            i = t.getShim(),
                            o = t.getShimContainer(),
                            a = e && n.get(e.container),
                            u = e && n.get(e.browse_button);
                        a && r.removeAllEvents(a, this.uid), u && (r.removeAllEvents(u, this.uid), u.style.zIndex = s), o && (r.removeAllEvents(o, this.uid), o.innerHTML = ""), i.removeInstance(this.uid), e = o = a = u = i = null
                    }
                })
            }
            return e.FileInput = s
        }), n("moxie/runtime/html5/file/FileDrop", ["moxie/runtime/html5/Runtime", "moxie/file/File", "moxie/core/utils/Basic", "moxie/core/utils/Dom", "moxie/core/utils/Events", "moxie/core/utils/Mime"], function(e, t, i, n, r, o) {
            function a() {
                function e(e) {
                    if (!e.dataTransfer || !e.dataTransfer.types) return !1;
                    var t = i.toArray(e.dataTransfer.types || []);
                    return -1 !== i.inArray("Files", t) || -1 !== i.inArray("public.file-url", t) || -1 !== i.inArray("application/x-moz-file", t)
                }

                function a(e, i) {
                    if (u(e)) {
                        var n = new t(f, e);
                        n.relativePath = i || "", p.push(n)
                    }
                }

                function s(e) {
                    for (var t = [], n = 0; n < e.length; n++)[].push.apply(t, e[n].extensions.split(/\s*,\s*/));
                    return -1 === i.inArray("*", t) ? t : []
                }

                function u(e) {
                    if (!g.length) return !0;
                    var t = o.getFileExtension(e.name);
                    return !t || -1 !== i.inArray(t, g)
                }

                function c(e, t) {
                    var n = [];
                    i.each(e, function(e) {
                        var t = e.webkitGetAsEntry();
                        t && (t.isFile ? a(e.getAsFile(), t.fullPath) : n.push(t))
                    }), n.length ? l(n, t) : t()
                }

                function l(e, t) {
                    var n = [];
                    i.each(e, function(e) {
                        n.push(function(t) {
                            d(e, t)
                        })
                    }), i.inSeries(n, function() {
                        t()
                    })
                }

                function d(e, t) {
                    e.isFile ? e.file(function(i) {
                        a(i, e.fullPath), t()
                    }, function() {
                        t()
                    }) : e.isDirectory ? m(e, t) : t()
                }

                function m(e, t) {
                    function i(e) {
                        r.readEntries(function(t) {
                            t.length ? ([].push.apply(n, t), i(e)) : e()
                        }, e)
                    }
                    var n = [],
                        r = e.createReader();
                    i(function() {
                        l(n, t)
                    })
                }
                var h, f, p = [],
                    g = [];
                i.extend(this, {
                    init: function(t) {
                        var n, o = this;
                        h = t, f = o.ruid, g = s(h.accept), n = h.container, r.addEvent(n, "dragover", function(t) {
                            e(t) && (t.preventDefault(), t.dataTransfer.dropEffect = "copy")
                        }, o.uid), r.addEvent(n, "drop", function(t) {
                            e(t) && (t.preventDefault(), p = [], t.dataTransfer.items && t.dataTransfer.items[0].webkitGetAsEntry ? c(t.dataTransfer.items, function() {
                                o.files = p, o.trigger("drop")
                            }) : (i.each(t.dataTransfer.files, function(e) {
                                a(e)
                            }), o.files = p, o.trigger("drop")))
                        }, o.uid), r.addEvent(n, "dragenter", function() {
                            o.trigger("dragenter")
                        }, o.uid), r.addEvent(n, "dragleave", function() {
                            o.trigger("dragleave")
                        }, o.uid)
                    },
                    destroy: function() {
                        r.removeAllEvents(h && n.get(h.container), this.uid), f = p = g = h = null, this.getRuntime().getShim().removeInstance(this.uid)
                    }
                })
            }
            return e.FileDrop = a
        }), n("moxie/runtime/html5/file/FileReader", ["moxie/runtime/html5/Runtime", "moxie/core/utils/Encode", "moxie/core/utils/Basic"], function(e, t, i) {
            function n() {
                function e(e) {
                    return t.atob(e.substring(e.indexOf("base64,") + 7))
                }
                var n, r = !1;
                i.extend(this, {
                    read: function(t, o) {
                        var a = this;
                        a.result = "", n = new window.FileReader, n.addEventListener("progress", function(e) {
                            a.trigger(e)
                        }), n.addEventListener("load", function(t) {
                            a.result = r ? e(n.result) : n.result, a.trigger(t)
                        }), n.addEventListener("error", function(e) {
                            a.trigger(e, n.error)
                        }), n.addEventListener("loadend", function(e) {
                            n = null, a.trigger(e)
                        }), "function" === i.typeOf(n[t]) ? (r = !1, n[t](o.getSource())) : "readAsBinaryString" === t && (r = !0, n.readAsDataURL(o.getSource()))
                    },
                    abort: function() {
                        n && n.abort()
                    },
                    destroy: function() {
                        n = null, this.getRuntime().getShim().removeInstance(this.uid)
                    }
                })
            }
            return e.FileReader = n
        }), n("moxie/runtime/html5/xhr/XMLHttpRequest", ["moxie/runtime/html5/Runtime", "moxie/core/utils/Basic", "moxie/core/utils/Mime", "moxie/core/utils/Url", "moxie/file/File", "moxie/file/Blob", "moxie/xhr/FormData", "moxie/core/Exceptions", "moxie/core/utils/Env"], function(e, t, i, n, r, o, a, s, u) {
            function c() {
                function e(e, t) {
                    var i, n, r = this;
                    i = t.getBlob().getSource(), n = new window.FileReader, n.onload = function() {
                        t.append(t.getBlobName(), new o(null, {
                            type: i.type,
                            data: n.result
                        })), f.send.call(r, e, t)
                    }, n.readAsBinaryString(i)
                }

                function c() {
                    return !window.XMLHttpRequest || "IE" === u.browser && u.verComp(u.version, 8, "<") ? function() {
                        for (var e = ["Msxml2.XMLHTTP.6.0", "Microsoft.XMLHTTP"], t = 0; t < e.length; t++) try {
                            return new ActiveXObject(e[t])
                        } catch (i) {}
                    }() : new window.XMLHttpRequest
                }

                function l(e) {
                    var t = e.responseXML,
                        i = e.responseText;
                    return "IE" === u.browser && i && t && !t.documentElement && /[^\/]+\/[^\+]+\+xml/.test(e.getResponseHeader("Content-Type")) && (t = new window.ActiveXObject("Microsoft.XMLDOM"), t.async = !1, t.validateOnParse = !1, t.loadXML(i)), t && ("IE" === u.browser && 0 !== t.parseError || !t.documentElement || "parsererror" === t.documentElement.tagName) ? null : t
                }

                function d(e) {
                    var t = "----moxieboundary" + (new Date).getTime(),
                        i = "--",
                        n = "\r\n",
                        r = "",
                        a = this.getRuntime();
                    if (!a.can("send_binary_string")) throw new s.RuntimeError(s.RuntimeError.NOT_SUPPORTED_ERR);
                    return m.setRequestHeader("Content-Type", "multipart/form-data; boundary=" + t), e.each(function(e, a) {
                        r += e instanceof o ? i + t + n + 'Content-Disposition: form-data; name="' + a + '"; filename="' + unescape(encodeURIComponent(e.name || "blob")) + '"' + n + "Content-Type: " + (e.type || "application/octet-stream") + n + n + e.getSource() + n : i + t + n + 'Content-Disposition: form-data; name="' + a + '"' + n + n + unescape(encodeURIComponent(e)) + n
                    }), r += i + t + i + n
                }
                var m, h, f = this;
                t.extend(this, {
                    send: function(i, r) {
                        var s = this,
                            l = "Mozilla" === u.browser && u.verComp(u.version, 4, ">=") && u.verComp(u.version, 7, "<"),
                            f = "Android Browser" === u.browser,
                            p = !1;
                        if (h = i.url.replace(/^.+?\/([\w\-\.]+)$/, "$1").toLowerCase(), m = c(), m.open(i.method, i.url, i.async, i.user, i.password), r instanceof o) r.isDetached() && (p = !0), r = r.getSource();
                        else if (r instanceof a) {
                            if (r.hasBlob())
                                if (r.getBlob().isDetached()) r = d.call(s, r), p = !0;
                                else if ((l || f) && "blob" === t.typeOf(r.getBlob().getSource()) && window.FileReader) return e.call(s, i, r), void 0;
                            if (r instanceof a) {
                                var g = new window.FormData;
                                r.each(function(e, t) {
                                    e instanceof o ? g.append(t, e.getSource()) : g.append(t, e)
                                }), r = g
                            }
                        }
                        m.upload ? (i.withCredentials && (m.withCredentials = !0), m.addEventListener("load", function(e) {
                            s.trigger(e)
                        }), m.addEventListener("error", function(e) {
                            s.trigger(e)
                        }), m.addEventListener("progress", function(e) {
                            s.trigger(e)
                        }), m.upload.addEventListener("progress", function(e) {
                            s.trigger({
                                type: "UploadProgress",
                                loaded: e.loaded,
                                total: e.total
                            })
                        })) : m.onreadystatechange = function() {
                            switch (m.readyState) {
                                case 1:
                                    break;
                                case 2:
                                    break;
                                case 3:
                                    var e, t;
                                    try {
                                        n.hasSameOrigin(i.url) && (e = m.getResponseHeader("Content-Length") || 0), m.responseText && (t = m.responseText.length)
                                    } catch (r) {
                                        e = t = 0
                                    }
                                    s.trigger({
                                        type: "progress",
                                        lengthComputable: !!e,
                                        total: parseInt(e, 10),
                                        loaded: t
                                    });
                                    break;
                                case 4:
                                    m.onreadystatechange = function() {};
                                    try {
                                        if (m.status >= 200 && m.status < 400) {
                                            s.trigger("load");
                                            break
                                        }
                                    } catch (r) {}
                                    s.trigger("error")
                            }
                        }, t.isEmptyObj(i.headers) || t.each(i.headers, function(e, t) {
                            m.setRequestHeader(t, e)
                        }), "" !== i.responseType && "responseType" in m && (m.responseType = "json" !== i.responseType || u.can("return_response_type", "json") ? i.responseType : "text"), p ? m.sendAsBinary ? m.sendAsBinary(r) : function() {
                            for (var e = new Uint8Array(r.length), t = 0; t < r.length; t++) e[t] = 255 & r.charCodeAt(t);
                            m.send(e.buffer)
                        }() : m.send(r), s.trigger("loadstart")
                    },
                    getStatus: function() {
                        try {
                            if (m) return m.status
                        } catch (e) {}
                        return 0
                    },
                    getResponse: function(e) {
                        var t = this.getRuntime();
                        try {
                            switch (e) {
                                case "blob":
                                    var n = new r(t.uid, m.response),
                                        o = m.getResponseHeader("Content-Disposition");
                                    if (o) {
                                        var a = o.match(/filename=([\'\"'])([^\1]+)\1/);
                                        a && (h = a[2])
                                    }
                                    return n.name = h, n.type || (n.type = i.getFileMime(h)), n;
                                case "json":
                                    return u.can("return_response_type", "json") ? m.response : 200 === m.status && window.JSON ? JSON.parse(m.responseText) : null;
                                case "document":
                                    return l(m);
                                default:
                                    return "" !== m.responseText ? m.responseText : null
                            }
                        } catch (s) {
                            return null
                        }
                    },
                    getAllResponseHeaders: function() {
                        try {
                            return m.getAllResponseHeaders()
                        } catch (e) {}
                        return ""
                    },
                    abort: function() {
                        m && m.abort()
                    },
                    destroy: function() {
                        f = h = null, this.getRuntime().getShim().removeInstance(this.uid)
                    }
                })
            }
            return e.XMLHttpRequest = c
        }), n("moxie/runtime/html5/utils/BinaryReader", ["moxie/core/utils/Basic"], function(e) {
            function t(e) {
                e instanceof ArrayBuffer ? i.apply(this, arguments) : n.apply(this, arguments)
            }

            function i(t) {
                var i = new DataView(t);
                e.extend(this, {
                    readByteAt: function(e) {
                        return i.getUint8(e)
                    },
                    writeByteAt: function(e, t) {
                        i.setUint8(e, t)
                    },
                    SEGMENT: function(e, n, r) {
                        switch (arguments.length) {
                            case 2:
                                return t.slice(e, e + n);
                            case 1:
                                return t.slice(e);
                            case 3:
                                if (null === r && (r = new ArrayBuffer), r instanceof ArrayBuffer) {
                                    var o = new Uint8Array(this.length() - n + r.byteLength);
                                    e > 0 && o.set(new Uint8Array(t.slice(0, e)), 0), o.set(new Uint8Array(r), e), o.set(new Uint8Array(t.slice(e + n)), e + r.byteLength), this.clear(), t = o.buffer, i = new DataView(t);
                                    break
                                }
                            default:
                                return t
                        }
                    },
                    length: function() {
                        return t ? t.byteLength : 0
                    },
                    clear: function() {
                        i = t = null
                    }
                })
            }

            function n(t) {
                function i(e, i, n) {
                    n = 3 === arguments.length ? n : t.length - i - 1, t = t.substr(0, i) + e + t.substr(n + i)
                }
                e.extend(this, {
                    readByteAt: function(e) {
                        return t.charCodeAt(e)
                    },
                    writeByteAt: function(e, t) {
                        i(String.fromCharCode(t), e, 1)
                    },
                    SEGMENT: function(e, n, r) {
                        switch (arguments.length) {
                            case 1:
                                return t.substr(e);
                            case 2:
                                return t.substr(e, n);
                            case 3:
                                i(null !== r ? r : "", e, n);
                                break;
                            default:
                                return t
                        }
                    },
                    length: function() {
                        return t ? t.length : 0
                    },
                    clear: function() {
                        t = null
                    }
                })
            }
            return e.extend(t.prototype, {
                littleEndian: !1,
                read: function(e, t) {
                    var i, n, r;
                    if (e + t > this.length()) throw new Error("You are trying to read outside the source boundaries.");
                    for (n = this.littleEndian ? 0 : -8 * (t - 1), r = 0, i = 0; t > r; r++) i |= this.readByteAt(e + r) << Math.abs(n + 8 * r);
                    return i
                },
                write: function(e, t, i) {
                    var n, r;
                    if (e > this.length()) throw new Error("You are trying to write outside the source boundaries.");
                    for (n = this.littleEndian ? 0 : -8 * (i - 1), r = 0; i > r; r++) this.writeByteAt(e + r, 255 & t >> Math.abs(n + 8 * r))
                },
                BYTE: function(e) {
                    return this.read(e, 1)
                },
                SHORT: function(e) {
                    return this.read(e, 2)
                },
                LONG: function(e) {
                    return this.read(e, 4)
                },
                SLONG: function(e) {
                    var t = this.read(e, 4);
                    return t > 2147483647 ? t - 4294967296 : t
                },
                CHAR: function(e) {
                    return String.fromCharCode(this.read(e, 1))
                },
                STRING: function(e, t) {
                    return this.asArray("CHAR", e, t).join("")
                },
                asArray: function(e, t, i) {
                    for (var n = [], r = 0; i > r; r++) n[r] = this[e](t + r);
                    return n
                }
            }), t
        }), n("moxie/runtime/html5/image/JPEGHeaders", ["moxie/runtime/html5/utils/BinaryReader", "moxie/core/Exceptions"], function(e, t) {
            return function i(n) {
                var r, o, a, s = [],
                    u = 0;
                if (r = new e(n), 65496 !== r.SHORT(0)) throw r.clear(), new t.ImageError(t.ImageError.WRONG_FORMAT);
                for (o = 2; o <= r.length();)
                    if (a = r.SHORT(o), a >= 65488 && 65495 >= a) o += 2;
                    else {
                        if (65498 === a || 65497 === a) break;
                        u = r.SHORT(o + 2) + 2, a >= 65505 && 65519 >= a && s.push({
                            hex: a,
                            name: "APP" + (15 & a),
                            start: o,
                            length: u,
                            segment: r.SEGMENT(o, u)
                        }), o += u
                    }
                return r.clear(), {
                    headers: s,
                    restore: function(t) {
                        var i, n, r;
                        for (r = new e(t), o = 65504 == r.SHORT(2) ? 4 + r.SHORT(4) : 2, n = 0, i = s.length; i > n; n++) r.SEGMENT(o, 0, s[n].segment), o += s[n].length;
                        return t = r.SEGMENT(), r.clear(), t
                    },
                    strip: function(t) {
                        var n, r, o, a;
                        for (o = new i(t), r = o.headers, o.purge(), n = new e(t), a = r.length; a--;) n.SEGMENT(r[a].start, r[a].length, "");
                        return t = n.SEGMENT(), n.clear(), t
                    },
                    get: function(e) {
                        for (var t = [], i = 0, n = s.length; n > i; i++) s[i].name === e.toUpperCase() && t.push(s[i].segment);
                        return t
                    },
                    set: function(e, t) {
                        var i, n, r, o = [];
                        for ("string" == typeof t ? o.push(t) : o = t, i = n = 0, r = s.length; r > i && (s[i].name === e.toUpperCase() && (s[i].segment = o[n], s[i].length = o[n].length, n++), !(n >= o.length)); i++);
                    },
                    purge: function() {
                        this.headers = s = []
                    }
                }
            }
        }), n("moxie/runtime/html5/image/ExifParser", ["moxie/core/utils/Basic", "moxie/runtime/html5/utils/BinaryReader", "moxie/core/Exceptions"], function(e, i, n) {
            function r(o) {
                function a(i, r) {
                    var o, a, s, u, c, m, h, f, p = this,
                        g = [],
                        x = {},
                        v = {
                            1: "BYTE",
                            7: "UNDEFINED",
                            2: "ASCII",
                            3: "SHORT",
                            4: "LONG",
                            5: "RATIONAL",
                            9: "SLONG",
                            10: "SRATIONAL"
                        },
                        w = {
                            BYTE: 1,
                            UNDEFINED: 1,
                            ASCII: 1,
                            SHORT: 2,
                            LONG: 4,
                            RATIONAL: 8,
                            SLONG: 4,
                            SRATIONAL: 8
                        };
                    for (o = p.SHORT(i), a = 0; o > a; a++)
                        if (g = [], h = i + 2 + 12 * a, s = r[p.SHORT(h)], s !== t) {
                            if (u = v[p.SHORT(h += 2)], c = p.LONG(h += 2), m = w[u], !m) throw new n.ImageError(n.ImageError.INVALID_META_ERR);
                            if (h += 4, m * c > 4 && (h = p.LONG(h) + d.tiffHeader), h + m * c >= this.length()) throw new n.ImageError(n.ImageError.INVALID_META_ERR);
                            "ASCII" !== u ? (g = p.asArray(u, h, c), f = 1 == c ? g[0] : g, x[s] = l.hasOwnProperty(s) && "object" != typeof f ? l[s][f] : f) : x[s] = e.trim(p.STRING(h, c).replace(/\0$/, ""))
                        }
                    return x
                }

                function s(e, t, i) {
                    var n, r, o, a = 0;
                    if ("string" == typeof t) {
                        var s = c[e.toLowerCase()];
                        for (var u in s)
                            if (s[u] === t) {
                                t = u;
                                break
                            }
                    }
                    n = d[e.toLowerCase() + "IFD"], r = this.SHORT(n);
                    for (var l = 0; r > l; l++)
                        if (o = n + 12 * l + 2, this.SHORT(o) == t) {
                            a = o + 8;
                            break
                        }
                    if (!a) return !1;
                    try {
                        this.write(a, i, 4)
                    } catch (m) {
                        return !1
                    }
                    return !0
                }
                var u, c, l, d, m, h;
                if (i.call(this, o), c = {
                        tiff: {
                            274: "Orientation",
                            270: "ImageDescription",
                            271: "Make",
                            272: "Model",
                            305: "Software",
                            34665: "ExifIFDPointer",
                            34853: "GPSInfoIFDPointer"
                        },
                        exif: {
                            36864: "ExifVersion",
                            40961: "ColorSpace",
                            40962: "PixelXDimension",
                            40963: "PixelYDimension",
                            36867: "DateTimeOriginal",
                            33434: "ExposureTime",
                            33437: "FNumber",
                            34855: "ISOSpeedRatings",
                            37377: "ShutterSpeedValue",
                            37378: "ApertureValue",
                            37383: "MeteringMode",
                            37384: "LightSource",
                            37385: "Flash",
                            37386: "FocalLength",
                            41986: "ExposureMode",
                            41987: "WhiteBalance",
                            41990: "SceneCaptureType",
                            41988: "DigitalZoomRatio",
                            41992: "Contrast",
                            41993: "Saturation",
                            41994: "Sharpness"
                        },
                        gps: {
                            0: "GPSVersionID",
                            1: "GPSLatitudeRef",
                            2: "GPSLatitude",
                            3: "GPSLongitudeRef",
                            4: "GPSLongitude"
                        },
                        thumb: {
                            513: "JPEGInterchangeFormat",
                            514: "JPEGInterchangeFormatLength"
                        }
                    }, l = {
                        ColorSpace: {
                            1: "sRGB",
                            0: "Uncalibrated"
                        },
                        MeteringMode: {
                            0: "Unknown",
                            1: "Average",
                            2: "CenterWeightedAverage",
                            3: "Spot",
                            4: "MultiSpot",
                            5: "Pattern",
                            6: "Partial",
                            255: "Other"
                        },
                        LightSource: {
                            1: "Daylight",
                            2: "Fliorescent",
                            3: "Tungsten",
                            4: "Flash",
                            9: "Fine weather",
                            10: "Cloudy weather",
                            11: "Shade",
                            12: "Daylight fluorescent (D 5700 - 7100K)",
                            13: "Day white fluorescent (N 4600 -5400K)",
                            14: "Cool white fluorescent (W 3900 - 4500K)",
                            15: "White fluorescent (WW 3200 - 3700K)",
                            17: "Standard light A",
                            18: "Standard light B",
                            19: "Standard light C",
                            20: "D55",
                            21: "D65",
                            22: "D75",
                            23: "D50",
                            24: "ISO studio tungsten",
                            255: "Other"
                        },
                        Flash: {
                            0: "Flash did not fire",
                            1: "Flash fired",
                            5: "Strobe return light not detected",
                            7: "Strobe return light detected",
                            9: "Flash fired, compulsory flash mode",
                            13: "Flash fired, compulsory flash mode, return light not detected",
                            15: "Flash fired, compulsory flash mode, return light detected",
                            16: "Flash did not fire, compulsory flash mode",
                            24: "Flash did not fire, auto mode",
                            25: "Flash fired, auto mode",
                            29: "Flash fired, auto mode, return light not detected",
                            31: "Flash fired, auto mode, return light detected",
                            32: "No flash function",
                            65: "Flash fired, red-eye reduction mode",
                            69: "Flash fired, red-eye reduction mode, return light not detected",
                            71: "Flash fired, red-eye reduction mode, return light detected",
                            73: "Flash fired, compulsory flash mode, red-eye reduction mode",
                            77: "Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",
                            79: "Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",
                            89: "Flash fired, auto mode, red-eye reduction mode",
                            93: "Flash fired, auto mode, return light not detected, red-eye reduction mode",
                            95: "Flash fired, auto mode, return light detected, red-eye reduction mode"
                        },
                        ExposureMode: {
                            0: "Auto exposure",
                            1: "Manual exposure",
                            2: "Auto bracket"
                        },
                        WhiteBalance: {
                            0: "Auto white balance",
                            1: "Manual white balance"
                        },
                        SceneCaptureType: {
                            0: "Standard",
                            1: "Landscape",
                            2: "Portrait",
                            3: "Night scene"
                        },
                        Contrast: {
                            0: "Normal",
                            1: "Soft",
                            2: "Hard"
                        },
                        Saturation: {
                            0: "Normal",
                            1: "Low saturation",
                            2: "High saturation"
                        },
                        Sharpness: {
                            0: "Normal",
                            1: "Soft",
                            2: "Hard"
                        },
                        GPSLatitudeRef: {
                            N: "North latitude",
                            S: "South latitude"
                        },
                        GPSLongitudeRef: {
                            E: "East longitude",
                            W: "West longitude"
                        }
                    }, d = {
                        tiffHeader: 10
                    }, m = d.tiffHeader, u = {
                        clear: this.clear
                    }, e.extend(this, {
                        read: function() {
                            try {
                                return r.prototype.read.apply(this, arguments)
                            } catch (e) {
                                throw new n.ImageError(n.ImageError.INVALID_META_ERR)
                            }
                        },
                        write: function() {
                            try {
                                return r.prototype.write.apply(this, arguments)
                            } catch (e) {
                                throw new n.ImageError(n.ImageError.INVALID_META_ERR)
                            }
                        },
                        UNDEFINED: function() {
                            return this.BYTE.apply(this, arguments)
                        },
                        RATIONAL: function(e) {
                            return this.LONG(e) / this.LONG(e + 4)
                        },
                        SRATIONAL: function(e) {
                            return this.SLONG(e) / this.SLONG(e + 4)
                        },
                        ASCII: function(e) {
                            return this.CHAR(e)
                        },
                        TIFF: function() {
                            return h || null
                        },
                        EXIF: function() {
                            var t = null;
                            if (d.exifIFD) {
                                try {
                                    t = a.call(this, d.exifIFD, c.exif)
                                } catch (i) {
                                    return null
                                }
                                if (t.ExifVersion && "array" === e.typeOf(t.ExifVersion)) {
                                    for (var n = 0, r = ""; n < t.ExifVersion.length; n++) r += String.fromCharCode(t.ExifVersion[n]);
                                    t.ExifVersion = r
                                }
                            }
                            return t
                        },
                        GPS: function() {
                            var t = null;
                            if (d.gpsIFD) {
                                try {
                                    t = a.call(this, d.gpsIFD, c.gps)
                                } catch (i) {
                                    return null
                                }
                                t.GPSVersionID && "array" === e.typeOf(t.GPSVersionID) && (t.GPSVersionID = t.GPSVersionID.join("."))
                            }
                            return t
                        },
                        thumb: function() {
                            if (d.IFD1) try {
                                var e = a.call(this, d.IFD1, c.thumb);
                                if ("JPEGInterchangeFormat" in e) return this.SEGMENT(d.tiffHeader + e.JPEGInterchangeFormat, e.JPEGInterchangeFormatLength)
                            } catch (t) {}
                            return null
                        },
                        setExif: function(e, t) {
                            return "PixelXDimension" !== e && "PixelYDimension" !== e ? !1 : s.call(this, "exif", e, t)
                        },
                        clear: function() {
                            u.clear(), o = c = l = h = d = u = null
                        }
                    }), 65505 !== this.SHORT(0) || "EXIF\0" !== this.STRING(4, 5).toUpperCase()) throw new n.ImageError(n.ImageError.INVALID_META_ERR);
                if (this.littleEndian = 18761 == this.SHORT(m), 42 !== this.SHORT(m += 2)) throw new n.ImageError(n.ImageError.INVALID_META_ERR);
                d.IFD0 = d.tiffHeader + this.LONG(m += 2), h = a.call(this, d.IFD0, c.tiff), "ExifIFDPointer" in h && (d.exifIFD = d.tiffHeader + h.ExifIFDPointer, delete h.ExifIFDPointer), "GPSInfoIFDPointer" in h && (d.gpsIFD = d.tiffHeader + h.GPSInfoIFDPointer, delete h.GPSInfoIFDPointer), e.isEmptyObj(h) && (h = null);
                var f = this.LONG(d.IFD0 + 12 * this.SHORT(d.IFD0) + 2);
                f && (d.IFD1 = d.tiffHeader + f)
            }
            return r.prototype = i.prototype, r
        }), n("moxie/runtime/html5/image/JPEG", ["moxie/core/utils/Basic", "moxie/core/Exceptions", "moxie/runtime/html5/image/JPEGHeaders", "moxie/runtime/html5/utils/BinaryReader", "moxie/runtime/html5/image/ExifParser"], function(e, t, i, n, r) {
            function o(o) {
                function a(e) {
                    var t, i, n = 0;
                    for (e || (e = c); n <= e.length();) {
                        if (t = e.SHORT(n += 2), t >= 65472 && 65475 >= t) return n += 5, {
                            height: e.SHORT(n),
                            width: e.SHORT(n += 2)
                        };
                        i = e.SHORT(n += 2), n += i - 2
                    }
                    return null
                }

                function s() {
                    var e, t, i = d.thumb();
                    return i && (e = new n(i), t = a(e), e.clear(), t) ? (t.data = i, t) : null
                }

                function u() {
                    d && l && c && (d.clear(), l.purge(), c.clear(), m = l = d = c = null)
                }
                var c, l, d, m;
                if (c = new n(o), 65496 !== c.SHORT(0)) throw new t.ImageError(t.ImageError.WRONG_FORMAT);
                l = new i(o);
                try {
                    d = new r(l.get("app1")[0])
                } catch (h) {}
                m = a.call(this), e.extend(this, {
                    type: "image/jpeg",
                    size: c.length(),
                    width: m && m.width || 0,
                    height: m && m.height || 0,
                    setExif: function(t, i) {
                        return d ? ("object" === e.typeOf(t) ? e.each(t, function(e, t) {
                            d.setExif(t, e)
                        }) : d.setExif(t, i), l.set("app1", d.SEGMENT()), void 0) : !1
                    },
                    writeHeaders: function() {
                        return arguments.length ? l.restore(arguments[0]) : l.restore(o)
                    },
                    stripHeaders: function(e) {
                        return l.strip(e)
                    },
                    purge: function() {
                        u.call(this)
                    }
                }), d && (this.meta = {
                    tiff: d.TIFF(),
                    exif: d.EXIF(),
                    gps: d.GPS(),
                    thumb: s()
                })
            }
            return o
        }), n("moxie/runtime/html5/image/PNG", ["moxie/core/Exceptions", "moxie/core/utils/Basic", "moxie/runtime/html5/utils/BinaryReader"], function(e, t, i) {
            function n(n) {
                function r() {
                    var e, t;
                    return e = a.call(this, 8), "IHDR" == e.type ? (t = e.start, {
                        width: s.LONG(t),
                        height: s.LONG(t += 4)
                    }) : null
                }

                function o() {
                    s && (s.clear(), n = l = u = c = s = null)
                }

                function a(e) {
                    var t, i, n, r;
                    return t = s.LONG(e), i = s.STRING(e += 4, 4), n = e += 4, r = s.LONG(e + t), {
                        length: t,
                        type: i,
                        start: n,
                        CRC: r
                    }
                }
                var s, u, c, l;
                s = new i(n),
                    function() {
                        var t = 0,
                            i = 0,
                            n = [35152, 20039, 3338, 6666];
                        for (i = 0; i < n.length; i++, t += 2)
                            if (n[i] != s.SHORT(t)) throw new e.ImageError(e.ImageError.WRONG_FORMAT)
                    }(), l = r.call(this), t.extend(this, {
                        type: "image/png",
                        size: s.length(),
                        width: l.width,
                        height: l.height,
                        purge: function() {
                            o.call(this)
                        }
                    }), o.call(this)
            }
            return n
        }), n("moxie/runtime/html5/image/ImageInfo", ["moxie/core/utils/Basic", "moxie/core/Exceptions", "moxie/runtime/html5/image/JPEG", "moxie/runtime/html5/image/PNG"], function(e, t, i, n) {
            return function(r) {
                var o, a = [i, n];
                o = function() {
                    for (var e = 0; e < a.length; e++) try {
                        return new a[e](r)
                    } catch (i) {}
                    throw new t.ImageError(t.ImageError.WRONG_FORMAT)
                }(), e.extend(this, {
                    type: "",
                    size: 0,
                    width: 0,
                    height: 0,
                    setExif: function() {},
                    writeHeaders: function(e) {
                        return e
                    },
                    stripHeaders: function(e) {
                        return e
                    },
                    purge: function() {
                        r = null
                    }
                }), e.extend(this, o), this.purge = function() {
                    o.purge(), o = null
                }
            }
        }), n("moxie/runtime/html5/image/ResizerCanvas", [], function() {
            function e(i, n, r) {
                var o = i.width > i.height ? "width" : "height",
                    a = Math.round(i[o] * n),
                    s = !1;
                "nearest" !== r && (.5 > n || n > 2) && (n = .5 > n ? .5 : 2, s = !0);
                var u = t(i, n);
                return s ? e(u, a / u[o], r) : u
            }

            function t(e, t) {
                var i = e.width,
                    n = e.height,
                    r = Math.round(i * t),
                    o = Math.round(n * t),
                    a = document.createElement("canvas");
                return a.width = r, a.height = o, a.getContext("2d").drawImage(e, 0, 0, i, n, 0, 0, r, o), e = null, a
            }
            return {
                scale: e
            }
        }), n("moxie/runtime/html5/image/Image", ["moxie/runtime/html5/Runtime", "moxie/core/utils/Basic", "moxie/core/Exceptions", "moxie/core/utils/Encode", "moxie/file/Blob", "moxie/file/File", "moxie/runtime/html5/image/ImageInfo", "moxie/runtime/html5/image/ResizerCanvas", "moxie/core/utils/Mime", "moxie/core/utils/Env"], function(e, t, i, n, r, o, a, s, u) {
            function c() {
                function e() {
                    if (!v && !g) throw new i.ImageError(i.DOMException.INVALID_STATE_ERR);
                    return v || g
                }

                function c() {
                    var t = e();
                    return "canvas" == t.nodeName.toLowerCase() ? t : (v = document.createElement("canvas"), v.width = t.width, v.height = t.height, v.getContext("2d").drawImage(t, 0, 0), v)
                }

                function l(e) {
                    return n.atob(e.substring(e.indexOf("base64,") + 7))
                }

                function d(e, t) {
                    return "data:" + (t || "") + ";base64," + n.btoa(e)
                }

                function m(e) {
                    var t = this;
                    g = new Image, g.onerror = function() {
                        p.call(this), t.trigger("error", i.ImageError.WRONG_FORMAT)
                    }, g.onload = function() {
                        t.trigger("load")
                    }, g.src = "data:" == e.substr(0, 5) ? e : d(e, y.type)
                }

                function h(e, t) {
                    var n, r = this;
                    return window.FileReader ? (n = new FileReader, n.onload = function() {
                        t.call(r, this.result)
                    }, n.onerror = function() {
                        r.trigger("error", i.ImageError.WRONG_FORMAT)
                    }, n.readAsDataURL(e), void 0) : t.call(this, e.getAsDataURL())
                }

                function f(e, i) {
                    var n = Math.PI / 180,
                        r = document.createElement("canvas"),
                        o = r.getContext("2d"),
                        a = e.width,
                        s = e.height;
                    switch (t.inArray(i, [5, 6, 7, 8]) > -1 ? (r.width = s, r.height = a) : (r.width = a, r.height = s), i) {
                        case 2:
                            o.translate(a, 0), o.scale(-1, 1);
                            break;
                        case 3:
                            o.translate(a, s), o.rotate(180 * n);
                            break;
                        case 4:
                            o.translate(0, s), o.scale(1, -1);
                            break;
                        case 5:
                            o.rotate(90 * n), o.scale(1, -1);
                            break;
                        case 6:
                            o.rotate(90 * n), o.translate(0, -s);
                            break;
                        case 7:
                            o.rotate(90 * n), o.translate(a, -s), o.scale(-1, 1);
                            break;
                        case 8:
                            o.rotate(-90 * n), o.translate(-a, 0)
                    }
                    return o.drawImage(e, 0, 0, a, s), r
                }

                function p() {
                    x && (x.purge(), x = null), w = g = v = y = null, b = !1
                }
                var g, x, v, w, y, E = this,
                    b = !1,
                    _ = !0;
                t.extend(this, {
                    loadFromBlob: function(e) {
                        var t = this.getRuntime(),
                            n = arguments.length > 1 ? arguments[1] : !0;
                        if (!t.can("access_binary")) throw new i.RuntimeError(i.RuntimeError.NOT_SUPPORTED_ERR);
                        return y = e, e.isDetached() ? (w = e.getSource(), m.call(this, w), void 0) : (h.call(this, e.getSource(), function(e) {
                            n && (w = l(e)), m.call(this, e)
                        }), void 0)
                    },
                    loadFromImage: function(e, t) {
                        this.meta = e.meta, y = new o(null, {
                            name: e.name,
                            size: e.size,
                            type: e.type
                        }), m.call(this, t ? w = e.getAsBinaryString() : e.getAsDataURL())
                    },
                    getInfo: function() {
                        var t, i = this.getRuntime();
                        return !x && w && i.can("access_image_binary") && (x = new a(w)), t = {
                            width: e().width || 0,
                            height: e().height || 0,
                            type: y.type || u.getFileMime(y.name),
                            size: w && w.length || y.size || 0,
                            name: y.name || "",
                            meta: null
                        }, _ && (t.meta = x && x.meta || this.meta || {}, !t.meta || !t.meta.thumb || t.meta.thumb.data instanceof r || (t.meta.thumb.data = new r(null, {
                            type: "image/jpeg",
                            data: t.meta.thumb.data
                        }))), t
                    },
                    resize: function(t, i, n) {
                        var r = document.createElement("canvas");
                        if (r.width = t.width, r.height = t.height, r.getContext("2d").drawImage(e(), t.x, t.y, t.width, t.height, 0, 0, r.width, r.height), v = s.scale(r, i), _ = n.preserveHeaders, !_) {
                            var o = this.meta && this.meta.tiff && this.meta.tiff.Orientation || 1;
                            v = f(v, o)
                        }
                        this.width = v.width, this.height = v.height, b = !0, this.trigger("Resize")
                    },
                    getAsCanvas: function() {
                        return v || (v = c()), v.id = this.uid + "_canvas", v
                    },
                    getAsBlob: function(e, t) {
                        return e !== this.type ? (b = !0, new o(null, {
                            name: y.name || "",
                            type: e,
                            data: E.getAsDataURL(e, t)
                        })) : new o(null, {
                            name: y.name || "",
                            type: e,
                            data: E.getAsBinaryString(e, t)
                        })
                    },
                    getAsDataURL: function(e) {
                        var t = arguments[1] || 90;
                        if (!b) return g.src;
                        if (c(), "image/jpeg" !== e) return v.toDataURL("image/png");
                        try {
                            return v.toDataURL("image/jpeg", t / 100)
                        } catch (i) {
                            return v.toDataURL("image/jpeg")
                        }
                    },
                    getAsBinaryString: function(e, t) {
                        if (!b) return w || (w = l(E.getAsDataURL(e, t))), w;
                        if ("image/jpeg" !== e) w = l(E.getAsDataURL(e, t));
                        else {
                            var i;
                            t || (t = 90), c();
                            try {
                                i = v.toDataURL("image/jpeg", t / 100)
                            } catch (n) {
                                i = v.toDataURL("image/jpeg")
                            }
                            w = l(i), x && (w = x.stripHeaders(w), _ && (x.meta && x.meta.exif && x.setExif({
                                PixelXDimension: this.width,
                                PixelYDimension: this.height
                            }), w = x.writeHeaders(w)), x.purge(), x = null)
                        }
                        return b = !1, w
                    },
                    destroy: function() {
                        E = null, p.call(this), this.getRuntime().getShim().removeInstance(this.uid)
                    }
                })
            }
            return e.Image = c
        }), n("moxie/runtime/flash/Runtime", ["moxie/core/utils/Basic", "moxie/core/utils/Env", "moxie/core/utils/Dom", "moxie/core/Exceptions", "moxie/runtime/Runtime"], function(e, t, i, n, o) {
            function a() {
                var e;
                try {
                    e = navigator.plugins["Shockwave Flash"], e = e.description
                } catch (t) {
                    try {
                        e = new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version")
                    } catch (i) {
                        e = "0.0"
                    }
                }
                return e = e.match(/\d+/g), parseFloat(e[0] + "." + e[1])
            }

            function s(e) {
                var n = i.get(e);
                n && "OBJECT" == n.nodeName && ("IE" === t.browser ? (n.style.display = "none", function r() {
                    4 == n.readyState ? u(e) : setTimeout(r, 10)
                }()) : n.parentNode.removeChild(n))
            }

            function u(e) {
                var t = i.get(e);
                if (t) {
                    for (var n in t) "function" == typeof t[n] && (t[n] = null);
                    t.parentNode.removeChild(t)
                }
            }

            function c(u) {
                var c, m = this;
                u = e.extend({
                    swf_url: t.swf_url
                }, u), o.call(this, u, l, {
                    access_binary: function(e) {
                        return e && "browser" === m.mode
                    },
                    access_image_binary: function(e) {
                        return e && "browser" === m.mode
                    },
                    display_media: o.capTest(r("moxie/image/Image")),
                    do_cors: o.capTrue,
                    drag_and_drop: !1,
                    report_upload_progress: function() {
                        return "client" === m.mode
                    },
                    resize_image: o.capTrue,
                    return_response_headers: !1,
                    return_response_type: function(t) {
                        return "json" === t && window.JSON ? !0 : !e.arrayDiff(t, ["", "text", "document"]) || "browser" === m.mode
                    },
                    return_status_code: function(t) {
                        return "browser" === m.mode || !e.arrayDiff(t, [200, 404])
                    },
                    select_file: o.capTrue,
                    select_multiple: o.capTrue,
                    send_binary_string: function(e) {
                        return e && "browser" === m.mode
                    },
                    send_browser_cookies: function(e) {
                        return e && "browser" === m.mode
                    },
                    send_custom_headers: function(e) {
                        return e && "browser" === m.mode
                    },
                    send_multipart: o.capTrue,
                    slice_blob: function(e) {
                        return e && "browser" === m.mode
                    },
                    stream_upload: function(e) {
                        return e && "browser" === m.mode
                    },
                    summon_file_dialog: !1,
                    upload_filesize: function(t) {
                        return e.parseSizeStr(t) <= 2097152 || "client" === m.mode
                    },
                    use_http_method: function(t) {
                        return !e.arrayDiff(t, ["GET", "POST"])
                    }
                }, {
                    access_binary: function(e) {
                        return e ? "browser" : "client"
                    },
                    access_image_binary: function(e) {
                        return e ? "browser" : "client"
                    },
                    report_upload_progress: function(e) {
                        return e ? "browser" : "client"
                    },
                    return_response_type: function(t) {
                        return e.arrayDiff(t, ["", "text", "json", "document"]) ? "browser" : ["client", "browser"]
                    },
                    return_status_code: function(t) {
                        return e.arrayDiff(t, [200, 404]) ? "browser" : ["client", "browser"]
                    },
                    send_binary_string: function(e) {
                        return e ? "browser" : "client"
                    },
                    send_browser_cookies: function(e) {
                        return e ? "browser" : "client"
                    },
                    send_custom_headers: function(e) {
                        return e ? "browser" : "client"
                    },
                    slice_blob: function(e) {
                        return e ? "browser" : "client"
                    },
                    stream_upload: function(e) {
                        return e ? "client" : "browser"
                    },
                    upload_filesize: function(t) {
                        return e.parseSizeStr(t) >= 2097152 ? "client" : "browser"
                    }
                }, "client"), a() < 11.3 && (this.mode = !1), e.extend(this, {
                    getShim: function() {
                        return i.get(this.uid)
                    },
                    shimExec: function(e, t) {
                        var i = [].slice.call(arguments, 2);
                        return m.getShim().exec(this.uid, e, t, i)
                    },
                    init: function() {
                        var i, r, a;
                        a = this.getShimContainer(), e.extend(a.style, {
                            position: "absolute",
                            top: "-8px",
                            left: "-8px",
                            width: "9px",
                            height: "9px",
                            overflow: "hidden"
                        }), i = '<object id="' + this.uid + '" type="application/x-shockwave-flash" data="' + u.swf_url + '" ', "IE" === t.browser && (i += 'classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" '), i += 'width="100%" height="100%" style="outline:0"><param name="movie" value="' + u.swf_url + '" />' + '<param name="flashvars" value="uid=' + escape(this.uid) + "&target=" + o.getGlobalEventTarget() + '" />' + '<param name="wmode" value="transparent" />' + '<param name="allowscriptaccess" value="always" />' + "</object>", "IE" === t.browser ? (r = document.createElement("div"), a.appendChild(r), r.outerHTML = i, r = a = null) : a.innerHTML = i, c = setTimeout(function() {
                            m && !m.initialized && m.trigger("Error", new n.RuntimeError(n.RuntimeError.NOT_INIT_ERR))
                        }, 5e3)
                    },
                    destroy: function(e) {
                        return function() {
                            s(m.uid), e.call(m), clearTimeout(c), u = c = e = m = null
                        }
                    }(this.destroy)
                }, d)
            }
            var l = "flash",
                d = {};
            return o.addConstructor(l, c), d
        }), n("moxie/runtime/flash/file/Blob", ["moxie/runtime/flash/Runtime", "moxie/file/Blob"], function(e, t) {
            var i = {
                slice: function(e, i, n, r) {
                    var o = this.getRuntime();
                    return 0 > i ? i = Math.max(e.size + i, 0) : i > 0 && (i = Math.min(i, e.size)), 0 > n ? n = Math.max(e.size + n, 0) : n > 0 && (n = Math.min(n, e.size)), e = o.shimExec.call(this, "Blob", "slice", i, n, r || ""), e && (e = new t(o.uid, e)), e
                }
            };
            return e.Blob = i
        }), n("moxie/runtime/flash/file/FileInput", ["moxie/runtime/flash/Runtime", "moxie/file/File", "moxie/core/utils/Dom", "moxie/core/utils/Basic"], function(e, t, i, n) {
            var r = {
                init: function(e) {
                    var r = this,
                        o = this.getRuntime(),
                        a = i.get(e.browse_button);
                    a && (a.setAttribute("tabindex", -1), a = null), this.bind("Change", function() {
                        var e = o.shimExec.call(r, "FileInput", "getFiles");
                        r.files = [], n.each(e, function(e) {
                            r.files.push(new t(o.uid, e))
                        })
                    }, 999), this.getRuntime().shimExec.call(this, "FileInput", "init", {
                        accept: e.accept,
                        multiple: e.multiple
                    }), this.trigger("ready")
                }
            };
            return e.FileInput = r
        }), n("moxie/runtime/flash/file/FileReader", ["moxie/runtime/flash/Runtime", "moxie/core/utils/Encode"], function(e, t) {
            function i(e, i) {
                switch (i) {
                    case "readAsText":
                        return t.atob(e, "utf8");
                    case "readAsBinaryString":
                        return t.atob(e);
                    case "readAsDataURL":
                        return e
                }
                return null
            }
            var n = {
                read: function(e, t) {
                    var n = this;
                    return n.result = "", "readAsDataURL" === e && (n.result = "data:" + (t.type || "") + ";base64,"), n.bind("Progress", function(t, r) {
                        r && (n.result += i(r, e))
                    }, 999), n.getRuntime().shimExec.call(this, "FileReader", "readAsBase64", t.uid)
                }
            };
            return e.FileReader = n
        }), n("moxie/runtime/flash/file/FileReaderSync", ["moxie/runtime/flash/Runtime", "moxie/core/utils/Encode"], function(e, t) {
            function i(e, i) {
                switch (i) {
                    case "readAsText":
                        return t.atob(e, "utf8");
                    case "readAsBinaryString":
                        return t.atob(e);
                    case "readAsDataURL":
                        return e
                }
                return null
            }
            var n = {
                read: function(e, t) {
                    var n, r = this.getRuntime();
                    return (n = r.shimExec.call(this, "FileReaderSync", "readAsBase64", t.uid)) ? ("readAsDataURL" === e && (n = "data:" + (t.type || "") + ";base64," + n), i(n, e, t.type)) : null
                }
            };
            return e.FileReaderSync = n
        }), n("moxie/runtime/flash/runtime/Transporter", ["moxie/runtime/flash/Runtime", "moxie/file/Blob"], function(e, t) {
            var i = {
                getAsBlob: function(e) {
                    var i = this.getRuntime(),
                        n = i.shimExec.call(this, "Transporter", "getAsBlob", e);
                    return n ? new t(i.uid, n) : null
                }
            };
            return e.Transporter = i
        }), n("moxie/runtime/flash/xhr/XMLHttpRequest", ["moxie/runtime/flash/Runtime", "moxie/core/utils/Basic", "moxie/file/Blob", "moxie/file/File", "moxie/file/FileReaderSync", "moxie/runtime/flash/file/FileReaderSync", "moxie/xhr/FormData", "moxie/runtime/Transporter", "moxie/runtime/flash/runtime/Transporter"], function(e, t, i, n, r, o, a, s) {
            var u = {
                send: function(e, n) {
                    function r() {
                        e.transport = l.mode, l.shimExec.call(c, "XMLHttpRequest", "send", e, n)
                    }

                    function o(e, t) {
                        l.shimExec.call(c, "XMLHttpRequest", "appendBlob", e, t.uid), n = null, r()
                    }

                    function u(e, t) {
                        var i = new s;
                        i.bind("TransportingComplete", function() {
                            t(this.result)
                        }), i.transport(e.getSource(), e.type, {
                            ruid: l.uid
                        })
                    }
                    var c = this,
                        l = c.getRuntime();
                    if (t.isEmptyObj(e.headers) || t.each(e.headers, function(e, t) {
                            l.shimExec.call(c, "XMLHttpRequest", "setRequestHeader", t, e.toString())
                        }), n instanceof a) {
                        var d;
                        if (n.each(function(e, t) {
                                e instanceof i ? d = t : l.shimExec.call(c, "XMLHttpRequest", "append", t, e)
                            }), n.hasBlob()) {
                            var m = n.getBlob();
                            m.isDetached() ? u(m, function(e) {
                                m.destroy(), o(d, e)
                            }) : o(d, m)
                        } else n = null, r()
                    } else n instanceof i ? n.isDetached() ? u(n, function(e) {
                        n.destroy(), n = e.uid, r()
                    }) : (n = n.uid, r()) : r()
                },
                getResponse: function(e) {
                    var i, o, a = this.getRuntime();
                    if (o = a.shimExec.call(this, "XMLHttpRequest", "getResponseAsBlob")) {
                        if (o = new n(a.uid, o), "blob" === e) return o;
                        try {
                            if (i = new r, ~t.inArray(e, ["", "text"])) return i.readAsText(o);
                            if ("json" === e && window.JSON) return JSON.parse(i.readAsText(o))
                        } finally {
                            o.destroy()
                        }
                    }
                    return null
                },
                abort: function() {
                    var e = this.getRuntime();
                    e.shimExec.call(this, "XMLHttpRequest", "abort"), this.dispatchEvent("readystatechange"), this.dispatchEvent("abort")
                }
            };
            return e.XMLHttpRequest = u
        }), n("moxie/runtime/flash/image/Image", ["moxie/runtime/flash/Runtime", "moxie/core/utils/Basic", "moxie/runtime/Transporter", "moxie/file/Blob", "moxie/file/FileReaderSync"], function(e, t, i, n, r) {
            var o = {
                loadFromBlob: function(e) {
                    function t(e) {
                        r.shimExec.call(n, "Image", "loadFromBlob", e.uid), n = r = null
                    }
                    var n = this,
                        r = n.getRuntime();
                    if (e.isDetached()) {
                        var o = new i;
                        o.bind("TransportingComplete", function() {
                            t(o.result.getSource())
                        }), o.transport(e.getSource(), e.type, {
                            ruid: r.uid
                        })
                    } else t(e.getSource())
                },
                loadFromImage: function(e) {
                    var t = this.getRuntime();
                    return t.shimExec.call(this, "Image", "loadFromImage", e.uid)
                },
                getInfo: function() {
                    var e = this.getRuntime(),
                        t = e.shimExec.call(this, "Image", "getInfo");
                    return t.meta && t.meta.thumb && t.meta.thumb.data && !(e.meta.thumb.data instanceof n) && (t.meta.thumb.data = new n(e.uid, t.meta.thumb.data)), t
                },
                getAsBlob: function(e, t) {
                    var i = this.getRuntime(),
                        r = i.shimExec.call(this, "Image", "getAsBlob", e, t);
                    return r ? new n(i.uid, r) : null
                },
                getAsDataURL: function() {
                    var e, t = this.getRuntime(),
                        i = t.Image.getAsBlob.apply(this, arguments);
                    return i ? (e = new r, e.readAsDataURL(i)) : null
                }
            };
            return e.Image = o
        }), n("moxie/runtime/silverlight/Runtime", ["moxie/core/utils/Basic", "moxie/core/utils/Env", "moxie/core/utils/Dom", "moxie/core/Exceptions", "moxie/runtime/Runtime"], function(e, t, i, n, o) {
            function a(e) {
                var t, i, n, r, o, a = !1,
                    s = null,
                    u = 0;
                try {
                    try {
                        s = new ActiveXObject("AgControl.AgControl"), s.IsVersionSupported(e) && (a = !0), s = null
                    } catch (c) {
                        var l = navigator.plugins["Silverlight Plug-In"];
                        if (l) {
                            for (t = l.description, "1.0.30226.2" === t && (t = "2.0.30226.2"), i = t.split("."); i.length > 3;) i.pop();
                            for (; i.length < 4;) i.push(0);
                            for (n = e.split("."); n.length > 4;) n.pop();
                            do r = parseInt(n[u], 10), o = parseInt(i[u], 10), u++; while (u < n.length && r === o);
                            o >= r && !isNaN(r) && (a = !0)
                        }
                    }
                } catch (d) {
                    a = !1
                }
                return a
            }

            function s(s) {
                var l, d = this;
                s = e.extend({
                    xap_url: t.xap_url
                }, s), o.call(this, s, u, {
                    access_binary: o.capTrue,
                    access_image_binary: o.capTrue,
                    display_media: o.capTest(r("moxie/image/Image")),
                    do_cors: o.capTrue,
                    drag_and_drop: !1,
                    report_upload_progress: o.capTrue,
                    resize_image: o.capTrue,
                    return_response_headers: function(e) {
                        return e && "client" === d.mode
                    },
                    return_response_type: function(e) {
                        return "json" !== e ? !0 : !!window.JSON
                    },
                    return_status_code: function(t) {
                        return "client" === d.mode || !e.arrayDiff(t, [200, 404])
                    },
                    select_file: o.capTrue,
                    select_multiple: o.capTrue,
                    send_binary_string: o.capTrue,
                    send_browser_cookies: function(e) {
                        return e && "browser" === d.mode
                    },
                    send_custom_headers: function(e) {
                        return e && "client" === d.mode
                    },
                    send_multipart: o.capTrue,
                    slice_blob: o.capTrue,
                    stream_upload: !0,
                    summon_file_dialog: !1,
                    upload_filesize: o.capTrue,
                    use_http_method: function(t) {
                        return "client" === d.mode || !e.arrayDiff(t, ["GET", "POST"])
                    }
                }, {
                    return_response_headers: function(e) {
                        return e ? "client" : "browser"
                    },
                    return_status_code: function(t) {
                        return e.arrayDiff(t, [200, 404]) ? "client" : ["client", "browser"]
                    },
                    send_browser_cookies: function(e) {
                        return e ? "browser" : "client"
                    },
                    send_custom_headers: function(e) {
                        return e ? "client" : "browser"
                    },
                    use_http_method: function(t) {
                        return e.arrayDiff(t, ["GET", "POST"]) ? "client" : ["client", "browser"]
                    }
                }), a("2.0.31005.0") && "Opera" !== t.browser || (this.mode = !1), e.extend(this, {
                    getShim: function() {
                        return i.get(this.uid).content.Moxie
                    },
                    shimExec: function(e, t) {
                        var i = [].slice.call(arguments, 2);
                        return d.getShim().exec(this.uid, e, t, i)
                    },
                    init: function() {
                        var e;
                        e = this.getShimContainer(), e.innerHTML = '<object id="' + this.uid + '" data="data:application/x-silverlight," type="application/x-silverlight-2" width="100%" height="100%" style="outline:none;">' + '<param name="source" value="' + s.xap_url + '"/>' + '<param name="background" value="Transparent"/>' + '<param name="windowless" value="true"/>' + '<param name="enablehtmlaccess" value="true"/>' + '<param name="initParams" value="uid=' + this.uid + ",target=" + o.getGlobalEventTarget() + '"/>' + "</object>", l = setTimeout(function() {
                            d && !d.initialized && d.trigger("Error", new n.RuntimeError(n.RuntimeError.NOT_INIT_ERR))
                        }, "Windows" !== t.OS ? 1e4 : 5e3)
                    },
                    destroy: function(e) {
                        return function() {
                            e.call(d), clearTimeout(l), s = l = e = d = null
                        }
                    }(this.destroy)
                }, c)
            }
            var u = "silverlight",
                c = {};
            return o.addConstructor(u, s), c
        }), n("moxie/runtime/silverlight/file/Blob", ["moxie/runtime/silverlight/Runtime", "moxie/core/utils/Basic", "moxie/runtime/flash/file/Blob"], function(e, t, i) {
            return e.Blob = t.extend({}, i)
        }), n("moxie/runtime/silverlight/file/FileInput", ["moxie/runtime/silverlight/Runtime", "moxie/file/File", "moxie/core/utils/Dom", "moxie/core/utils/Basic"], function(e, t, i, n) {
            function r(e) {
                for (var t = "", i = 0; i < e.length; i++) t += ("" !== t ? "|" : "") + e[i].title + " | *." + e[i].extensions.replace(/,/g, ";*.");
                return t
            }
            var o = {
                init: function(e) {
                    var o = this,
                        a = this.getRuntime(),
                        s = i.get(e.browse_button);
                    s && (s.setAttribute("tabindex", -1), s = null), this.bind("Change", function() {
                        var e = a.shimExec.call(o, "FileInput", "getFiles");
                        o.files = [], n.each(e, function(e) {
                            o.files.push(new t(a.uid, e))
                        })
                    }, 999), a.shimExec.call(this, "FileInput", "init", r(e.accept), e.multiple), this.trigger("ready")
                },
                setOption: function(e, t) {
                    "accept" == e && (t = r(t)), this.getRuntime().shimExec.call(this, "FileInput", "setOption", e, t)
                }
            };
            return e.FileInput = o
        }), n("moxie/runtime/silverlight/file/FileDrop", ["moxie/runtime/silverlight/Runtime", "moxie/core/utils/Dom", "moxie/core/utils/Events"], function(e, t, i) {
            var n = {
                init: function() {
                    var e, n = this,
                        r = n.getRuntime();
                    return e = r.getShimContainer(), i.addEvent(e, "dragover", function(e) {
                        e.preventDefault(), e.stopPropagation(), e.dataTransfer.dropEffect = "copy"
                    }, n.uid), i.addEvent(e, "dragenter", function(e) {
                        e.preventDefault();
                        var i = t.get(r.uid).dragEnter(e);
                        i && e.stopPropagation()
                    }, n.uid), i.addEvent(e, "drop", function(e) {
                        e.preventDefault();
                        var i = t.get(r.uid).dragDrop(e);
                        i && e.stopPropagation()
                    }, n.uid), r.shimExec.call(this, "FileDrop", "init")
                }
            };
            return e.FileDrop = n
        }), n("moxie/runtime/silverlight/file/FileReader", ["moxie/runtime/silverlight/Runtime", "moxie/core/utils/Basic", "moxie/runtime/flash/file/FileReader"], function(e, t, i) {
            return e.FileReader = t.extend({}, i)
        }), n("moxie/runtime/silverlight/file/FileReaderSync", ["moxie/runtime/silverlight/Runtime", "moxie/core/utils/Basic", "moxie/runtime/flash/file/FileReaderSync"], function(e, t, i) {
            return e.FileReaderSync = t.extend({}, i)
        }), n("moxie/runtime/silverlight/runtime/Transporter", ["moxie/runtime/silverlight/Runtime", "moxie/core/utils/Basic", "moxie/runtime/flash/runtime/Transporter"], function(e, t, i) {
            return e.Transporter = t.extend({}, i)
        }), n("moxie/runtime/silverlight/xhr/XMLHttpRequest", ["moxie/runtime/silverlight/Runtime", "moxie/core/utils/Basic", "moxie/runtime/flash/xhr/XMLHttpRequest", "moxie/runtime/silverlight/file/FileReaderSync", "moxie/runtime/silverlight/runtime/Transporter"], function(e, t, i) {
            return e.XMLHttpRequest = t.extend({}, i)
        }), n("moxie/runtime/silverlight/image/Image", ["moxie/runtime/silverlight/Runtime", "moxie/core/utils/Basic", "moxie/file/Blob", "moxie/runtime/flash/image/Image"], function(e, t, i, n) {
            return e.Image = t.extend({}, n, {
                getInfo: function() {
                    var e = this.getRuntime(),
                        n = ["tiff", "exif", "gps", "thumb"],
                        r = {
                            meta: {}
                        },
                        o = e.shimExec.call(this, "Image", "getInfo");
                    return o.meta && (t.each(n, function(e) {
                        var t, i, n, a, s = o.meta[e];
                        if (s && s.keys)
                            for (r.meta[e] = {}, i = 0, n = s.keys.length; n > i; i++) t = s.keys[i], a = s[t], a && (/^(\d|[1-9]\d+)$/.test(a) ? a = parseInt(a, 10) : /^\d*\.\d+$/.test(a) && (a = parseFloat(a)), r.meta[e][t] = a)
                    }), r.meta && r.meta.thumb && r.meta.thumb.data && !(e.meta.thumb.data instanceof i) && (r.meta.thumb.data = new i(e.uid, r.meta.thumb.data))), r.width = parseInt(o.width, 10), r.height = parseInt(o.height, 10), r.size = parseInt(o.size, 10), r.type = o.type, r.name = o.name, r
                },
                resize: function(e, t, i) {
                    this.getRuntime().shimExec.call(this, "Image", "resize", e.x, e.y, e.width, e.height, t, i.preserveHeaders, i.resample)
                }
            })
        }), n("moxie/runtime/html4/Runtime", ["moxie/core/utils/Basic", "moxie/core/Exceptions", "moxie/runtime/Runtime", "moxie/core/utils/Env"], function(e, t, i, n) {
            function o(t) {
                var o = this,
                    u = i.capTest,
                    c = i.capTrue;
                i.call(this, t, a, {
                    access_binary: u(window.FileReader || window.File && File.getAsDataURL),
                    access_image_binary: !1,
                    display_media: u((n.can("create_canvas") || n.can("use_data_uri_over32kb")) && r("moxie/image/Image")),
                    do_cors: !1,
                    drag_and_drop: !1,
                    filter_by_extension: u(function() {
                        return !("Chrome" === n.browser && n.verComp(n.version, 28, "<") || "IE" === n.browser && n.verComp(n.version, 10, "<") || "Safari" === n.browser && n.verComp(n.version, 7, "<") || "Firefox" === n.browser && n.verComp(n.version, 37, "<"))
                    }()),
                    resize_image: function() {
                        return s.Image && o.can("access_binary") && n.can("create_canvas")
                    },
                    report_upload_progress: !1,
                    return_response_headers: !1,
                    return_response_type: function(t) {
                        return "json" === t && window.JSON ? !0 : !!~e.inArray(t, ["text", "document", ""])
                    },
                    return_status_code: function(t) {
                        return !e.arrayDiff(t, [200, 404])
                    },
                    select_file: function() {
                        return n.can("use_fileinput")
                    },
                    select_multiple: !1,
                    send_binary_string: !1,
                    send_custom_headers: !1,
                    send_multipart: !0,
                    slice_blob: !1,
                    stream_upload: function() {
                        return o.can("select_file")
                    },
                    summon_file_dialog: function() {
                        return o.can("select_file") && !("Firefox" === n.browser && n.verComp(n.version, 4, "<") || "Opera" === n.browser && n.verComp(n.version, 12, "<") || "IE" === n.browser && n.verComp(n.version, 10, "<"))
                    },
                    upload_filesize: c,
                    use_http_method: function(t) {
                        return !e.arrayDiff(t, ["GET", "POST"])
                    }
                }), e.extend(this, {
                    init: function() {
                        this.trigger("Init")
                    },
                    destroy: function(e) {
                        return function() {
                            e.call(o), e = o = null
                        }
                    }(this.destroy)
                }), e.extend(this.getShim(), s)
            }
            var a = "html4",
                s = {};
            return i.addConstructor(a, o), s
        }), n("moxie/runtime/html4/file/FileInput", ["moxie/runtime/html4/Runtime", "moxie/file/File", "moxie/core/utils/Basic", "moxie/core/utils/Dom", "moxie/core/utils/Events", "moxie/core/utils/Mime", "moxie/core/utils/Env"], function(e, t, i, n, r, o, a) {
            function s() {
                function e() {
                    var o, c, d, m, h, f, p = this,
                        g = p.getRuntime();
                    f = i.guid("uid_"), o = g.getShimContainer(), s && (d = n.get(s + "_form"), d && (i.extend(d.style, {
                        top: "100%"
                    }), d.firstChild.setAttribute("tabindex", -1))), m = document.createElement("form"), m.setAttribute("id", f + "_form"), m.setAttribute("method", "post"), m.setAttribute("enctype", "multipart/form-data"), m.setAttribute("encoding", "multipart/form-data"), i.extend(m.style, {
                        overflow: "hidden",
                        position: "absolute",
                        top: 0,
                        left: 0,
                        width: "100%",
                        height: "100%"
                    }), h = document.createElement("input"), h.setAttribute("id", f), h.setAttribute("type", "file"), h.setAttribute("accept", l.join(",")), g.can("summon_file_dialog") && h.setAttribute("tabindex", -1), i.extend(h.style, {
                        fontSize: "999px",
                        opacity: 0
                    }), m.appendChild(h), o.appendChild(m), i.extend(h.style, {
                        position: "absolute",
                        top: 0,
                        left: 0,
                        width: "100%",
                        height: "100%"
                    }), "IE" === a.browser && a.verComp(a.version, 10, "<") && i.extend(h.style, {
                        filter: "progid:DXImageTransform.Microsoft.Alpha(opacity=0)"
                    }), h.onchange = function() {
                        var i;
                        this.value && (i = this.files ? this.files[0] : {
                            name: this.value
                        }, i = new t(g.uid, i), this.onchange = function() {}, e.call(p), p.files = [i], h.setAttribute("id", i.uid), m.setAttribute("id", i.uid + "_form"), p.trigger("change"), h = m = null)
                    }, g.can("summon_file_dialog") && (c = n.get(u.browse_button), r.removeEvent(c, "click", p.uid), r.addEvent(c, "click", function(e) {
                        h && !h.disabled && h.click(), e.preventDefault()
                    }, p.uid)), s = f, o = d = c = null
                }
                var s, u, c, l = [];
                i.extend(this, {
                    init: function(t) {
                        var i, a = this,
                            s = a.getRuntime();
                        u = t, l = o.extList2mimes(t.accept, s.can("filter_by_extension")), i = s.getShimContainer(),
                            function() {
                                var e, o, l;
                                e = n.get(t.browse_button), c = n.getStyle(e, "z-index") || "auto", s.can("summon_file_dialog") ? ("static" === n.getStyle(e, "position") && (e.style.position = "relative"), a.bind("Refresh", function() {
                                    o = parseInt(c, 10) || 1, n.get(u.browse_button).style.zIndex = o, this.getRuntime().getShimContainer().style.zIndex = o - 1
                                })) : e.setAttribute("tabindex", -1), l = s.can("summon_file_dialog") ? e : i, r.addEvent(l, "mouseover", function() {
                                    a.trigger("mouseenter")
                                }, a.uid), r.addEvent(l, "mouseout", function() {
                                    a.trigger("mouseleave")
                                }, a.uid), r.addEvent(l, "mousedown", function() {
                                    a.trigger("mousedown")
                                }, a.uid), r.addEvent(n.get(t.container), "mouseup", function() {
                                    a.trigger("mouseup")
                                }, a.uid), e = null
                            }(), e.call(this), i = null, a.trigger({
                                type: "ready",
                                async: !0
                            })
                    },
                    setOption: function(e, t) {
                        var i, r = this.getRuntime();
                        "accept" == e && (l = t.mimes || o.extList2mimes(t, r.can("filter_by_extension"))), i = n.get(s), i && i.setAttribute("accept", l.join(","))
                    },
                    disable: function(e) {
                        var t;
                        (t = n.get(s)) && (t.disabled = !!e)
                    },
                    destroy: function() {
                        var e = this.getRuntime(),
                            t = e.getShim(),
                            i = e.getShimContainer(),
                            o = u && n.get(u.container),
                            a = u && n.get(u.browse_button);
                        o && r.removeAllEvents(o, this.uid), a && (r.removeAllEvents(a, this.uid), a.style.zIndex = c), i && (r.removeAllEvents(i, this.uid), i.innerHTML = ""), t.removeInstance(this.uid), s = l = u = i = o = a = t = null
                    }
                })
            }
            return e.FileInput = s
        }), n("moxie/runtime/html4/file/FileReader", ["moxie/runtime/html4/Runtime", "moxie/runtime/html5/file/FileReader"], function(e, t) {
            return e.FileReader = t
        }), n("moxie/runtime/html4/xhr/XMLHttpRequest", ["moxie/runtime/html4/Runtime", "moxie/core/utils/Basic", "moxie/core/utils/Dom", "moxie/core/utils/Url", "moxie/core/Exceptions", "moxie/core/utils/Events", "moxie/file/Blob", "moxie/xhr/FormData"], function(e, t, i, n, r, o, a, s) {
            function u() {
                function e(e) {
                    var t, n, r, a, s = this,
                        u = !1;
                    if (l) {
                        if (t = l.id.replace(/_iframe$/, ""), n = i.get(t + "_form")) {
                            for (r = n.getElementsByTagName("input"), a = r.length; a--;) switch (r[a].getAttribute("type")) {
                                case "hidden":
                                    r[a].parentNode.removeChild(r[a]);
                                    break;
                                case "file":
                                    u = !0
                            }
                            r = [], u || n.parentNode.removeChild(n), n = null
                        }
                        setTimeout(function() {
                            o.removeEvent(l, "load", s.uid), l.parentNode && l.parentNode.removeChild(l);
                            var t = s.getRuntime().getShimContainer();
                            t.children.length || t.parentNode.removeChild(t), t = l = null, e()
                        }, 1)
                    }
                }
                var u, c, l;
                t.extend(this, {
                    send: function(d, m) {
                        function h() {
                            var i = w.getShimContainer() || document.body,
                                r = document.createElement("div");
                            r.innerHTML = '<iframe id="' + f + '_iframe" name="' + f + '_iframe" src="javascript:&quot;&quot;" style="display:none"></iframe>', l = r.firstChild, i.appendChild(l), o.addEvent(l, "load", function() {
                                var i;
                                try {
                                    i = l.contentWindow.document || l.contentDocument || window.frames[l.id].document, /^4(0[0-9]|1[0-7]|2[2346])\s/.test(i.title) ? u = i.title.replace(/^(\d+).*$/, "$1") : (u = 200, c = t.trim(i.body.innerHTML), v.trigger({
                                        type: "progress",
                                        loaded: c.length,
                                        total: c.length
                                    }), x && v.trigger({
                                        type: "uploadprogress",
                                        loaded: x.size || 1025,
                                        total: x.size || 1025
                                    }))
                                } catch (r) {
                                    if (!n.hasSameOrigin(d.url)) return e.call(v, function() {
                                        v.trigger("error")
                                    }), void 0;
                                    u = 404
                                }
                                e.call(v, function() {
                                    v.trigger("load")
                                })
                            }, v.uid)
                        }
                        var f, p, g, x, v = this,
                            w = v.getRuntime();
                        if (u = c = null, m instanceof s && m.hasBlob()) {
                            if (x = m.getBlob(), f = x.uid, g = i.get(f), p = i.get(f + "_form"), !p) throw new r.DOMException(r.DOMException.NOT_FOUND_ERR)
                        } else f = t.guid("uid_"), p = document.createElement("form"), p.setAttribute("id", f + "_form"), p.setAttribute("method", d.method), p.setAttribute("enctype", "multipart/form-data"), p.setAttribute("encoding", "multipart/form-data"), w.getShimContainer().appendChild(p);
                        p.setAttribute("target", f + "_iframe"), m instanceof s && m.each(function(e, i) {
                            if (e instanceof a) g && g.setAttribute("name", i);
                            else {
                                var n = document.createElement("input");
                                t.extend(n, {
                                    type: "hidden",
                                    name: i,
                                    value: e
                                }), g ? p.insertBefore(n, g) : p.appendChild(n)
                            }
                        }), p.setAttribute("action", d.url), h(), p.submit(), v.trigger("loadstart")
                    },
                    getStatus: function() {
                        return u
                    },
                    getResponse: function(e) {
                        if ("json" === e && "string" === t.typeOf(c) && window.JSON) try {
                            return JSON.parse(c.replace(/^\s*<pre[^>]*>/, "").replace(/<\/pre>\s*$/, ""))
                        } catch (i) {
                            return null
                        }
                        return c
                    },
                    abort: function() {
                        var t = this;
                        l && l.contentWindow && (l.contentWindow.stop ? l.contentWindow.stop() : l.contentWindow.document.execCommand ? l.contentWindow.document.execCommand("Stop") : l.src = "about:blank"), e.call(this, function() {
                            t.dispatchEvent("abort")
                        })
                    },
                    destroy: function() {
                        this.getRuntime().getShim().removeInstance(this.uid)
                    }
                })
            }
            return e.XMLHttpRequest = u
        }), n("moxie/runtime/html4/image/Image", ["moxie/runtime/html4/Runtime", "moxie/runtime/html5/image/Image"], function(e, t) {
            return e.Image = t
        }), a(["moxie/core/utils/Basic", "moxie/core/utils/Encode", "moxie/core/utils/Env", "moxie/core/Exceptions", "moxie/core/utils/Dom", "moxie/core/EventTarget", "moxie/runtime/Runtime", "moxie/runt