File Manager

Path: /proc/self/root/home/heznutpr/log.heznutprivate.com/auth/assets/js/

Viewing File: bundle.js

! 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(e, t) {
    "use strict";
    var n = [],
        i = Object.getPrototypeOf,
        r = n.slice,
        o = n.flat ? function(e) {
            return n.flat.call(e)
        } : function(e) {
            return n.concat.apply([], e)
        },
        a = n.push,
        s = n.indexOf,
        l = {},
        c = l.toString,
        u = l.hasOwnProperty,
        d = u.toString,
        h = d.call(Object),
        f = {},
        p = function(e) {
            return "function" == typeof e && "number" != typeof e.nodeType
        },
        g = function(e) {
            return null != e && e === e.window
        },
        m = e.document,
        v = {
            type: !0,
            src: !0,
            nonce: !0,
            noModule: !0
        };

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

    function b(e) {
        return null == e ? e + "" : "object" == typeof e || "function" == typeof e ? l[c.call(e)] || "object" : typeof e
    }
    var w = "3.5.1",
        x = function(e, t) {
            return new x.fn.init(e, t)
        };

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

        function se(e, t, i, r) {
            var o, s, c, u, d, p, v, y = t && t.ownerDocument,
                x = t ? t.nodeType : 9;
            if (i = i || [], "string" != typeof e || !e || 1 !== x && 9 !== x && 11 !== x) return i;
            if (!r && (h(t), t = t || f, g)) {
                if (11 !== x && (d = Z.exec(e)))
                    if (o = d[1]) {
                        if (9 === x) {
                            if (!(c = t.getElementById(o))) return i;
                            if (c.id === o) return i.push(c), i
                        } else if (y && (c = y.getElementById(o)) && b(t, c) && c.id === o) return i.push(c), i
                    } else {
                        if (d[2]) return P.apply(i, t.getElementsByTagName(e)), i;
                        if ((o = d[3]) && n.getElementsByClassName && t.getElementsByClassName) return P.apply(i, t.getElementsByClassName(o)), i
                    }
                if (n.qsa && !D[e + " "] && (!m || !m.test(e)) && (1 !== x || "object" !== t.nodeName.toLowerCase())) {
                    if (v = e, y = t, 1 === x && (U.test(e) || W.test(e))) {
                        for ((y = ee.test(e) && ve(t.parentNode) || t) === t && n.scope || ((u = t.getAttribute("id")) ? u = u.replace(ie, re) : t.setAttribute("id", u = w)), s = (p = a(e)).length; s--;) p[s] = (u ? "#" + u : ":scope") + " " + be(p[s]);
                        v = p.join(",")
                    }
                    try {
                        return P.apply(i, y.querySelectorAll(v)), i
                    } catch (t) {
                        D(e, !0)
                    } finally {
                        u === w && t.removeAttribute("id")
                    }
                }
            }
            return l(e.replace(B, "$1"), t, i, r)
        }

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

        function ce(e) {
            return e[w] = !0, e
        }

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

        function de(e, t) {
            for (var n = e.split("|"), r = n.length; r--;) i.attrHandle[n[r]] = t
        }

        function he(e, t) {
            var n = t && e,
                i = n && 1 === e.nodeType && 1 === t.nodeType && e.sourceIndex - t.sourceIndex;
            if (i) return i;
            if (n)
                for (; n = n.nextSibling;)
                    if (n === t) return -1;
            return e ? 1 : -1
        }

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

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

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

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

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

        function ye() {}

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

        function we(e, t, n) {
            var i = t.dir,
                r = t.next,
                o = r || i,
                a = n && "parentNode" === o,
                s = C++;
            return t.first ? function(t, n, r) {
                for (; t = t[i];)
                    if (1 === t.nodeType || a) return e(t, n, r);
                return !1
            } : function(t, n, l) {
                var c, u, d, h = [_, s];
                if (l) {
                    for (; t = t[i];)
                        if ((1 === t.nodeType || a) && e(t, n, l)) return !0
                } else
                    for (; t = t[i];)
                        if (1 === t.nodeType || a)
                            if (u = (d = t[w] || (t[w] = {}))[t.uniqueID] || (d[t.uniqueID] = {}), r && r === t.nodeName.toLowerCase()) t = t[i] || t;
                            else {
                                if ((c = u[o]) && c[0] === _ && c[1] === s) return h[2] = c[2];
                                if ((u[o] = h)[2] = e(t, n, l)) return !0
                            } return !1
            }
        }

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

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

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

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

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

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

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

    function N(e) {
        return e
    }

    function R(e) {
        throw e
    }

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

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

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

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

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

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

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

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

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

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

    function be(e, t, n, i, r) {
        for (var o, a, s, l, c, u, d = t.createDocumentFragment(), h = [], f = 0, p = e.length; f < p; f++)
            if ((o = e[f]) || 0 === o)
                if ("object" === b(o)) x.merge(h, o.nodeType ? [o] : o);
                else if (ye.test(o)) {
            for (a = a || d.appendChild(t.createElement("div")), s = (fe.exec(o) || ["", ""])[1].toLowerCase(), l = ge[s] || ge._default, a.innerHTML = l[1] + x.htmlPrefilter(o) + l[2], u = l[0]; u--;) a = a.lastChild;
            x.merge(h, a.childNodes), (a = d.firstChild).textContent = ""
        } else h.push(t.createTextNode(o));
        for (d.textContent = "", f = 0; o = h[f++];)
            if (i && -1 < x.inArray(o, i)) r && r.push(o);
            else if (c = re(o), a = me(d.appendChild(o), "script"), c && ve(a), n)
            for (u = 0; o = a[u++];) pe.test(o.type || "") && n.push(o);
        return d
    }
    var we = /^key/,
        xe = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
        _e = /^([^.]*)(?:\.(.+)|)/;

    function Ce() {
        return !0
    }

    function ke() {
        return !1
    }

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

    function Te(e, t, n, i, r, o) {
        var a, s;
        if ("object" == typeof t) {
            for (s in "string" != typeof n && (i = i || n, n = void 0), t) Te(e, s, n, i, t[s], o);
            return e
        }
        if (null == i && null == r ? (r = n, i = n = void 0) : null == r && ("string" == typeof n ? (r = i, i = void 0) : (r = i, i = n, n = void 0)), !1 === r) r = ke;
        else if (!r) return e;
        return 1 === o && (a = r, (r = function(e) {
            return x().off(e), a.apply(this, arguments)
        }).guid = a.guid || (a.guid = x.guid++)), e.each((function() {
            x.event.add(this, t, r, i, n)
        }))
    }

    function De(e, t, n) {
        n ? (G.set(e, t, !1), x.event.add(e, t, {
            namespace: !1,
            handler: function(e) {
                var i, o, a = G.get(this, t);
                if (1 & e.isTrigger && this[t]) {
                    if (a.length)(x.event.special[t] || {}).delegateType && e.stopPropagation();
                    else if (a = r.call(arguments), G.set(this, t, a), i = n(this, t), this[t](), a !== (o = G.get(this, t)) || i ? G.set(this, t, !1) : o = {}, a !== o) return e.stopImmediatePropagation(), e.preventDefault(), o.value
                } else a.length && (G.set(this, t, {
                    value: x.event.trigger(x.extend(a[0], x.Event.prototype), a.slice(1), this)
                }), e.stopImmediatePropagation())
            }
        })) : void 0 === G.get(e, t) && x.event.add(e, t, Ce)
    }
    x.event = {
        global: {},
        add: function(e, t, n, i, r) {
            var o, a, s, l, c, u, d, h, f, p, g, m = G.get(e);
            if (Y(e))
                for (n.handler && (n = (o = n).handler, r = o.selector), r && x.find.matchesSelector(ie, r), n.guid || (n.guid = x.guid++), (l = m.events) || (l = m.events = Object.create(null)), (a = m.handle) || (a = m.handle = function(t) {
                        return void 0 !== x && x.event.triggered !== t.type ? x.event.dispatch.apply(e, arguments) : void 0
                    }), c = (t = (t || "").match(F) || [""]).length; c--;) f = g = (s = _e.exec(t[c]) || [])[1], p = (s[2] || "").split(".").sort(), f && (d = x.event.special[f] || {}, f = (r ? d.delegateType : d.bindType) || f, d = x.event.special[f] || {}, u = x.extend({
                    type: f,
                    origType: g,
                    data: i,
                    handler: n,
                    guid: n.guid,
                    selector: r,
                    needsContext: r && x.expr.match.needsContext.test(r),
                    namespace: p.join(".")
                }, o), (h = l[f]) || ((h = l[f] = []).delegateCount = 0, d.setup && !1 !== d.setup.call(e, i, p, a) || e.addEventListener && e.addEventListener(f, a)), d.add && (d.add.call(e, u), u.handler.guid || (u.handler.guid = n.guid)), r ? h.splice(h.delegateCount++, 0, u) : h.push(u), x.event.global[f] = !0)
        },
        remove: function(e, t, n, i, r) {
            var o, a, s, l, c, u, d, h, f, p, g, m = G.hasData(e) && G.get(e);
            if (m && (l = m.events)) {
                for (c = (t = (t || "").match(F) || [""]).length; c--;)
                    if (f = g = (s = _e.exec(t[c]) || [])[1], p = (s[2] || "").split(".").sort(), f) {
                        for (d = x.event.special[f] || {}, h = l[f = (i ? d.delegateType : d.bindType) || f] || [], s = s[2] && new RegExp("(^|\\.)" + p.join("\\.(?:.*\\.|)") + "(\\.|$)"), a = o = h.length; o--;) u = h[o], !r && g !== u.origType || n && n.guid !== u.guid || s && !s.test(u.namespace) || i && i !== u.selector && ("**" !== i || !u.selector) || (h.splice(o, 1), u.selector && h.delegateCount--, d.remove && d.remove.call(e, u));
                        a && !h.length && (d.teardown && !1 !== d.teardown.call(e, p, m.handle) || x.removeEvent(e, f, m.handle), delete l[f])
                    } else
                        for (f in l) x.event.remove(e, f + t[c], n, i, !0);
                x.isEmptyObject(l) && G.remove(e, "handle events")
            }
        },
        dispatch: function(e) {
            var t, n, i, r, o, a, s = new Array(arguments.length),
                l = x.event.fix(e),
                c = (G.get(this, "events") || Object.create(null))[l.type] || [],
                u = x.event.special[l.type] || {};
            for (s[0] = l, t = 1; t < arguments.length; t++) s[t] = arguments[t];
            if (l.delegateTarget = this, !u.preDispatch || !1 !== u.preDispatch.call(this, l)) {
                for (a = x.event.handlers.call(this, l, c), t = 0;
                    (r = a[t++]) && !l.isPropagationStopped();)
                    for (l.currentTarget = r.elem, n = 0;
                        (o = r.handlers[n++]) && !l.isImmediatePropagationStopped();) l.rnamespace && !1 !== o.namespace && !l.rnamespace.test(o.namespace) || (l.handleObj = o, l.data = o.data, void 0 !== (i = ((x.event.special[o.origType] || {}).handle || o.handler).apply(r.elem, s)) && !1 === (l.result = i) && (l.preventDefault(), l.stopPropagation()));
                return u.postDispatch && u.postDispatch.call(this, l), l.result
            }
        },
        handlers: function(e, t) {
            var n, i, r, o, a, s = [],
                l = t.delegateCount,
                c = e.target;
            if (l && c.nodeType && !("click" === e.type && 1 <= e.button))
                for (; c !== this; c = c.parentNode || this)
                    if (1 === c.nodeType && ("click" !== e.type || !0 !== c.disabled)) {
                        for (o = [], a = {}, n = 0; n < l; n++) void 0 === a[r = (i = t[n]).selector + " "] && (a[r] = i.needsContext ? -1 < x(r, this).index(c) : x.find(r, this, null, [c]).length), a[r] && o.push(i);
                        o.length && s.push({
                            elem: c,
                            handlers: o
                        })
                    }
            return c = this, l < t.length && s.push({
                elem: c,
                handlers: t.slice(l)
            }), s
        },
        addProp: function(e, t) {
            Object.defineProperty(x.Event.prototype, e, {
                enumerable: !0,
                configurable: !0,
                get: p(t) ? function() {
                    if (this.originalEvent) return t(this.originalEvent)
                } : function() {
                    if (this.originalEvent) return this.originalEvent[e]
                },
                set: function(t) {
                    Object.defineProperty(this, e, {
                        enumerable: !0,
                        configurable: !0,
                        writable: !0,
                        value: t
                    })
                }
            })
        },
        fix: function(e) {
            return e[x.expando] ? e : new x.Event(e)
        },
        special: {
            load: {
                noBubble: !0
            },
            click: {
                setup: function(e) {
                    var t = this || e;
                    return he.test(t.type) && t.click && D(t, "input") && De(t, "click", Ce), !1
                },
                trigger: function(e) {
                    var t = this || e;
                    return he.test(t.type) && t.click && D(t, "input") && De(t, "click"), !0
                },
                _default: function(e) {
                    var t = e.target;
                    return he.test(t.type) && t.click && D(t, "input") && G.get(t, "click") || D(t, "a")
                }
            },
            beforeunload: {
                postDispatch: function(e) {
                    void 0 !== e.result && e.originalEvent && (e.originalEvent.returnValue = e.result)
                }
            }
        }
    }, x.removeEvent = function(e, t, n) {
        e.removeEventListener && e.removeEventListener(t, n)
    }, x.Event = function(e, t) {
        if (!(this instanceof x.Event)) return new x.Event(e, t);
        e && e.type ? (this.originalEvent = e, this.type = e.type, this.isDefaultPrevented = e.defaultPrevented || void 0 === e.defaultPrevented && !1 === e.returnValue ? Ce : ke, 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 && x.extend(this, t), this.timeStamp = e && e.timeStamp || Date.now(), this[x.expando] = !0
    }, x.Event.prototype = {
        constructor: x.Event,
        isDefaultPrevented: ke,
        isPropagationStopped: ke,
        isImmediatePropagationStopped: ke,
        isSimulated: !1,
        preventDefault: function() {
            var e = this.originalEvent;
            this.isDefaultPrevented = Ce, e && !this.isSimulated && e.preventDefault()
        },
        stopPropagation: function() {
            var e = this.originalEvent;
            this.isPropagationStopped = Ce, e && !this.isSimulated && e.stopPropagation()
        },
        stopImmediatePropagation: function() {
            var e = this.originalEvent;
            this.isImmediatePropagationStopped = Ce, e && !this.isSimulated && e.stopImmediatePropagation(), this.stopPropagation()
        }
    }, x.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: function(e) {
            var t = e.button;
            return null == e.which && we.test(e.type) ? null != e.charCode ? e.charCode : e.keyCode : !e.which && void 0 !== t && xe.test(e.type) ? 1 & t ? 1 : 2 & t ? 3 : 4 & t ? 2 : 0 : e.which
        }
    }, x.event.addProp), x.each({
        focus: "focusin",
        blur: "focusout"
    }, (function(e, t) {
        x.event.special[e] = {
            setup: function() {
                return De(this, e, Se), !1
            },
            trigger: function() {
                return De(this, e), !0
            },
            delegateType: t
        }
    })), x.each({
        mouseenter: "mouseover",
        mouseleave: "mouseout",
        pointerenter: "pointerover",
        pointerleave: "pointerout"
    }, (function(e, t) {
        x.event.special[e] = {
            delegateType: t,
            bindType: t,
            handle: function(e) {
                var n, i = e.relatedTarget,
                    r = e.handleObj;
                return i && (i === this || x.contains(this, i)) || (e.type = r.origType, n = r.handler.apply(this, arguments), e.type = t), n
            }
        }
    })), x.fn.extend({
        on: function(e, t, n, i) {
            return Te(this, e, t, n, i)
        },
        one: function(e, t, n, i) {
            return Te(this, e, t, n, i, 1)
        },
        off: function(e, t, n) {
            var i, r;
            if (e && e.preventDefault && e.handleObj) return i = e.handleObj, x(e.delegateTarget).off(i.namespace ? i.origType + "." + i.namespace : i.origType, i.selector, i.handler), this;
            if ("object" == typeof e) {
                for (r in e) this.off(r, t, e[r]);
                return this
            }
            return !1 !== t && "function" != typeof t || (n = t, t = void 0), !1 === n && (n = ke), this.each((function() {
                x.event.remove(this, e, n, t)
            }))
        }
    });
    var Ee = /<script|<style|<link/i,
        Ae = /checked\s*(?:[^=]|=\s*.checked.)/i,
        Me = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;

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

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

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

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

    function Fe(e, t, n, i) {
        t = o(t);
        var r, a, s, l, c, u, d = 0,
            h = e.length,
            g = h - 1,
            m = t[0],
            v = p(m);
        if (v || 1 < h && "string" == typeof m && !f.checkClone && Ae.test(m)) return e.each((function(r) {
            var o = e.eq(r);
            v && (t[0] = m.call(this, r, o.html())), Fe(o, t, n, i)
        }));
        if (h && (a = (r = be(t, e[0].ownerDocument, !1, e, i)).firstChild, 1 === r.childNodes.length && (r = a), a || i)) {
            for (l = (s = x.map(me(r, "script"), Ie)).length; d < h; d++) c = r, d !== g && (c = x.clone(c, !0, !0), l && x.merge(s, me(c, "script"))), n.call(e[d], c, d);
            if (l)
                for (u = s[s.length - 1].ownerDocument, x.map(s, Pe), d = 0; d < l; d++) c = s[d], pe.test(c.type || "") && !G.access(c, "globalEval") && x.contains(u, c) && (c.src && "module" !== (c.type || "").toLowerCase() ? x._evalUrl && !c.noModule && x._evalUrl(c.src, {
                    nonce: c.nonce || c.getAttribute("nonce")
                }, u) : y(c.textContent.replace(Me, ""), c, u))
        }
        return e
    }

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

    function He(e, t, n) {
        var i, r, o, a, s = e.style;
        return (n = n || je(e)) && ("" !== (a = n.getPropertyValue(t) || n[t]) || re(e) || (a = x.style(e, t)), !f.pixelBoxStyles() && Re.test(a) && ze.test(t) && (i = s.width, r = s.minWidth, o = s.maxWidth, s.minWidth = s.maxWidth = s.width = a, a = n.width, s.width = i, s.minWidth = r, s.maxWidth = o)), void 0 !== a ? a + "" : a
    }

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

        function n(e) {
            return Math.round(parseFloat(e))
        }
        var i, r, o, a, s, l, c = m.createElement("div"),
            u = m.createElement("div");
        u.style && (u.style.backgroundClip = "content-box", u.cloneNode(!0).style.backgroundClip = "", f.clearCloneStyle = "content-box" === u.style.backgroundClip, x.extend(f, {
            boxSizingReliable: function() {
                return t(), r
            },
            pixelBoxStyles: function() {
                return t(), a
            },
            pixelPosition: function() {
                return t(), i
            },
            reliableMarginLeft: function() {
                return t(), l
            },
            scrollboxSize: function() {
                return t(), o
            },
            reliableTrDimensions: function() {
                var t, n, i, r;
                return null == s && (t = m.createElement("table"), n = m.createElement("tr"), i = m.createElement("div"), t.style.cssText = "position:absolute;left:-11111px", n.style.height = "1px", i.style.height = "9px", ie.appendChild(t).appendChild(n).appendChild(i), r = e.getComputedStyle(n), s = 3 < parseInt(r.height), ie.removeChild(t)), s
            }
        }))
    }();
    var qe = ["Webkit", "Moz", "ms"],
        We = m.createElement("div").style,
        Ue = {};

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

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

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

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

    function et(e, t, n, i, r) {
        return new et.prototype.init(e, t, n, i, r)
    }
    x.extend({
        cssHooks: {
            opacity: {
                get: function(e, t) {
                    if (t) {
                        var n = He(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, i) {
            if (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) {
                var r, o, a, s = V(t),
                    l = Xe.test(t),
                    c = e.style;
                if (l || (t = Ve(s)), a = x.cssHooks[t] || x.cssHooks[s], void 0 === n) return a && "get" in a && void 0 !== (r = a.get(e, !1, i)) ? r : c[t];
                "string" == (o = typeof n) && (r = te.exec(n)) && r[1] && (n = se(e, t, r), o = "number"), null != n && n == n && ("number" !== o || l || (n += r && r[3] || (x.cssNumber[s] ? "" : "px")), f.clearCloneStyle || "" !== n || 0 !== t.indexOf("background") || (c[t] = "inherit"), a && "set" in a && void 0 === (n = a.set(e, n, i)) || (l ? c.setProperty(t, n) : c[t] = n))
            }
        },
        css: function(e, t, n, i) {
            var r, o, a, s = V(t);
            return Xe.test(t) || (t = Ve(s)), (a = x.cssHooks[t] || x.cssHooks[s]) && "get" in a && (r = a.get(e, !0, n)), void 0 === r && (r = He(e, t, i)), "normal" === r && t in Qe && (r = Qe[t]), "" === n || n ? (o = parseFloat(r), !0 === n || isFinite(o) ? o || 0 : r) : r
        }
    }), x.each(["height", "width"], (function(e, t) {
        x.cssHooks[t] = {
            get: function(e, n, i) {
                if (n) return !Ye.test(x.css(e, "display")) || e.getClientRects().length && e.getBoundingClientRect().width ? Ze(e, t, i) : $e(e, Ge, (function() {
                    return Ze(e, t, i)
                }))
            },
            set: function(e, n, i) {
                var r, o = je(e),
                    a = !f.scrollboxSize() && "absolute" === o.position,
                    s = (a || i) && "border-box" === x.css(e, "boxSizing", !1, o),
                    l = i ? Je(e, t, i, s, o) : 0;
                return s && a && (l -= Math.ceil(e["offset" + t[0].toUpperCase() + t.slice(1)] - parseFloat(o[t]) - Je(e, t, "border", !1, o) - .5)), l && (r = te.exec(n)) && "px" !== (r[3] || "px") && (e.style[t] = n, n = x.css(e, t)), Ke(0, n, l)
            }
        }
    })), x.cssHooks.marginLeft = Be(f.reliableMarginLeft, (function(e, t) {
        if (t) return (parseFloat(He(e, "marginLeft")) || e.getBoundingClientRect().left - $e(e, {
            marginLeft: 0
        }, (function() {
            return e.getBoundingClientRect().left
        }))) + "px"
    })), x.each({
        margin: "",
        padding: "",
        border: "Width"
    }, (function(e, t) {
        x.cssHooks[e + t] = {
            expand: function(n) {
                for (var i = 0, r = {}, o = "string" == typeof n ? n.split(" ") : [n]; i < 4; i++) r[e + ne[i] + t] = o[i] || o[i - 2] || o[0];
                return r
            }
        }, "margin" !== e && (x.cssHooks[e + t].set = Ke)
    })), x.fn.extend({
        css: function(e, t) {
            return B(this, (function(e, t, n) {
                var i, r, o = {},
                    a = 0;
                if (Array.isArray(t)) {
                    for (i = je(e), r = t.length; a < r; a++) o[t[a]] = x.css(e, t[a], !1, i);
                    return o
                }
                return void 0 !== n ? x.style(e, t, n) : x.css(e, t)
            }), e, t, 1 < arguments.length)
        }
    }), ((x.Tween = et).prototype = {
        constructor: et,
        init: function(e, t, n, i, r, o) {
            this.elem = e, this.prop = n, this.easing = r || x.easing._default, this.options = t, this.start = this.now = this.cur(), this.end = i, this.unit = o || (x.cssNumber[n] ? "" : "px")
        },
        cur: function() {
            var e = et.propHooks[this.prop];
            return e && e.get ? e.get(this) : et.propHooks._default.get(this)
        },
        run: function(e) {
            var t, n = et.propHooks[this.prop];
            return this.options.duration ? this.pos = t = x.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) : et.propHooks._default.set(this), this
        }
    }).init.prototype = et.prototype, (et.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 = x.css(e.elem, e.prop, "")) && "auto" !== t ? t : 0
            },
            set: function(e) {
                x.fx.step[e.prop] ? x.fx.step[e.prop](e) : 1 !== e.elem.nodeType || !x.cssHooks[e.prop] && null == e.elem.style[Ve(e.prop)] ? e.elem[e.prop] = e.now : x.style(e.elem, e.prop, e.now + e.unit)
            }
        }
    }).scrollTop = et.propHooks.scrollLeft = {
        set: function(e) {
            e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now)
        }
    }, x.easing = {
        linear: function(e) {
            return e
        },
        swing: function(e) {
            return .5 - Math.cos(e * Math.PI) / 2
        },
        _default: "swing"
    }, x.fx = et.prototype.init, x.fx.step = {};
    var tt, nt, it, rt, ot = /^(?:toggle|show|hide)$/,
        at = /queueHooks$/;

    function st() {
        nt && (!1 === m.hidden && e.requestAnimationFrame ? e.requestAnimationFrame(st) : e.setTimeout(st, x.fx.interval), x.fx.tick())
    }

    function lt() {
        return e.setTimeout((function() {
            tt = void 0
        })), tt = Date.now()
    }

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

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

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

    function mt(e) {
        return (e.match(F) || []).join(" ")
    }

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

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

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

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

    function Ht(e, t, n, i) {
        var r = {},
            o = e === Rt;

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

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

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

    function n(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function i(e, t, i) {
        return t && n(e.prototype, t), i && n(e, i), e
    }

    function r() {
        return (r = Object.assign || function(e) {
            for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var i in n) Object.prototype.hasOwnProperty.call(n, i) && (e[i] = n[i])
            }
            return e
        }).apply(this, arguments)
    }
    t = t && Object.prototype.hasOwnProperty.call(t, "default") ? t.default : t;
    var o = {
        TRANSITION_END: "bsTransitionEnd",
        getUID: function(e) {
            do {
                e += ~~(1e6 * Math.random())
            } while (document.getElementById(e));
            return e
        },
        getSelectorFromElement: function(e) {
            var t = e.getAttribute("data-target");
            if (!t || "#" === t) {
                var n = e.getAttribute("href");
                t = n && "#" !== n ? n.trim() : ""
            }
            try {
                return document.querySelector(t) ? t : null
            } catch (e) {
                return null
            }
        },
        getTransitionDurationFromElement: function(e) {
            if (!e) return 0;
            var n = t(e).css("transition-duration"),
                i = t(e).css("transition-delay"),
                r = parseFloat(n),
                o = parseFloat(i);
            return r || o ? (n = n.split(",")[0], i = i.split(",")[0], 1e3 * (parseFloat(n) + parseFloat(i))) : 0
        },
        reflow: function(e) {
            return e.offsetHeight
        },
        triggerTransitionEnd: function(e) {
            t(e).trigger("transitionend")
        },
        supportsTransitionEnd: function() {
            return Boolean("transitionend")
        },
        isElement: function(e) {
            return (e[0] || e).nodeType
        },
        typeCheckConfig: function(e, t, n) {
            for (var i in n)
                if (Object.prototype.hasOwnProperty.call(n, i)) {
                    var r = n[i],
                        a = t[i],
                        s = a && o.isElement(a) ? "element" : null === (l = a) || void 0 === l ? "" + l : {}.toString.call(l).match(/\s([a-z]+)/i)[1].toLowerCase();
                    if (!new RegExp(r).test(s)) throw new Error(e.toUpperCase() + ': Option "' + i + '" provided type "' + s + '" but expected type "' + r + '".')
                }
            var l
        },
        findShadowRoot: function(e) {
            if (!document.documentElement.attachShadow) return null;
            if ("function" == typeof e.getRootNode) {
                var t = e.getRootNode();
                return t instanceof ShadowRoot ? t : null
            }
            return e instanceof ShadowRoot ? e : e.parentNode ? o.findShadowRoot(e.parentNode) : null
        },
        jQueryDetection: function() {
            if (void 0 === t) throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");
            var e = t.fn.jquery.split(" ")[0].split(".");
            if (e[0] < 2 && e[1] < 9 || 1 === e[0] && 9 === e[1] && e[2] < 1 || e[0] >= 4) throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")
        }
    };
    o.jQueryDetection(), t.fn.emulateTransitionEnd = function(e) {
        var n = this,
            i = !1;
        return t(this).one(o.TRANSITION_END, (function() {
            i = !0
        })), setTimeout((function() {
            i || o.triggerTransitionEnd(n)
        }), e), this
    }, t.event.special[o.TRANSITION_END] = {
        bindType: "transitionend",
        delegateType: "transitionend",
        handle: function(e) {
            if (t(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
        }
    };
    var a = "alert",
        s = t.fn[a],
        l = function() {
            function e(e) {
                this._element = e
            }
            var n = e.prototype;
            return n.close = function(e) {
                var t = this._element;
                e && (t = this._getRootElement(e)), this._triggerCloseEvent(t).isDefaultPrevented() || this._removeElement(t)
            }, n.dispose = function() {
                t.removeData(this._element, "bs.alert"), this._element = null
            }, n._getRootElement = function(e) {
                var n = o.getSelectorFromElement(e),
                    i = !1;
                return n && (i = document.querySelector(n)), i || (i = t(e).closest(".alert")[0]), i
            }, n._triggerCloseEvent = function(e) {
                var n = t.Event("close.bs.alert");
                return t(e).trigger(n), n
            }, n._removeElement = function(e) {
                var n = this;
                if (t(e).removeClass("show"), t(e).hasClass("fade")) {
                    var i = o.getTransitionDurationFromElement(e);
                    t(e).one(o.TRANSITION_END, (function(t) {
                        return n._destroyElement(e, t)
                    })).emulateTransitionEnd(i)
                } else this._destroyElement(e)
            }, n._destroyElement = function(e) {
                t(e).detach().trigger("closed.bs.alert").remove()
            }, e._jQueryInterface = function(n) {
                return this.each((function() {
                    var i = t(this),
                        r = i.data("bs.alert");
                    r || (r = new e(this), i.data("bs.alert", r)), "close" === n && r[n](this)
                }))
            }, e._handleDismiss = function(e) {
                return function(t) {
                    t && t.preventDefault(), e.close(this)
                }
            }, i(e, null, [{
                key: "VERSION",
                get: function() {
                    return "4.5.2"
                }
            }]), e
        }();
    t(document).on("click.bs.alert.data-api", '[data-dismiss="alert"]', l._handleDismiss(new l)), t.fn[a] = l._jQueryInterface, t.fn[a].Constructor = l, t.fn[a].noConflict = function() {
        return t.fn[a] = s, l._jQueryInterface
    };
    var c = t.fn.button,
        u = function() {
            function e(e) {
                this._element = e
            }
            var n = e.prototype;
            return n.toggle = function() {
                var e = !0,
                    n = !0,
                    i = t(this._element).closest('[data-toggle="buttons"]')[0];
                if (i) {
                    var r = this._element.querySelector('input:not([type="hidden"])');
                    if (r) {
                        if ("radio" === r.type)
                            if (r.checked && this._element.classList.contains("active")) e = !1;
                            else {
                                var o = i.querySelector(".active");
                                o && t(o).removeClass("active")
                            }
                        e && ("checkbox" !== r.type && "radio" !== r.type || (r.checked = !this._element.classList.contains("active")), t(r).trigger("change")), r.focus(), n = !1
                    }
                }
                this._element.hasAttribute("disabled") || this._element.classList.contains("disabled") || (n && this._element.setAttribute("aria-pressed", !this._element.classList.contains("active")), e && t(this._element).toggleClass("active"))
            }, n.dispose = function() {
                t.removeData(this._element, "bs.button"), this._element = null
            }, e._jQueryInterface = function(n) {
                return this.each((function() {
                    var i = t(this).data("bs.button");
                    i || (i = new e(this), t(this).data("bs.button", i)), "toggle" === n && i[n]()
                }))
            }, i(e, null, [{
                key: "VERSION",
                get: function() {
                    return "4.5.2"
                }
            }]), e
        }();
    t(document).on("click.bs.button.data-api", '[data-toggle^="button"]', (function(e) {
        var n = e.target,
            i = n;
        if (t(n).hasClass("btn") || (n = t(n).closest(".btn")[0]), !n || n.hasAttribute("disabled") || n.classList.contains("disabled")) e.preventDefault();
        else {
            var r = n.querySelector('input:not([type="hidden"])');
            if (r && (r.hasAttribute("disabled") || r.classList.contains("disabled"))) return void e.preventDefault();
            ("LABEL" !== i.tagName || r && "checkbox" !== r.type) && u._jQueryInterface.call(t(n), "toggle")
        }
    })).on("focus.bs.button.data-api blur.bs.button.data-api", '[data-toggle^="button"]', (function(e) {
        var n = t(e.target).closest(".btn")[0];
        t(n).toggleClass("focus", /^focus(in)?$/.test(e.type))
    })), t(window).on("load.bs.button.data-api", (function() {
        for (var e = [].slice.call(document.querySelectorAll('[data-toggle="buttons"] .btn')), t = 0, n = e.length; t < n; t++) {
            var i = e[t],
                r = i.querySelector('input:not([type="hidden"])');
            r.checked || r.hasAttribute("checked") ? i.classList.add("active") : i.classList.remove("active")
        }
        for (var o = 0, a = (e = [].slice.call(document.querySelectorAll('[data-toggle="button"]'))).length; o < a; o++) {
            var s = e[o];
            "true" === s.getAttribute("aria-pressed") ? s.classList.add("active") : s.classList.remove("active")
        }
    })), t.fn.button = u._jQueryInterface, t.fn.button.Constructor = u, t.fn.button.noConflict = function() {
        return t.fn.button = c, u._jQueryInterface
    };
    var d = "carousel",
        h = t.fn[d],
        f = {
            interval: 5e3,
            keyboard: !0,
            slide: !1,
            pause: "hover",
            wrap: !0,
            touch: !0
        },
        p = {
            interval: "(number|boolean)",
            keyboard: "boolean",
            slide: "(boolean|string)",
            pause: "(string|boolean)",
            wrap: "boolean",
            touch: "boolean"
        },
        g = {
            TOUCH: "touch",
            PEN: "pen"
        },
        m = function() {
            function e(e, t) {
                this._items = null, this._interval = null, this._activeElement = null, this._isPaused = !1, this._isSliding = !1, this.touchTimeout = null, this.touchStartX = 0, this.touchDeltaX = 0, this._config = this._getConfig(t), this._element = e, this._indicatorsElement = this._element.querySelector(".carousel-indicators"), this._touchSupported = "ontouchstart" in document.documentElement || navigator.maxTouchPoints > 0, this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent), this._addEventListeners()
            }
            var n = e.prototype;
            return n.next = function() {
                this._isSliding || this._slide("next")
            }, n.nextWhenVisible = function() {
                !document.hidden && t(this._element).is(":visible") && "hidden" !== t(this._element).css("visibility") && this.next()
            }, n.prev = function() {
                this._isSliding || this._slide("prev")
            }, n.pause = function(e) {
                e || (this._isPaused = !0), this._element.querySelector(".carousel-item-next, .carousel-item-prev") && (o.triggerTransitionEnd(this._element), this.cycle(!0)), clearInterval(this._interval), this._interval = null
            }, n.cycle = function(e) {
                e || (this._isPaused = !1), this._interval && (clearInterval(this._interval), this._interval = null), this._config.interval && !this._isPaused && (this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval))
            }, n.to = function(e) {
                var n = this;
                this._activeElement = this._element.querySelector(".active.carousel-item");
                var i = this._getItemIndex(this._activeElement);
                if (!(e > this._items.length - 1 || e < 0))
                    if (this._isSliding) t(this._element).one("slid.bs.carousel", (function() {
                        return n.to(e)
                    }));
                    else {
                        if (i === e) return this.pause(), void this.cycle();
                        var r = e > i ? "next" : "prev";
                        this._slide(r, this._items[e])
                    }
            }, n.dispose = function() {
                t(this._element).off(".bs.carousel"), t.removeData(this._element, "bs.carousel"), this._items = null, this._config = null, this._element = null, this._interval = null, this._isPaused = null, this._isSliding = null, this._activeElement = null, this._indicatorsElement = null
            }, n._getConfig = function(e) {
                return e = r({}, f, e), o.typeCheckConfig(d, e, p), e
            }, n._handleSwipe = function() {
                var e = Math.abs(this.touchDeltaX);
                if (!(e <= 40)) {
                    var t = e / this.touchDeltaX;
                    this.touchDeltaX = 0, t > 0 && this.prev(), t < 0 && this.next()
                }
            }, n._addEventListeners = function() {
                var e = this;
                this._config.keyboard && t(this._element).on("keydown.bs.carousel", (function(t) {
                    return e._keydown(t)
                })), "hover" === this._config.pause && t(this._element).on("mouseenter.bs.carousel", (function(t) {
                    return e.pause(t)
                })).on("mouseleave.bs.carousel", (function(t) {
                    return e.cycle(t)
                })), this._config.touch && this._addTouchEventListeners()
            }, n._addTouchEventListeners = function() {
                var e = this;
                if (this._touchSupported) {
                    var n = function(t) {
                            e._pointerEvent && g[t.originalEvent.pointerType.toUpperCase()] ? e.touchStartX = t.originalEvent.clientX : e._pointerEvent || (e.touchStartX = t.originalEvent.touches[0].clientX)
                        },
                        i = function(t) {
                            e._pointerEvent && g[t.originalEvent.pointerType.toUpperCase()] && (e.touchDeltaX = t.originalEvent.clientX - e.touchStartX), e._handleSwipe(), "hover" === e._config.pause && (e.pause(), e.touchTimeout && clearTimeout(e.touchTimeout), e.touchTimeout = setTimeout((function(t) {
                                return e.cycle(t)
                            }), 500 + e._config.interval))
                        };
                    t(this._element.querySelectorAll(".carousel-item img")).on("dragstart.bs.carousel", (function(e) {
                        return e.preventDefault()
                    })), this._pointerEvent ? (t(this._element).on("pointerdown.bs.carousel", (function(e) {
                        return n(e)
                    })), t(this._element).on("pointerup.bs.carousel", (function(e) {
                        return i(e)
                    })), this._element.classList.add("pointer-event")) : (t(this._element).on("touchstart.bs.carousel", (function(e) {
                        return n(e)
                    })), t(this._element).on("touchmove.bs.carousel", (function(t) {
                        return function(t) {
                            t.originalEvent.touches && t.originalEvent.touches.length > 1 ? e.touchDeltaX = 0 : e.touchDeltaX = t.originalEvent.touches[0].clientX - e.touchStartX
                        }(t)
                    })), t(this._element).on("touchend.bs.carousel", (function(e) {
                        return i(e)
                    })))
                }
            }, n._keydown = function(e) {
                if (!/input|textarea/i.test(e.target.tagName)) switch (e.which) {
                    case 37:
                        e.preventDefault(), this.prev();
                        break;
                    case 39:
                        e.preventDefault(), this.next()
                }
            }, n._getItemIndex = function(e) {
                return this._items = e && e.parentNode ? [].slice.call(e.parentNode.querySelectorAll(".carousel-item")) : [], this._items.indexOf(e)
            }, n._getItemByDirection = function(e, t) {
                var n = "next" === e,
                    i = "prev" === e,
                    r = this._getItemIndex(t),
                    o = this._items.length - 1;
                if ((i && 0 === r || n && r === o) && !this._config.wrap) return t;
                var a = (r + ("prev" === e ? -1 : 1)) % this._items.length;
                return -1 === a ? this._items[this._items.length - 1] : this._items[a]
            }, n._triggerSlideEvent = function(e, n) {
                var i = this._getItemIndex(e),
                    r = this._getItemIndex(this._element.querySelector(".active.carousel-item")),
                    o = t.Event("slide.bs.carousel", {
                        relatedTarget: e,
                        direction: n,
                        from: r,
                        to: i
                    });
                return t(this._element).trigger(o), o
            }, n._setActiveIndicatorElement = function(e) {
                if (this._indicatorsElement) {
                    var n = [].slice.call(this._indicatorsElement.querySelectorAll(".active"));
                    t(n).removeClass("active");
                    var i = this._indicatorsElement.children[this._getItemIndex(e)];
                    i && t(i).addClass("active")
                }
            }, n._slide = function(e, n) {
                var i, r, a, s = this,
                    l = this._element.querySelector(".active.carousel-item"),
                    c = this._getItemIndex(l),
                    u = n || l && this._getItemByDirection(e, l),
                    d = this._getItemIndex(u),
                    h = Boolean(this._interval);
                if ("next" === e ? (i = "carousel-item-left", r = "carousel-item-next", a = "left") : (i = "carousel-item-right", r = "carousel-item-prev", a = "right"), u && t(u).hasClass("active")) this._isSliding = !1;
                else if (!this._triggerSlideEvent(u, a).isDefaultPrevented() && l && u) {
                    this._isSliding = !0, h && this.pause(), this._setActiveIndicatorElement(u);
                    var f = t.Event("slid.bs.carousel", {
                        relatedTarget: u,
                        direction: a,
                        from: c,
                        to: d
                    });
                    if (t(this._element).hasClass("slide")) {
                        t(u).addClass(r), o.reflow(u), t(l).addClass(i), t(u).addClass(i);
                        var p = parseInt(u.getAttribute("data-interval"), 10);
                        p ? (this._config.defaultInterval = this._config.defaultInterval || this._config.interval, this._config.interval = p) : this._config.interval = this._config.defaultInterval || this._config.interval;
                        var g = o.getTransitionDurationFromElement(l);
                        t(l).one(o.TRANSITION_END, (function() {
                            t(u).removeClass(i + " " + r).addClass("active"), t(l).removeClass("active " + r + " " + i), s._isSliding = !1, setTimeout((function() {
                                return t(s._element).trigger(f)
                            }), 0)
                        })).emulateTransitionEnd(g)
                    } else t(l).removeClass("active"), t(u).addClass("active"), this._isSliding = !1, t(this._element).trigger(f);
                    h && this.cycle()
                }
            }, e._jQueryInterface = function(n) {
                return this.each((function() {
                    var i = t(this).data("bs.carousel"),
                        o = r({}, f, t(this).data());
                    "object" == typeof n && (o = r({}, o, n));
                    var a = "string" == typeof n ? n : o.slide;
                    if (i || (i = new e(this, o), t(this).data("bs.carousel", i)), "number" == typeof n) i.to(n);
                    else if ("string" == typeof a) {
                        if (void 0 === i[a]) throw new TypeError('No method named "' + a + '"');
                        i[a]()
                    } else o.interval && o.ride && (i.pause(), i.cycle())
                }))
            }, e._dataApiClickHandler = function(n) {
                var i = o.getSelectorFromElement(this);
                if (i) {
                    var a = t(i)[0];
                    if (a && t(a).hasClass("carousel")) {
                        var s = r({}, t(a).data(), t(this).data()),
                            l = this.getAttribute("data-slide-to");
                        l && (s.interval = !1), e._jQueryInterface.call(t(a), s), l && t(a).data("bs.carousel").to(l), n.preventDefault()
                    }
                }
            }, i(e, null, [{
                key: "VERSION",
                get: function() {
                    return "4.5.2"
                }
            }, {
                key: "Default",
                get: function() {
                    return f
                }
            }]), e
        }();
    t(document).on("click.bs.carousel.data-api", "[data-slide], [data-slide-to]", m._dataApiClickHandler), t(window).on("load.bs.carousel.data-api", (function() {
        for (var e = [].slice.call(document.querySelectorAll('[data-ride="carousel"]')), n = 0, i = e.length; n < i; n++) {
            var r = t(e[n]);
            m._jQueryInterface.call(r, r.data())
        }
    })), t.fn[d] = m._jQueryInterface, t.fn[d].Constructor = m, t.fn[d].noConflict = function() {
        return t.fn[d] = h, m._jQueryInterface
    };
    var v = "collapse",
        y = t.fn[v],
        b = {
            toggle: !0,
            parent: ""
        },
        w = {
            toggle: "boolean",
            parent: "(string|element)"
        },
        x = function() {
            function e(e, t) {
                this._isTransitioning = !1, this._element = e, this._config = this._getConfig(t), this._triggerArray = [].slice.call(document.querySelectorAll('[data-toggle="collapse"][href="#' + e.id + '"],[data-toggle="collapse"][data-target="#' + e.id + '"]'));
                for (var n = [].slice.call(document.querySelectorAll('[data-toggle="collapse"]')), i = 0, r = n.length; i < r; i++) {
                    var a = n[i],
                        s = o.getSelectorFromElement(a),
                        l = [].slice.call(document.querySelectorAll(s)).filter((function(t) {
                            return t === e
                        }));
                    null !== s && l.length > 0 && (this._selector = s, this._triggerArray.push(a))
                }
                this._parent = this._config.parent ? this._getParent() : null, this._config.parent || this._addAriaAndCollapsedClass(this._element, this._triggerArray), this._config.toggle && this.toggle()
            }
            var n = e.prototype;
            return n.toggle = function() {
                t(this._element).hasClass("show") ? this.hide() : this.show()
            }, n.show = function() {
                var n, i, r = this;
                if (!(this._isTransitioning || t(this._element).hasClass("show") || (this._parent && 0 === (n = [].slice.call(this._parent.querySelectorAll(".show, .collapsing")).filter((function(e) {
                        return "string" == typeof r._config.parent ? e.getAttribute("data-parent") === r._config.parent : e.classList.contains("collapse")
                    }))).length && (n = null), n && (i = t(n).not(this._selector).data("bs.collapse")) && i._isTransitioning))) {
                    var a = t.Event("show.bs.collapse");
                    if (t(this._element).trigger(a), !a.isDefaultPrevented()) {
                        n && (e._jQueryInterface.call(t(n).not(this._selector), "hide"), i || t(n).data("bs.collapse", null));
                        var s = this._getDimension();
                        t(this._element).removeClass("collapse").addClass("collapsing"), this._element.style[s] = 0, this._triggerArray.length && t(this._triggerArray).removeClass("collapsed").attr("aria-expanded", !0), this.setTransitioning(!0);
                        var l = "scroll" + (s[0].toUpperCase() + s.slice(1)),
                            c = o.getTransitionDurationFromElement(this._element);
                        t(this._element).one(o.TRANSITION_END, (function() {
                            t(r._element).removeClass("collapsing").addClass("collapse show"), r._element.style[s] = "", r.setTransitioning(!1), t(r._element).trigger("shown.bs.collapse")
                        })).emulateTransitionEnd(c), this._element.style[s] = this._element[l] + "px"
                    }
                }
            }, n.hide = function() {
                var e = this;
                if (!this._isTransitioning && t(this._element).hasClass("show")) {
                    var n = t.Event("hide.bs.collapse");
                    if (t(this._element).trigger(n), !n.isDefaultPrevented()) {
                        var i = this._getDimension();
                        this._element.style[i] = this._element.getBoundingClientRect()[i] + "px", o.reflow(this._element), t(this._element).addClass("collapsing").removeClass("collapse show");
                        var r = this._triggerArray.length;
                        if (r > 0)
                            for (var a = 0; a < r; a++) {
                                var s = this._triggerArray[a],
                                    l = o.getSelectorFromElement(s);
                                null !== l && (t([].slice.call(document.querySelectorAll(l))).hasClass("show") || t(s).addClass("collapsed").attr("aria-expanded", !1))
                            }
                        this.setTransitioning(!0), this._element.style[i] = "";
                        var c = o.getTransitionDurationFromElement(this._element);
                        t(this._element).one(o.TRANSITION_END, (function() {
                            e.setTransitioning(!1), t(e._element).removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")
                        })).emulateTransitionEnd(c)
                    }
                }
            }, n.setTransitioning = function(e) {
                this._isTransitioning = e
            }, n.dispose = function() {
                t.removeData(this._element, "bs.collapse"), this._config = null, this._parent = null, this._element = null, this._triggerArray = null, this._isTransitioning = null
            }, n._getConfig = function(e) {
                return (e = r({}, b, e)).toggle = Boolean(e.toggle), o.typeCheckConfig(v, e, w), e
            }, n._getDimension = function() {
                return t(this._element).hasClass("width") ? "width" : "height"
            }, n._getParent = function() {
                var n, i = this;
                o.isElement(this._config.parent) ? (n = this._config.parent, void 0 !== this._config.parent.jquery && (n = this._config.parent[0])) : n = document.querySelector(this._config.parent);
                var r = '[data-toggle="collapse"][data-parent="' + this._config.parent + '"]',
                    a = [].slice.call(n.querySelectorAll(r));
                return t(a).each((function(t, n) {
                    i._addAriaAndCollapsedClass(e._getTargetFromElement(n), [n])
                })), n
            }, n._addAriaAndCollapsedClass = function(e, n) {
                var i = t(e).hasClass("show");
                n.length && t(n).toggleClass("collapsed", !i).attr("aria-expanded", i)
            }, e._getTargetFromElement = function(e) {
                var t = o.getSelectorFromElement(e);
                return t ? document.querySelector(t) : null
            }, e._jQueryInterface = function(n) {
                return this.each((function() {
                    var i = t(this),
                        o = i.data("bs.collapse"),
                        a = r({}, b, i.data(), "object" == typeof n && n ? n : {});
                    if (!o && a.toggle && "string" == typeof n && /show|hide/.test(n) && (a.toggle = !1), o || (o = new e(this, a), i.data("bs.collapse", o)), "string" == typeof n) {
                        if (void 0 === o[n]) throw new TypeError('No method named "' + n + '"');
                        o[n]()
                    }
                }))
            }, i(e, null, [{
                key: "VERSION",
                get: function() {
                    return "4.5.2"
                }
            }, {
                key: "Default",
                get: function() {
                    return b
                }
            }]), e
        }();
    t(document).on("click.bs.collapse.data-api", '[data-toggle="collapse"]', (function(e) {
        "A" === e.currentTarget.tagName && e.preventDefault();
        var n = t(this),
            i = o.getSelectorFromElement(this),
            r = [].slice.call(document.querySelectorAll(i));
        t(r).each((function() {
            var e = t(this),
                i = e.data("bs.collapse") ? "toggle" : n.data();
            x._jQueryInterface.call(e, i)
        }))
    })), t.fn[v] = x._jQueryInterface, t.fn[v].Constructor = x, t.fn[v].noConflict = function() {
        return t.fn[v] = y, x._jQueryInterface
    };
    var _ = "undefined" != typeof window && "undefined" != typeof document && "undefined" != typeof navigator,
        C = function() {
            for (var e = ["Edge", "Trident", "Firefox"], t = 0; t < e.length; t += 1)
                if (_ && navigator.userAgent.indexOf(e[t]) >= 0) return 1;
            return 0
        }(),
        k = _ && window.Promise ? function(e) {
            var t = !1;
            return function() {
                t || (t = !0, window.Promise.resolve().then((function() {
                    t = !1, e()
                })))
            }
        } : function(e) {
            var t = !1;
            return function() {
                t || (t = !0, setTimeout((function() {
                    t = !1, e()
                }), C))
            }
        };

    function S(e) {
        return e && "[object Function]" === {}.toString.call(e)
    }

    function T(e, t) {
        if (1 !== e.nodeType) return [];
        var n = e.ownerDocument.defaultView.getComputedStyle(e, null);
        return t ? n[t] : n
    }

    function D(e) {
        return "HTML" === e.nodeName ? e : e.parentNode || e.host
    }

    function E(e) {
        if (!e) return document.body;
        switch (e.nodeName) {
            case "HTML":
            case "BODY":
                return e.ownerDocument.body;
            case "#document":
                return e.body
        }
        var t = T(e),
            n = t.overflow,
            i = t.overflowX,
            r = t.overflowY;
        return /(auto|scroll|overlay)/.test(n + r + i) ? e : E(D(e))
    }

    function A(e) {
        return e && e.referenceNode ? e.referenceNode : e
    }
    var M = _ && !(!window.MSInputMethodContext || !document.documentMode),
        O = _ && /MSIE 10/.test(navigator.userAgent);

    function I(e) {
        return 11 === e ? M : 10 === e ? O : M || O
    }

    function P(e) {
        if (!e) return document.documentElement;
        for (var t = I(10) ? document.body : null, n = e.offsetParent || null; n === t && e.nextElementSibling;) n = (e = e.nextElementSibling).offsetParent;
        var i = n && n.nodeName;
        return i && "BODY" !== i && "HTML" !== i ? -1 !== ["TH", "TD", "TABLE"].indexOf(n.nodeName) && "static" === T(n, "position") ? P(n) : n : e ? e.ownerDocument.documentElement : document.documentElement
    }

    function L(e) {
        return null !== e.parentNode ? L(e.parentNode) : e
    }

    function F(e, t) {
        if (!(e && e.nodeType && t && t.nodeType)) return document.documentElement;
        var n = e.compareDocumentPosition(t) & Node.DOCUMENT_POSITION_FOLLOWING,
            i = n ? e : t,
            r = n ? t : e,
            o = document.createRange();
        o.setStart(i, 0), o.setEnd(r, 0);
        var a, s, l = o.commonAncestorContainer;
        if (e !== l && t !== l || i.contains(r)) return "BODY" === (s = (a = l).nodeName) || "HTML" !== s && P(a.firstElementChild) !== a ? P(l) : l;
        var c = L(e);
        return c.host ? F(c.host, t) : F(e, L(t).host)
    }

    function N(e) {
        var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "top",
            n = "top" === t ? "scrollTop" : "scrollLeft",
            i = e.nodeName;
        if ("BODY" === i || "HTML" === i) {
            var r = e.ownerDocument.documentElement,
                o = e.ownerDocument.scrollingElement || r;
            return o[n]
        }
        return e[n]
    }

    function R(e, t) {
        var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],
            i = N(t, "top"),
            r = N(t, "left"),
            o = n ? -1 : 1;
        return e.top += i * o, e.bottom += i * o, e.left += r * o, e.right += r * o, e
    }

    function j(e, t) {
        var n = "x" === t ? "Left" : "Top",
            i = "Left" === n ? "Right" : "Bottom";
        return parseFloat(e["border" + n + "Width"]) + parseFloat(e["border" + i + "Width"])
    }

    function $(e, t, n, i) {
        return Math.max(t["offset" + e], t["scroll" + e], n["client" + e], n["offset" + e], n["scroll" + e], I(10) ? parseInt(n["offset" + e]) + parseInt(i["margin" + ("Height" === e ? "Top" : "Left")]) + parseInt(i["margin" + ("Height" === e ? "Bottom" : "Right")]) : 0)
    }

    function z(e) {
        var t = e.body,
            n = e.documentElement,
            i = I(10) && getComputedStyle(n);
        return {
            height: $("Height", t, n, i),
            width: $("Width", t, n, i)
        }
    }
    var H = function(e, t) {
            if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
        },
        B = function() {
            function e(e, t) {
                for (var n = 0; n < t.length; n++) {
                    var i = t[n];
                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
                }
            }
            return function(t, n, i) {
                return n && e(t.prototype, n), i && e(t, i), t
            }
        }(),
        q = function(e, t, n) {
            return t in e ? Object.defineProperty(e, t, {
                value: n,
                enumerable: !0,
                configurable: !0,
                writable: !0
            }) : e[t] = n, e
        },
        W = Object.assign || function(e) {
            for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var i in n) Object.prototype.hasOwnProperty.call(n, i) && (e[i] = n[i])
            }
            return e
        };

    function U(e) {
        return W({}, e, {
            right: e.left + e.width,
            bottom: e.top + e.height
        })
    }

    function V(e) {
        var t = {};
        try {
            if (I(10)) {
                t = e.getBoundingClientRect();
                var n = N(e, "top"),
                    i = N(e, "left");
                t.top += n, t.left += i, t.bottom += n, t.right += i
            } else t = e.getBoundingClientRect()
        } catch (e) {}
        var r = {
                left: t.left,
                top: t.top,
                width: t.right - t.left,
                height: t.bottom - t.top
            },
            o = "HTML" === e.nodeName ? z(e.ownerDocument) : {},
            a = o.width || e.clientWidth || r.width,
            s = o.height || e.clientHeight || r.height,
            l = e.offsetWidth - a,
            c = e.offsetHeight - s;
        if (l || c) {
            var u = T(e);
            l -= j(u, "x"), c -= j(u, "y"), r.width -= l, r.height -= c
        }
        return U(r)
    }

    function Y(e, t) {
        var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],
            i = I(10),
            r = "HTML" === t.nodeName,
            o = V(e),
            a = V(t),
            s = E(e),
            l = T(t),
            c = parseFloat(l.borderTopWidth),
            u = parseFloat(l.borderLeftWidth);
        n && r && (a.top = Math.max(a.top, 0), a.left = Math.max(a.left, 0));
        var d = U({
            top: o.top - a.top - c,
            left: o.left - a.left - u,
            width: o.width,
            height: o.height
        });
        if (d.marginTop = 0, d.marginLeft = 0, !i && r) {
            var h = parseFloat(l.marginTop),
                f = parseFloat(l.marginLeft);
            d.top -= c - h, d.bottom -= c - h, d.left -= u - f, d.right -= u - f, d.marginTop = h, d.marginLeft = f
        }
        return (i && !n ? t.contains(s) : t === s && "BODY" !== s.nodeName) && (d = R(d, t)), d
    }

    function X(e) {
        var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1],
            n = e.ownerDocument.documentElement,
            i = Y(e, n),
            r = Math.max(n.clientWidth, window.innerWidth || 0),
            o = Math.max(n.clientHeight, window.innerHeight || 0),
            a = t ? 0 : N(n),
            s = t ? 0 : N(n, "left"),
            l = {
                top: a - i.top + i.marginTop,
                left: s - i.left + i.marginLeft,
                width: r,
                height: o
            };
        return U(l)
    }

    function G(e) {
        var t = e.nodeName;
        if ("BODY" === t || "HTML" === t) return !1;
        if ("fixed" === T(e, "position")) return !0;
        var n = D(e);
        return !!n && G(n)
    }

    function Q(e) {
        if (!e || !e.parentElement || I()) return document.documentElement;
        for (var t = e.parentElement; t && "none" === T(t, "transform");) t = t.parentElement;
        return t || document.documentElement
    }

    function K(e, t, n, i) {
        var r = arguments.length > 4 && void 0 !== arguments[4] && arguments[4],
            o = {
                top: 0,
                left: 0
            },
            a = r ? Q(e) : F(e, A(t));
        if ("viewport" === i) o = X(a, r);
        else {
            var s = void 0;
            "scrollParent" === i ? "BODY" === (s = E(D(t))).nodeName && (s = e.ownerDocument.documentElement) : s = "window" === i ? e.ownerDocument.documentElement : i;
            var l = Y(s, a, r);
            if ("HTML" !== s.nodeName || G(a)) o = l;
            else {
                var c = z(e.ownerDocument),
                    u = c.height,
                    d = c.width;
                o.top += l.top - l.marginTop, o.bottom = u + l.top, o.left += l.left - l.marginLeft, o.right = d + l.left
            }
        }
        var h = "number" == typeof(n = n || 0);
        return o.left += h ? n : n.left || 0, o.top += h ? n : n.top || 0, o.right -= h ? n : n.right || 0, o.bottom -= h ? n : n.bottom || 0, o
    }

    function J(e) {
        return e.width * e.height
    }

    function Z(e, t, n, i, r) {
        var o = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : 0;
        if (-1 === e.indexOf("auto")) return e;
        var a = K(n, i, o, r),
            s = {
                top: {
                    width: a.width,
                    height: t.top - a.top
                },
                right: {
                    width: a.right - t.right,
                    height: a.height
                },
                bottom: {
                    width: a.width,
                    height: a.bottom - t.bottom
                },
                left: {
                    width: t.left - a.left,
                    height: a.height
                }
            },
            l = Object.keys(s).map((function(e) {
                return W({
                    key: e
                }, s[e], {
                    area: J(s[e])
                })
            })).sort((function(e, t) {
                return t.area - e.area
            })),
            c = l.filter((function(e) {
                var t = e.width,
                    i = e.height;
                return t >= n.clientWidth && i >= n.clientHeight
            })),
            u = c.length > 0 ? c[0].key : l[0].key,
            d = e.split("-")[1];
        return u + (d ? "-" + d : "")
    }

    function ee(e, t, n) {
        var i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : null,
            r = i ? Q(t) : F(t, A(n));
        return Y(n, r, i)
    }

    function te(e) {
        var t = e.ownerDocument.defaultView.getComputedStyle(e),
            n = parseFloat(t.marginTop || 0) + parseFloat(t.marginBottom || 0),
            i = parseFloat(t.marginLeft || 0) + parseFloat(t.marginRight || 0);
        return {
            width: e.offsetWidth + i,
            height: e.offsetHeight + n
        }
    }

    function ne(e) {
        var t = {
            left: "right",
            right: "left",
            bottom: "top",
            top: "bottom"
        };
        return e.replace(/left|right|bottom|top/g, (function(e) {
            return t[e]
        }))
    }

    function ie(e, t, n) {
        n = n.split("-")[0];
        var i = te(e),
            r = {
                width: i.width,
                height: i.height
            },
            o = -1 !== ["right", "left"].indexOf(n),
            a = o ? "top" : "left",
            s = o ? "left" : "top",
            l = o ? "height" : "width",
            c = o ? "width" : "height";
        return r[a] = t[a] + t[l] / 2 - i[l] / 2, r[s] = n === s ? t[s] - i[c] : t[ne(s)], r
    }

    function re(e, t) {
        return Array.prototype.find ? e.find(t) : e.filter(t)[0]
    }

    function oe(e, t, n) {
        return (void 0 === n ? e : e.slice(0, function(e, t, n) {
            if (Array.prototype.findIndex) return e.findIndex((function(e) {
                return e[t] === n
            }));
            var i = re(e, (function(e) {
                return e[t] === n
            }));
            return e.indexOf(i)
        }(e, "name", n))).forEach((function(e) {
            e.function && console.warn("`modifier.function` is deprecated, use `modifier.fn`!");
            var n = e.function || e.fn;
            e.enabled && S(n) && (t.offsets.popper = U(t.offsets.popper), t.offsets.reference = U(t.offsets.reference), t = n(t, e))
        })), t
    }

    function ae() {
        if (!this.state.isDestroyed) {
            var e = {
                instance: this,
                styles: {},
                arrowStyles: {},
                attributes: {},
                flipped: !1,
                offsets: {}
            };
            e.offsets.reference = ee(this.state, this.popper, this.reference, this.options.positionFixed), e.placement = Z(this.options.placement, e.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding), e.originalPlacement = e.placement, e.positionFixed = this.options.positionFixed, e.offsets.popper = ie(this.popper, e.offsets.reference, e.placement), e.offsets.popper.position = this.options.positionFixed ? "fixed" : "absolute", e = oe(this.modifiers, e), this.state.isCreated ? this.options.onUpdate(e) : (this.state.isCreated = !0, this.options.onCreate(e))
        }
    }

    function se(e, t) {
        return e.some((function(e) {
            var n = e.name;
            return e.enabled && n === t
        }))
    }

    function le(e) {
        for (var t = [!1, "ms", "Webkit", "Moz", "O"], n = e.charAt(0).toUpperCase() + e.slice(1), i = 0; i < t.length; i++) {
            var r = t[i],
                o = r ? "" + r + n : e;
            if (void 0 !== document.body.style[o]) return o
        }
        return null
    }

    function ce() {
        return this.state.isDestroyed = !0, se(this.modifiers, "applyStyle") && (this.popper.removeAttribute("x-placement"), this.popper.style.position = "", this.popper.style.top = "", this.popper.style.left = "", this.popper.style.right = "", this.popper.style.bottom = "", this.popper.style.willChange = "", this.popper.style[le("transform")] = ""), this.disableEventListeners(), this.options.removeOnDestroy && this.popper.parentNode.removeChild(this.popper), this
    }

    function ue(e) {
        var t = e.ownerDocument;
        return t ? t.defaultView : window
    }

    function de() {
        this.state.eventsEnabled || (this.state = function(e, t, n, i) {
            n.updateBound = i, ue(e).addEventListener("resize", n.updateBound, {
                passive: !0
            });
            var r = E(e);
            return function e(t, n, i, r) {
                var o = "BODY" === t.nodeName,
                    a = o ? t.ownerDocument.defaultView : t;
                a.addEventListener(n, i, {
                    passive: !0
                }), o || e(E(a.parentNode), n, i, r), r.push(a)
            }(r, "scroll", n.updateBound, n.scrollParents), n.scrollElement = r, n.eventsEnabled = !0, n
        }(this.reference, this.options, this.state, this.scheduleUpdate))
    }

    function he() {
        var e, t;
        this.state.eventsEnabled && (cancelAnimationFrame(this.scheduleUpdate), this.state = (e = this.reference, t = this.state, ue(e).removeEventListener("resize", t.updateBound), t.scrollParents.forEach((function(e) {
            e.removeEventListener("scroll", t.updateBound)
        })), t.updateBound = null, t.scrollParents = [], t.scrollElement = null, t.eventsEnabled = !1, t))
    }

    function fe(e) {
        return "" !== e && !isNaN(parseFloat(e)) && isFinite(e)
    }

    function pe(e, t) {
        Object.keys(t).forEach((function(n) {
            var i = ""; - 1 !== ["width", "height", "top", "right", "bottom", "left"].indexOf(n) && fe(t[n]) && (i = "px"), e.style[n] = t[n] + i
        }))
    }
    var ge = _ && /Firefox/i.test(navigator.userAgent);

    function me(e, t, n) {
        var i = re(e, (function(e) {
                return e.name === t
            })),
            r = !!i && e.some((function(e) {
                return e.name === n && e.enabled && e.order < i.order
            }));
        if (!r) {
            var o = "`" + t + "`",
                a = "`" + n + "`";
            console.warn(a + " modifier is required by " + o + " modifier in order to work, be sure to include it before " + o + "!")
        }
        return r
    }
    var ve = ["auto-start", "auto", "auto-end", "top-start", "top", "top-end", "right-start", "right", "right-end", "bottom-end", "bottom", "bottom-start", "left-end", "left", "left-start"],
        ye = ve.slice(3);

    function be(e) {
        var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1],
            n = ye.indexOf(e),
            i = ye.slice(n + 1).concat(ye.slice(0, n));
        return t ? i.reverse() : i
    }
    var we = {
            placement: "bottom",
            positionFixed: !1,
            eventsEnabled: !0,
            removeOnDestroy: !1,
            onCreate: function() {},
            onUpdate: function() {},
            modifiers: {
                shift: {
                    order: 100,
                    enabled: !0,
                    fn: function(e) {
                        var t = e.placement,
                            n = t.split("-")[0],
                            i = t.split("-")[1];
                        if (i) {
                            var r = e.offsets,
                                o = r.reference,
                                a = r.popper,
                                s = -1 !== ["bottom", "top"].indexOf(n),
                                l = s ? "left" : "top",
                                c = s ? "width" : "height",
                                u = {
                                    start: q({}, l, o[l]),
                                    end: q({}, l, o[l] + o[c] - a[c])
                                };
                            e.offsets.popper = W({}, a, u[i])
                        }
                        return e
                    }
                },
                offset: {
                    order: 200,
                    enabled: !0,
                    fn: function(e, t) {
                        var n, i = t.offset,
                            r = e.placement,
                            o = e.offsets,
                            a = o.popper,
                            s = o.reference,
                            l = r.split("-")[0];
                        return n = fe(+i) ? [+i, 0] : function(e, t, n, i) {
                            var r = [0, 0],
                                o = -1 !== ["right", "left"].indexOf(i),
                                a = e.split(/(\+|\-)/).map((function(e) {
                                    return e.trim()
                                })),
                                s = a.indexOf(re(a, (function(e) {
                                    return -1 !== e.search(/,|\s/)
                                })));
                            a[s] && -1 === a[s].indexOf(",") && console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");
                            var l = /\s*,\s*|\s+/,
                                c = -1 !== s ? [a.slice(0, s).concat([a[s].split(l)[0]]), [a[s].split(l)[1]].concat(a.slice(s + 1))] : [a];
                            return (c = c.map((function(e, i) {
                                var r = (1 === i ? !o : o) ? "height" : "width",
                                    a = !1;
                                return e.reduce((function(e, t) {
                                    return "" === e[e.length - 1] && -1 !== ["+", "-"].indexOf(t) ? (e[e.length - 1] = t, a = !0, e) : a ? (e[e.length - 1] += t, a = !1, e) : e.concat(t)
                                }), []).map((function(e) {
                                    return function(e, t, n, i) {
                                        var r = e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),
                                            o = +r[1],
                                            a = r[2];
                                        if (!o) return e;
                                        if (0 === a.indexOf("%")) {
                                            var s = void 0;
                                            switch (a) {
                                                case "%p":
                                                    s = n;
                                                    break;
                                                case "%":
                                                case "%r":
                                                default:
                                                    s = i
                                            }
                                            return U(s)[t] / 100 * o
                                        }
                                        return "vh" === a || "vw" === a ? ("vh" === a ? Math.max(document.documentElement.clientHeight, window.innerHeight || 0) : Math.max(document.documentElement.clientWidth, window.innerWidth || 0)) / 100 * o : o
                                    }(e, r, t, n)
                                }))
                            }))).forEach((function(e, t) {
                                e.forEach((function(n, i) {
                                    fe(n) && (r[t] += n * ("-" === e[i - 1] ? -1 : 1))
                                }))
                            })), r
                        }(i, a, s, l), "left" === l ? (a.top += n[0], a.left -= n[1]) : "right" === l ? (a.top += n[0], a.left += n[1]) : "top" === l ? (a.left += n[0], a.top -= n[1]) : "bottom" === l && (a.left += n[0], a.top += n[1]), e.popper = a, e
                    },
                    offset: 0
                },
                preventOverflow: {
                    order: 300,
                    enabled: !0,
                    fn: function(e, t) {
                        var n = t.boundariesElement || P(e.instance.popper);
                        e.instance.reference === n && (n = P(n));
                        var i = le("transform"),
                            r = e.instance.popper.style,
                            o = r.top,
                            a = r.left,
                            s = r[i];
                        r.top = "", r.left = "", r[i] = "";
                        var l = K(e.instance.popper, e.instance.reference, t.padding, n, e.positionFixed);
                        r.top = o, r.left = a, r[i] = s, t.boundaries = l;
                        var c = t.priority,
                            u = e.offsets.popper,
                            d = {
                                primary: function(e) {
                                    var n = u[e];
                                    return u[e] < l[e] && !t.escapeWithReference && (n = Math.max(u[e], l[e])), q({}, e, n)
                                },
                                secondary: function(e) {
                                    var n = "right" === e ? "left" : "top",
                                        i = u[n];
                                    return u[e] > l[e] && !t.escapeWithReference && (i = Math.min(u[n], l[e] - ("right" === e ? u.width : u.height))), q({}, n, i)
                                }
                            };
                        return c.forEach((function(e) {
                            var t = -1 !== ["left", "top"].indexOf(e) ? "primary" : "secondary";
                            u = W({}, u, d[t](e))
                        })), e.offsets.popper = u, e
                    },
                    priority: ["left", "right", "top", "bottom"],
                    padding: 5,
                    boundariesElement: "scrollParent"
                },
                keepTogether: {
                    order: 400,
                    enabled: !0,
                    fn: function(e) {
                        var t = e.offsets,
                            n = t.popper,
                            i = t.reference,
                            r = e.placement.split("-")[0],
                            o = Math.floor,
                            a = -1 !== ["top", "bottom"].indexOf(r),
                            s = a ? "right" : "bottom",
                            l = a ? "left" : "top",
                            c = a ? "width" : "height";
                        return n[s] < o(i[l]) && (e.offsets.popper[l] = o(i[l]) - n[c]), n[l] > o(i[s]) && (e.offsets.popper[l] = o(i[s])), e
                    }
                },
                arrow: {
                    order: 500,
                    enabled: !0,
                    fn: function(e, t) {
                        var n;
                        if (!me(e.instance.modifiers, "arrow", "keepTogether")) return e;
                        var i = t.element;
                        if ("string" == typeof i) {
                            if (!(i = e.instance.popper.querySelector(i))) return e
                        } else if (!e.instance.popper.contains(i)) return console.warn("WARNING: `arrow.element` must be child of its popper element!"), e;
                        var r = e.placement.split("-")[0],
                            o = e.offsets,
                            a = o.popper,
                            s = o.reference,
                            l = -1 !== ["left", "right"].indexOf(r),
                            c = l ? "height" : "width",
                            u = l ? "Top" : "Left",
                            d = u.toLowerCase(),
                            h = l ? "left" : "top",
                            f = l ? "bottom" : "right",
                            p = te(i)[c];
                        s[f] - p < a[d] && (e.offsets.popper[d] -= a[d] - (s[f] - p)), s[d] + p > a[f] && (e.offsets.popper[d] += s[d] + p - a[f]), e.offsets.popper = U(e.offsets.popper);
                        var g = s[d] + s[c] / 2 - p / 2,
                            m = T(e.instance.popper),
                            v = parseFloat(m["margin" + u]),
                            y = parseFloat(m["border" + u + "Width"]),
                            b = g - e.offsets.popper[d] - v - y;
                        return b = Math.max(Math.min(a[c] - p, b), 0), e.arrowElement = i, e.offsets.arrow = (q(n = {}, d, Math.round(b)), q(n, h, ""), n), e
                    },
                    element: "[x-arrow]"
                },
                flip: {
                    order: 600,
                    enabled: !0,
                    fn: function(e, t) {
                        if (se(e.instance.modifiers, "inner")) return e;
                        if (e.flipped && e.placement === e.originalPlacement) return e;
                        var n = K(e.instance.popper, e.instance.reference, t.padding, t.boundariesElement, e.positionFixed),
                            i = e.placement.split("-")[0],
                            r = ne(i),
                            o = e.placement.split("-")[1] || "",
                            a = [];
                        switch (t.behavior) {
                            case "flip":
                                a = [i, r];
                                break;
                            case "clockwise":
                                a = be(i);
                                break;
                            case "counterclockwise":
                                a = be(i, !0);
                                break;
                            default:
                                a = t.behavior
                        }
                        return a.forEach((function(s, l) {
                            if (i !== s || a.length === l + 1) return e;
                            i = e.placement.split("-")[0], r = ne(i);
                            var c = e.offsets.popper,
                                u = e.offsets.reference,
                                d = Math.floor,
                                h = "left" === i && d(c.right) > d(u.left) || "right" === i && d(c.left) < d(u.right) || "top" === i && d(c.bottom) > d(u.top) || "bottom" === i && d(c.top) < d(u.bottom),
                                f = d(c.left) < d(n.left),
                                p = d(c.right) > d(n.right),
                                g = d(c.top) < d(n.top),
                                m = d(c.bottom) > d(n.bottom),
                                v = "left" === i && f || "right" === i && p || "top" === i && g || "bottom" === i && m,
                                y = -1 !== ["top", "bottom"].indexOf(i),
                                b = !!t.flipVariations && (y && "start" === o && f || y && "end" === o && p || !y && "start" === o && g || !y && "end" === o && m),
                                w = !!t.flipVariationsByContent && (y && "start" === o && p || y && "end" === o && f || !y && "start" === o && m || !y && "end" === o && g),
                                x = b || w;
                            (h || v || x) && (e.flipped = !0, (h || v) && (i = a[l + 1]), x && (o = function(e) {
                                return "end" === e ? "start" : "start" === e ? "end" : e
                            }(o)), e.placement = i + (o ? "-" + o : ""), e.offsets.popper = W({}, e.offsets.popper, ie(e.instance.popper, e.offsets.reference, e.placement)), e = oe(e.instance.modifiers, e, "flip"))
                        })), e
                    },
                    behavior: "flip",
                    padding: 5,
                    boundariesElement: "viewport",
                    flipVariations: !1,
                    flipVariationsByContent: !1
                },
                inner: {
                    order: 700,
                    enabled: !1,
                    fn: function(e) {
                        var t = e.placement,
                            n = t.split("-")[0],
                            i = e.offsets,
                            r = i.popper,
                            o = i.reference,
                            a = -1 !== ["left", "right"].indexOf(n),
                            s = -1 === ["top", "left"].indexOf(n);
                        return r[a ? "left" : "top"] = o[n] - (s ? r[a ? "width" : "height"] : 0), e.placement = ne(t), e.offsets.popper = U(r), e
                    }
                },
                hide: {
                    order: 800,
                    enabled: !0,
                    fn: function(e) {
                        if (!me(e.instance.modifiers, "hide", "preventOverflow")) return e;
                        var t = e.offsets.reference,
                            n = re(e.instance.modifiers, (function(e) {
                                return "preventOverflow" === e.name
                            })).boundaries;
                        if (t.bottom < n.top || t.left > n.right || t.top > n.bottom || t.right < n.left) {
                            if (!0 === e.hide) return e;
                            e.hide = !0, e.attributes["x-out-of-boundaries"] = ""
                        } else {
                            if (!1 === e.hide) return e;
                            e.hide = !1, e.attributes["x-out-of-boundaries"] = !1
                        }
                        return e
                    }
                },
                computeStyle: {
                    order: 850,
                    enabled: !0,
                    fn: function(e, t) {
                        var n = t.x,
                            i = t.y,
                            r = e.offsets.popper,
                            o = re(e.instance.modifiers, (function(e) {
                                return "applyStyle" === e.name
                            })).gpuAcceleration;
                        void 0 !== o && console.warn("WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!");
                        var a, s, l = void 0 !== o ? o : t.gpuAcceleration,
                            c = P(e.instance.popper),
                            u = V(c),
                            d = {
                                position: r.position
                            },
                            h = function(e, t) {
                                var n = e.offsets,
                                    i = n.popper,
                                    r = n.reference,
                                    o = Math.round,
                                    a = Math.floor,
                                    s = function(e) {
                                        return e
                                    },
                                    l = o(r.width),
                                    c = o(i.width),
                                    u = -1 !== ["left", "right"].indexOf(e.placement),
                                    d = -1 !== e.placement.indexOf("-"),
                                    h = t ? u || d || l % 2 == c % 2 ? o : a : s,
                                    f = t ? o : s;
                                return {
                                    left: h(l % 2 == 1 && c % 2 == 1 && !d && t ? i.left - 1 : i.left),
                                    top: f(i.top),
                                    bottom: f(i.bottom),
                                    right: h(i.right)
                                }
                            }(e, window.devicePixelRatio < 2 || !ge),
                            f = "bottom" === n ? "top" : "bottom",
                            p = "right" === i ? "left" : "right",
                            g = le("transform");
                        if (s = "bottom" === f ? "HTML" === c.nodeName ? -c.clientHeight + h.bottom : -u.height + h.bottom : h.top, a = "right" === p ? "HTML" === c.nodeName ? -c.clientWidth + h.right : -u.width + h.right : h.left, l && g) d[g] = "translate3d(" + a + "px, " + s + "px, 0)", d[f] = 0, d[p] = 0, d.willChange = "transform";
                        else {
                            var m = "bottom" === f ? -1 : 1,
                                v = "right" === p ? -1 : 1;
                            d[f] = s * m, d[p] = a * v, d.willChange = f + ", " + p
                        }
                        var y = {
                            "x-placement": e.placement
                        };
                        return e.attributes = W({}, y, e.attributes), e.styles = W({}, d, e.styles), e.arrowStyles = W({}, e.offsets.arrow, e.arrowStyles), e
                    },
                    gpuAcceleration: !0,
                    x: "bottom",
                    y: "right"
                },
                applyStyle: {
                    order: 900,
                    enabled: !0,
                    fn: function(e) {
                        var t, n;
                        return pe(e.instance.popper, e.styles), t = e.instance.popper, n = e.attributes, Object.keys(n).forEach((function(e) {
                            !1 !== n[e] ? t.setAttribute(e, n[e]) : t.removeAttribute(e)
                        })), e.arrowElement && Object.keys(e.arrowStyles).length && pe(e.arrowElement, e.arrowStyles), e
                    },
                    onLoad: function(e, t, n, i, r) {
                        var o = ee(r, t, e, n.positionFixed),
                            a = Z(n.placement, o, t, e, n.modifiers.flip.boundariesElement, n.modifiers.flip.padding);
                        return t.setAttribute("x-placement", a), pe(t, {
                            position: n.positionFixed ? "fixed" : "absolute"
                        }), n
                    },
                    gpuAcceleration: void 0
                }
            }
        },
        xe = function() {
            function e(t, n) {
                var i = this,
                    r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
                H(this, e), this.scheduleUpdate = function() {
                    return requestAnimationFrame(i.update)
                }, this.update = k(this.update.bind(this)), this.options = W({}, e.Defaults, r), this.state = {
                    isDestroyed: !1,
                    isCreated: !1,
                    scrollParents: []
                }, this.reference = t && t.jquery ? t[0] : t, this.popper = n && n.jquery ? n[0] : n, this.options.modifiers = {}, Object.keys(W({}, e.Defaults.modifiers, r.modifiers)).forEach((function(t) {
                    i.options.modifiers[t] = W({}, e.Defaults.modifiers[t] || {}, r.modifiers ? r.modifiers[t] : {})
                })), this.modifiers = Object.keys(this.options.modifiers).map((function(e) {
                    return W({
                        name: e
                    }, i.options.modifiers[e])
                })).sort((function(e, t) {
                    return e.order - t.order
                })), this.modifiers.forEach((function(e) {
                    e.enabled && S(e.onLoad) && e.onLoad(i.reference, i.popper, i.options, e, i.state)
                })), this.update();
                var o = this.options.eventsEnabled;
                o && this.enableEventListeners(), this.state.eventsEnabled = o
            }
            return B(e, [{
                key: "update",
                value: function() {
                    return ae.call(this)
                }
            }, {
                key: "destroy",
                value: function() {
                    return ce.call(this)
                }
            }, {
                key: "enableEventListeners",
                value: function() {
                    return de.call(this)
                }
            }, {
                key: "disableEventListeners",
                value: function() {
                    return he.call(this)
                }
            }]), e
        }();
    xe.Utils = ("undefined" != typeof window ? window : global).PopperUtils, xe.placements = ve, xe.Defaults = we;
    var _e = "dropdown",
        Ce = t.fn[_e],
        ke = new RegExp("38|40|27"),
        Se = {
            offset: 0,
            flip: !0,
            boundary: "scrollParent",
            reference: "toggle",
            display: "dynamic",
            popperConfig: null
        },
        Te = {
            offset: "(number|string|function)",
            flip: "boolean",
            boundary: "(string|element)",
            reference: "(string|element)",
            display: "string",
            popperConfig: "(null|object)"
        },
        De = function() {
            function e(e, t) {
                this._element = e, this._popper = null, this._config = this._getConfig(t), this._menu = this._getMenuElement(), this._inNavbar = this._detectNavbar(), this._addEventListeners()
            }
            var n = e.prototype;
            return n.toggle = function() {
                if (!this._element.disabled && !t(this._element).hasClass("disabled")) {
                    var n = t(this._menu).hasClass("show");
                    e._clearMenus(), n || this.show(!0)
                }
            }, n.show = function(n) {
                if (void 0 === n && (n = !1), !(this._element.disabled || t(this._element).hasClass("disabled") || t(this._menu).hasClass("show"))) {
                    var i = {
                            relatedTarget: this._element
                        },
                        r = t.Event("show.bs.dropdown", i),
                        a = e._getParentFromElement(this._element);
                    if (t(a).trigger(r), !r.isDefaultPrevented()) {
                        if (!this._inNavbar && n) {
                            if (void 0 === xe) throw new TypeError("Bootstrap's dropdowns require Popper.js (https://popper.js.org/)");
                            var s = this._element;
                            "parent" === this._config.reference ? s = a : o.isElement(this._config.reference) && (s = this._config.reference, void 0 !== this._config.reference.jquery && (s = this._config.reference[0])), "scrollParent" !== this._config.boundary && t(a).addClass("position-static"), this._popper = new xe(s, this._menu, this._getPopperConfig())
                        }
                        "ontouchstart" in document.documentElement && 0 === t(a).closest(".navbar-nav").length && t(document.body).children().on("mouseover", null, t.noop), this._element.focus(), this._element.setAttribute("aria-expanded", !0), t(this._menu).toggleClass("show"), t(a).toggleClass("show").trigger(t.Event("shown.bs.dropdown", i))
                    }
                }
            }, n.hide = function() {
                if (!this._element.disabled && !t(this._element).hasClass("disabled") && t(this._menu).hasClass("show")) {
                    var n = {
                            relatedTarget: this._element
                        },
                        i = t.Event("hide.bs.dropdown", n),
                        r = e._getParentFromElement(this._element);
                    t(r).trigger(i), i.isDefaultPrevented() || (this._popper && this._popper.destroy(), t(this._menu).toggleClass("show"), t(r).toggleClass("show").trigger(t.Event("hidden.bs.dropdown", n)))
                }
            }, n.dispose = function() {
                t.removeData(this._element, "bs.dropdown"), t(this._element).off(".bs.dropdown"), this._element = null, this._menu = null, null !== this._popper && (this._popper.destroy(), this._popper = null)
            }, n.update = function() {
                this._inNavbar = this._detectNavbar(), null !== this._popper && this._popper.scheduleUpdate()
            }, n._addEventListeners = function() {
                var e = this;
                t(this._element).on("click.bs.dropdown", (function(t) {
                    t.preventDefault(), t.stopPropagation(), e.toggle()
                }))
            }, n._getConfig = function(e) {
                return e = r({}, this.constructor.Default, t(this._element).data(), e), o.typeCheckConfig(_e, e, this.constructor.DefaultType), e
            }, n._getMenuElement = function() {
                if (!this._menu) {
                    var t = e._getParentFromElement(this._element);
                    t && (this._menu = t.querySelector(".dropdown-menu"))
                }
                return this._menu
            }, n._getPlacement = function() {
                var e = t(this._element.parentNode),
                    n = "bottom-start";
                return e.hasClass("dropup") ? n = t(this._menu).hasClass("dropdown-menu-right") ? "top-end" : "top-start" : e.hasClass("dropright") ? n = "right-start" : e.hasClass("dropleft") ? n = "left-start" : t(this._menu).hasClass("dropdown-menu-right") && (n = "bottom-end"), n
            }, n._detectNavbar = function() {
                return t(this._element).closest(".navbar").length > 0
            }, n._getOffset = function() {
                var e = this,
                    t = {};
                return "function" == typeof this._config.offset ? t.fn = function(t) {
                    return t.offsets = r({}, t.offsets, e._config.offset(t.offsets, e._element) || {}), t
                } : t.offset = this._config.offset, t
            }, n._getPopperConfig = function() {
                var e = {
                    placement: this._getPlacement(),
                    modifiers: {
                        offset: this._getOffset(),
                        flip: {
                            enabled: this._config.flip
                        },
                        preventOverflow: {
                            boundariesElement: this._config.boundary
                        }
                    }
                };
                return "static" === this._config.display && (e.modifiers.applyStyle = {
                    enabled: !1
                }), r({}, e, this._config.popperConfig)
            }, e._jQueryInterface = function(n) {
                return this.each((function() {
                    var i = t(this).data("bs.dropdown");
                    if (i || (i = new e(this, "object" == typeof n ? n : null), t(this).data("bs.dropdown", i)), "string" == typeof n) {
                        if (void 0 === i[n]) throw new TypeError('No method named "' + n + '"');
                        i[n]()
                    }
                }))
            }, e._clearMenus = function(n) {
                if (!n || 3 !== n.which && ("keyup" !== n.type || 9 === n.which))
                    for (var i = [].slice.call(document.querySelectorAll('[data-toggle="dropdown"]')), r = 0, o = i.length; r < o; r++) {
                        var a = e._getParentFromElement(i[r]),
                            s = t(i[r]).data("bs.dropdown"),
                            l = {
                                relatedTarget: i[r]
                            };
                        if (n && "click" === n.type && (l.clickEvent = n), s) {
                            var c = s._menu;
                            if (t(a).hasClass("show") && !(n && ("click" === n.type && /input|textarea/i.test(n.target.tagName) || "keyup" === n.type && 9 === n.which) && t.contains(a, n.target))) {
                                var u = t.Event("hide.bs.dropdown", l);
                                t(a).trigger(u), u.isDefaultPrevented() || ("ontouchstart" in document.documentElement && t(document.body).children().off("mouseover", null, t.noop), i[r].setAttribute("aria-expanded", "false"), s._popper && s._popper.destroy(), t(c).removeClass("show"), t(a).removeClass("show").trigger(t.Event("hidden.bs.dropdown", l)))
                            }
                        }
                    }
            }, e._getParentFromElement = function(e) {
                var t, n = o.getSelectorFromElement(e);
                return n && (t = document.querySelector(n)), t || e.parentNode
            }, e._dataApiKeydownHandler = function(n) {
                if (!(/input|textarea/i.test(n.target.tagName) ? 32 === n.which || 27 !== n.which && (40 !== n.which && 38 !== n.which || t(n.target).closest(".dropdown-menu").length) : !ke.test(n.which)) && !this.disabled && !t(this).hasClass("disabled")) {
                    var i = e._getParentFromElement(this),
                        r = t(i).hasClass("show");
                    if (r || 27 !== n.which) {
                        if (n.preventDefault(), n.stopPropagation(), !r || r && (27 === n.which || 32 === n.which)) return 27 === n.which && t(i.querySelector('[data-toggle="dropdown"]')).trigger("focus"), void t(this).trigger("click");
                        var o = [].slice.call(i.querySelectorAll(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)")).filter((function(e) {
                            return t(e).is(":visible")
                        }));
                        if (0 !== o.length) {
                            var a = o.indexOf(n.target);
                            38 === n.which && a > 0 && a--, 40 === n.which && a < o.length - 1 && a++, a < 0 && (a = 0), o[a].focus()
                        }
                    }
                }
            }, i(e, null, [{
                key: "VERSION",
                get: function() {
                    return "4.5.2"
                }
            }, {
                key: "Default",
                get: function() {
                    return Se
                }
            }, {
                key: "DefaultType",
                get: function() {
                    return Te
                }
            }]), e
        }();
    t(document).on("keydown.bs.dropdown.data-api", '[data-toggle="dropdown"]', De._dataApiKeydownHandler).on("keydown.bs.dropdown.data-api", ".dropdown-menu", De._dataApiKeydownHandler).on("click.bs.dropdown.data-api keyup.bs.dropdown.data-api", De._clearMenus).on("click.bs.dropdown.data-api", '[data-toggle="dropdown"]', (function(e) {
        e.preventDefault(), e.stopPropagation(), De._jQueryInterface.call(t(this), "toggle")
    })).on("click.bs.dropdown.data-api", ".dropdown form", (function(e) {
        e.stopPropagation()
    })), t.fn[_e] = De._jQueryInterface, t.fn[_e].Constructor = De, t.fn[_e].noConflict = function() {
        return t.fn[_e] = Ce, De._jQueryInterface
    };
    var Ee = t.fn.modal,
        Ae = {
            backdrop: !0,
            keyboard: !0,
            focus: !0,
            show: !0
        },
        Me = {
            backdrop: "(boolean|string)",
            keyboard: "boolean",
            focus: "boolean",
            show: "boolean"
        },
        Oe = function() {
            function e(e, t) {
                this._config = this._getConfig(t), this._element = e, this._dialog = e.querySelector(".modal-dialog"), this._backdrop = null, this._isShown = !1, this._isBodyOverflowing = !1, this._ignoreBackdropClick = !1, this._isTransitioning = !1, this._scrollbarWidth = 0
            }
            var n = e.prototype;
            return n.toggle = function(e) {
                return this._isShown ? this.hide() : this.show(e)
            }, n.show = function(e) {
                var n = this;
                if (!this._isShown && !this._isTransitioning) {
                    t(this._element).hasClass("fade") && (this._isTransitioning = !0);
                    var i = t.Event("show.bs.modal", {
                        relatedTarget: e
                    });
                    t(this._element).trigger(i), this._isShown || i.isDefaultPrevented() || (this._isShown = !0, this._checkScrollbar(), this._setScrollbar(), this._adjustDialog(), this._setEscapeEvent(), this._setResizeEvent(), t(this._element).on("click.dismiss.bs.modal", '[data-dismiss="modal"]', (function(e) {
                        return n.hide(e)
                    })), t(this._dialog).on("mousedown.dismiss.bs.modal", (function() {
                        t(n._element).one("mouseup.dismiss.bs.modal", (function(e) {
                            t(e.target).is(n._element) && (n._ignoreBackdropClick = !0)
                        }))
                    })), this._showBackdrop((function() {
                        return n._showElement(e)
                    })))
                }
            }, n.hide = function(e) {
                var n = this;
                if (e && e.preventDefault(), this._isShown && !this._isTransitioning) {
                    var i = t.Event("hide.bs.modal");
                    if (t(this._element).trigger(i), this._isShown && !i.isDefaultPrevented()) {
                        this._isShown = !1;
                        var r = t(this._element).hasClass("fade");
                        if (r && (this._isTransitioning = !0), this._setEscapeEvent(), this._setResizeEvent(), t(document).off("focusin.bs.modal"), t(this._element).removeClass("show"), t(this._element).off("click.dismiss.bs.modal"), t(this._dialog).off("mousedown.dismiss.bs.modal"), r) {
                            var a = o.getTransitionDurationFromElement(this._element);
                            t(this._element).one(o.TRANSITION_END, (function(e) {
                                return n._hideModal(e)
                            })).emulateTransitionEnd(a)
                        } else this._hideModal()
                    }
                }
            }, n.dispose = function() {
                [window, this._element, this._dialog].forEach((function(e) {
                    return t(e).off(".bs.modal")
                })), t(document).off("focusin.bs.modal"), t.removeData(this._element, "bs.modal"), this._config = null, this._element = null, this._dialog = null, this._backdrop = null, this._isShown = null, this._isBodyOverflowing = null, this._ignoreBackdropClick = null, this._isTransitioning = null, this._scrollbarWidth = null
            }, n.handleUpdate = function() {
                this._adjustDialog()
            }, n._getConfig = function(e) {
                return e = r({}, Ae, e), o.typeCheckConfig("modal", e, Me), e
            }, n._triggerBackdropTransition = function() {
                var e = this;
                if ("static" === this._config.backdrop) {
                    var n = t.Event("hidePrevented.bs.modal");
                    if (t(this._element).trigger(n), n.defaultPrevented) return;
                    var i = this._element.scrollHeight > document.documentElement.clientHeight;
                    i || (this._element.style.overflowY = "hidden"), this._element.classList.add("modal-static");
                    var r = o.getTransitionDurationFromElement(this._dialog);
                    t(this._element).off(o.TRANSITION_END), t(this._element).one(o.TRANSITION_END, (function() {
                        e._element.classList.remove("modal-static"), i || t(e._element).one(o.TRANSITION_END, (function() {
                            e._element.style.overflowY = ""
                        })).emulateTransitionEnd(e._element, r)
                    })).emulateTransitionEnd(r), this._element.focus()
                } else this.hide()
            }, n._showElement = function(e) {
                var n = this,
                    i = t(this._element).hasClass("fade"),
                    r = this._dialog ? this._dialog.querySelector(".modal-body") : null;
                this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE || document.body.appendChild(this._element), this._element.style.display = "block", this._element.removeAttribute("aria-hidden"), this._element.setAttribute("aria-modal", !0), this._element.setAttribute("role", "dialog"), t(this._dialog).hasClass("modal-dialog-scrollable") && r ? r.scrollTop = 0 : this._element.scrollTop = 0, i && o.reflow(this._element), t(this._element).addClass("show"), this._config.focus && this._enforceFocus();
                var a = t.Event("shown.bs.modal", {
                        relatedTarget: e
                    }),
                    s = function() {
                        n._config.focus && n._element.focus(), n._isTransitioning = !1, t(n._element).trigger(a)
                    };
                if (i) {
                    var l = o.getTransitionDurationFromElement(this._dialog);
                    t(this._dialog).one(o.TRANSITION_END, s).emulateTransitionEnd(l)
                } else s()
            }, n._enforceFocus = function() {
                var e = this;
                t(document).off("focusin.bs.modal").on("focusin.bs.modal", (function(n) {
                    document !== n.target && e._element !== n.target && 0 === t(e._element).has(n.target).length && e._element.focus()
                }))
            }, n._setEscapeEvent = function() {
                var e = this;
                this._isShown ? t(this._element).on("keydown.dismiss.bs.modal", (function(t) {
                    e._config.keyboard && 27 === t.which ? (t.preventDefault(), e.hide()) : e._config.keyboard || 27 !== t.which || e._triggerBackdropTransition()
                })) : this._isShown || t(this._element).off("keydown.dismiss.bs.modal")
            }, n._setResizeEvent = function() {
                var e = this;
                this._isShown ? t(window).on("resize.bs.modal", (function(t) {
                    return e.handleUpdate(t)
                })) : t(window).off("resize.bs.modal")
            }, n._hideModal = function() {
                var e = this;
                this._element.style.display = "none", this._element.setAttribute("aria-hidden", !0), this._element.removeAttribute("aria-modal"), this._element.removeAttribute("role"), this._isTransitioning = !1, this._showBackdrop((function() {
                    t(document.body).removeClass("modal-open"), e._resetAdjustments(), e._resetScrollbar(), t(e._element).trigger("hidden.bs.modal")
                }))
            }, n._removeBackdrop = function() {
                this._backdrop && (t(this._backdrop).remove(), this._backdrop = null)
            }, n._showBackdrop = function(e) {
                var n = this,
                    i = t(this._element).hasClass("fade") ? "fade" : "";
                if (this._isShown && this._config.backdrop) {
                    if (this._backdrop = document.createElement("div"), this._backdrop.className = "modal-backdrop", i && this._backdrop.classList.add(i), t(this._backdrop).appendTo(document.body), t(this._element).on("click.dismiss.bs.modal", (function(e) {
                            n._ignoreBackdropClick ? n._ignoreBackdropClick = !1 : e.target === e.currentTarget && n._triggerBackdropTransition()
                        })), i && o.reflow(this._backdrop), t(this._backdrop).addClass("show"), !e) return;
                    if (!i) return void e();
                    var r = o.getTransitionDurationFromElement(this._backdrop);
                    t(this._backdrop).one(o.TRANSITION_END, e).emulateTransitionEnd(r)
                } else if (!this._isShown && this._backdrop) {
                    t(this._backdrop).removeClass("show");
                    var a = function() {
                        n._removeBackdrop(), e && e()
                    };
                    if (t(this._element).hasClass("fade")) {
                        var s = o.getTransitionDurationFromElement(this._backdrop);
                        t(this._backdrop).one(o.TRANSITION_END, a).emulateTransitionEnd(s)
                    } else a()
                } else e && e()
            }, n._adjustDialog = function() {
                var e = this._element.scrollHeight > document.documentElement.clientHeight;
                !this._isBodyOverflowing && e && (this._element.style.paddingLeft = this._scrollbarWidth + "px"), this._isBodyOverflowing && !e && (this._element.style.paddingRight = this._scrollbarWidth + "px")
            }, n._resetAdjustments = function() {
                this._element.style.paddingLeft = "", this._element.style.paddingRight = ""
            }, n._checkScrollbar = function() {
                var e = document.body.getBoundingClientRect();
                this._isBodyOverflowing = Math.round(e.left + e.right) < window.innerWidth, this._scrollbarWidth = this._getScrollbarWidth()
            }, n._setScrollbar = function() {
                var e = this;
                if (this._isBodyOverflowing) {
                    var n = [].slice.call(document.querySelectorAll(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top")),
                        i = [].slice.call(document.querySelectorAll(".sticky-top"));
                    t(n).each((function(n, i) {
                        var r = i.style.paddingRight,
                            o = t(i).css("padding-right");
                        t(i).data("padding-right", r).css("padding-right", parseFloat(o) + e._scrollbarWidth + "px")
                    })), t(i).each((function(n, i) {
                        var r = i.style.marginRight,
                            o = t(i).css("margin-right");
                        t(i).data("margin-right", r).css("margin-right", parseFloat(o) - e._scrollbarWidth + "px")
                    }));
                    var r = document.body.style.paddingRight,
                        o = t(document.body).css("padding-right");
                    t(document.body).data("padding-right", r).css("padding-right", parseFloat(o) + this._scrollbarWidth + "px")
                }
                t(document.body).addClass("modal-open")
            }, n._resetScrollbar = function() {
                var e = [].slice.call(document.querySelectorAll(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top"));
                t(e).each((function(e, n) {
                    var i = t(n).data("padding-right");
                    t(n).removeData("padding-right"), n.style.paddingRight = i || ""
                }));
                var n = [].slice.call(document.querySelectorAll(".sticky-top"));
                t(n).each((function(e, n) {
                    var i = t(n).data("margin-right");
                    void 0 !== i && t(n).css("margin-right", i).removeData("margin-right")
                }));
                var i = t(document.body).data("padding-right");
                t(document.body).removeData("padding-right"), document.body.style.paddingRight = i || ""
            }, n._getScrollbarWidth = function() {
                var e = document.createElement("div");
                e.className = "modal-scrollbar-measure", document.body.appendChild(e);
                var t = e.getBoundingClientRect().width - e.clientWidth;
                return document.body.removeChild(e), t
            }, e._jQueryInterface = function(n, i) {
                return this.each((function() {
                    var o = t(this).data("bs.modal"),
                        a = r({}, Ae, t(this).data(), "object" == typeof n && n ? n : {});
                    if (o || (o = new e(this, a), t(this).data("bs.modal", o)), "string" == typeof n) {
                        if (void 0 === o[n]) throw new TypeError('No method named "' + n + '"');
                        o[n](i)
                    } else a.show && o.show(i)
                }))
            }, i(e, null, [{
                key: "VERSION",
                get: function() {
                    return "4.5.2"
                }
            }, {
                key: "Default",
                get: function() {
                    return Ae
                }
            }]), e
        }();
    t(document).on("click.bs.modal.data-api", '[data-toggle="modal"]', (function(e) {
        var n, i = this,
            a = o.getSelectorFromElement(this);
        a && (n = document.querySelector(a));
        var s = t(n).data("bs.modal") ? "toggle" : r({}, t(n).data(), t(this).data());
        "A" !== this.tagName && "AREA" !== this.tagName || e.preventDefault();
        var l = t(n).one("show.bs.modal", (function(e) {
            e.isDefaultPrevented() || l.one("hidden.bs.modal", (function() {
                t(i).is(":visible") && i.focus()
            }))
        }));
        Oe._jQueryInterface.call(t(n), s, this)
    })), t.fn.modal = Oe._jQueryInterface, t.fn.modal.Constructor = Oe, t.fn.modal.noConflict = function() {
        return t.fn.modal = Ee, Oe._jQueryInterface
    };
    var Ie = ["background", "cite", "href", "itemtype", "longdesc", "poster", "src", "xlink:href"],
        Pe = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi,
        Le = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i;

    function Fe(e, t, n) {
        if (0 === e.length) return e;
        if (n && "function" == typeof n) return n(e);
        for (var i = (new window.DOMParser).parseFromString(e, "text/html"), r = Object.keys(t), o = [].slice.call(i.body.querySelectorAll("*")), a = function(e, n) {
                var i = o[e],
                    a = i.nodeName.toLowerCase();
                if (-1 === r.indexOf(i.nodeName.toLowerCase())) return i.parentNode.removeChild(i), "continue";
                var s = [].slice.call(i.attributes),
                    l = [].concat(t["*"] || [], t[a] || []);
                s.forEach((function(e) {
                    (function(e, t) {
                        var n = e.nodeName.toLowerCase();
                        if (-1 !== t.indexOf(n)) return -1 === Ie.indexOf(n) || Boolean(e.nodeValue.match(Pe) || e.nodeValue.match(Le));
                        for (var i = t.filter((function(e) {
                                return e instanceof RegExp
                            })), r = 0, o = i.length; r < o; r++)
                            if (n.match(i[r])) return !0;
                        return !1
                    })(e, l) || i.removeAttribute(e.nodeName)
                }))
            }, s = 0, l = o.length; s < l; s++) a(s);
        return i.body.innerHTML
    }
    var Ne = "tooltip",
        Re = t.fn[Ne],
        je = new RegExp("(^|\\s)bs-tooltip\\S+", "g"),
        $e = ["sanitize", "whiteList", "sanitizeFn"],
        ze = {
            animation: "boolean",
            template: "string",
            title: "(string|element|function)",
            trigger: "string",
            delay: "(number|object)",
            html: "boolean",
            selector: "(string|boolean)",
            placement: "(string|function)",
            offset: "(number|string|function)",
            container: "(string|element|boolean)",
            fallbackPlacement: "(string|array)",
            boundary: "(string|element)",
            sanitize: "boolean",
            sanitizeFn: "(null|function)",
            whiteList: "object",
            popperConfig: "(null|object)"
        },
        He = {
            AUTO: "auto",
            TOP: "top",
            RIGHT: "right",
            BOTTOM: "bottom",
            LEFT: "left"
        },
        Be = {
            animation: !0,
            template: '<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>',
            trigger: "hover focus",
            title: "",
            delay: 0,
            html: !1,
            selector: !1,
            placement: "top",
            offset: 0,
            container: !1,
            fallbackPlacement: "flip",
            boundary: "scrollParent",
            sanitize: !0,
            sanitizeFn: null,
            whiteList: {
                "*": ["class", "dir", "id", "lang", "role", /^aria-[\w-]*$/i],
                a: ["target", "href", "title", "rel"],
                area: [],
                b: [],
                br: [],
                col: [],
                code: [],
                div: [],
                em: [],
                hr: [],
                h1: [],
                h2: [],
                h3: [],
                h4: [],
                h5: [],
                h6: [],
                i: [],
                img: ["src", "srcset", "alt", "title", "width", "height"],
                li: [],
                ol: [],
                p: [],
                pre: [],
                s: [],
                small: [],
                span: [],
                sub: [],
                sup: [],
                strong: [],
                u: [],
                ul: []
            },
            popperConfig: null
        },
        qe = {
            HIDE: "hide.bs.tooltip",
            HIDDEN: "hidden.bs.tooltip",
            SHOW: "show.bs.tooltip",
            SHOWN: "shown.bs.tooltip",
            INSERTED: "inserted.bs.tooltip",
            CLICK: "click.bs.tooltip",
            FOCUSIN: "focusin.bs.tooltip",
            FOCUSOUT: "focusout.bs.tooltip",
            MOUSEENTER: "mouseenter.bs.tooltip",
            MOUSELEAVE: "mouseleave.bs.tooltip"
        },
        We = function() {
            function e(e, t) {
                if (void 0 === xe) throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");
                this._isEnabled = !0, this._timeout = 0, this._hoverState = "", this._activeTrigger = {}, this._popper = null, this.element = e, this.config = this._getConfig(t), this.tip = null, this._setListeners()
            }
            var n = e.prototype;
            return n.enable = function() {
                this._isEnabled = !0
            }, n.disable = function() {
                this._isEnabled = !1
            }, n.toggleEnabled = function() {
                this._isEnabled = !this._isEnabled
            }, n.toggle = function(e) {
                if (this._isEnabled)
                    if (e) {
                        var n = this.constructor.DATA_KEY,
                            i = t(e.currentTarget).data(n);
                        i || (i = new this.constructor(e.currentTarget, this._getDelegateConfig()), t(e.currentTarget).data(n, i)), i._activeTrigger.click = !i._activeTrigger.click, i._isWithActiveTrigger() ? i._enter(null, i) : i._leave(null, i)
                    } else {
                        if (t(this.getTipElement()).hasClass("show")) return void this._leave(null, this);
                        this._enter(null, this)
                    }
            }, n.dispose = function() {
                clearTimeout(this._timeout), t.removeData(this.element, this.constructor.DATA_KEY), t(this.element).off(this.constructor.EVENT_KEY), t(this.element).closest(".modal").off("hide.bs.modal", this._hideModalHandler), this.tip && t(this.tip).remove(), this._isEnabled = null, this._timeout = null, this._hoverState = null, this._activeTrigger = null, this._popper && this._popper.destroy(), this._popper = null, this.element = null, this.config = null, this.tip = null
            }, n.show = function() {
                var e = this;
                if ("none" === t(this.element).css("display")) throw new Error("Please use show on visible elements");
                var n = t.Event(this.constructor.Event.SHOW);
                if (this.isWithContent() && this._isEnabled) {
                    t(this.element).trigger(n);
                    var i = o.findShadowRoot(this.element),
                        r = t.contains(null !== i ? i : this.element.ownerDocument.documentElement, this.element);
                    if (n.isDefaultPrevented() || !r) return;
                    var a = this.getTipElement(),
                        s = o.getUID(this.constructor.NAME);
                    a.setAttribute("id", s), this.element.setAttribute("aria-describedby", s), this.setContent(), this.config.animation && t(a).addClass("fade");
                    var l = "function" == typeof this.config.placement ? this.config.placement.call(this, a, this.element) : this.config.placement,
                        c = this._getAttachment(l);
                    this.addAttachmentClass(c);
                    var u = this._getContainer();
                    t(a).data(this.constructor.DATA_KEY, this), t.contains(this.element.ownerDocument.documentElement, this.tip) || t(a).appendTo(u), t(this.element).trigger(this.constructor.Event.INSERTED), this._popper = new xe(this.element, a, this._getPopperConfig(c)), t(a).addClass("show"), "ontouchstart" in document.documentElement && t(document.body).children().on("mouseover", null, t.noop);
                    var d = function() {
                        e.config.animation && e._fixTransition();
                        var n = e._hoverState;
                        e._hoverState = null, t(e.element).trigger(e.constructor.Event.SHOWN), "out" === n && e._leave(null, e)
                    };
                    if (t(this.tip).hasClass("fade")) {
                        var h = o.getTransitionDurationFromElement(this.tip);
                        t(this.tip).one(o.TRANSITION_END, d).emulateTransitionEnd(h)
                    } else d()
                }
            }, n.hide = function(e) {
                var n = this,
                    i = this.getTipElement(),
                    r = t.Event(this.constructor.Event.HIDE),
                    a = function() {
                        "show" !== n._hoverState && i.parentNode && i.parentNode.removeChild(i), n._cleanTipClass(), n.element.removeAttribute("aria-describedby"), t(n.element).trigger(n.constructor.Event.HIDDEN), null !== n._popper && n._popper.destroy(), e && e()
                    };
                if (t(this.element).trigger(r), !r.isDefaultPrevented()) {
                    if (t(i).removeClass("show"), "ontouchstart" in document.documentElement && t(document.body).children().off("mouseover", null, t.noop), this._activeTrigger.click = !1, this._activeTrigger.focus = !1, this._activeTrigger.hover = !1, t(this.tip).hasClass("fade")) {
                        var s = o.getTransitionDurationFromElement(i);
                        t(i).one(o.TRANSITION_END, a).emulateTransitionEnd(s)
                    } else a();
                    this._hoverState = ""
                }
            }, n.update = function() {
                null !== this._popper && this._popper.scheduleUpdate()
            }, n.isWithContent = function() {
                return Boolean(this.getTitle())
            }, n.addAttachmentClass = function(e) {
                t(this.getTipElement()).addClass("bs-tooltip-" + e)
            }, n.getTipElement = function() {
                return this.tip = this.tip || t(this.config.template)[0], this.tip
            }, n.setContent = function() {
                var e = this.getTipElement();
                this.setElementContent(t(e.querySelectorAll(".tooltip-inner")), this.getTitle()), t(e).removeClass("fade show")
            }, n.setElementContent = function(e, n) {
                "object" != typeof n || !n.nodeType && !n.jquery ? this.config.html ? (this.config.sanitize && (n = Fe(n, this.config.whiteList, this.config.sanitizeFn)), e.html(n)) : e.text(n) : this.config.html ? t(n).parent().is(e) || e.empty().append(n) : e.text(t(n).text())
            }, n.getTitle = function() {
                var e = this.element.getAttribute("data-original-title");
                return e || (e = "function" == typeof this.config.title ? this.config.title.call(this.element) : this.config.title), e
            }, n._getPopperConfig = function(e) {
                var t = this;
                return r({}, {
                    placement: e,
                    modifiers: {
                        offset: this._getOffset(),
                        flip: {
                            behavior: this.config.fallbackPlacement
                        },
                        arrow: {
                            element: ".arrow"
                        },
                        preventOverflow: {
                            boundariesElement: this.config.boundary
                        }
                    },
                    onCreate: function(e) {
                        e.originalPlacement !== e.placement && t._handlePopperPlacementChange(e)
                    },
                    onUpdate: function(e) {
                        return t._handlePopperPlacementChange(e)
                    }
                }, this.config.popperConfig)
            }, n._getOffset = function() {
                var e = this,
                    t = {};
                return "function" == typeof this.config.offset ? t.fn = function(t) {
                    return t.offsets = r({}, t.offsets, e.config.offset(t.offsets, e.element) || {}), t
                } : t.offset = this.config.offset, t
            }, n._getContainer = function() {
                return !1 === this.config.container ? document.body : o.isElement(this.config.container) ? t(this.config.container) : t(document).find(this.config.container)
            }, n._getAttachment = function(e) {
                return He[e.toUpperCase()]
            }, n._setListeners = function() {
                var e = this;
                this.config.trigger.split(" ").forEach((function(n) {
                    if ("click" === n) t(e.element).on(e.constructor.Event.CLICK, e.config.selector, (function(t) {
                        return e.toggle(t)
                    }));
                    else if ("manual" !== n) {
                        var i = "hover" === n ? e.constructor.Event.MOUSEENTER : e.constructor.Event.FOCUSIN,
                            r = "hover" === n ? e.constructor.Event.MOUSELEAVE : e.constructor.Event.FOCUSOUT;
                        t(e.element).on(i, e.config.selector, (function(t) {
                            return e._enter(t)
                        })).on(r, e.config.selector, (function(t) {
                            return e._leave(t)
                        }))
                    }
                })), this._hideModalHandler = function() {
                    e.element && e.hide()
                }, t(this.element).closest(".modal").on("hide.bs.modal", this._hideModalHandler), this.config.selector ? this.config = r({}, this.config, {
                    trigger: "manual",
                    selector: ""
                }) : this._fixTitle()
            }, n._fixTitle = function() {
                var e = typeof this.element.getAttribute("data-original-title");
                (this.element.getAttribute("title") || "string" !== e) && (this.element.setAttribute("data-original-title", this.element.getAttribute("title") || ""), this.element.setAttribute("title", ""))
            }, n._enter = function(e, n) {
                var i = this.constructor.DATA_KEY;
                (n = n || t(e.currentTarget).data(i)) || (n = new this.constructor(e.currentTarget, this._getDelegateConfig()), t(e.currentTarget).data(i, n)), e && (n._activeTrigger["focusin" === e.type ? "focus" : "hover"] = !0), t(n.getTipElement()).hasClass("show") || "show" === n._hoverState ? n._hoverState = "show" : (clearTimeout(n._timeout), n._hoverState = "show", n.config.delay && n.config.delay.show ? n._timeout = setTimeout((function() {
                    "show" === n._hoverState && n.show()
                }), n.config.delay.show) : n.show())
            }, n._leave = function(e, n) {
                var i = this.constructor.DATA_KEY;
                (n = n || t(e.currentTarget).data(i)) || (n = new this.constructor(e.currentTarget, this._getDelegateConfig()), t(e.currentTarget).data(i, n)), e && (n._activeTrigger["focusout" === e.type ? "focus" : "hover"] = !1), n._isWithActiveTrigger() || (clearTimeout(n._timeout), n._hoverState = "out", n.config.delay && n.config.delay.hide ? n._timeout = setTimeout((function() {
                    "out" === n._hoverState && n.hide()
                }), n.config.delay.hide) : n.hide())
            }, n._isWithActiveTrigger = function() {
                for (var e in this._activeTrigger)
                    if (this._activeTrigger[e]) return !0;
                return !1
            }, n._getConfig = function(e) {
                var n = t(this.element).data();
                return Object.keys(n).forEach((function(e) {
                    -1 !== $e.indexOf(e) && delete n[e]
                })), "number" == typeof(e = r({}, this.constructor.Default, n, "object" == typeof e && e ? e : {})).delay && (e.delay = {
                    show: e.delay,
                    hide: e.delay
                }), "number" == typeof e.title && (e.title = e.title.toString()), "number" == typeof e.content && (e.content = e.content.toString()), o.typeCheckConfig(Ne, e, this.constructor.DefaultType), e.sanitize && (e.template = Fe(e.template, e.whiteList, e.sanitizeFn)), e
            }, n._getDelegateConfig = function() {
                var e = {};
                if (this.config)
                    for (var t in this.config) this.constructor.Default[t] !== this.config[t] && (e[t] = this.config[t]);
                return e
            }, n._cleanTipClass = function() {
                var e = t(this.getTipElement()),
                    n = e.attr("class").match(je);
                null !== n && n.length && e.removeClass(n.join(""))
            }, n._handlePopperPlacementChange = function(e) {
                this.tip = e.instance.popper, this._cleanTipClass(), this.addAttachmentClass(this._getAttachment(e.placement))
            }, n._fixTransition = function() {
                var e = this.getTipElement(),
                    n = this.config.animation;
                null === e.getAttribute("x-placement") && (t(e).removeClass("fade"), this.config.animation = !1, this.hide(), this.show(), this.config.animation = n)
            }, e._jQueryInterface = function(n) {
                return this.each((function() {
                    var i = t(this).data("bs.tooltip"),
                        r = "object" == typeof n && n;
                    if ((i || !/dispose|hide/.test(n)) && (i || (i = new e(this, r), t(this).data("bs.tooltip", i)), "string" == typeof n)) {
                        if (void 0 === i[n]) throw new TypeError('No method named "' + n + '"');
                        i[n]()
                    }
                }))
            }, i(e, null, [{
                key: "VERSION",
                get: function() {
                    return "4.5.2"
                }
            }, {
                key: "Default",
                get: function() {
                    return Be
                }
            }, {
                key: "NAME",
                get: function() {
                    return Ne
                }
            }, {
                key: "DATA_KEY",
                get: function() {
                    return "bs.tooltip"
                }
            }, {
                key: "Event",
                get: function() {
                    return qe
                }
            }, {
                key: "EVENT_KEY",
                get: function() {
                    return ".bs.tooltip"
                }
            }, {
                key: "DefaultType",
                get: function() {
                    return ze
                }
            }]), e
        }();
    t.fn[Ne] = We._jQueryInterface, t.fn[Ne].Constructor = We, t.fn[Ne].noConflict = function() {
        return t.fn[Ne] = Re, We._jQueryInterface
    };
    var Ue = "popover",
        Ve = t.fn[Ue],
        Ye = new RegExp("(^|\\s)bs-popover\\S+", "g"),
        Xe = r({}, We.Default, {
            placement: "right",
            trigger: "click",
            content: "",
            template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'
        }),
        Ge = r({}, We.DefaultType, {
            content: "(string|element|function)"
        }),
        Qe = {
            HIDE: "hide.bs.popover",
            HIDDEN: "hidden.bs.popover",
            SHOW: "show.bs.popover",
            SHOWN: "shown.bs.popover",
            INSERTED: "inserted.bs.popover",
            CLICK: "click.bs.popover",
            FOCUSIN: "focusin.bs.popover",
            FOCUSOUT: "focusout.bs.popover",
            MOUSEENTER: "mouseenter.bs.popover",
            MOUSELEAVE: "mouseleave.bs.popover"
        },
        Ke = function(e) {
            var n, r;

            function o() {
                return e.apply(this, arguments) || this
            }
            r = e, (n = o).prototype = Object.create(r.prototype), n.prototype.constructor = n, n.__proto__ = r;
            var a = o.prototype;
            return a.isWithContent = function() {
                return this.getTitle() || this._getContent()
            }, a.addAttachmentClass = function(e) {
                t(this.getTipElement()).addClass("bs-popover-" + e)
            }, a.getTipElement = function() {
                return this.tip = this.tip || t(this.config.template)[0], this.tip
            }, a.setContent = function() {
                var e = t(this.getTipElement());
                this.setElementContent(e.find(".popover-header"), this.getTitle());
                var n = this._getContent();
                "function" == typeof n && (n = n.call(this.element)), this.setElementContent(e.find(".popover-body"), n), e.removeClass("fade show")
            }, a._getContent = function() {
                return this.element.getAttribute("data-content") || this.config.content
            }, a._cleanTipClass = function() {
                var e = t(this.getTipElement()),
                    n = e.attr("class").match(Ye);
                null !== n && n.length > 0 && e.removeClass(n.join(""))
            }, o._jQueryInterface = function(e) {
                return this.each((function() {
                    var n = t(this).data("bs.popover"),
                        i = "object" == typeof e ? e : null;
                    if ((n || !/dispose|hide/.test(e)) && (n || (n = new o(this, i), t(this).data("bs.popover", n)), "string" == typeof e)) {
                        if (void 0 === n[e]) throw new TypeError('No method named "' + e + '"');
                        n[e]()
                    }
                }))
            }, i(o, null, [{
                key: "VERSION",
                get: function() {
                    return "4.5.2"
                }
            }, {
                key: "Default",
                get: function() {
                    return Xe
                }
            }, {
                key: "NAME",
                get: function() {
                    return Ue
                }
            }, {
                key: "DATA_KEY",
                get: function() {
                    return "bs.popover"
                }
            }, {
                key: "Event",
                get: function() {
                    return Qe
                }
            }, {
                key: "EVENT_KEY",
                get: function() {
                    return ".bs.popover"
                }
            }, {
                key: "DefaultType",
                get: function() {
                    return Ge
                }
            }]), o
        }(We);
    t.fn[Ue] = Ke._jQueryInterface, t.fn[Ue].Constructor = Ke, t.fn[Ue].noConflict = function() {
        return t.fn[Ue] = Ve, Ke._jQueryInterface
    };
    var Je = "scrollspy",
        Ze = t.fn[Je],
        et = {
            offset: 10,
            method: "auto",
            target: ""
        },
        tt = {
            offset: "number",
            method: "string",
            target: "(string|element)"
        },
        nt = function() {
            function e(e, n) {
                var i = this;
                this._element = e, this._scrollElement = "BODY" === e.tagName ? window : e, this._config = this._getConfig(n), this._selector = this._config.target + " .nav-link," + this._config.target + " .list-group-item," + this._config.target + " .dropdown-item", this._offsets = [], this._targets = [], this._activeTarget = null, this._scrollHeight = 0, t(this._scrollElement).on("scroll.bs.scrollspy", (function(e) {
                    return i._process(e)
                })), this.refresh(), this._process()
            }
            var n = e.prototype;
            return n.refresh = function() {
                var e = this,
                    n = this._scrollElement === this._scrollElement.window ? "offset" : "position",
                    i = "auto" === this._config.method ? n : this._config.method,
                    r = "position" === i ? this._getScrollTop() : 0;
                this._offsets = [], this._targets = [], this._scrollHeight = this._getScrollHeight(), [].slice.call(document.querySelectorAll(this._selector)).map((function(e) {
                    var n, a = o.getSelectorFromElement(e);
                    if (a && (n = document.querySelector(a)), n) {
                        var s = n.getBoundingClientRect();
                        if (s.width || s.height) return [t(n)[i]().top + r, a]
                    }
                    return null
                })).filter((function(e) {
                    return e
                })).sort((function(e, t) {
                    return e[0] - t[0]
                })).forEach((function(t) {
                    e._offsets.push(t[0]), e._targets.push(t[1])
                }))
            }, n.dispose = function() {
                t.removeData(this._element, "bs.scrollspy"), t(this._scrollElement).off(".bs.scrollspy"), this._element = null, this._scrollElement = null, this._config = null, this._selector = null, this._offsets = null, this._targets = null, this._activeTarget = null, this._scrollHeight = null
            }, n._getConfig = function(e) {
                if ("string" != typeof(e = r({}, et, "object" == typeof e && e ? e : {})).target && o.isElement(e.target)) {
                    var n = t(e.target).attr("id");
                    n || (n = o.getUID(Je), t(e.target).attr("id", n)), e.target = "#" + n
                }
                return o.typeCheckConfig(Je, e, tt), e
            }, n._getScrollTop = function() {
                return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop
            }, n._getScrollHeight = function() {
                return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight)
            }, n._getOffsetHeight = function() {
                return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height
            }, n._process = function() {
                var e = this._getScrollTop() + this._config.offset,
                    t = this._getScrollHeight(),
                    n = this._config.offset + t - this._getOffsetHeight();
                if (this._scrollHeight !== t && this.refresh(), e >= n) {
                    var i = this._targets[this._targets.length - 1];
                    this._activeTarget !== i && this._activate(i)
                } else {
                    if (this._activeTarget && e < this._offsets[0] && this._offsets[0] > 0) return this._activeTarget = null, void this._clear();
                    for (var r = this._offsets.length; r--;) this._activeTarget !== this._targets[r] && e >= this._offsets[r] && (void 0 === this._offsets[r + 1] || e < this._offsets[r + 1]) && this._activate(this._targets[r])
                }
            }, n._activate = function(e) {
                this._activeTarget = e, this._clear();
                var n = this._selector.split(",").map((function(t) {
                        return t + '[data-target="' + e + '"],' + t + '[href="' + e + '"]'
                    })),
                    i = t([].slice.call(document.querySelectorAll(n.join(","))));
                i.hasClass("dropdown-item") ? (i.closest(".dropdown").find(".dropdown-toggle").addClass("active"), i.addClass("active")) : (i.addClass("active"), i.parents(".nav, .list-group").prev(".nav-link, .list-group-item").addClass("active"), i.parents(".nav, .list-group").prev(".nav-item").children(".nav-link").addClass("active")), t(this._scrollElement).trigger("activate.bs.scrollspy", {
                    relatedTarget: e
                })
            }, n._clear = function() {
                [].slice.call(document.querySelectorAll(this._selector)).filter((function(e) {
                    return e.classList.contains("active")
                })).forEach((function(e) {
                    return e.classList.remove("active")
                }))
            }, e._jQueryInterface = function(n) {
                return this.each((function() {
                    var i = t(this).data("bs.scrollspy");
                    if (i || (i = new e(this, "object" == typeof n && n), t(this).data("bs.scrollspy", i)), "string" == typeof n) {
                        if (void 0 === i[n]) throw new TypeError('No method named "' + n + '"');
                        i[n]()
                    }
                }))
            }, i(e, null, [{
                key: "VERSION",
                get: function() {
                    return "4.5.2"
                }
            }, {
                key: "Default",
                get: function() {
                    return et
                }
            }]), e
        }();
    t(window).on("load.bs.scrollspy.data-api", (function() {
        for (var e = [].slice.call(document.querySelectorAll('[data-spy="scroll"]')), n = e.length; n--;) {
            var i = t(e[n]);
            nt._jQueryInterface.call(i, i.data())
        }
    })), t.fn[Je] = nt._jQueryInterface, t.fn[Je].Constructor = nt, t.fn[Je].noConflict = function() {
        return t.fn[Je] = Ze, nt._jQueryInterface
    };
    var it = t.fn.tab,
        rt = function() {
            function e(e) {
                this._element = e
            }
            var n = e.prototype;
            return n.show = function() {
                var e = this;
                if (!(this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && t(this._element).hasClass("active") || t(this._element).hasClass("disabled"))) {
                    var n, i, r = t(this._element).closest(".nav, .list-group")[0],
                        a = o.getSelectorFromElement(this._element);
                    if (r) {
                        var s = "UL" === r.nodeName || "OL" === r.nodeName ? "> li > .active" : ".active";
                        i = (i = t.makeArray(t(r).find(s)))[i.length - 1]
                    }
                    var l = t.Event("hide.bs.tab", {
                            relatedTarget: this._element
                        }),
                        c = t.Event("show.bs.tab", {
                            relatedTarget: i
                        });
                    if (i && t(i).trigger(l), t(this._element).trigger(c), !c.isDefaultPrevented() && !l.isDefaultPrevented()) {
                        a && (n = document.querySelector(a)), this._activate(this._element, r);
                        var u = function() {
                            var n = t.Event("hidden.bs.tab", {
                                    relatedTarget: e._element
                                }),
                                r = t.Event("shown.bs.tab", {
                                    relatedTarget: i
                                });
                            t(i).trigger(n), t(e._element).trigger(r)
                        };
                        n ? this._activate(n, n.parentNode, u) : u()
                    }
                }
            }, n.dispose = function() {
                t.removeData(this._element, "bs.tab"), this._element = null
            }, n._activate = function(e, n, i) {
                var r = this,
                    a = (!n || "UL" !== n.nodeName && "OL" !== n.nodeName ? t(n).children(".active") : t(n).find("> li > .active"))[0],
                    s = i && a && t(a).hasClass("fade"),
                    l = function() {
                        return r._transitionComplete(e, a, i)
                    };
                if (a && s) {
                    var c = o.getTransitionDurationFromElement(a);
                    t(a).removeClass("show").one(o.TRANSITION_END, l).emulateTransitionEnd(c)
                } else l()
            }, n._transitionComplete = function(e, n, i) {
                if (n) {
                    t(n).removeClass("active");
                    var r = t(n.parentNode).find("> .dropdown-menu .active")[0];
                    r && t(r).removeClass("active"), "tab" === n.getAttribute("role") && n.setAttribute("aria-selected", !1)
                }
                if (t(e).addClass("active"), "tab" === e.getAttribute("role") && e.setAttribute("aria-selected", !0), o.reflow(e), e.classList.contains("fade") && e.classList.add("show"), e.parentNode && t(e.parentNode).hasClass("dropdown-menu")) {
                    var a = t(e).closest(".dropdown")[0];
                    if (a) {
                        var s = [].slice.call(a.querySelectorAll(".dropdown-toggle"));
                        t(s).addClass("active")
                    }
                    e.setAttribute("aria-expanded", !0)
                }
                i && i()
            }, e._jQueryInterface = function(n) {
                return this.each((function() {
                    var i = t(this),
                        r = i.data("bs.tab");
                    if (r || (r = new e(this), i.data("bs.tab", r)), "string" == typeof n) {
                        if (void 0 === r[n]) throw new TypeError('No method named "' + n + '"');
                        r[n]()
                    }
                }))
            }, i(e, null, [{
                key: "VERSION",
                get: function() {
                    return "4.5.2"
                }
            }]), e
        }();
    t(document).on("click.bs.tab.data-api", '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]', (function(e) {
        e.preventDefault(), rt._jQueryInterface.call(t(this), "show")
    })), t.fn.tab = rt._jQueryInterface, t.fn.tab.Constructor = rt, t.fn.tab.noConflict = function() {
        return t.fn.tab = it, rt._jQueryInterface
    };
    var ot = t.fn.toast,
        at = {
            animation: "boolean",
            autohide: "boolean",
            delay: "number"
        },
        st = {
            animation: !0,
            autohide: !0,
            delay: 500
        },
        lt = function() {
            function e(e, t) {
                this._element = e, this._config = this._getConfig(t), this._timeout = null, this._setListeners()
            }
            var n = e.prototype;
            return n.show = function() {
                var e = this,
                    n = t.Event("show.bs.toast");
                if (t(this._element).trigger(n), !n.isDefaultPrevented()) {
                    this._clearTimeout(), this._config.animation && this._element.classList.add("fade");
                    var i = function() {
                        e._element.classList.remove("showing"), e._element.classList.add("show"), t(e._element).trigger("shown.bs.toast"), e._config.autohide && (e._timeout = setTimeout((function() {
                            e.hide()
                        }), e._config.delay))
                    };
                    if (this._element.classList.remove("hide"), o.reflow(this._element), this._element.classList.add("showing"), this._config.animation) {
                        var r = o.getTransitionDurationFromElement(this._element);
                        t(this._element).one(o.TRANSITION_END, i).emulateTransitionEnd(r)
                    } else i()
                }
            }, n.hide = function() {
                if (this._element.classList.contains("show")) {
                    var e = t.Event("hide.bs.toast");
                    t(this._element).trigger(e), e.isDefaultPrevented() || this._close()
                }
            }, n.dispose = function() {
                this._clearTimeout(), this._element.classList.contains("show") && this._element.classList.remove("show"), t(this._element).off("click.dismiss.bs.toast"), t.removeData(this._element, "bs.toast"), this._element = null, this._config = null
            }, n._getConfig = function(e) {
                return e = r({}, st, t(this._element).data(), "object" == typeof e && e ? e : {}), o.typeCheckConfig("toast", e, this.constructor.DefaultType), e
            }, n._setListeners = function() {
                var e = this;
                t(this._element).on("click.dismiss.bs.toast", '[data-dismiss="toast"]', (function() {
                    return e.hide()
                }))
            }, n._close = function() {
                var e = this,
                    n = function() {
                        e._element.classList.add("hide"), t(e._element).trigger("hidden.bs.toast")
                    };
                if (this._element.classList.remove("show"), this._config.animation) {
                    var i = o.getTransitionDurationFromElement(this._element);
                    t(this._element).one(o.TRANSITION_END, n).emulateTransitionEnd(i)
                } else n()
            }, n._clearTimeout = function() {
                clearTimeout(this._timeout), this._timeout = null
            }, e._jQueryInterface = function(n) {
                return this.each((function() {
                    var i = t(this),
                        r = i.data("bs.toast");
                    if (r || (r = new e(this, "object" == typeof n && n), i.data("bs.toast", r)), "string" == typeof n) {
                        if (void 0 === r[n]) throw new TypeError('No method named "' + n + '"');
                        r[n](this)
                    }
                }))
            }, i(e, null, [{
                key: "VERSION",
                get: function() {
                    return "4.5.2"
                }
            }, {
                key: "DefaultType",
                get: function() {
                    return at
                }
            }, {
                key: "Default",
                get: function() {
                    return st
                }
            }]), e
        }();
    t.fn.toast = lt._jQueryInterface, t.fn.toast.Constructor = lt, t.fn.toast.noConflict = function() {
        return t.fn.toast = ot, lt._jQueryInterface
    }, e.Alert = l, e.Button = u, e.Carousel = m, e.Collapse = x, e.Dropdown = De, e.Modal = Oe, e.Popover = Ke, e.Scrollspy = nt, e.Tab = rt, e.Toast = lt, e.Tooltip = We, e.Util = o, Object.defineProperty(e, "__esModule", {
        value: !0
    })
}));
var NioApp = function(e, t) {
    "use strict";
    var n = t(window),
        i = t("body"),
        r = "nio-theme";

    function o(e, t) {
        return Object.keys(t).forEach((function(n) {
            e[n] = t[n]
        })), e
    }
    return t.fn.exists = function() {
        return 0 < this.length
    }, t.fn.csskey = function(e, t) {
        for (var n = t ? t + "-" : "", i = e ? e.split(" ") : "", r = 0; r < i.length; r++) i[r] = n + i[r];
        return i.toString().replace(",", " ")
    }, e.BS = {}, e.TGL = {}, e.Ani = {}, e.Addons = {}, e.Slider = {}, e.Picker = {}, e.Win = {
        height: n.height(),
        width: n.outerWidth()
    }, e.Break = {
        mb: 420,
        sm: 576,
        md: 768,
        lg: 992,
        xl: 1200,
        xxl: 1540,
        any: 1 / 0
    }, e.Host = {
        name: window.location.hostname,
        locat: r.slice(-5) + r.slice(0, 3)
    }, e.isDark = !(!i.hasClass("dark-mode") && "dark" !== i.data("theme")), e.State = {
        isRTL: !(!i.hasClass("has-rtl") && "rtl" !== i.attr("dir")),
        isTouch: "ontouchstart" in document.documentElement,
        isMobile: !!navigator.userAgent.match(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|Windows Phone|/i),
        asMobile: e.Win.width < e.Break.md,
        asServe: e.Host.name.split(".").indexOf(e.Host.locat)
    }, e.hexRGB = function(e, t) {
        var n, i, r = t || 1;
        if (/^#([A-Fa-f0-9]{3}){1,2}$/.test(e)) return 3 === (n = e.substring(1).split("")).length && (n = [n[0], n[0], n[1], n[1], n[2], n[2]]), i = [(n = "0x" + n.join("")) >> 16 & 255, n >> 8 & 255, 255 & n].join(","), 1 <= r ? "rgba(" + i + ")" : "rgba(" + i + "," + r + ")";
        throw new Error("bad hex")
    }, e.StateUpdate = function() {
        e.Win = {
            height: n.height(),
            width: n.outerWidth()
        }, e.State.asMobile = e.Win.width < e.Break.md
    }, e.ClassInit = function() {
        function t() {
            !0 === e.State.asMobile ? i.addClass("as-mobile") : i.removeClass("as-mobile")
        }!0 === e.State.isTouch ? i.addClass("has-touch") : i.addClass("no-touch"), t(), !0 === e.State.isRTL && i.addClass("has-rtl"), i.addClass("nk-" + r), n.on("resize", t)
    }, e.ColorBG = function() {
        function e(e, n) {
            var i = t(e),
                r = n || "bg",
                o = i.data(r);
            "" !== o && ("bg-color" === r ? i.css("background-color", o) : "bg-image" === r ? i.css("background-image", 'url("' + o + '")') : i.css("background", o))
        }
        t("[data-bg]").each((function() {
            e(this, "bg")
        })), t("[data-bg-color]").each((function() {
            e(this, "bg-color")
        })), t("[data-bg-image]").each((function() {
            e(this, "bg-image")
        }))
    }, e.ColorTXT = function() {
        t("[data-color]").each((function() {
            var e, n;
            "" !== (n = (e = t(this)).data("color")) && e.css("color", n)
        }))
    }, e.BreakClass = function(n, i, r) {
        var a = n || ".header-menu",
            s = i || e.Break.md,
            l = {
                timeOut: 1e3,
                classAdd: "mobile-menu"
            },
            c = r ? o(l, r) : l,
            u = !!c.ignore && c.ignore;
        if (u && t(a).hasClass(u)) return !1;
        e.Win.width < s ? setTimeout((function() {
            e.Win.width < s && t(a).addClass(c.classAdd)
        }), c.timeOut) : t(a).removeClass(c.classAdd)
    }, e.Passcode = function(e, n) {
        var i = {
                showClass: "is-shown",
                hideClass: "is-hidden"
            },
            r = n ? o(i, n) : i;
        t(e).exists() && t(e).on("click", (function(e) {
            var n = t(this),
                i = n.data("target"),
                o = t("#" + i);
            e.preventDefault(), o.hasClass(r.showClass) ? (n.add(o).addClass(r.hideClass).removeClass(r.showClass), o.attr("type", "password")) : (n.add(o).addClass(r.showClass).removeClass(r.hideClass), o.attr("type", "text"))
        }))
    }, e.LinkOff = function(e) {
        t(e).on("click", (function(e) {
            e.preventDefault()
        }))
    }, e.SetHW = function(e, n) {
        n = "height" == n || "h" == n ? "height" : "width";
        var i = e || "[data-" + n + "]";
        t(i).exists() && t(i).each((function() {
            t(this).css(n, t(this).data(n))
        }))
    }, e.AddInBody = function(e, n) {
        var r = {
                prefix: "nk-",
                class: "",
                has: "has"
            },
            a = n ? o(r, n) : r,
            s = e.replace(".", "").replace(a.prefix, ""),
            l = s;
        a.prefix = !1 !== a.prefix ? a.prefix : "", a.has = "" !== a.has ? a.has + "-" : "", l = "" !== a.class ? a.class : a.has + l, t("." + a.prefix + s).exists() && !i.hasClass(l) && i.addClass(l)
    }, e.Toggle = {
        trigger: function(e, n) {
            var r = {
                    self: e,
                    active: "active",
                    content: "expanded",
                    data: "content",
                    olay: "toggle-overlay",
                    speed: 400
                },
                a = n ? o(r, n) : r,
                s = t("[data-target=" + e + "]"),
                l = t("[data-" + a.data + "=" + e + "]"),
                c = l.data("toggle-body");
            l.data("toggle-overlay") && (a.overlay = a.olay), c && (a.body = "toggle-shown"), l.hasClass(a.content) ? (s.removeClass(a.active), 1 == a.toggle ? l.slideUp(a.speed).removeClass(a.content) : l.removeClass(a.content)) : (s.addClass(a.active), 1 == a.toggle ? l.slideDown(a.speed).addClass(a.content) : l.addClass(a.content)), a.body && i.toggleClass(a.body), a.overlay && this.overlay(l, a.overlay, a)
        },
        removed: function(e, n) {
            var r = {
                    self: e,
                    active: "active",
                    content: "expanded",
                    body: "",
                    data: "content",
                    olay: "toggle-overlay"
                },
                a = n ? o(r, n) : r,
                s = t("[data-target=" + e + "]"),
                l = t("[data-" + a.data + "=" + e + "]"),
                c = l.data("toggle-body");
            l.data("toggle-overlay") && (a.overlay = a.olay), c && (a.body = "toggle-shown"), (s.hasClass(a.active) || l.hasClass(a.content)) && (s.removeClass(a.active), l.removeClass(a.content), !0 === a.toggle && l.slideUp(a.speed)), a.body && i.hasClass(a.body) && i.removeClass(a.body), a.close && (!0 === a.close.profile && this.closeProfile(l), !0 === a.close.menu && this.closeMenu(l)), a.overlay && this.overlayRemove(a.overlay)
        },
        overlay: function(n, i, r) {
            var o;
            !0 === r.break && (o = t(n).data("toggle-screen"), r.break = e.Break[o]), t(n).hasClass(r.content) && e.Win.width < r.break ? t(n).after('<div class="' + i + '" data-target="' + r.self + '"></div>') : this.overlayRemove(i)
        },
        overlayRemove: function(e) {
            t("." + e).fadeOut(300).remove()
        },
        dropMenu: function(e, n) {
            var i = {
                    active: "active",
                    self: "link-toggle",
                    child: "menu-sub",
                    speed: 400
                },
                r = n ? o(i, n) : i,
                a = t(e).parent(),
                s = a.children("." + r.child);
            r.speed = 5 < s.children().length ? r.speed + 20 * s.children().length : r.speed, s.slideToggle(r.speed).find("." + r.child).slideUp(r.speed), a.toggleClass(r.active).siblings().removeClass(r.active).find("." + r.child).slideUp(r.speed)
        },
        closeProfile: function(e) {
            var n = t(e).find(".nk-profile-toggle.active"),
                i = t(e).find(".nk-profile-content.expanded");
            n.exists() && (n.removeClass("active"), i.slideUp().removeClass("expanded"))
        },
        closeMenu: function(e) {
            var n = t(e).find(".nk-menu-item.active");
            n.exists() && n.removeClass("active").find(".nk-menu-sub").slideUp()
        }
    }, e.BS.tooltip = function(e, n) {
        var i = {
                boundary: "window",
                trigger: "hover"
            },
            r = n ? o(i, n) : i;
        t(e).exists() && "function" == typeof t.fn.tooltip && t(e).tooltip(r)
    }, e.BS.menutip = function(t) {
        e.BS.tooltip(t, {
            boundary: "window",
            placement: "right"
        })
    }, e.BS.popover = function(e) {
        t(e).exists() && "function" == typeof t.fn.popover && t(e).popover()
    }, e.BS.progress = function(e) {
        t(e).exists() && t(e).each((function() {
            t(this).css("width", t(this).data("progress") + "%")
        }))
    }, e.BS.modalfix = function(e) {
        var n = e || ".modal";
        t(n).exists() && "function" == typeof t.fn.modal && t(n).on("shown.bs.modal", (function() {
            i.hasClass("modal-open") || i.addClass("modal-open")
        }))
    }, e.BS.fileinput = function(e) {
        t(e).exists() && t(e).each((function() {
            var e = t(this).next().text(),
                n = [];
            t(this).on("change", (function() {
                for (var i = 0; i < this.files.length; i++) n[i] = this.files[i].name;
                e = n ? n.join(", ") : e, t(this).next().html(e)
            }))
        }))
    }, e.Picker.date = function(n, i) {
        t(n).exists() && "function" == typeof t.fn.datepicker && t(n).each((function() {
            var n = t(this).data("date-format"),
                r = {
                    format: "" !== n ? n : "mm/dd/yyyy",
                    maxViewMode: 2,
                    clearBtn: !0,
                    autoclose: !0,
                    todayHighlight: !0,
                    rtl: e.State.isRTL
                },
                a = i ? o(r, i) : r;
            t(this).datepicker(a)
        }))
    }, e.Picker.dob = function(t, n) {
        var i = {
                startView: 2,
                todayHighlight: !1
            },
            r = n ? o(i, n) : i;
        e.Picker.date(t, r)
    }, e.Picker.time = function(e, n) {
        t(e).exists() && "function" == typeof t.fn.timepicker && t(e).each((function() {
            t(this).parent().addClass("has-timepicker");
            var e = t(this).data("time-format"),
                i = t(this).data("time-interval"),
                r = {
                    timeFormat: "" !== e ? e : "HH:mm",
                    interval: "" !== i ? i : 15
                },
                a = n ? o(r, n) : r;
            t(this).timepicker(a)
        }))
    }, e.Slick = function(n, i) {
        t(n).exists() && "function" == typeof t.fn.slick && t(n).each((function() {
            var n = {
                    prevArrow: '<div class="slick-arrow-prev"><a href="javascript:void(0);" class="slick-prev"><em class="icon ni ni-chevron-left"></em></a></div>',
                    nextArrow: '<div class="slick-arrow-next"><a href="javascript:void(0);" class="slick-next"><em class="icon ni ni-chevron-right"></em></a></div>',
                    rtl: e.State.isRTL
                },
                r = i ? o(n, i) : n;
            t(this).slick(r)
        }))
    }, e.Knob = function(e, n) {
        var i, r;
        t(e).exists() && "function" == typeof t.fn.knob && (i = {
            min: 0
        }, r = n ? o(i, n) : i, t(e).each((function() {
            t(this).knob(r)
        })))
    }, e.Range = function(n, i) {
        t(n).exists() && "undefined" != typeof noUiSlider && t(n).each((function() {
            var n = t(this).attr("id"),
                r = document.getElementById(n),
                a = {
                    start: [25],
                    connect: "lower",
                    direction: e.State.isRTL ? "rtl" : "ltr",
                    range: {
                        min: 0,
                        max: 100
                    }
                },
                s = i ? o(a, i) : a;
            noUiSlider.create(r, s)
        }))
    }, e.Select2 = function(n, i) {
        t(n).exists() && "function" == typeof t.fn.select2 && t(n).each((function() {
            var n = t(this),
                r = {
                    placeholder: n.data("placeholder"),
                    clear: n.data("clear"),
                    search: n.data("search"),
                    width: n.data("width"),
                    theme: n.data("theme"),
                    ui: n.data("ui")
                };
            r.ui = r.ui ? " " + n.csskey(r.ui, "select2") : "";
            var a = {
                    theme: r.theme ? r.theme + " " + r.ui : "default" + r.ui,
                    allowClear: !!r.clear && r.clear,
                    placeholder: r.placeholder ? r.placeholder : "",
                    dropdownAutoWidth: !(!r.width || "auto" !== r.width),
                    minimumResultsForSearch: r.search && "on" === r.search ? 1 : -1,
                    dir: e.State.isRTL ? "rtl" : "ltr"
                },
                s = i ? o(a, i) : a;
            t(this).select2(s)
        }))
    }, e.coreInit = function() {
        e.coms.onResize.push(e.StateUpdate), e.coms.docReady.push(e.ClassInit)
    }, e.coreInit(), e
}(NioApp = function(e, t, n) {
    "use strict";
    var i = {
            AppInfo: {
                name: "NioApp",
                version: "1.0.6",
                author: "Softnio"
            },
            Package: {
                name: "DashLite",
                version: "2.0"
            }
        },
        r = {
            docReady: [],
            docReadyDefer: [],
            winLoad: [],
            winLoadDefer: [],
            onResize: [],
            onResizeDefer: []
        };

    function o(t) {
        t = void 0 === t ? e : t, r.docReady.concat(r.docReadyDefer).forEach((function(e) {
            null != e && e(t)
        }))
    }

    function a(t) {
        t = "object" == typeof t ? e : t, r.winLoad.concat(r.winLoadDefer).forEach((function(e) {
            null != e && e(t)
        }))
    }

    function s(t) {
        t = "object" == typeof t ? e : t, r.onResize.concat(r.onResizeDefer).forEach((function(e) {
            null != e && e(t)
        }))
    }
    return e(n).ready(o), e(t).on("load", a), e(t).on("resize", s), i.coms = r, i.docReady = o, i.winLoad = a, i.onResize = s, i
}(jQuery, window, document), jQuery);

function _typeof(e) {
    return (_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
        return typeof e
    } : function(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
    })(e)
}

function _inherits(e, t) {
    if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
    e.prototype = Object.create(t && t.prototype, {
        constructor: {
            value: e,
            writable: !0,
            configurable: !0
        }
    }), t && _setPrototypeOf(e, t)
}

function _setPrototypeOf(e, t) {
    return (_setPrototypeOf = Object.setPrototypeOf || function(e, t) {
        return e.__proto__ = t, e
    })(e, t)
}

function _createSuper(e) {
    var t = _isNativeReflectConstruct();
    return function() {
        var n, i = _getPrototypeOf(e);
        if (t) {
            var r = _getPrototypeOf(this).constructor;
            n = Reflect.construct(i, arguments, r)
        } else n = i.apply(this, arguments);
        return _possibleConstructorReturn(this, n)
    }
}

function _possibleConstructorReturn(e, t) {
    return !t || "object" !== _typeof(t) && "function" != typeof t ? _assertThisInitialized(e) : t
}

function _assertThisInitialized(e) {
    if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    return e
}

function _isNativeReflectConstruct() {
    if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
    if (Reflect.construct.sham) return !1;
    if ("function" == typeof Proxy) return !0;
    try {
        return Date.prototype.toString.call(Reflect.construct(Date, [], (function() {}))), !0
    } catch (e) {
        return !1
    }
}

function _getPrototypeOf(e) {
    return (_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(e) {
        return e.__proto__ || Object.getPrototypeOf(e)
    })(e)
}

function _createForOfIteratorHelper(e, t) {
    var n;
    if ("undefined" == typeof Symbol || null == e[Symbol.iterator]) {
        if (Array.isArray(e) || (n = _unsupportedIterableToArray(e)) || t && e && "number" == typeof e.length) {
            n && (e = n);
            var i = 0,
                r = function() {};
            return {
                s: r,
                n: function() {
                    return i >= e.length ? {
                        done: !0
                    } : {
                        done: !1,
                        value: e[i++]
                    }
                },
                e: function(e) {
                    throw e
                },
                f: r
            }
        }
        throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
    }
    var o, a = !0,
        s = !1;
    return {
        s: function() {
            n = e[Symbol.iterator]()
        },
        n: function() {
            var e = n.next();
            return a = e.done, e
        },
        e: function(e) {
            s = !0, o = e
        },
        f: function() {
            try {
                a || null == n.return || n.return()
            } finally {
                if (s) throw o
            }
        }
    }
}

function _unsupportedIterableToArray(e, t) {
    if (e) {
        if ("string" == typeof e) return _arrayLikeToArray(e, t);
        var n = Object.prototype.toString.call(e).slice(8, -1);
        return "Object" === n && e.constructor && (n = e.constructor.name), "Map" === n || "Set" === n ? Array.from(e) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? _arrayLikeToArray(e, t) : void 0
    }
}

function _arrayLikeToArray(e, t) {
    (null == t || t > e.length) && (t = e.length);
    for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
    return i
}

function _classCallCheck(e, t) {
    if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
}

function _defineProperties(e, t) {
    for (var n = 0; n < t.length; n++) {
        var i = t[n];
        i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
    }
}

function _createClass(e, t, n) {
    return t && _defineProperties(e.prototype, t), n && _defineProperties(e, n), e
}! function(e, t) {
    "object" == typeof exports && "undefined" != typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define(t) : (e = e || self).SimpleBar = t()
}(this, (function() {
    "use strict";
    var e = "undefined" != typeof globalThis ? globalThis : "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : {};

    function t(e, t) {
        return e(t = {
            exports: {}
        }, t.exports), t.exports
    }
    var n, i, r, o = "object",
        a = function(e) {
            return e && e.Math == Math && e
        },
        s = a(typeof globalThis == o && globalThis) || a(typeof window == o && window) || a(typeof self == o && self) || a(typeof e == o && e) || Function("return this")(),
        l = function(e) {
            try {
                return !!e()
            } catch (e) {
                return !0
            }
        },
        c = !l((function() {
            return 7 != Object.defineProperty({}, "a", {
                get: function() {
                    return 7
                }
            }).a
        })),
        u = {}.propertyIsEnumerable,
        d = Object.getOwnPropertyDescriptor,
        h = {
            f: d && !u.call({
                1: 2
            }, 1) ? function(e) {
                var t = d(this, e);
                return !!t && t.enumerable
            } : u
        },
        f = function(e, t) {
            return {
                enumerable: !(1 & e),
                configurable: !(2 & e),
                writable: !(4 & e),
                value: t
            }
        },
        p = {}.toString,
        g = function(e) {
            return p.call(e).slice(8, -1)
        },
        m = "".split,
        v = l((function() {
            return !Object("z").propertyIsEnumerable(0)
        })) ? function(e) {
            return "String" == g(e) ? m.call(e, "") : Object(e)
        } : Object,
        y = function(e) {
            if (null == e) throw TypeError("Can't call method on " + e);
            return e
        },
        b = function(e) {
            return v(y(e))
        },
        w = function(e) {
            return "object" == typeof e ? null !== e : "function" == typeof e
        },
        x = function(e, t) {
            if (!w(e)) return e;
            var n, i;
            if (t && "function" == typeof(n = e.toString) && !w(i = n.call(e))) return i;
            if ("function" == typeof(n = e.valueOf) && !w(i = n.call(e))) return i;
            if (!t && "function" == typeof(n = e.toString) && !w(i = n.call(e))) return i;
            throw TypeError("Can't convert object to primitive value")
        },
        _ = {}.hasOwnProperty,
        C = function(e, t) {
            return _.call(e, t)
        },
        k = s.document,
        S = w(k) && w(k.createElement),
        T = function(e) {
            return S ? k.createElement(e) : {}
        },
        D = !c && !l((function() {
            return 7 != Object.defineProperty(T("div"), "a", {
                get: function() {
                    return 7
                }
            }).a
        })),
        E = Object.getOwnPropertyDescriptor,
        A = {
            f: c ? E : function(e, t) {
                if (e = b(e), t = x(t, !0), D) try {
                    return E(e, t)
                } catch (e) {}
                if (C(e, t)) return f(!h.f.call(e, t), e[t])
            }
        },
        M = function(e) {
            if (!w(e)) throw TypeError(String(e) + " is not an object");
            return e
        },
        O = Object.defineProperty,
        I = {
            f: c ? O : function(e, t, n) {
                if (M(e), t = x(t, !0), M(n), D) try {
                    return O(e, t, n)
                } catch (e) {}
                if ("get" in n || "set" in n) throw TypeError("Accessors not supported");
                return "value" in n && (e[t] = n.value), e
            }
        },
        P = c ? function(e, t, n) {
            return I.f(e, t, f(1, n))
        } : function(e, t, n) {
            return e[t] = n, e
        },
        L = function(e, t) {
            try {
                P(s, e, t)
            } catch (n) {
                s[e] = t
            }
            return t
        },
        F = t((function(e) {
            var t = s["__core-js_shared__"] || L("__core-js_shared__", {});
            (e.exports = function(e, n) {
                return t[e] || (t[e] = void 0 !== n ? n : {})
            })("versions", []).push({
                version: "3.2.1",
                mode: "global",
                copyright: "© 2019 Denis Pushkarev (zloirock.ru)"
            })
        })),
        N = F("native-function-to-string", Function.toString),
        R = s.WeakMap,
        j = "function" == typeof R && /native code/.test(N.call(R)),
        $ = 0,
        z = Math.random(),
        H = function(e) {
            return "Symbol(" + String(void 0 === e ? "" : e) + ")_" + (++$ + z).toString(36)
        },
        B = F("keys"),
        q = function(e) {
            return B[e] || (B[e] = H(e))
        },
        W = {},
        U = s.WeakMap;
    if (j) {
        var V = new U,
            Y = V.get,
            X = V.has,
            G = V.set;
        n = function(e, t) {
            return G.call(V, e, t), t
        }, i = function(e) {
            return Y.call(V, e) || {}
        }, r = function(e) {
            return X.call(V, e)
        }
    } else {
        var Q = q("state");
        W[Q] = !0, n = function(e, t) {
            return P(e, Q, t), t
        }, i = function(e) {
            return C(e, Q) ? e[Q] : {}
        }, r = function(e) {
            return C(e, Q)
        }
    }
    var K = {
            set: n,
            get: i,
            has: r,
            enforce: function(e) {
                return r(e) ? i(e) : n(e, {})
            },
            getterFor: function(e) {
                return function(t) {
                    var n;
                    if (!w(t) || (n = i(t)).type !== e) throw TypeError("Incompatible receiver, " + e + " required");
                    return n
                }
            }
        },
        J = t((function(e) {
            var t = K.get,
                n = K.enforce,
                i = String(N).split("toString");
            F("inspectSource", (function(e) {
                return N.call(e)
            })), (e.exports = function(e, t, r, o) {
                var a = !!o && !!o.unsafe,
                    l = !!o && !!o.enumerable,
                    c = !!o && !!o.noTargetGet;
                "function" == typeof r && ("string" != typeof t || C(r, "name") || P(r, "name", t), n(r).source = i.join("string" == typeof t ? t : "")), e !== s ? (a ? !c && e[t] && (l = !0) : delete e[t], l ? e[t] = r : P(e, t, r)) : l ? e[t] = r : L(t, r)
            })(Function.prototype, "toString", (function() {
                return "function" == typeof this && t(this).source || N.call(this)
            }))
        })),
        Z = s,
        ee = function(e) {
            return "function" == typeof e ? e : void 0
        },
        te = function(e, t) {
            return arguments.length < 2 ? ee(Z[e]) || ee(s[e]) : Z[e] && Z[e][t] || s[e] && s[e][t]
        },
        ne = Math.ceil,
        ie = Math.floor,
        re = function(e) {
            return isNaN(e = +e) ? 0 : (e > 0 ? ie : ne)(e)
        },
        oe = Math.min,
        ae = function(e) {
            return e > 0 ? oe(re(e), 9007199254740991) : 0
        },
        se = Math.max,
        le = Math.min,
        ce = function(e) {
            return function(t, n, i) {
                var r, o = b(t),
                    a = ae(o.length),
                    s = function(e, t) {
                        var n = re(e);
                        return n < 0 ? se(n + t, 0) : le(n, t)
                    }(i, a);
                if (e && n != n) {
                    for (; a > s;)
                        if ((r = o[s++]) != r) return !0
                } else
                    for (; a > s; s++)
                        if ((e || s in o) && o[s] === n) return e || s || 0;
                return !e && -1
            }
        },
        ue = (ce(!0), ce(!1)),
        de = function(e, t) {
            var n, i = b(e),
                r = 0,
                o = [];
            for (n in i) !C(W, n) && C(i, n) && o.push(n);
            for (; t.length > r;) C(i, n = t[r++]) && (~ue(o, n) || o.push(n));
            return o
        },
        he = ["constructor", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "toString", "valueOf"],
        fe = he.concat("length", "prototype"),
        pe = {
            f: Object.getOwnPropertyNames || function(e) {
                return de(e, fe)
            }
        },
        ge = {
            f: Object.getOwnPropertySymbols
        },
        me = te("Reflect", "ownKeys") || function(e) {
            var t = pe.f(M(e)),
                n = ge.f;
            return n ? t.concat(n(e)) : t
        },
        ve = function(e, t) {
            for (var n = me(t), i = I.f, r = A.f, o = 0; o < n.length; o++) {
                var a = n[o];
                C(e, a) || i(e, a, r(t, a))
            }
        },
        ye = /#|\.prototype\./,
        be = function(e, t) {
            var n = xe[we(e)];
            return n == Ce || n != _e && ("function" == typeof t ? l(t) : !!t)
        },
        we = be.normalize = function(e) {
            return String(e).replace(ye, ".").toLowerCase()
        },
        xe = be.data = {},
        _e = be.NATIVE = "N",
        Ce = be.POLYFILL = "P",
        ke = be,
        Se = A.f,
        Te = function(e, t) {
            var n, i, r, o, a, l = e.target,
                c = e.global,
                u = e.stat;
            if (n = c ? s : u ? s[l] || L(l, {}) : (s[l] || {}).prototype)
                for (i in t) {
                    if (o = t[i], r = e.noTargetGet ? (a = Se(n, i)) && a.value : n[i], !ke(c ? i : l + (u ? "." : "#") + i, e.forced) && void 0 !== r) {
                        if (typeof o == typeof r) continue;
                        ve(o, r)
                    }(e.sham || r && r.sham) && P(o, "sham", !0), J(n, i, o, e)
                }
        },
        De = function(e) {
            if ("function" != typeof e) throw TypeError(String(e) + " is not a function");
            return e
        },
        Ee = function(e, t, n) {
            if (De(e), void 0 === t) return e;
            switch (n) {
                case 0:
                    return function() {
                        return e.call(t)
                    };
                case 1:
                    return function(n) {
                        return e.call(t, n)
                    };
                case 2:
                    return function(n, i) {
                        return e.call(t, n, i)
                    };
                case 3:
                    return function(n, i, r) {
                        return e.call(t, n, i, r)
                    }
            }
            return function() {
                return e.apply(t, arguments)
            }
        },
        Ae = function(e) {
            return Object(y(e))
        },
        Me = Array.isArray || function(e) {
            return "Array" == g(e)
        },
        Oe = !!Object.getOwnPropertySymbols && !l((function() {
            return !String(Symbol())
        })),
        Ie = s.Symbol,
        Pe = F("wks"),
        Le = function(e) {
            return Pe[e] || (Pe[e] = Oe && Ie[e] || (Oe ? Ie : H)("Symbol." + e))
        },
        Fe = Le("species"),
        Ne = function(e, t) {
            var n;
            return Me(e) && ("function" != typeof(n = e.constructor) || n !== Array && !Me(n.prototype) ? w(n) && null === (n = n[Fe]) && (n = void 0) : n = void 0), new(void 0 === n ? Array : n)(0 === t ? 0 : t)
        },
        Re = [].push,
        je = function(e) {
            var t = 1 == e,
                n = 2 == e,
                i = 3 == e,
                r = 4 == e,
                o = 6 == e,
                a = 5 == e || o;
            return function(s, l, c, u) {
                for (var d, h, f = Ae(s), p = v(f), g = Ee(l, c, 3), m = ae(p.length), y = 0, b = u || Ne, w = t ? b(s, m) : n ? b(s, 0) : void 0; m > y; y++)
                    if ((a || y in p) && (h = g(d = p[y], y, f), e))
                        if (t) w[y] = h;
                        else if (h) switch (e) {
                    case 3:
                        return !0;
                    case 5:
                        return d;
                    case 6:
                        return y;
                    case 2:
                        Re.call(w, d)
                } else if (r) return !1;
                return o ? -1 : i || r ? r : w
            }
        },
        $e = {
            forEach: je(0),
            map: je(1),
            filter: je(2),
            some: je(3),
            every: je(4),
            find: je(5),
            findIndex: je(6)
        },
        ze = function(e, t) {
            var n = [][e];
            return !n || !l((function() {
                n.call(null, t || function() {
                    throw 1
                }, 1)
            }))
        },
        He = $e.forEach,
        Be = ze("forEach") ? function(e) {
            return He(this, e, arguments.length > 1 ? arguments[1] : void 0)
        } : [].forEach;
    Te({
        target: "Array",
        proto: !0,
        forced: [].forEach != Be
    }, {
        forEach: Be
    });
    var qe = {
        CSSRuleList: 0,
        CSSStyleDeclaration: 0,
        CSSValueList: 0,
        ClientRectList: 0,
        DOMRectList: 0,
        DOMStringList: 0,
        DOMTokenList: 1,
        DataTransferItemList: 0,
        FileList: 0,
        HTMLAllCollection: 0,
        HTMLCollection: 0,
        HTMLFormElement: 0,
        HTMLSelectElement: 0,
        MediaList: 0,
        MimeTypeArray: 0,
        NamedNodeMap: 0,
        NodeList: 1,
        PaintRequestList: 0,
        Plugin: 0,
        PluginArray: 0,
        SVGLengthList: 0,
        SVGNumberList: 0,
        SVGPathSegList: 0,
        SVGPointList: 0,
        SVGStringList: 0,
        SVGTransformList: 0,
        SourceBufferList: 0,
        StyleSheetList: 0,
        TextTrackCueList: 0,
        TextTrackList: 0,
        TouchList: 0
    };
    for (var We in qe) {
        var Ue = s[We],
            Ve = Ue && Ue.prototype;
        if (Ve && Ve.forEach !== Be) try {
            P(Ve, "forEach", Be)
        } catch (e) {
            Ve.forEach = Be
        }
    }
    var Ye = !("undefined" == typeof window || !window.document || !window.document.createElement),
        Xe = Le("species"),
        Ge = $e.filter;
    Te({
        target: "Array",
        proto: !0,
        forced: !!l((function() {
            var e = [];
            return (e.constructor = {})[Xe] = function() {
                return {
                    foo: 1
                }
            }, 1 !== e.filter(Boolean).foo
        }))
    }, {
        filter: function(e) {
            return Ge(this, e, arguments.length > 1 ? arguments[1] : void 0)
        }
    });
    var Qe = Object.keys || function(e) {
            return de(e, he)
        },
        Ke = c ? Object.defineProperties : function(e, t) {
            M(e);
            for (var n, i = Qe(t), r = i.length, o = 0; r > o;) I.f(e, n = i[o++], t[n]);
            return e
        },
        Je = te("document", "documentElement"),
        Ze = q("IE_PROTO"),
        et = function() {},
        tt = function() {
            var e, t = T("iframe"),
                n = he.length;
            for (t.style.display = "none", Je.appendChild(t), t.src = String("javascript:"), (e = t.contentWindow.document).open(), e.write("<script>document.F=Object<\/script>"), e.close(), tt = e.F; n--;) delete tt.prototype[he[n]];
            return tt()
        },
        nt = Object.create || function(e, t) {
            var n;
            return null !== e ? (et.prototype = M(e), n = new et, et.prototype = null, n[Ze] = e) : n = tt(), void 0 === t ? n : Ke(n, t)
        };
    W[Ze] = !0;
    var it = Le("unscopables"),
        rt = Array.prototype;
    null == rt[it] && P(rt, it, nt(null));
    var ot, at, st, lt = function(e) {
            rt[it][e] = !0
        },
        ct = {},
        ut = !l((function() {
            function e() {}
            return e.prototype.constructor = null, Object.getPrototypeOf(new e) !== e.prototype
        })),
        dt = q("IE_PROTO"),
        ht = Object.prototype,
        ft = ut ? Object.getPrototypeOf : function(e) {
            return e = Ae(e), C(e, dt) ? e[dt] : "function" == typeof e.constructor && e instanceof e.constructor ? e.constructor.prototype : e instanceof Object ? ht : null
        },
        pt = Le("iterator"),
        gt = !1;
    [].keys && ("next" in (st = [].keys()) ? (at = ft(ft(st))) !== Object.prototype && (ot = at) : gt = !0), null == ot && (ot = {}), C(ot, pt) || P(ot, pt, (function() {
        return this
    }));
    var mt = {
            IteratorPrototype: ot,
            BUGGY_SAFARI_ITERATORS: gt
        },
        vt = I.f,
        yt = Le("toStringTag"),
        bt = function(e, t, n) {
            e && !C(e = n ? e : e.prototype, yt) && vt(e, yt, {
                configurable: !0,
                value: t
            })
        },
        wt = mt.IteratorPrototype,
        xt = function() {
            return this
        },
        _t = Object.setPrototypeOf || ("__proto__" in {} ? function() {
            var e, t = !1,
                n = {};
            try {
                (e = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__").set).call(n, []), t = n instanceof Array
            } catch (e) {}
            return function(n, i) {
                return M(n),
                    function(e) {
                        if (!w(e) && null !== e) throw TypeError("Can't set " + String(e) + " as a prototype")
                    }(i), t ? e.call(n, i) : n.__proto__ = i, n
            }
        }() : void 0),
        Ct = mt.IteratorPrototype,
        kt = mt.BUGGY_SAFARI_ITERATORS,
        St = Le("iterator"),
        Tt = function() {
            return this
        },
        Dt = function(e, t, n, i, r, o, a) {
            ! function(e, t, n) {
                var i = t + " Iterator";
                e.prototype = nt(wt, {
                    next: f(1, n)
                }), bt(e, i, !1), ct[i] = xt
            }(n, t, i);
            var s, l, c, u = function(e) {
                    if (e === r && m) return m;
                    if (!kt && e in p) return p[e];
                    switch (e) {
                        case "keys":
                        case "values":
                        case "entries":
                            return function() {
                                return new n(this, e)
                            }
                    }
                    return function() {
                        return new n(this)
                    }
                },
                d = t + " Iterator",
                h = !1,
                p = e.prototype,
                g = p[St] || p["@@iterator"] || r && p[r],
                m = !kt && g || u(r),
                v = "Array" == t && p.entries || g;
            if (v && (s = ft(v.call(new e)), Ct !== Object.prototype && s.next && (ft(s) !== Ct && (_t ? _t(s, Ct) : "function" != typeof s[St] && P(s, St, Tt)), bt(s, d, !0))), "values" == r && g && "values" !== g.name && (h = !0, m = function() {
                    return g.call(this)
                }), p[St] !== m && P(p, St, m), ct[t] = m, r)
                if (l = {
                        values: u("values"),
                        keys: o ? m : u("keys"),
                        entries: u("entries")
                    }, a)
                    for (c in l) !kt && !h && c in p || J(p, c, l[c]);
                else Te({
                    target: t,
                    proto: !0,
                    forced: kt || h
                }, l);
            return l
        },
        Et = K.set,
        At = K.getterFor("Array Iterator"),
        Mt = Dt(Array, "Array", (function(e, t) {
            Et(this, {
                type: "Array Iterator",
                target: b(e),
                index: 0,
                kind: t
            })
        }), (function() {
            var e = At(this),
                t = e.target,
                n = e.kind,
                i = e.index++;
            return !t || i >= t.length ? (e.target = void 0, {
                value: void 0,
                done: !0
            }) : "keys" == n ? {
                value: i,
                done: !1
            } : "values" == n ? {
                value: t[i],
                done: !1
            } : {
                value: [i, t[i]],
                done: !1
            }
        }), "values");
    ct.Arguments = ct.Array, lt("keys"), lt("values"), lt("entries");
    var Ot = Object.assign,
        It = !Ot || l((function() {
            var e = {},
                t = {},
                n = Symbol();
            return e[n] = 7, "abcdefghijklmnopqrst".split("").forEach((function(e) {
                t[e] = e
            })), 7 != Ot({}, e)[n] || "abcdefghijklmnopqrst" != Qe(Ot({}, t)).join("")
        })) ? function(e, t) {
            for (var n = Ae(e), i = arguments.length, r = 1, o = ge.f, a = h.f; i > r;)
                for (var s, l = v(arguments[r++]), u = o ? Qe(l).concat(o(l)) : Qe(l), d = u.length, f = 0; d > f;) s = u[f++], c && !a.call(l, s) || (n[s] = l[s]);
            return n
        } : Ot;
    Te({
        target: "Object",
        stat: !0,
        forced: Object.assign !== It
    }, {
        assign: It
    });
    var Pt = Le("toStringTag"),
        Lt = "Arguments" == g(function() {
            return arguments
        }()),
        Ft = function(e) {
            var t, n, i;
            return void 0 === e ? "Undefined" : null === e ? "Null" : "string" == typeof(n = function(e, t) {
                try {
                    return e[t]
                } catch (e) {}
            }(t = Object(e), Pt)) ? n : Lt ? g(t) : "Object" == (i = g(t)) && "function" == typeof t.callee ? "Arguments" : i
        },
        Nt = {};
    Nt[Le("toStringTag")] = "z";
    var Rt = "[object z]" !== String(Nt) ? function() {
            return "[object " + Ft(this) + "]"
        } : Nt.toString,
        jt = Object.prototype;
    Rt !== jt.toString && J(jt, "toString", Rt, {
        unsafe: !0
    });
    var $t = "\t\n\v\f\r                 \u2028\u2029\ufeff",
        zt = "[" + $t + "]",
        Ht = RegExp("^" + zt + zt + "*"),
        Bt = RegExp(zt + zt + "*$"),
        qt = function(e) {
            return function(t) {
                var n = String(y(t));
                return 1 & e && (n = n.replace(Ht, "")), 2 & e && (n = n.replace(Bt, "")), n
            }
        },
        Wt = (qt(1), qt(2), qt(3)),
        Ut = s.parseInt,
        Vt = /^[+-]?0[Xx]/,
        Yt = 8 !== Ut($t + "08") || 22 !== Ut($t + "0x16") ? function(e, t) {
            var n = Wt(String(e));
            return Ut(n, t >>> 0 || (Vt.test(n) ? 16 : 10))
        } : Ut;
    Te({
        global: !0,
        forced: parseInt != Yt
    }, {
        parseInt: Yt
    });
    var Xt = function(e) {
            return function(t, n) {
                var i, r, o = String(y(t)),
                    a = re(n),
                    s = o.length;
                return a < 0 || a >= s ? e ? "" : void 0 : (i = o.charCodeAt(a)) < 55296 || i > 56319 || a + 1 === s || (r = o.charCodeAt(a + 1)) < 56320 || r > 57343 ? e ? o.charAt(a) : i : e ? o.slice(a, a + 2) : r - 56320 + (i - 55296 << 10) + 65536
            }
        },
        Gt = {
            codeAt: Xt(!1),
            charAt: Xt(!0)
        },
        Qt = Gt.charAt,
        Kt = K.set,
        Jt = K.getterFor("String Iterator");
    Dt(String, "String", (function(e) {
        Kt(this, {
            type: "String Iterator",
            string: String(e),
            index: 0
        })
    }), (function() {
        var e, t = Jt(this),
            n = t.string,
            i = t.index;
        return i >= n.length ? {
            value: void 0,
            done: !0
        } : (e = Qt(n, i), t.index += e.length, {
            value: e,
            done: !1
        })
    }));
    var Zt = function(e, t, n) {
            for (var i in t) J(e, i, t[i], n);
            return e
        },
        en = !l((function() {
            return Object.isExtensible(Object.preventExtensions({}))
        })),
        tn = t((function(e) {
            var t = I.f,
                n = H("meta"),
                i = 0,
                r = Object.isExtensible || function() {
                    return !0
                },
                o = function(e) {
                    t(e, n, {
                        value: {
                            objectID: "O" + ++i,
                            weakData: {}
                        }
                    })
                },
                a = e.exports = {
                    REQUIRED: !1,
                    fastKey: function(e, t) {
                        if (!w(e)) return "symbol" == typeof e ? e : ("string" == typeof e ? "S" : "P") + e;
                        if (!C(e, n)) {
                            if (!r(e)) return "F";
                            if (!t) return "E";
                            o(e)
                        }
                        return e[n].objectID
                    },
                    getWeakData: function(e, t) {
                        if (!C(e, n)) {
                            if (!r(e)) return !0;
                            if (!t) return !1;
                            o(e)
                        }
                        return e[n].weakData
                    },
                    onFreeze: function(e) {
                        return en && a.REQUIRED && r(e) && !C(e, n) && o(e), e
                    }
                };
            W[n] = !0
        })),
        nn = (tn.REQUIRED, tn.fastKey, tn.getWeakData, tn.onFreeze, Le("iterator")),
        rn = Array.prototype,
        on = Le("iterator"),
        an = function(e, t, n, i) {
            try {
                return i ? t(M(n)[0], n[1]) : t(n)
            } catch (t) {
                var r = e.return;
                throw void 0 !== r && M(r.call(e)), t
            }
        },
        sn = t((function(e) {
            var t = function(e, t) {
                this.stopped = e, this.result = t
            };
            (e.exports = function(e, n, i, r, o) {
                var a, s, l, c, u, d, h, f = Ee(n, i, r ? 2 : 1);
                if (o) a = e;
                else {
                    if ("function" != typeof(s = function(e) {
                            if (null != e) return e[on] || e["@@iterator"] || ct[Ft(e)]
                        }(e))) throw TypeError("Target is not iterable");
                    if (void 0 !== (h = s) && (ct.Array === h || rn[nn] === h)) {
                        for (l = 0, c = ae(e.length); c > l; l++)
                            if ((u = r ? f(M(d = e[l])[0], d[1]) : f(e[l])) && u instanceof t) return u;
                        return new t(!1)
                    }
                    a = s.call(e)
                }
                for (; !(d = a.next()).done;)
                    if ((u = an(a, f, d.value, r)) && u instanceof t) return u;
                return new t(!1)
            }).stop = function(e) {
                return new t(!0, e)
            }
        })),
        ln = function(e, t, n) {
            if (!(e instanceof t)) throw TypeError("Incorrect " + (n ? n + " " : "") + "invocation");
            return e
        },
        cn = Le("iterator"),
        un = !1;
    try {
        var dn = 0,
            hn = {
                next: function() {
                    return {
                        done: !!dn++
                    }
                },
                return: function() {
                    un = !0
                }
            };
        hn[cn] = function() {
            return this
        }, Array.from(hn, (function() {
            throw 2
        }))
    } catch (e) {}
    var fn = function(e, t, n, i, r) {
            var o = s[e],
                a = o && o.prototype,
                c = o,
                u = i ? "set" : "add",
                d = {},
                h = function(e) {
                    var t = a[e];
                    J(a, e, "add" == e ? function(e) {
                        return t.call(this, 0 === e ? 0 : e), this
                    } : "delete" == e ? function(e) {
                        return !(r && !w(e)) && t.call(this, 0 === e ? 0 : e)
                    } : "get" == e ? function(e) {
                        return r && !w(e) ? void 0 : t.call(this, 0 === e ? 0 : e)
                    } : "has" == e ? function(e) {
                        return !(r && !w(e)) && t.call(this, 0 === e ? 0 : e)
                    } : function(e, n) {
                        return t.call(this, 0 === e ? 0 : e, n), this
                    })
                };
            if (ke(e, "function" != typeof o || !(r || a.forEach && !l((function() {
                    (new o).entries().next()
                }))))) c = n.getConstructor(t, e, i, u), tn.REQUIRED = !0;
            else if (ke(e, !0)) {
                var f = new c,
                    p = f[u](r ? {} : -0, 1) != f,
                    g = l((function() {
                        f.has(1)
                    })),
                    m = function(e, t) {
                        if (!un) return !1;
                        var n = !1;
                        try {
                            var i = {};
                            i[cn] = function() {
                                    return {
                                        next: function() {
                                            return {
                                                done: n = !0
                                            }
                                        }
                                    }
                                },
                                function(e) {
                                    new o(e)
                                }(i)
                        } catch (e) {}
                        return n
                    }(),
                    v = !r && l((function() {
                        for (var e = new o, t = 5; t--;) e[u](t, t);
                        return !e.has(-0)
                    }));
                m || ((c = t((function(t, n) {
                    ln(t, c, e);
                    var r = function(e, t, n) {
                        var i, r;
                        return _t && "function" == typeof(i = t.constructor) && i !== n && w(r = i.prototype) && r !== n.prototype && _t(e, r), e
                    }(new o, t, c);
                    return null != n && sn(n, r[u], r, i), r
                }))).prototype = a, a.constructor = c), (g || v) && (h("delete"), h("has"), i && h("get")), (v || p) && h(u), r && a.clear && delete a.clear
            }
            return d[e] = c, Te({
                global: !0,
                forced: c != o
            }, d), bt(c, e), r || n.setStrong(c, e, i), c
        },
        pn = tn.getWeakData,
        gn = K.set,
        mn = K.getterFor,
        vn = $e.find,
        yn = $e.findIndex,
        bn = 0,
        wn = function(e) {
            return e.frozen || (e.frozen = new xn)
        },
        xn = function() {
            this.entries = []
        },
        _n = function(e, t) {
            return vn(e.entries, (function(e) {
                return e[0] === t
            }))
        };
    xn.prototype = {
        get: function(e) {
            var t = _n(this, e);
            if (t) return t[1]
        },
        has: function(e) {
            return !!_n(this, e)
        },
        set: function(e, t) {
            var n = _n(this, e);
            n ? n[1] = t : this.entries.push([e, t])
        },
        delete: function(e) {
            var t = yn(this.entries, (function(t) {
                return t[0] === e
            }));
            return ~t && this.entries.splice(t, 1), !!~t
        }
    };
    var Cn = {
            getConstructor: function(e, t, n, i) {
                var r = e((function(e, o) {
                        ln(e, r, t), gn(e, {
                            type: t,
                            id: bn++,
                            frozen: void 0
                        }), null != o && sn(o, e[i], e, n)
                    })),
                    o = mn(t),
                    a = function(e, t, n) {
                        var i = o(e),
                            r = pn(M(t), !0);
                        return !0 === r ? wn(i).set(t, n) : r[i.id] = n, e
                    };
                return Zt(r.prototype, {
                    delete: function(e) {
                        var t = o(this);
                        if (!w(e)) return !1;
                        var n = pn(e);
                        return !0 === n ? wn(t).delete(e) : n && C(n, t.id) && delete n[t.id]
                    },
                    has: function(e) {
                        var t = o(this);
                        if (!w(e)) return !1;
                        var n = pn(e);
                        return !0 === n ? wn(t).has(e) : n && C(n, t.id)
                    }
                }), Zt(r.prototype, n ? {
                    get: function(e) {
                        var t = o(this);
                        if (w(e)) {
                            var n = pn(e);
                            return !0 === n ? wn(t).get(e) : n ? n[t.id] : void 0
                        }
                    },
                    set: function(e, t) {
                        return a(this, e, t)
                    }
                } : {
                    add: function(e) {
                        return a(this, e, !0)
                    }
                }), r
            }
        },
        kn = (t((function(e) {
            var t, n = K.enforce,
                i = !s.ActiveXObject && "ActiveXObject" in s,
                r = Object.isExtensible,
                o = function(e) {
                    return function() {
                        return e(this, arguments.length ? arguments[0] : void 0)
                    }
                },
                a = e.exports = fn("WeakMap", o, Cn, !0, !0);
            if (j && i) {
                t = Cn.getConstructor(o, "WeakMap", !0), tn.REQUIRED = !0;
                var l = a.prototype,
                    c = l.delete,
                    u = l.has,
                    d = l.get,
                    h = l.set;
                Zt(l, {
                    delete: function(e) {
                        if (w(e) && !r(e)) {
                            var i = n(this);
                            return i.frozen || (i.frozen = new t), c.call(this, e) || i.frozen.delete(e)
                        }
                        return c.call(this, e)
                    },
                    has: function(e) {
                        if (w(e) && !r(e)) {
                            var i = n(this);
                            return i.frozen || (i.frozen = new t), u.call(this, e) || i.frozen.has(e)
                        }
                        return u.call(this, e)
                    },
                    get: function(e) {
                        if (w(e) && !r(e)) {
                            var i = n(this);
                            return i.frozen || (i.frozen = new t), u.call(this, e) ? d.call(this, e) : i.frozen.get(e)
                        }
                        return d.call(this, e)
                    },
                    set: function(e, i) {
                        if (w(e) && !r(e)) {
                            var o = n(this);
                            o.frozen || (o.frozen = new t), u.call(this, e) ? h.call(this, e, i) : o.frozen.set(e, i)
                        } else h.call(this, e, i);
                        return this
                    }
                })
            }
        })), Le("iterator")),
        Sn = Le("toStringTag"),
        Tn = Mt.values;
    for (var Dn in qe) {
        var En = s[Dn],
            An = En && En.prototype;
        if (An) {
            if (An[kn] !== Tn) try {
                P(An, kn, Tn)
            } catch (e) {
                An[kn] = Tn
            }
            if (An[Sn] || P(An, Sn, Dn), qe[Dn])
                for (var Mn in Mt)
                    if (An[Mn] !== Mt[Mn]) try {
                        P(An, Mn, Mt[Mn])
                    } catch (e) {
                        An[Mn] = Mt[Mn]
                    }
        }
    }
    var On = "Expected a function",
        In = /^\s+|\s+$/g,
        Pn = /^[-+]0x[0-9a-f]+$/i,
        Ln = /^0b[01]+$/i,
        Fn = /^0o[0-7]+$/i,
        Nn = parseInt,
        Rn = "object" == typeof e && e && e.Object === Object && e,
        jn = "object" == typeof self && self && self.Object === Object && self,
        $n = Rn || jn || Function("return this")(),
        zn = Object.prototype.toString,
        Hn = Math.max,
        Bn = Math.min,
        qn = function() {
            return $n.Date.now()
        };

    function Wn(e) {
        var t = typeof e;
        return !!e && ("object" == t || "function" == t)
    }

    function Un(e) {
        if ("number" == typeof e) return e;
        if (function(e) {
                return "symbol" == typeof e || function(e) {
                    return !!e && "object" == typeof e
                }(e) && "[object Symbol]" == zn.call(e)
            }(e)) return NaN;
        if (Wn(e)) {
            var t = "function" == typeof e.valueOf ? e.valueOf() : e;
            e = Wn(t) ? t + "" : t
        }
        if ("string" != typeof e) return 0 === e ? e : +e;
        e = e.replace(In, "");
        var n = Ln.test(e);
        return n || Fn.test(e) ? Nn(e.slice(2), n ? 2 : 8) : Pn.test(e) ? NaN : +e
    }
    var Vn = function(e, t, n) {
            var i = !0,
                r = !0;
            if ("function" != typeof e) throw new TypeError(On);
            return Wn(n) && (i = "leading" in n ? !!n.leading : i, r = "trailing" in n ? !!n.trailing : r),
                function(e, t, n) {
                    var i, r, o, a, s, l, c = 0,
                        u = !1,
                        d = !1,
                        h = !0;
                    if ("function" != typeof e) throw new TypeError(On);

                    function f(t) {
                        var n = i,
                            o = r;
                        return i = r = void 0, c = t, a = e.apply(o, n)
                    }

                    function p(e) {
                        var n = e - l;
                        return void 0 === l || n >= t || n < 0 || d && e - c >= o
                    }

                    function g() {
                        var e = qn();
                        if (p(e)) return m(e);
                        s = setTimeout(g, function(e) {
                            var n = t - (e - l);
                            return d ? Bn(n, o - (e - c)) : n
                        }(e))
                    }

                    function m(e) {
                        return s = void 0, h && i ? f(e) : (i = r = void 0, a)
                    }

                    function v() {
                        var e = qn(),
                            n = p(e);
                        if (i = arguments, r = this, l = e, n) {
                            if (void 0 === s) return function(e) {
                                return c = e, s = setTimeout(g, t), u ? f(e) : a
                            }(l);
                            if (d) return s = setTimeout(g, t), f(l)
                        }
                        return void 0 === s && (s = setTimeout(g, t)), a
                    }
                    return t = Un(t) || 0, Wn(n) && (u = !!n.leading, o = (d = "maxWait" in n) ? Hn(Un(n.maxWait) || 0, t) : o, h = "trailing" in n ? !!n.trailing : h), v.cancel = function() {
                        void 0 !== s && clearTimeout(s), c = 0, i = l = r = s = void 0
                    }, v.flush = function() {
                        return void 0 === s ? a : m(qn())
                    }, v
                }(e, t, {
                    leading: i,
                    maxWait: t,
                    trailing: r
                })
        },
        Yn = /^\s+|\s+$/g,
        Xn = /^[-+]0x[0-9a-f]+$/i,
        Gn = /^0b[01]+$/i,
        Qn = /^0o[0-7]+$/i,
        Kn = parseInt,
        Jn = "object" == typeof e && e && e.Object === Object && e,
        Zn = "object" == typeof self && self && self.Object === Object && self,
        ei = Jn || Zn || Function("return this")(),
        ti = Object.prototype.toString,
        ni = Math.max,
        ii = Math.min,
        ri = function() {
            return ei.Date.now()
        };

    function oi(e) {
        var t = typeof e;
        return !!e && ("object" == t || "function" == t)
    }

    function ai(e) {
        if ("number" == typeof e) return e;
        if (function(e) {
                return "symbol" == typeof e || function(e) {
                    return !!e && "object" == typeof e
                }(e) && "[object Symbol]" == ti.call(e)
            }(e)) return NaN;
        if (oi(e)) {
            var t = "function" == typeof e.valueOf ? e.valueOf() : e;
            e = oi(t) ? t + "" : t
        }
        if ("string" != typeof e) return 0 === e ? e : +e;
        e = e.replace(Yn, "");
        var n = Gn.test(e);
        return n || Qn.test(e) ? Kn(e.slice(2), n ? 2 : 8) : Xn.test(e) ? NaN : +e
    }
    var si = function(e, t, n) {
            var i, r, o, a, s, l, c = 0,
                u = !1,
                d = !1,
                h = !0;
            if ("function" != typeof e) throw new TypeError("Expected a function");

            function f(t) {
                var n = i,
                    o = r;
                return i = r = void 0, c = t, a = e.apply(o, n)
            }

            function p(e) {
                var n = e - l;
                return void 0 === l || n >= t || n < 0 || d && e - c >= o
            }

            function g() {
                var e = ri();
                if (p(e)) return m(e);
                s = setTimeout(g, function(e) {
                    var n = t - (e - l);
                    return d ? ii(n, o - (e - c)) : n
                }(e))
            }

            function m(e) {
                return s = void 0, h && i ? f(e) : (i = r = void 0, a)
            }

            function v() {
                var e = ri(),
                    n = p(e);
                if (i = arguments, r = this, l = e, n) {
                    if (void 0 === s) return function(e) {
                        return c = e, s = setTimeout(g, t), u ? f(e) : a
                    }(l);
                    if (d) return s = setTimeout(g, t), f(l)
                }
                return void 0 === s && (s = setTimeout(g, t)), a
            }
            return t = ai(t) || 0, oi(n) && (u = !!n.leading, o = (d = "maxWait" in n) ? ni(ai(n.maxWait) || 0, t) : o, h = "trailing" in n ? !!n.trailing : h), v.cancel = function() {
                void 0 !== s && clearTimeout(s), c = 0, i = l = r = s = void 0
            }, v.flush = function() {
                return void 0 === s ? a : m(ri())
            }, v
        },
        li = "__lodash_hash_undefined__",
        ci = /^\[object .+?Constructor\]$/,
        ui = "object" == typeof e && e && e.Object === Object && e,
        di = "object" == typeof self && self && self.Object === Object && self,
        hi = ui || di || Function("return this")(),
        fi = Array.prototype,
        pi = Function.prototype,
        gi = Object.prototype,
        mi = hi["__core-js_shared__"],
        vi = function() {
            var e = /[^.]+$/.exec(mi && mi.keys && mi.keys.IE_PROTO || "");
            return e ? "Symbol(src)_1." + e : ""
        }(),
        yi = pi.toString,
        bi = gi.hasOwnProperty,
        wi = gi.toString,
        xi = RegExp("^" + yi.call(bi).replace(/[\\^$.*+?()[\]{}|]/g, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"),
        _i = fi.splice,
        Ci = Mi(hi, "Map"),
        ki = Mi(Object, "create");

    function Si(e) {
        var t = -1,
            n = e ? e.length : 0;
        for (this.clear(); ++t < n;) {
            var i = e[t];
            this.set(i[0], i[1])
        }
    }

    function Ti(e) {
        var t = -1,
            n = e ? e.length : 0;
        for (this.clear(); ++t < n;) {
            var i = e[t];
            this.set(i[0], i[1])
        }
    }

    function Di(e) {
        var t = -1,
            n = e ? e.length : 0;
        for (this.clear(); ++t < n;) {
            var i = e[t];
            this.set(i[0], i[1])
        }
    }

    function Ei(e, t) {
        for (var n, i, r = e.length; r--;)
            if ((n = e[r][0]) === (i = t) || n != n && i != i) return r;
        return -1
    }

    function Ai(e, t) {
        var n, i, r = e.__data__;
        return ("string" == (i = typeof(n = t)) || "number" == i || "symbol" == i || "boolean" == i ? "__proto__" !== n : null === n) ? r["string" == typeof t ? "string" : "hash"] : r.map
    }

    function Mi(e, t) {
        var n = function(e, t) {
            return null == e ? void 0 : e[t]
        }(e, t);
        return function(e) {
            return !(!Ii(e) || (t = e, vi && vi in t)) && (function(e) {
                var t = Ii(e) ? wi.call(e) : "";
                return "[object Function]" == t || "[object GeneratorFunction]" == t
            }(e) || function(e) {
                var t = !1;
                if (null != e && "function" != typeof e.toString) try {
                    t = !!(e + "")
                } catch (e) {}
                return t
            }(e) ? xi : ci).test(function(e) {
                if (null != e) {
                    try {
                        return yi.call(e)
                    } catch (e) {}
                    try {
                        return e + ""
                    } catch (e) {}
                }
                return ""
            }(e));
            var t
        }(n) ? n : void 0
    }

    function Oi(e, t) {
        if ("function" != typeof e || t && "function" != typeof t) throw new TypeError("Expected a function");
        var n = function() {
            var i = arguments,
                r = t ? t.apply(this, i) : i[0],
                o = n.cache;
            if (o.has(r)) return o.get(r);
            var a = e.apply(this, i);
            return n.cache = o.set(r, a), a
        };
        return n.cache = new(Oi.Cache || Di), n
    }

    function Ii(e) {
        var t = typeof e;
        return !!e && ("object" == t || "function" == t)
    }
    Si.prototype.clear = function() {
        this.__data__ = ki ? ki(null) : {}
    }, Si.prototype.delete = function(e) {
        return this.has(e) && delete this.__data__[e]
    }, Si.prototype.get = function(e) {
        var t = this.__data__;
        if (ki) {
            var n = t[e];
            return n === li ? void 0 : n
        }
        return bi.call(t, e) ? t[e] : void 0
    }, Si.prototype.has = function(e) {
        var t = this.__data__;
        return ki ? void 0 !== t[e] : bi.call(t, e)
    }, Si.prototype.set = function(e, t) {
        return this.__data__[e] = ki && void 0 === t ? li : t, this
    }, Ti.prototype.clear = function() {
        this.__data__ = []
    }, Ti.prototype.delete = function(e) {
        var t = this.__data__,
            n = Ei(t, e);
        return !(n < 0 || (n == t.length - 1 ? t.pop() : _i.call(t, n, 1), 0))
    }, Ti.prototype.get = function(e) {
        var t = this.__data__,
            n = Ei(t, e);
        return n < 0 ? void 0 : t[n][1]
    }, Ti.prototype.has = function(e) {
        return Ei(this.__data__, e) > -1
    }, Ti.prototype.set = function(e, t) {
        var n = this.__data__,
            i = Ei(n, e);
        return i < 0 ? n.push([e, t]) : n[i][1] = t, this
    }, Di.prototype.clear = function() {
        this.__data__ = {
            hash: new Si,
            map: new(Ci || Ti),
            string: new Si
        }
    }, Di.prototype.delete = function(e) {
        return Ai(this, e).delete(e)
    }, Di.prototype.get = function(e) {
        return Ai(this, e).get(e)
    }, Di.prototype.has = function(e) {
        return Ai(this, e).has(e)
    }, Di.prototype.set = function(e, t) {
        return Ai(this, e).set(e, t), this
    }, Oi.Cache = Di;
    var Pi = Oi,
        Li = function() {
            if ("undefined" != typeof Map) return Map;

            function e(e, t) {
                var n = -1;
                return e.some((function(e, i) {
                    return e[0] === t && (n = i, !0)
                })), n
            }
            return function() {
                function t() {
                    this.__entries__ = []
                }
                return Object.defineProperty(t.prototype, "size", {
                    get: function() {
                        return this.__entries__.length
                    },
                    enumerable: !0,
                    configurable: !0
                }), t.prototype.get = function(t) {
                    var n = e(this.__entries__, t),
                        i = this.__entries__[n];
                    return i && i[1]
                }, t.prototype.set = function(t, n) {
                    var i = e(this.__entries__, t);
                    ~i ? this.__entries__[i][1] = n : this.__entries__.push([t, n])
                }, t.prototype.delete = function(t) {
                    var n = this.__entries__,
                        i = e(n, t);
                    ~i && n.splice(i, 1)
                }, t.prototype.has = function(t) {
                    return !!~e(this.__entries__, t)
                }, t.prototype.clear = function() {
                    this.__entries__.splice(0)
                }, t.prototype.forEach = function(e, t) {
                    void 0 === t && (t = null);
                    for (var n = 0, i = this.__entries__; n < i.length; n++) {
                        var r = i[n];
                        e.call(t, r[1], r[0])
                    }
                }, t
            }()
        }(),
        Fi = "undefined" != typeof window && "undefined" != typeof document && window.document === document,
        Ni = "undefined" != typeof global && global.Math === Math ? global : "undefined" != typeof self && self.Math === Math ? self : "undefined" != typeof window && window.Math === Math ? window : Function("return this")(),
        Ri = "function" == typeof requestAnimationFrame ? requestAnimationFrame.bind(Ni) : function(e) {
            return setTimeout((function() {
                return e(Date.now())
            }), 1e3 / 60)
        },
        ji = ["top", "right", "bottom", "left", "width", "height", "size", "weight"],
        $i = "undefined" != typeof MutationObserver,
        zi = function() {
            function e() {
                this.connected_ = !1, this.mutationEventsAdded_ = !1, this.mutationsObserver_ = null, this.observers_ = [], this.onTransitionEnd_ = this.onTransitionEnd_.bind(this), this.refresh = function(e, t) {
                    var n = !1,
                        i = !1,
                        r = 0;

                    function o() {
                        n && (n = !1, e()), i && s()
                    }

                    function a() {
                        Ri(o)
                    }

                    function s() {
                        var e = Date.now();
                        if (n) {
                            if (e - r < 2) return;
                            i = !0
                        } else n = !0, i = !1, setTimeout(a, 20);
                        r = e
                    }
                    return s
                }(this.refresh.bind(this))
            }
            return e.prototype.addObserver = function(e) {
                ~this.observers_.indexOf(e) || this.observers_.push(e), this.connected_ || this.connect_()
            }, e.prototype.removeObserver = function(e) {
                var t = this.observers_,
                    n = t.indexOf(e);
                ~n && t.splice(n, 1), !t.length && this.connected_ && this.disconnect_()
            }, e.prototype.refresh = function() {
                this.updateObservers_() && this.refresh()
            }, e.prototype.updateObservers_ = function() {
                var e = this.observers_.filter((function(e) {
                    return e.gatherActive(), e.hasActive()
                }));
                return e.forEach((function(e) {
                    return e.broadcastActive()
                })), e.length > 0
            }, e.prototype.connect_ = function() {
                Fi && !this.connected_ && (document.addEventListener("transitionend", this.onTransitionEnd_), window.addEventListener("resize", this.refresh), $i ? (this.mutationsObserver_ = new MutationObserver(this.refresh), this.mutationsObserver_.observe(document, {
                    attributes: !0,
                    childList: !0,
                    characterData: !0,
                    subtree: !0
                })) : (document.addEventListener("DOMSubtreeModified", this.refresh), this.mutationEventsAdded_ = !0), this.connected_ = !0)
            }, e.prototype.disconnect_ = function() {
                Fi && this.connected_ && (document.removeEventListener("transitionend", this.onTransitionEnd_), window.removeEventListener("resize", this.refresh), this.mutationsObserver_ && this.mutationsObserver_.disconnect(), this.mutationEventsAdded_ && document.removeEventListener("DOMSubtreeModified", this.refresh), this.mutationsObserver_ = null, this.mutationEventsAdded_ = !1, this.connected_ = !1)
            }, e.prototype.onTransitionEnd_ = function(e) {
                var t = e.propertyName,
                    n = void 0 === t ? "" : t;
                ji.some((function(e) {
                    return !!~n.indexOf(e)
                })) && this.refresh()
            }, e.getInstance = function() {
                return this.instance_ || (this.instance_ = new e), this.instance_
            }, e.instance_ = null, e
        }(),
        Hi = function(e, t) {
            for (var n = 0, i = Object.keys(t); n < i.length; n++) {
                var r = i[n];
                Object.defineProperty(e, r, {
                    value: t[r],
                    enumerable: !1,
                    writable: !1,
                    configurable: !0
                })
            }
            return e
        },
        Bi = function(e) {
            return e && e.ownerDocument && e.ownerDocument.defaultView || Ni
        },
        qi = Xi(0, 0, 0, 0);

    function Wi(e) {
        return parseFloat(e) || 0
    }

    function Ui(e) {
        for (var t = [], n = 1; n < arguments.length; n++) t[n - 1] = arguments[n];
        return t.reduce((function(t, n) {
            return t + Wi(e["border-" + n + "-width"])
        }), 0)
    }
    var Vi = "undefined" != typeof SVGGraphicsElement ? function(e) {
        return e instanceof Bi(e).SVGGraphicsElement
    } : function(e) {
        return e instanceof Bi(e).SVGElement && "function" == typeof e.getBBox
    };

    function Yi(e) {
        return Fi ? Vi(e) ? function(e) {
            var t = e.getBBox();
            return Xi(0, 0, t.width, t.height)
        }(e) : function(e) {
            var t = e.clientWidth,
                n = e.clientHeight;
            if (!t && !n) return qi;
            var i = Bi(e).getComputedStyle(e),
                r = function(e) {
                    for (var t = {}, n = 0, i = ["top", "right", "bottom", "left"]; n < i.length; n++) {
                        var r = i[n],
                            o = e["padding-" + r];
                        t[r] = Wi(o)
                    }
                    return t
                }(i),
                o = r.left + r.right,
                a = r.top + r.bottom,
                s = Wi(i.width),
                l = Wi(i.height);
            if ("border-box" === i.boxSizing && (Math.round(s + o) !== t && (s -= Ui(i, "left", "right") + o), Math.round(l + a) !== n && (l -= Ui(i, "top", "bottom") + a)), ! function(e) {
                    return e === Bi(e).document.documentElement
                }(e)) {
                var c = Math.round(s + o) - t,
                    u = Math.round(l + a) - n;
                1 !== Math.abs(c) && (s -= c), 1 !== Math.abs(u) && (l -= u)
            }
            return Xi(r.left, r.top, s, l)
        }(e) : qi
    }

    function Xi(e, t, n, i) {
        return {
            x: e,
            y: t,
            width: n,
            height: i
        }
    }
    var Gi = function() {
            function e(e) {
                this.broadcastWidth = 0, this.broadcastHeight = 0, this.contentRect_ = Xi(0, 0, 0, 0), this.target = e
            }
            return e.prototype.isActive = function() {
                var e = Yi(this.target);
                return this.contentRect_ = e, e.width !== this.broadcastWidth || e.height !== this.broadcastHeight
            }, e.prototype.broadcastRect = function() {
                var e = this.contentRect_;
                return this.broadcastWidth = e.width, this.broadcastHeight = e.height, e
            }, e
        }(),
        Qi = function(e, t) {
            var n, i, r, o, a, s, l, c = (i = (n = t).x, r = n.y, o = n.width, a = n.height, s = "undefined" != typeof DOMRectReadOnly ? DOMRectReadOnly : Object, l = Object.create(s.prototype), Hi(l, {
                x: i,
                y: r,
                width: o,
                height: a,
                top: r,
                right: i + o,
                bottom: a + r,
                left: i
            }), l);
            Hi(this, {
                target: e,
                contentRect: c
            })
        },
        Ki = function() {
            function e(e, t, n) {
                if (this.activeObservations_ = [], this.observations_ = new Li, "function" != typeof e) throw new TypeError("The callback provided as parameter 1 is not a function.");
                this.callback_ = e, this.controller_ = t, this.callbackCtx_ = n
            }
            return e.prototype.observe = function(e) {
                if (!arguments.length) throw new TypeError("1 argument required, but only 0 present.");
                if ("undefined" != typeof Element && Element instanceof Object) {
                    if (!(e instanceof Bi(e).Element)) throw new TypeError('parameter 1 is not of type "Element".');
                    var t = this.observations_;
                    t.has(e) || (t.set(e, new Gi(e)), this.controller_.addObserver(this), this.controller_.refresh())
                }
            }, e.prototype.unobserve = function(e) {
                if (!arguments.length) throw new TypeError("1 argument required, but only 0 present.");
                if ("undefined" != typeof Element && Element instanceof Object) {
                    if (!(e instanceof Bi(e).Element)) throw new TypeError('parameter 1 is not of type "Element".');
                    var t = this.observations_;
                    t.has(e) && (t.delete(e), t.size || this.controller_.removeObserver(this))
                }
            }, e.prototype.disconnect = function() {
                this.clearActive(), this.observations_.clear(), this.controller_.removeObserver(this)
            }, e.prototype.gatherActive = function() {
                var e = this;
                this.clearActive(), this.observations_.forEach((function(t) {
                    t.isActive() && e.activeObservations_.push(t)
                }))
            }, e.prototype.broadcastActive = function() {
                if (this.hasActive()) {
                    var e = this.callbackCtx_,
                        t = this.activeObservations_.map((function(e) {
                            return new Qi(e.target, e.broadcastRect())
                        }));
                    this.callback_.call(e, t, e), this.clearActive()
                }
            }, e.prototype.clearActive = function() {
                this.activeObservations_.splice(0)
            }, e.prototype.hasActive = function() {
                return this.activeObservations_.length > 0
            }, e
        }(),
        Ji = "undefined" != typeof WeakMap ? new WeakMap : new Li,
        Zi = function e(t) {
            if (!(this instanceof e)) throw new TypeError("Cannot call a class as a function.");
            if (!arguments.length) throw new TypeError("1 argument required, but only 0 present.");
            var n = zi.getInstance(),
                i = new Ki(t, n, this);
            Ji.set(this, i)
        };
    ["observe", "unobserve", "disconnect"].forEach((function(e) {
        Zi.prototype[e] = function() {
            var t;
            return (t = Ji.get(this))[e].apply(t, arguments)
        }
    }));
    var er = void 0 !== Ni.ResizeObserver ? Ni.ResizeObserver : Zi,
        tr = null,
        nr = null;

    function ir() {
        if (null === tr) {
            if ("undefined" == typeof document) return tr = 0;
            var e = document.body,
                t = document.createElement("div");
            t.classList.add("simplebar-hide-scrollbar"), e.appendChild(t);
            var n = t.getBoundingClientRect().right;
            e.removeChild(t), tr = n
        }
        return tr
    }
    Ye && window.addEventListener("resize", (function() {
        nr !== window.devicePixelRatio && (nr = window.devicePixelRatio, tr = null)
    }));
    var rr = function(e) {
            return function(t, n, i, r) {
                De(n);
                var o = Ae(t),
                    a = v(o),
                    s = ae(o.length),
                    l = e ? s - 1 : 0,
                    c = e ? -1 : 1;
                if (i < 2)
                    for (;;) {
                        if (l in a) {
                            r = a[l], l += c;
                            break
                        }
                        if (l += c, e ? l < 0 : s <= l) throw TypeError("Reduce of empty array with no initial value")
                    }
                for (; e ? l >= 0 : s > l; l += c) l in a && (r = n(r, a[l], l, o));
                return r
            }
        },
        or = [rr(!1), rr(!0)][0];
    Te({
        target: "Array",
        proto: !0,
        forced: ze("reduce")
    }, {
        reduce: function(e) {
            return or(this, e, arguments.length, arguments.length > 1 ? arguments[1] : void 0)
        }
    });
    var ar = I.f,
        sr = Function.prototype,
        lr = sr.toString,
        cr = /^\s*function ([^ (]*)/;
    !c || "name" in sr || ar(sr, "name", {
        configurable: !0,
        get: function() {
            try {
                return lr.call(this).match(cr)[1]
            } catch (e) {
                return ""
            }
        }
    });
    var ur, dr, hr = function() {
            var e = M(this),
                t = "";
            return e.global && (t += "g"), e.ignoreCase && (t += "i"), e.multiline && (t += "m"), e.dotAll && (t += "s"), e.unicode && (t += "u"), e.sticky && (t += "y"), t
        },
        fr = RegExp.prototype.exec,
        pr = String.prototype.replace,
        gr = fr,
        mr = (ur = /a/, dr = /b*/g, fr.call(ur, "a"), fr.call(dr, "a"), 0 !== ur.lastIndex || 0 !== dr.lastIndex),
        vr = void 0 !== /()??/.exec("")[1];
    (mr || vr) && (gr = function(e) {
        var t, n, i, r, o = this;
        return vr && (n = new RegExp("^" + o.source + "$(?!\\s)", hr.call(o))), mr && (t = o.lastIndex), i = fr.call(o, e), mr && i && (o.lastIndex = o.global ? i.index + i[0].length : t), vr && i && i.length > 1 && pr.call(i[0], n, (function() {
            for (r = 1; r < arguments.length - 2; r++) void 0 === arguments[r] && (i[r] = void 0)
        })), i
    });
    var yr = gr;
    Te({
        target: "RegExp",
        proto: !0,
        forced: /./.exec !== yr
    }, {
        exec: yr
    });
    var br = Le("species"),
        wr = !l((function() {
            var e = /./;
            return e.exec = function() {
                var e = [];
                return e.groups = {
                    a: "7"
                }, e
            }, "7" !== "".replace(e, "$<a>")
        })),
        xr = !l((function() {
            var e = /(?:)/,
                t = e.exec;
            e.exec = function() {
                return t.apply(this, arguments)
            };
            var n = "ab".split(e);
            return 2 !== n.length || "a" !== n[0] || "b" !== n[1]
        })),
        _r = function(e, t, n, i) {
            var r = Le(e),
                o = !l((function() {
                    var t = {};
                    return t[r] = function() {
                        return 7
                    }, 7 != "" [e](t)
                })),
                a = o && !l((function() {
                    var t = !1,
                        n = /a/;
                    return n.exec = function() {
                        return t = !0, null
                    }, "split" === e && (n.constructor = {}, n.constructor[br] = function() {
                        return n
                    }), n[r](""), !t
                }));
            if (!o || !a || "replace" === e && !wr || "split" === e && !xr) {
                var s = /./ [r],
                    c = n(r, "" [e], (function(e, t, n, i, r) {
                        return t.exec === yr ? o && !r ? {
                            done: !0,
                            value: s.call(t, n, i)
                        } : {
                            done: !0,
                            value: e.call(n, t, i)
                        } : {
                            done: !1
                        }
                    })),
                    u = c[0],
                    d = c[1];
                J(String.prototype, e, u), J(RegExp.prototype, r, 2 == t ? function(e, t) {
                    return d.call(e, this, t)
                } : function(e) {
                    return d.call(e, this)
                }), i && P(RegExp.prototype[r], "sham", !0)
            }
        },
        Cr = Gt.charAt,
        kr = function(e, t, n) {
            return t + (n ? Cr(e, t).length : 1)
        },
        Sr = function(e, t) {
            var n = e.exec;
            if ("function" == typeof n) {
                var i = n.call(e, t);
                if ("object" != typeof i) throw TypeError("RegExp exec method returned something other than an Object or null");
                return i
            }
            if ("RegExp" !== g(e)) throw TypeError("RegExp#exec called on incompatible receiver");
            return yr.call(e, t)
        };
    _r("match", 1, (function(e, t, n) {
        return [function(t) {
            var n = y(this),
                i = null == t ? void 0 : t[e];
            return void 0 !== i ? i.call(t, n) : new RegExp(t)[e](String(n))
        }, function(e) {
            var i = n(t, e, this);
            if (i.done) return i.value;
            var r = M(e),
                o = String(this);
            if (!r.global) return Sr(r, o);
            var a = r.unicode;
            r.lastIndex = 0;
            for (var s, l = [], c = 0; null !== (s = Sr(r, o));) {
                var u = String(s[0]);
                l[c] = u, "" === u && (r.lastIndex = kr(o, ae(r.lastIndex), a)), c++
            }
            return 0 === c ? null : l
        }]
    }));
    var Tr = Math.max,
        Dr = Math.min,
        Er = Math.floor,
        Ar = /\$([$&'`]|\d\d?|<[^>]*>)/g,
        Mr = /\$([$&'`]|\d\d?)/g;
    _r("replace", 2, (function(e, t, n) {
        return [function(n, i) {
            var r = y(this),
                o = null == n ? void 0 : n[e];
            return void 0 !== o ? o.call(n, r, i) : t.call(String(r), n, i)
        }, function(e, r) {
            var o = n(t, e, this, r);
            if (o.done) return o.value;
            var a = M(e),
                s = String(this),
                l = "function" == typeof r;
            l || (r = String(r));
            var c = a.global;
            if (c) {
                var u = a.unicode;
                a.lastIndex = 0
            }
            for (var d = [];;) {
                var h = Sr(a, s);
                if (null === h) break;
                if (d.push(h), !c) break;
                "" === String(h[0]) && (a.lastIndex = kr(s, ae(a.lastIndex), u))
            }
            for (var f, p = "", g = 0, m = 0; m < d.length; m++) {
                h = d[m];
                for (var v = String(h[0]), y = Tr(Dr(re(h.index), s.length), 0), b = [], w = 1; w < h.length; w++) b.push(void 0 === (f = h[w]) ? f : String(f));
                var x = h.groups;
                if (l) {
                    var _ = [v].concat(b, y, s);
                    void 0 !== x && _.push(x);
                    var C = String(r.apply(void 0, _))
                } else C = i(v, s, y, b, x, r);
                y >= g && (p += s.slice(g, y) + C, g = y + v.length)
            }
            return p + s.slice(g)
        }];

        function i(e, n, i, r, o, a) {
            var s = i + e.length,
                l = r.length,
                c = Mr;
            return void 0 !== o && (o = Ae(o), c = Ar), t.call(a, c, (function(t, a) {
                var c;
                switch (a.charAt(0)) {
                    case "$":
                        return "$";
                    case "&":
                        return e;
                    case "`":
                        return n.slice(0, i);
                    case "'":
                        return n.slice(s);
                    case "<":
                        c = o[a.slice(1, -1)];
                        break;
                    default:
                        var u = +a;
                        if (0 === u) return t;
                        if (u > l) {
                            var d = Er(u / 10);
                            return 0 === d ? t : d <= l ? void 0 === r[d - 1] ? a.charAt(1) : r[d - 1] + a.charAt(1) : t
                        }
                        c = r[u - 1]
                }
                return void 0 === c ? "" : c
            }))
        }
    }));
    var Or = function(e) {
        return Array.prototype.reduce.call(e, (function(e, t) {
            var n = t.name.match(/data-simplebar-(.+)/);
            if (n) {
                var i = n[1].replace(/\W+(.)/g, (function(e, t) {
                    return t.toUpperCase()
                }));
                switch (t.value) {
                    case "true":
                        e[i] = !0;
                        break;
                    case "false":
                        e[i] = !1;
                        break;
                    case void 0:
                        e[i] = !0;
                        break;
                    default:
                        e[i] = t.value
                }
            }
            return e
        }), {})
    };

    function Ir(e) {
        return e && e.ownerDocument && e.ownerDocument.defaultView ? e.ownerDocument.defaultView : window
    }

    function Pr(e) {
        return e && e.ownerDocument ? e.ownerDocument : document
    }
    var Lr = function() {
        function e(t, n) {
            var i = this;
            this.onScroll = function() {
                var e = Ir(i.el);
                i.scrollXTicking || (e.requestAnimationFrame(i.scrollX), i.scrollXTicking = !0), i.scrollYTicking || (e.requestAnimationFrame(i.scrollY), i.scrollYTicking = !0)
            }, this.scrollX = function() {
                i.axis.x.isOverflowing && (i.showScrollbar("x"), i.positionScrollbar("x")), i.scrollXTicking = !1
            }, this.scrollY = function() {
                i.axis.y.isOverflowing && (i.showScrollbar("y"), i.positionScrollbar("y")), i.scrollYTicking = !1
            }, this.onMouseEnter = function() {
                i.showScrollbar("x"), i.showScrollbar("y")
            }, this.onMouseMove = function(e) {
                i.mouseX = e.clientX, i.mouseY = e.clientY, (i.axis.x.isOverflowing || i.axis.x.forceVisible) && i.onMouseMoveForAxis("x"), (i.axis.y.isOverflowing || i.axis.y.forceVisible) && i.onMouseMoveForAxis("y")
            }, this.onMouseLeave = function() {
                i.onMouseMove.cancel(), (i.axis.x.isOverflowing || i.axis.x.forceVisible) && i.onMouseLeaveForAxis("x"), (i.axis.y.isOverflowing || i.axis.y.forceVisible) && i.onMouseLeaveForAxis("y"), i.mouseX = -1, i.mouseY = -1
            }, this.onWindowResize = function() {
                i.scrollbarWidth = i.getScrollbarWidth(), i.hideNativeScrollbar()
            }, this.hideScrollbars = function() {
                i.axis.x.track.rect = i.axis.x.track.el.getBoundingClientRect(), i.axis.y.track.rect = i.axis.y.track.el.getBoundingClientRect(), i.isWithinBounds(i.axis.y.track.rect) || (i.axis.y.scrollbar.el.classList.remove(i.classNames.visible), i.axis.y.isVisible = !1), i.isWithinBounds(i.axis.x.track.rect) || (i.axis.x.scrollbar.el.classList.remove(i.classNames.visible), i.axis.x.isVisible = !1)
            }, this.onPointerEvent = function(e) {
                var t, n;
                i.axis.x.track.rect = i.axis.x.track.el.getBoundingClientRect(), i.axis.y.track.rect = i.axis.y.track.el.getBoundingClientRect(), (i.axis.x.isOverflowing || i.axis.x.forceVisible) && (t = i.isWithinBounds(i.axis.x.track.rect)), (i.axis.y.isOverflowing || i.axis.y.forceVisible) && (n = i.isWithinBounds(i.axis.y.track.rect)), (t || n) && (e.preventDefault(), e.stopPropagation(), "mousedown" === e.type && (t && (i.axis.x.scrollbar.rect = i.axis.x.scrollbar.el.getBoundingClientRect(), i.isWithinBounds(i.axis.x.scrollbar.rect) ? i.onDragStart(e, "x") : i.onTrackClick(e, "x")), n && (i.axis.y.scrollbar.rect = i.axis.y.scrollbar.el.getBoundingClientRect(), i.isWithinBounds(i.axis.y.scrollbar.rect) ? i.onDragStart(e, "y") : i.onTrackClick(e, "y"))))
            }, this.drag = function(t) {
                var n = i.axis[i.draggedAxis].track,
                    r = n.rect[i.axis[i.draggedAxis].sizeAttr],
                    o = i.axis[i.draggedAxis].scrollbar,
                    a = i.contentWrapperEl[i.axis[i.draggedAxis].scrollSizeAttr],
                    s = parseInt(i.elStyles[i.axis[i.draggedAxis].sizeAttr], 10);
                t.preventDefault(), t.stopPropagation();
                var l = (("y" === i.draggedAxis ? t.pageY : t.pageX) - n.rect[i.axis[i.draggedAxis].offsetAttr] - i.axis[i.draggedAxis].dragOffset) / (r - o.size) * (a - s);
                "x" === i.draggedAxis && (l = i.isRtl && e.getRtlHelpers().isRtlScrollbarInverted ? l - (r + o.size) : l, l = i.isRtl && e.getRtlHelpers().isRtlScrollingInverted ? -l : l), i.contentWrapperEl[i.axis[i.draggedAxis].scrollOffsetAttr] = l
            }, this.onEndDrag = function(e) {
                var t = Pr(i.el),
                    n = Ir(i.el);
                e.preventDefault(), e.stopPropagation(), i.el.classList.remove(i.classNames.dragging), t.removeEventListener("mousemove", i.drag, !0), t.removeEventListener("mouseup", i.onEndDrag, !0), i.removePreventClickId = n.setTimeout((function() {
                    t.removeEventListener("click", i.preventClick, !0), t.removeEventListener("dblclick", i.preventClick, !0), i.removePreventClickId = null
                }))
            }, this.preventClick = function(e) {
                e.preventDefault(), e.stopPropagation()
            }, this.el = t, this.minScrollbarWidth = 20, this.options = Object.assign({}, e.defaultOptions, {}, n), this.classNames = Object.assign({}, e.defaultOptions.classNames, {}, this.options.classNames), this.axis = {
                x: {
                    scrollOffsetAttr: "scrollLeft",
                    sizeAttr: "width",
                    scrollSizeAttr: "scrollWidth",
                    offsetSizeAttr: "offsetWidth",
                    offsetAttr: "left",
                    overflowAttr: "overflowX",
                    dragOffset: 0,
                    isOverflowing: !0,
                    isVisible: !1,
                    forceVisible: !1,
                    track: {},
                    scrollbar: {}
                },
                y: {
                    scrollOffsetAttr: "scrollTop",
                    sizeAttr: "height",
                    scrollSizeAttr: "scrollHeight",
                    offsetSizeAttr: "offsetHeight",
                    offsetAttr: "top",
                    overflowAttr: "overflowY",
                    dragOffset: 0,
                    isOverflowing: !0,
                    isVisible: !1,
                    forceVisible: !1,
                    track: {},
                    scrollbar: {}
                }
            }, this.removePreventClickId = null, e.instances.has(this.el) || (this.recalculate = Vn(this.recalculate.bind(this), 64), this.onMouseMove = Vn(this.onMouseMove.bind(this), 64), this.hideScrollbars = si(this.hideScrollbars.bind(this), this.options.timeout), this.onWindowResize = si(this.onWindowResize.bind(this), 64, {
                leading: !0
            }), e.getRtlHelpers = Pi(e.getRtlHelpers), this.init())
        }
        e.getRtlHelpers = function() {
            var t = document.createElement("div");
            t.innerHTML = '<div class="hs-dummy-scrollbar-size"><div style="height: 200%; width: 200%; margin: 10px 0;"></div></div>';
            var n = t.firstElementChild;
            document.body.appendChild(n);
            var i = n.firstElementChild;
            n.scrollLeft = 0;
            var r = e.getOffset(n),
                o = e.getOffset(i);
            n.scrollLeft = 999;
            var a = e.getOffset(i);
            return {
                isRtlScrollingInverted: r.left !== o.left && o.left - a.left != 0,
                isRtlScrollbarInverted: r.left !== o.left
            }
        }, e.getOffset = function(e) {
            var t = e.getBoundingClientRect(),
                n = Pr(e),
                i = Ir(e);
            return {
                top: t.top + (i.pageYOffset || n.documentElement.scrollTop),
                left: t.left + (i.pageXOffset || n.documentElement.scrollLeft)
            }
        };
        var t = e.prototype;
        return t.init = function() {
            e.instances.set(this.el, this), Ye && (this.initDOM(), this.scrollbarWidth = this.getScrollbarWidth(), this.recalculate(), this.initListeners())
        }, t.initDOM = function() {
            var e = this;
            if (Array.prototype.filter.call(this.el.children, (function(t) {
                    return t.classList.contains(e.classNames.wrapper)
                })).length) this.wrapperEl = this.el.querySelector("." + this.classNames.wrapper), this.contentWrapperEl = this.options.scrollableNode || this.el.querySelector("." + this.classNames.contentWrapper), this.contentEl = this.options.contentNode || this.el.querySelector("." + this.classNames.contentEl), this.offsetEl = this.el.querySelector("." + this.classNames.offset), this.maskEl = this.el.querySelector("." + this.classNames.mask), this.placeholderEl = this.findChild(this.wrapperEl, "." + this.classNames.placeholder), this.heightAutoObserverWrapperEl = this.el.querySelector("." + this.classNames.heightAutoObserverWrapperEl), this.heightAutoObserverEl = this.el.querySelector("." + this.classNames.heightAutoObserverEl), this.axis.x.track.el = this.findChild(this.el, "." + this.classNames.track + "." + this.classNames.horizontal), this.axis.y.track.el = this.findChild(this.el, "." + this.classNames.track + "." + this.classNames.vertical);
            else {
                for (this.wrapperEl = document.createElement("div"), this.contentWrapperEl = document.createElement("div"), this.offsetEl = document.createElement("div"), this.maskEl = document.createElement("div"), this.contentEl = document.createElement("div"), this.placeholderEl = document.createElement("div"), this.heightAutoObserverWrapperEl = document.createElement("div"), this.heightAutoObserverEl = document.createElement("div"), this.wrapperEl.classList.add(this.classNames.wrapper), this.contentWrapperEl.classList.add(this.classNames.contentWrapper), this.offsetEl.classList.add(this.classNames.offset), this.maskEl.classList.add(this.classNames.mask), this.contentEl.classList.add(this.classNames.contentEl), this.placeholderEl.classList.add(this.classNames.placeholder), this.heightAutoObserverWrapperEl.classList.add(this.classNames.heightAutoObserverWrapperEl), this.heightAutoObserverEl.classList.add(this.classNames.heightAutoObserverEl); this.el.firstChild;) this.contentEl.appendChild(this.el.firstChild);
                this.contentWrapperEl.appendChild(this.contentEl), this.offsetEl.appendChild(this.contentWrapperEl), this.maskEl.appendChild(this.offsetEl), this.heightAutoObserverWrapperEl.appendChild(this.heightAutoObserverEl), this.wrapperEl.appendChild(this.heightAutoObserverWrapperEl), this.wrapperEl.appendChild(this.maskEl), this.wrapperEl.appendChild(this.placeholderEl), this.el.appendChild(this.wrapperEl)
            }
            if (!this.axis.x.track.el || !this.axis.y.track.el) {
                var t = document.createElement("div"),
                    n = document.createElement("div");
                t.classList.add(this.classNames.track), n.classList.add(this.classNames.scrollbar), t.appendChild(n), this.axis.x.track.el = t.cloneNode(!0), this.axis.x.track.el.classList.add(this.classNames.horizontal), this.axis.y.track.el = t.cloneNode(!0), this.axis.y.track.el.classList.add(this.classNames.vertical), this.el.appendChild(this.axis.x.track.el), this.el.appendChild(this.axis.y.track.el)
            }
            this.axis.x.scrollbar.el = this.axis.x.track.el.querySelector("." + this.classNames.scrollbar), this.axis.y.scrollbar.el = this.axis.y.track.el.querySelector("." + this.classNames.scrollbar), this.options.autoHide || (this.axis.x.scrollbar.el.classList.add(this.classNames.visible), this.axis.y.scrollbar.el.classList.add(this.classNames.visible)), this.el.setAttribute("data-simplebar", "init")
        }, t.initListeners = function() {
            var e = this,
                t = Ir(this.el);
            this.options.autoHide && this.el.addEventListener("mouseenter", this.onMouseEnter), ["mousedown", "click", "dblclick"].forEach((function(t) {
                e.el.addEventListener(t, e.onPointerEvent, !0)
            })), ["touchstart", "touchend", "touchmove"].forEach((function(t) {
                e.el.addEventListener(t, e.onPointerEvent, {
                    capture: !0,
                    passive: !0
                })
            })), this.el.addEventListener("mousemove", this.onMouseMove), this.el.addEventListener("mouseleave", this.onMouseLeave), this.contentWrapperEl.addEventListener("scroll", this.onScroll), t.addEventListener("resize", this.onWindowResize);
            var n = !1,
                i = t.ResizeObserver || er;
            this.resizeObserver = new i((function() {
                n && e.recalculate()
            })), this.resizeObserver.observe(this.el), this.resizeObserver.observe(this.contentEl), t.requestAnimationFrame((function() {
                n = !0
            })), this.mutationObserver = new t.MutationObserver(this.recalculate), this.mutationObserver.observe(this.contentEl, {
                childList: !0,
                subtree: !0,
                characterData: !0
            })
        }, t.recalculate = function() {
            var e = Ir(this.el);
            this.elStyles = e.getComputedStyle(this.el), this.isRtl = "rtl" === this.elStyles.direction;
            var t = this.heightAutoObserverEl.offsetHeight <= 1,
                n = this.heightAutoObserverEl.offsetWidth <= 1,
                i = this.contentEl.offsetWidth,
                r = this.contentWrapperEl.offsetWidth,
                o = this.elStyles.overflowX,
                a = this.elStyles.overflowY;
            this.contentEl.style.padding = this.elStyles.paddingTop + " " + this.elStyles.paddingRight + " " + this.elStyles.paddingBottom + " " + this.elStyles.paddingLeft, this.wrapperEl.style.margin = "-" + this.elStyles.paddingTop + " -" + this.elStyles.paddingRight + " -" + this.elStyles.paddingBottom + " -" + this.elStyles.paddingLeft;
            var s = this.contentEl.scrollHeight,
                l = this.contentEl.scrollWidth;
            this.contentWrapperEl.style.height = t ? "auto" : "100%", this.placeholderEl.style.width = n ? i + "px" : "auto", this.placeholderEl.style.height = s + "px";
            var c = this.contentWrapperEl.offsetHeight;
            this.axis.x.isOverflowing = l > i, this.axis.y.isOverflowing = s > c, this.axis.x.isOverflowing = "hidden" !== o && this.axis.x.isOverflowing, this.axis.y.isOverflowing = "hidden" !== a && this.axis.y.isOverflowing, this.axis.x.forceVisible = "x" === this.options.forceVisible || !0 === this.options.forceVisible, this.axis.y.forceVisible = "y" === this.options.forceVisible || !0 === this.options.forceVisible, this.hideNativeScrollbar();
            var u = this.axis.x.isOverflowing ? this.scrollbarWidth : 0,
                d = this.axis.y.isOverflowing ? this.scrollbarWidth : 0;
            this.axis.x.isOverflowing = this.axis.x.isOverflowing && l > r - d, this.axis.y.isOverflowing = this.axis.y.isOverflowing && s > c - u, this.axis.x.scrollbar.size = this.getScrollbarSize("x"), this.axis.y.scrollbar.size = this.getScrollbarSize("y"), this.axis.x.scrollbar.el.style.width = this.axis.x.scrollbar.size + "px", this.axis.y.scrollbar.el.style.height = this.axis.y.scrollbar.size + "px", this.positionScrollbar("x"), this.positionScrollbar("y"), this.toggleTrackVisibility("x"), this.toggleTrackVisibility("y")
        }, t.getScrollbarSize = function(e) {
            if (void 0 === e && (e = "y"), !this.axis[e].isOverflowing) return 0;
            var t, n = this.contentEl[this.axis[e].scrollSizeAttr],
                i = this.axis[e].track.el[this.axis[e].offsetSizeAttr],
                r = i / n;
            return t = Math.max(~~(r * i), this.options.scrollbarMinSize), this.options.scrollbarMaxSize && (t = Math.min(t, this.options.scrollbarMaxSize)), t
        }, t.positionScrollbar = function(t) {
            if (void 0 === t && (t = "y"), this.axis[t].isOverflowing) {
                var n = this.contentWrapperEl[this.axis[t].scrollSizeAttr],
                    i = this.axis[t].track.el[this.axis[t].offsetSizeAttr],
                    r = parseInt(this.elStyles[this.axis[t].sizeAttr], 10),
                    o = this.axis[t].scrollbar,
                    a = this.contentWrapperEl[this.axis[t].scrollOffsetAttr],
                    s = (a = "x" === t && this.isRtl && e.getRtlHelpers().isRtlScrollingInverted ? -a : a) / (n - r),
                    l = ~~((i - o.size) * s);
                l = "x" === t && this.isRtl && e.getRtlHelpers().isRtlScrollbarInverted ? l + (i - o.size) : l, o.el.style.transform = "x" === t ? "translate3d(" + l + "px, 0, 0)" : "translate3d(0, " + l + "px, 0)"
            }
        }, t.toggleTrackVisibility = function(e) {
            void 0 === e && (e = "y");
            var t = this.axis[e].track.el,
                n = this.axis[e].scrollbar.el;
            this.axis[e].isOverflowing || this.axis[e].forceVisible ? (t.style.visibility = "visible", this.contentWrapperEl.style[this.axis[e].overflowAttr] = "scroll") : (t.style.visibility = "hidden", this.contentWrapperEl.style[this.axis[e].overflowAttr] = "hidden"), this.axis[e].isOverflowing ? n.style.display = "block" : n.style.display = "none"
        }, t.hideNativeScrollbar = function() {
            this.offsetEl.style[this.isRtl ? "left" : "right"] = this.axis.y.isOverflowing || this.axis.y.forceVisible ? "-" + this.scrollbarWidth + "px" : 0, this.offsetEl.style.bottom = this.axis.x.isOverflowing || this.axis.x.forceVisible ? "-" + this.scrollbarWidth + "px" : 0
        }, t.onMouseMoveForAxis = function(e) {
            void 0 === e && (e = "y"), this.axis[e].track.rect = this.axis[e].track.el.getBoundingClientRect(), this.axis[e].scrollbar.rect = this.axis[e].scrollbar.el.getBoundingClientRect(), this.isWithinBounds(this.axis[e].scrollbar.rect) ? this.axis[e].scrollbar.el.classList.add(this.classNames.hover) : this.axis[e].scrollbar.el.classList.remove(this.classNames.hover), this.isWithinBounds(this.axis[e].track.rect) ? (this.showScrollbar(e), this.axis[e].track.el.classList.add(this.classNames.hover)) : this.axis[e].track.el.classList.remove(this.classNames.hover)
        }, t.onMouseLeaveForAxis = function(e) {
            void 0 === e && (e = "y"), this.axis[e].track.el.classList.remove(this.classNames.hover), this.axis[e].scrollbar.el.classList.remove(this.classNames.hover)
        }, t.showScrollbar = function(e) {
            void 0 === e && (e = "y");
            var t = this.axis[e].scrollbar.el;
            this.axis[e].isVisible || (t.classList.add(this.classNames.visible), this.axis[e].isVisible = !0), this.options.autoHide && this.hideScrollbars()
        }, t.onDragStart = function(e, t) {
            void 0 === t && (t = "y");
            var n = Pr(this.el),
                i = Ir(this.el),
                r = this.axis[t].scrollbar,
                o = "y" === t ? e.pageY : e.pageX;
            this.axis[t].dragOffset = o - r.rect[this.axis[t].offsetAttr], this.draggedAxis = t, this.el.classList.add(this.classNames.dragging), n.addEventListener("mousemove", this.drag, !0), n.addEventListener("mouseup", this.onEndDrag, !0), null === this.removePreventClickId ? (n.addEventListener("click", this.preventClick, !0), n.addEventListener("dblclick", this.preventClick, !0)) : (i.clearTimeout(this.removePreventClickId), this.removePreventClickId = null)
        }, t.onTrackClick = function(e, t) {
            var n = this;
            if (void 0 === t && (t = "y"), this.options.clickOnTrack) {
                var i = Ir(this.el);
                this.axis[t].scrollbar.rect = this.axis[t].scrollbar.el.getBoundingClientRect();
                var r = this.axis[t].scrollbar.rect[this.axis[t].offsetAttr],
                    o = parseInt(this.elStyles[this.axis[t].sizeAttr], 10),
                    a = this.contentWrapperEl[this.axis[t].scrollOffsetAttr],
                    s = ("y" === t ? this.mouseY - r : this.mouseX - r) < 0 ? -1 : 1,
                    l = -1 === s ? a - o : a + o;
                ! function e() {
                    var r, o; - 1 === s ? a > l && (a -= n.options.clickOnTrackSpeed, n.contentWrapperEl.scrollTo(((r = {})[n.axis[t].offsetAttr] = a, r)), i.requestAnimationFrame(e)) : a < l && (a += n.options.clickOnTrackSpeed, n.contentWrapperEl.scrollTo(((o = {})[n.axis[t].offsetAttr] = a, o)), i.requestAnimationFrame(e))
                }()
            }
        }, t.getContentElement = function() {
            return this.contentEl
        }, t.getScrollElement = function() {
            return this.contentWrapperEl
        }, t.getScrollbarWidth = function() {
            try {
                return "none" === getComputedStyle(this.contentWrapperEl, "::-webkit-scrollbar").display || "scrollbarWidth" in document.documentElement.style || "-ms-overflow-style" in document.documentElement.style ? 0 : ir()
            } catch (e) {
                return ir()
            }
        }, t.removeListeners = function() {
            var e = this,
                t = Ir(this.el);
            this.options.autoHide && this.el.removeEventListener("mouseenter", this.onMouseEnter), ["mousedown", "click", "dblclick"].forEach((function(t) {
                e.el.removeEventListener(t, e.onPointerEvent, !0)
            })), ["touchstart", "touchend", "touchmove"].forEach((function(t) {
                e.el.removeEventListener(t, e.onPointerEvent, {
                    capture: !0,
                    passive: !0
                })
            })), this.el.removeEventListener("mousemove", this.onMouseMove), this.el.removeEventListener("mouseleave", this.onMouseLeave), this.contentWrapperEl && this.contentWrapperEl.removeEventListener("scroll", this.onScroll), t.removeEventListener("resize", this.onWindowResize), this.mutationObserver && this.mutationObserver.disconnect(), this.resizeObserver && this.resizeObserver.disconnect(), this.recalculate.cancel(), this.onMouseMove.cancel(), this.hideScrollbars.cancel(), this.onWindowResize.cancel()
        }, t.unMount = function() {
            this.removeListeners(), e.instances.delete(this.el)
        }, t.isWithinBounds = function(e) {
            return this.mouseX >= e.left && this.mouseX <= e.left + e.width && this.mouseY >= e.top && this.mouseY <= e.top + e.height
        }, t.findChild = function(e, t) {
            var n = e.matches || e.webkitMatchesSelector || e.mozMatchesSelector || e.msMatchesSelector;
            return Array.prototype.filter.call(e.children, (function(e) {
                return n.call(e, t)
            }))[0]
        }, e
    }();
    return Lr.defaultOptions = {
        autoHide: !0,
        forceVisible: !1,
        clickOnTrack: !0,
        clickOnTrackSpeed: 40,
        classNames: {
            contentEl: "simplebar-content",
            contentWrapper: "simplebar-content-wrapper",
            offset: "simplebar-offset",
            mask: "simplebar-mask",
            wrapper: "simplebar-wrapper",
            placeholder: "simplebar-placeholder",
            scrollbar: "simplebar-scrollbar",
            track: "simplebar-track",
            heightAutoObserverWrapperEl: "simplebar-height-auto-observer-wrapper",
            heightAutoObserverEl: "simplebar-height-auto-observer",
            visible: "simplebar-visible",
            horizontal: "simplebar-horizontal",
            vertical: "simplebar-vertical",
            hover: "simplebar-hover",
            dragging: "simplebar-dragging"
        },
        scrollbarMinSize: 25,
        scrollbarMaxSize: 0,
        timeout: 1e3
    }, Lr.instances = new WeakMap, Lr.initDOMLoadedElements = function() {
        document.removeEventListener("DOMContentLoaded", this.initDOMLoadedElements), window.removeEventListener("load", this.initDOMLoadedElements), Array.prototype.forEach.call(document.querySelectorAll("[data-simplebar]"), (function(e) {
            "init" === e.getAttribute("data-simplebar") || Lr.instances.has(e) || new Lr(e, Or(e.attributes))
        }))
    }, Lr.removeObserver = function() {
        this.globalObserver.disconnect()
    }, Lr.initHtmlApi = function() {
        this.initDOMLoadedElements = this.initDOMLoadedElements.bind(this), "undefined" != typeof MutationObserver && (this.globalObserver = new MutationObserver(Lr.handleMutations), this.globalObserver.observe(document, {
            childList: !0,
            subtree: !0
        })), "complete" === document.readyState || "loading" !== document.readyState && !document.documentElement.doScroll ? window.setTimeout(this.initDOMLoadedElements) : (document.addEventListener("DOMContentLoaded", this.initDOMLoadedElements), window.addEventListener("load", this.initDOMLoadedElements))
    }, Lr.handleMutations = function(e) {
        e.forEach((function(e) {
            Array.prototype.forEach.call(e.addedNodes, (function(e) {
                1 === e.nodeType && (e.hasAttribute("data-simplebar") ? !Lr.instances.has(e) && new Lr(e, Or(e.attributes)) : Array.prototype.forEach.call(e.querySelectorAll("[data-simplebar]"), (function(e) {
                    "init" === e.getAttribute("data-simplebar") || Lr.instances.has(e) || new Lr(e, Or(e.attributes))
                })))
            })), Array.prototype.forEach.call(e.removedNodes, (function(e) {
                1 === e.nodeType && (e.hasAttribute('[data-simplebar="init"]') ? Lr.instances.has(e) && Lr.instances.get(e).unMount() : Array.prototype.forEach.call(e.querySelectorAll('[data-simplebar="init"]'), (function(e) {
                    Lr.instances.has(e) && Lr.instances.get(e).unMount()
                })))
            }))
        }))
    }, Lr.getOptions = Or, Ye && Lr.initHtmlApi(), Lr
})),
function(e) {
    "function" == typeof define && define.amd ? define(["jquery"], e) : "object" == typeof module && module.exports ? module.exports = function(t, n) {
        return void 0 === n && (n = "undefined" != typeof window ? require("jquery") : require("jquery")(t)), e(n), n
    } : e(jQuery)
}((function(e) {
    var t = function() {
            if (e && e.fn && e.fn.select2 && e.fn.select2.amd) var t = e.fn.select2.amd;
            var n, i, r, o, a, s, l, c, u, d, h, f, p, g, m, v;

            function y(e, t) {
                return p.call(e, t)
            }

            function b(e, t) {
                var n, i, r, o, a, s, l, c, u, d, f, p = t && t.split("/"),
                    g = h.map,
                    v = g && g["*"] || {};
                if (e) {
                    for (a = (e = e.split("/")).length - 1, h.nodeIdCompat && m.test(e[a]) && (e[a] = e[a].replace(m, "")), "." === e[0].charAt(0) && p && (e = p.slice(0, p.length - 1).concat(e)), u = 0; u < e.length; u++)
                        if ("." === (f = e[u])) e.splice(u, 1), --u;
                        else if (".." === f) {
                        if (0 === u || 1 === u && ".." === e[2] || ".." === e[u - 1]) continue;
                        0 < u && (e.splice(u - 1, 2), u -= 2)
                    }
                    e = e.join("/")
                }
                if ((p || v) && g) {
                    for (u = (n = e.split("/")).length; 0 < u; --u) {
                        if (i = n.slice(0, u).join("/"), p)
                            for (d = p.length; 0 < d; --d)
                                if (r = (r = g[p.slice(0, d).join("/")]) && r[i]) {
                                    o = r, s = u;
                                    break
                                }
                        if (o) break;
                        !l && v && v[i] && (l = v[i], c = u)
                    }!o && l && (o = l, s = c), o && (n.splice(0, s, o), e = n.join("/"))
                }
                return e
            }

            function w(e, t) {
                return function() {
                    var n = g.call(arguments, 0);
                    return "string" != typeof n[0] && 1 === n.length && n.push(null), s.apply(o, n.concat([e, t]))
                }
            }

            function x(e) {
                return function(t) {
                    u[e] = t
                }
            }

            function _(e) {
                if (y(d, e)) {
                    var t = d[e];
                    delete d[e], f[e] = !0, a.apply(o, t)
                }
                if (!y(u, e) && !y(f, e)) throw new Error("No " + e);
                return u[e]
            }

            function C(e) {
                var t, n = e ? e.indexOf("!") : -1;
                return -1 < n && (t = e.substring(0, n), e = e.substring(n + 1, e.length)), [t, e]
            }

            function k(e) {
                return e ? C(e) : []
            }
            return t && t.requirejs || (t ? i = t : t = {}, u = {}, d = {}, h = {}, f = {}, p = Object.prototype.hasOwnProperty, g = [].slice, m = /\.js$/, l = function(e, t) {
                var n, i, r = C(e),
                    o = r[0],
                    a = t[1];
                return e = r[1], o && (n = _(o = b(o, a))), o ? e = n && n.normalize ? n.normalize(e, (i = a, function(e) {
                    return b(e, i)
                })) : b(e, a) : (o = (r = C(e = b(e, a)))[0], e = r[1], o && (n = _(o))), {
                    f: o ? o + "!" + e : e,
                    n: e,
                    pr: o,
                    p: n
                }
            }, c = {
                require: function(e) {
                    return w(e)
                },
                exports: function(e) {
                    var t = u[e];
                    return void 0 !== t ? t : u[e] = {}
                },
                module: function(e) {
                    return {
                        id: e,
                        uri: "",
                        exports: u[e],
                        config: (t = e, function() {
                            return h && h.config && h.config[t] || {}
                        })
                    };
                    var t
                }
            }, a = function(e, t, n, i) {
                var r, a, s, h, p, g, m, v = [],
                    b = typeof n;
                if (g = k(i = i || e), "undefined" == b || "function" == b) {
                    for (t = !t.length && n.length ? ["require", "exports", "module"] : t, p = 0; p < t.length; p += 1)
                        if ("require" === (a = (h = l(t[p], g)).f)) v[p] = c.require(e);
                        else if ("exports" === a) v[p] = c.exports(e), m = !0;
                    else if ("module" === a) r = v[p] = c.module(e);
                    else if (y(u, a) || y(d, a) || y(f, a)) v[p] = _(a);
                    else {
                        if (!h.p) throw new Error(e + " missing " + a);
                        h.p.load(h.n, w(i, !0), x(a), {}), v[p] = u[a]
                    }
                    s = n ? n.apply(u[e], v) : void 0, e && (r && r.exports !== o && r.exports !== u[e] ? u[e] = r.exports : s === o && m || (u[e] = s))
                } else e && (u[e] = n)
            }, n = i = s = function(e, t, n, i, r) {
                if ("string" == typeof e) return c[e] ? c[e](t) : _(l(e, k(t)).f);
                if (!e.splice) {
                    if ((h = e).deps && s(h.deps, h.callback), !t) return;
                    t.splice ? (e = t, t = n, n = null) : e = o
                }
                return t = t || function() {}, "function" == typeof n && (n = i, i = r), i ? a(o, e, t, n) : setTimeout((function() {
                    a(o, e, t, n)
                }), 4), s
            }, s.config = function(e) {
                return s(e)
            }, n._defined = u, (r = function(e, t, n) {
                if ("string" != typeof e) throw new Error("See almond README: incorrect module build, no module name");
                t.splice || (n = t, t = []), y(u, e) || y(d, e) || (d[e] = [e, t, n])
            }).amd = {
                jQuery: !0
            }, t.requirejs = n, t.require = i, t.define = r), t.define("almond", (function() {})), t.define("jquery", [], (function() {
                var t = e || $;
                return null == t && console && console.error && console.error("Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."), t
            })), t.define("select2/utils", ["jquery"], (function(e) {
                var t = {};

                function n(e) {
                    var t = e.prototype,
                        n = [];
                    for (var i in t) "function" == typeof t[i] && "constructor" !== i && n.push(i);
                    return n
                }

                function i() {
                    this.listeners = {}
                }
                t.Extend = function(e, t) {
                    var n = {}.hasOwnProperty;

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

                    function o() {
                        var n = Array.prototype.unshift,
                            i = t.prototype.constructor.length,
                            r = e.prototype.constructor;
                        0 < i && (n.call(arguments, e.prototype.constructor), r = t.prototype.constructor), r.apply(this, arguments)
                    }
                    t.displayName = e.displayName, o.prototype = new function() {
                        this.constructor = o
                    };
                    for (var a = 0; a < r.length; a++) {
                        var s = r[a];
                        o.prototype[s] = e.prototype[s]
                    }

                    function l(e) {
                        var n = function() {};
                        e in o.prototype && (n = o.prototype[e]);
                        var i = t.prototype[e];
                        return function() {
                            return Array.prototype.unshift.call(arguments, n), i.apply(this, arguments)
                        }
                    }
                    for (var c = 0; c < i.length; c++) {
                        var u = i[c];
                        o.prototype[u] = l(u)
                    }
                    return o
                }, i.prototype.on = function(e, t) {
                    this.listeners = this.listeners || {}, e in this.listeners ? this.listeners[e].push(t) : this.listeners[e] = [t]
                }, i.prototype.trigger = function(e) {
                    var t = Array.prototype.slice,
                        n = t.call(arguments, 1);
                    this.listeners = this.listeners || {}, null == n && (n = []), 0 === n.length && n.push({}), (n[0]._type = e) in this.listeners && this.invoke(this.listeners[e], t.call(arguments, 1)), "*" in this.listeners && this.invoke(this.listeners["*"], arguments)
                }, i.prototype.invoke = function(e, t) {
                    for (var n = 0, i = e.length; n < i; n++) e[n].apply(this, t)
                }, t.Observable = i, t.generateChars = function(e) {
                    for (var t = "", n = 0; n < e; n++) t += Math.floor(36 * Math.random()).toString(36);
                    return t
                }, t.bind = function(e, t) {
                    return function() {
                        e.apply(t, arguments)
                    }
                }, t._convertData = function(e) {
                    for (var t in e) {
                        var n = t.split("-"),
                            i = e;
                        if (1 !== n.length) {
                            for (var r = 0; r < n.length; r++) {
                                var o = n[r];
                                (o = o.substring(0, 1).toLowerCase() + o.substring(1)) in i || (i[o] = {}), r == n.length - 1 && (i[o] = e[t]), i = i[o]
                            }
                            delete e[t]
                        }
                    }
                    return e
                }, t.hasScroll = function(t, n) {
                    var i = e(n),
                        r = n.style.overflowX,
                        o = n.style.overflowY;
                    return (r !== o || "hidden" !== o && "visible" !== o) && ("scroll" === r || "scroll" === o || i.innerHeight() < n.scrollHeight || i.innerWidth() < n.scrollWidth)
                }, t.escapeMarkup = function(e) {
                    var t = {
                        "\\": "&#92;",
                        "&": "&amp;",
                        "<": "&lt;",
                        ">": "&gt;",
                        '"': "&quot;",
                        "'": "&#39;",
                        "/": "&#47;"
                    };
                    return "string" != typeof e ? e : String(e).replace(/[&<>"'\/\\]/g, (function(e) {
                        return t[e]
                    }))
                }, t.appendMany = function(t, n) {
                    if ("1.7" === e.fn.jquery.substr(0, 3)) {
                        var i = e();
                        e.map(n, (function(e) {
                            i = i.add(e)
                        })), n = i
                    }
                    t.append(n)
                }, t.__cache = {};
                var r = 0;
                return t.GetUniqueElementId = function(e) {
                    var t = e.getAttribute("data-select2-id");
                    return null == t && (e.id ? (t = e.id, e.setAttribute("data-select2-id", t)) : (e.setAttribute("data-select2-id", ++r), t = r.toString())), t
                }, t.StoreData = function(e, n, i) {
                    var r = t.GetUniqueElementId(e);
                    t.__cache[r] || (t.__cache[r] = {}), t.__cache[r][n] = i
                }, t.GetData = function(n, i) {
                    var r = t.GetUniqueElementId(n);
                    return i ? t.__cache[r] && null != t.__cache[r][i] ? t.__cache[r][i] : e(n).data(i) : t.__cache[r]
                }, t.RemoveData = function(e) {
                    var n = t.GetUniqueElementId(e);
                    null != t.__cache[n] && delete t.__cache[n], e.removeAttribute("data-select2-id")
                }, t
            })), t.define("select2/results", ["jquery", "./utils"], (function(e, t) {
                function n(e, t, i) {
                    this.$element = e, this.data = i, this.options = t, n.__super__.constructor.call(this)
                }
                return t.Extend(n, t.Observable), n.prototype.render = function() {
                    var t = e('<ul class="select2-results__options" role="listbox"></ul>');
                    return this.options.get("multiple") && t.attr("aria-multiselectable", "true"), this.$results = t
                }, n.prototype.clear = function() {
                    this.$results.empty()
                }, n.prototype.displayMessage = function(t) {
                    var n = this.options.get("escapeMarkup");
                    this.clear(), this.hideLoading();
                    var i = e('<li role="alert" aria-live="assertive" class="select2-results__option"></li>'),
                        r = this.options.get("translations").get(t.message);
                    i.append(n(r(t.args))), i[0].className += " select2-results__message", this.$results.append(i)
                }, n.prototype.hideMessages = function() {
                    this.$results.find(".select2-results__message").remove()
                }, n.prototype.append = function(e) {
                    this.hideLoading();
                    var t = [];
                    if (null != e.results && 0 !== e.results.length) {
                        e.results = this.sort(e.results);
                        for (var n = 0; n < e.results.length; n++) {
                            var i = e.results[n],
                                r = this.option(i);
                            t.push(r)
                        }
                        this.$results.append(t)
                    } else 0 === this.$results.children().length && this.trigger("results:message", {
                        message: "noResults"
                    })
                }, n.prototype.position = function(e, t) {
                    t.find(".select2-results").append(e)
                }, n.prototype.sort = function(e) {
                    return this.options.get("sorter")(e)
                }, n.prototype.highlightFirstItem = function() {
                    var e = this.$results.find(".select2-results__option[aria-selected]"),
                        t = e.filter("[aria-selected=true]");
                    0 < t.length ? t.first().trigger("mouseenter") : e.first().trigger("mouseenter"), this.ensureHighlightVisible()
                }, n.prototype.setClasses = function() {
                    var n = this;
                    this.data.current((function(i) {
                        var r = e.map(i, (function(e) {
                            return e.id.toString()
                        }));
                        n.$results.find(".select2-results__option[aria-selected]").each((function() {
                            var n = e(this),
                                i = t.GetData(this, "data"),
                                o = "" + i.id;
                            null != i.element && i.element.selected || null == i.element && -1 < e.inArray(o, r) ? n.attr("aria-selected", "true") : n.attr("aria-selected", "false")
                        }))
                    }))
                }, n.prototype.showLoading = function(e) {
                    this.hideLoading();
                    var t = {
                            disabled: !0,
                            loading: !0,
                            text: this.options.get("translations").get("searching")(e)
                        },
                        n = this.option(t);
                    n.className += " loading-results", this.$results.prepend(n)
                }, n.prototype.hideLoading = function() {
                    this.$results.find(".loading-results").remove()
                }, n.prototype.option = function(n) {
                    var i = document.createElement("li");
                    i.className = "select2-results__option";
                    var r = {
                            role: "option",
                            "aria-selected": "false"
                        },
                        o = window.Element.prototype.matches || window.Element.prototype.msMatchesSelector || window.Element.prototype.webkitMatchesSelector;
                    for (var a in (null != n.element && o.call(n.element, ":disabled") || null == n.element && n.disabled) && (delete r["aria-selected"], r["aria-disabled"] = "true"), null == n.id && delete r["aria-selected"], null != n._resultId && (i.id = n._resultId), n.title && (i.title = n.title), n.children && (r.role = "group", r["aria-label"] = n.text, delete r["aria-selected"]), r) {
                        var s = r[a];
                        i.setAttribute(a, s)
                    }
                    if (n.children) {
                        var l = e(i),
                            c = document.createElement("strong");
                        c.className = "select2-results__group", e(c), this.template(n, c);
                        for (var u = [], d = 0; d < n.children.length; d++) {
                            var h = n.children[d],
                                f = this.option(h);
                            u.push(f)
                        }
                        var p = e("<ul></ul>", {
                            class: "select2-results__options select2-results__options--nested"
                        });
                        p.append(u), l.append(c), l.append(p)
                    } else this.template(n, i);
                    return t.StoreData(i, "data", n), i
                }, n.prototype.bind = function(n, i) {
                    var r = this,
                        o = n.id + "-results";
                    this.$results.attr("id", o), n.on("results:all", (function(e) {
                        r.clear(), r.append(e.data), n.isOpen() && (r.setClasses(), r.highlightFirstItem())
                    })), n.on("results:append", (function(e) {
                        r.append(e.data), n.isOpen() && r.setClasses()
                    })), n.on("query", (function(e) {
                        r.hideMessages(), r.showLoading(e)
                    })), n.on("select", (function() {
                        n.isOpen() && (r.setClasses(), r.options.get("scrollAfterSelect") && r.highlightFirstItem())
                    })), n.on("unselect", (function() {
                        n.isOpen() && (r.setClasses(), r.options.get("scrollAfterSelect") && r.highlightFirstItem())
                    })), n.on("open", (function() {
                        r.$results.attr("aria-expanded", "true"), r.$results.attr("aria-hidden", "false"), r.setClasses(), r.ensureHighlightVisible()
                    })), n.on("close", (function() {
                        r.$results.attr("aria-expanded", "false"), r.$results.attr("aria-hidden", "true"), r.$results.removeAttr("aria-activedescendant")
                    })), n.on("results:toggle", (function() {
                        var e = r.getHighlightedResults();
                        0 !== e.length && e.trigger("mouseup")
                    })), n.on("results:select", (function() {
                        var e = r.getHighlightedResults();
                        if (0 !== e.length) {
                            var n = t.GetData(e[0], "data");
                            "true" == e.attr("aria-selected") ? r.trigger("close", {}) : r.trigger("select", {
                                data: n
                            })
                        }
                    })), n.on("results:previous", (function() {
                        var e = r.getHighlightedResults(),
                            t = r.$results.find("[aria-selected]"),
                            n = t.index(e);
                        if (!(n <= 0)) {
                            var i = n - 1;
                            0 === e.length && (i = 0);
                            var o = t.eq(i);
                            o.trigger("mouseenter");
                            var a = r.$results.offset().top,
                                s = o.offset().top,
                                l = r.$results.scrollTop() + (s - a);
                            0 === i ? r.$results.scrollTop(0) : s - a < 0 && r.$results.scrollTop(l)
                        }
                    })), n.on("results:next", (function() {
                        var e = r.getHighlightedResults(),
                            t = r.$results.find("[aria-selected]"),
                            n = t.index(e) + 1;
                        if (!(n >= t.length)) {
                            var i = t.eq(n);
                            i.trigger("mouseenter");
                            var o = r.$results.offset().top + r.$results.outerHeight(!1),
                                a = i.offset().top + i.outerHeight(!1),
                                s = r.$results.scrollTop() + a - o;
                            0 === n ? r.$results.scrollTop(0) : o < a && r.$results.scrollTop(s)
                        }
                    })), n.on("results:focus", (function(e) {
                        e.element.addClass("select2-results__option--highlighted")
                    })), n.on("results:message", (function(e) {
                        r.displayMessage(e)
                    })), e.fn.mousewheel && this.$results.on("mousewheel", (function(e) {
                        var t = r.$results.scrollTop(),
                            n = r.$results.get(0).scrollHeight - t + e.deltaY,
                            i = 0 < e.deltaY && t - e.deltaY <= 0,
                            o = e.deltaY < 0 && n <= r.$results.height();
                        i ? (r.$results.scrollTop(0), e.preventDefault(), e.stopPropagation()) : o && (r.$results.scrollTop(r.$results.get(0).scrollHeight - r.$results.height()), e.preventDefault(), e.stopPropagation())
                    })), this.$results.on("mouseup", ".select2-results__option[aria-selected]", (function(n) {
                        var i = e(this),
                            o = t.GetData(this, "data");
                        "true" !== i.attr("aria-selected") ? r.trigger("select", {
                            originalEvent: n,
                            data: o
                        }) : r.options.get("multiple") ? r.trigger("unselect", {
                            originalEvent: n,
                            data: o
                        }) : r.trigger("close", {})
                    })), this.$results.on("mouseenter", ".select2-results__option[aria-selected]", (function(n) {
                        var i = t.GetData(this, "data");
                        r.getHighlightedResults().removeClass("select2-results__option--highlighted"), r.trigger("results:focus", {
                            data: i,
                            element: e(this)
                        })
                    }))
                }, n.prototype.getHighlightedResults = function() {
                    return this.$results.find(".select2-results__option--highlighted")
                }, n.prototype.destroy = function() {
                    this.$results.remove()
                }, n.prototype.ensureHighlightVisible = function() {
                    var e = this.getHighlightedResults();
                    if (0 !== e.length) {
                        var t = this.$results.find("[aria-selected]").index(e),
                            n = this.$results.offset().top,
                            i = e.offset().top,
                            r = this.$results.scrollTop() + (i - n),
                            o = i - n;
                        r -= 2 * e.outerHeight(!1), t <= 2 ? this.$results.scrollTop(0) : (o > this.$results.outerHeight() || o < 0) && this.$results.scrollTop(r)
                    }
                }, n.prototype.template = function(t, n) {
                    var i = this.options.get("templateResult"),
                        r = this.options.get("escapeMarkup"),
                        o = i(t, n);
                    null == o ? n.style.display = "none" : "string" == typeof o ? n.innerHTML = r(o) : e(n).append(o)
                }, n
            })), t.define("select2/keys", [], (function() {
                return {
                    BACKSPACE: 8,
                    TAB: 9,
                    ENTER: 13,
                    SHIFT: 16,
                    CTRL: 17,
                    ALT: 18,
                    ESC: 27,
                    SPACE: 32,
                    PAGE_UP: 33,
                    PAGE_DOWN: 34,
                    END: 35,
                    HOME: 36,
                    LEFT: 37,
                    UP: 38,
                    RIGHT: 39,
                    DOWN: 40,
                    DELETE: 46
                }
            })), t.define("select2/selection/base", ["jquery", "../utils", "../keys"], (function(e, t, n) {
                function i(e, t) {
                    this.$element = e, this.options = t, i.__super__.constructor.call(this)
                }
                return t.Extend(i, t.Observable), i.prototype.render = function() {
                    var n = e('<span class="select2-selection" role="combobox"  aria-haspopup="true" aria-expanded="false"></span>');
                    return this._tabindex = 0, null != t.GetData(this.$element[0], "old-tabindex") ? this._tabindex = t.GetData(this.$element[0], "old-tabindex") : null != this.$element.attr("tabindex") && (this._tabindex = this.$element.attr("tabindex")), n.attr("title", this.$element.attr("title")), n.attr("tabindex", this._tabindex), n.attr("aria-disabled", "false"), this.$selection = n
                }, i.prototype.bind = function(e, t) {
                    var i = this,
                        r = e.id + "-results";
                    this.container = e, this.$selection.on("focus", (function(e) {
                        i.trigger("focus", e)
                    })), this.$selection.on("blur", (function(e) {
                        i._handleBlur(e)
                    })), this.$selection.on("keydown", (function(e) {
                        i.trigger("keypress", e), e.which === n.SPACE && e.preventDefault()
                    })), e.on("results:focus", (function(e) {
                        i.$selection.attr("aria-activedescendant", e.data._resultId)
                    })), e.on("selection:update", (function(e) {
                        i.update(e.data)
                    })), e.on("open", (function() {
                        i.$selection.attr("aria-expanded", "true"), i.$selection.attr("aria-owns", r), i._attachCloseHandler(e)
                    })), e.on("close", (function() {
                        i.$selection.attr("aria-expanded", "false"), i.$selection.removeAttr("aria-activedescendant"), i.$selection.removeAttr("aria-owns"), i.$selection.trigger("focus"), i._detachCloseHandler(e)
                    })), e.on("enable", (function() {
                        i.$selection.attr("tabindex", i._tabindex), i.$selection.attr("aria-disabled", "false")
                    })), e.on("disable", (function() {
                        i.$selection.attr("tabindex", "-1"), i.$selection.attr("aria-disabled", "true")
                    }))
                }, i.prototype._handleBlur = function(t) {
                    var n = this;
                    window.setTimeout((function() {
                        document.activeElement == n.$selection[0] || e.contains(n.$selection[0], document.activeElement) || n.trigger("blur", t)
                    }), 1)
                }, i.prototype._attachCloseHandler = function(n) {
                    e(document.body).on("mousedown.select2." + n.id, (function(n) {
                        var i = e(n.target).closest(".select2");
                        e(".select2.select2-container--open").each((function() {
                            this != i[0] && t.GetData(this, "element").select2("close")
                        }))
                    }))
                }, i.prototype._detachCloseHandler = function(t) {
                    e(document.body).off("mousedown.select2." + t.id)
                }, i.prototype.position = function(e, t) {
                    t.find(".selection").append(e)
                }, i.prototype.destroy = function() {
                    this._detachCloseHandler(this.container)
                }, i.prototype.update = function(e) {
                    throw new Error("The `update` method must be defined in child classes.")
                }, i.prototype.isEnabled = function() {
                    return !this.isDisabled()
                }, i.prototype.isDisabled = function() {
                    return this.options.get("disabled")
                }, i
            })), t.define("select2/selection/single", ["jquery", "./base", "../utils", "../keys"], (function(e, t, n, i) {
                function r() {
                    r.__super__.constructor.apply(this, arguments)
                }
                return n.Extend(r, t), r.prototype.render = function() {
                    var e = r.__super__.render.call(this);
                    return e.addClass("select2-selection--single"), e.html('<span class="select2-selection__rendered"></span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span>'), e
                }, r.prototype.bind = function(e, t) {
                    var n = this;
                    r.__super__.bind.apply(this, arguments);
                    var i = e.id + "-container";
                    this.$selection.find(".select2-selection__rendered").attr("id", i).attr("role", "textbox").attr("aria-readonly", "true"), this.$selection.attr("aria-labelledby", i), this.$selection.on("mousedown", (function(e) {
                        1 === e.which && n.trigger("toggle", {
                            originalEvent: e
                        })
                    })), this.$selection.on("focus", (function(e) {})), this.$selection.on("blur", (function(e) {})), e.on("focus", (function(t) {
                        e.isOpen() || n.$selection.trigger("focus")
                    }))
                }, r.prototype.clear = function() {
                    var e = this.$selection.find(".select2-selection__rendered");
                    e.empty(), e.removeAttr("title")
                }, r.prototype.display = function(e, t) {
                    var n = this.options.get("templateSelection");
                    return this.options.get("escapeMarkup")(n(e, t))
                }, r.prototype.selectionContainer = function() {
                    return e("<span></span>")
                }, r.prototype.update = function(e) {
                    if (0 !== e.length) {
                        var t = e[0],
                            n = this.$selection.find(".select2-selection__rendered"),
                            i = this.display(t, n);
                        n.empty().append(i);
                        var r = t.title || t.text;
                        r ? n.attr("title", r) : n.removeAttr("title")
                    } else this.clear()
                }, r
            })), t.define("select2/selection/multiple", ["jquery", "./base", "../utils"], (function(e, t, n) {
                function i(e, t) {
                    i.__super__.constructor.apply(this, arguments)
                }
                return n.Extend(i, t), i.prototype.render = function() {
                    var e = i.__super__.render.call(this);
                    return e.addClass("select2-selection--multiple"), e.html('<ul class="select2-selection__rendered"></ul>'), e
                }, i.prototype.bind = function(t, r) {
                    var o = this;
                    i.__super__.bind.apply(this, arguments), this.$selection.on("click", (function(e) {
                        o.trigger("toggle", {
                            originalEvent: e
                        })
                    })), this.$selection.on("click", ".select2-selection__choice__remove", (function(t) {
                        if (!o.isDisabled()) {
                            var i = e(this).parent(),
                                r = n.GetData(i[0], "data");
                            o.trigger("unselect", {
                                originalEvent: t,
                                data: r
                            })
                        }
                    }))
                }, i.prototype.clear = function() {
                    var e = this.$selection.find(".select2-selection__rendered");
                    e.empty(), e.removeAttr("title")
                }, i.prototype.display = function(e, t) {
                    var n = this.options.get("templateSelection");
                    return this.options.get("escapeMarkup")(n(e, t))
                }, i.prototype.selectionContainer = function() {
                    return e('<li class="select2-selection__choice"><span class="select2-selection__choice__remove" role="presentation">&times;</span></li>')
                }, i.prototype.update = function(e) {
                    if (this.clear(), 0 !== e.length) {
                        for (var t = [], i = 0; i < e.length; i++) {
                            var r = e[i],
                                o = this.selectionContainer(),
                                a = this.display(r, o);
                            o.append(a);
                            var s = r.title || r.text;
                            s && o.attr("title", s), n.StoreData(o[0], "data", r), t.push(o)
                        }
                        var l = this.$selection.find(".select2-selection__rendered");
                        n.appendMany(l, t)
                    }
                }, i
            })), t.define("select2/selection/placeholder", ["../utils"], (function(e) {
                function t(e, t, n) {
                    this.placeholder = this.normalizePlaceholder(n.get("placeholder")), e.call(this, t, n)
                }
                return t.prototype.normalizePlaceholder = function(e, t) {
                    return "string" == typeof t && (t = {
                        id: "",
                        text: t
                    }), t
                }, t.prototype.createPlaceholder = function(e, t) {
                    var n = this.selectionContainer();
                    return n.html(this.display(t)), n.addClass("select2-selection__placeholder").removeClass("select2-selection__choice"), n
                }, t.prototype.update = function(e, t) {
                    var n = 1 == t.length && t[0].id != this.placeholder.id;
                    if (1 < t.length || n) return e.call(this, t);
                    this.clear();
                    var i = this.createPlaceholder(this.placeholder);
                    this.$selection.find(".select2-selection__rendered").append(i)
                }, t
            })), t.define("select2/selection/allowClear", ["jquery", "../keys", "../utils"], (function(e, t, n) {
                function i() {}
                return i.prototype.bind = function(e, t, n) {
                    var i = this;
                    e.call(this, t, n), null == this.placeholder && this.options.get("debug") && window.console && console.error && console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."), this.$selection.on("mousedown", ".select2-selection__clear", (function(e) {
                        i._handleClear(e)
                    })), t.on("keypress", (function(e) {
                        i._handleKeyboardClear(e, t)
                    }))
                }, i.prototype._handleClear = function(e, t) {
                    if (!this.isDisabled()) {
                        var i = this.$selection.find(".select2-selection__clear");
                        if (0 !== i.length) {
                            t.stopPropagation();
                            var r = n.GetData(i[0], "data"),
                                o = this.$element.val();
                            this.$element.val(this.placeholder.id);
                            var a = {
                                data: r
                            };
                            if (this.trigger("clear", a), a.prevented) this.$element.val(o);
                            else {
                                for (var s = 0; s < r.length; s++)
                                    if (a = {
                                            data: r[s]
                                        }, this.trigger("unselect", a), a.prevented) return void this.$element.val(o);
                                this.$element.trigger("input").trigger("change"), this.trigger("toggle", {})
                            }
                        }
                    }
                }, i.prototype._handleKeyboardClear = function(e, n, i) {
                    i.isOpen() || n.which != t.DELETE && n.which != t.BACKSPACE || this._handleClear(n)
                }, i.prototype.update = function(t, i) {
                    if (t.call(this, i), !(0 < this.$selection.find(".select2-selection__placeholder").length || 0 === i.length)) {
                        var r = this.options.get("translations").get("removeAllItems"),
                            o = e('<span class="select2-selection__clear" title="' + r() + '">&times;</span>');
                        n.StoreData(o[0], "data", i), this.$selection.find(".select2-selection__rendered").prepend(o)
                    }
                }, i
            })), t.define("select2/selection/search", ["jquery", "../utils", "../keys"], (function(e, t, n) {
                function i(e, t, n) {
                    e.call(this, t, n)
                }
                return i.prototype.render = function(t) {
                    var n = e('<li class="select2-search select2-search--inline"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="none" spellcheck="false" role="searchbox" aria-autocomplete="list" /></li>');
                    this.$searchContainer = n, this.$search = n.find("input");
                    var i = t.call(this);
                    return this._transferTabIndex(), i
                }, i.prototype.bind = function(e, i, r) {
                    var o = this,
                        a = i.id + "-results";
                    e.call(this, i, r), i.on("open", (function() {
                        o.$search.attr("aria-controls", a), o.$search.trigger("focus")
                    })), i.on("close", (function() {
                        o.$search.val(""), o.$search.removeAttr("aria-controls"), o.$search.removeAttr("aria-activedescendant"), o.$search.trigger("focus")
                    })), i.on("enable", (function() {
                        o.$search.prop("disabled", !1), o._transferTabIndex()
                    })), i.on("disable", (function() {
                        o.$search.prop("disabled", !0)
                    })), i.on("focus", (function(e) {
                        o.$search.trigger("focus")
                    })), i.on("results:focus", (function(e) {
                        e.data._resultId ? o.$search.attr("aria-activedescendant", e.data._resultId) : o.$search.removeAttr("aria-activedescendant")
                    })), this.$selection.on("focusin", ".select2-search--inline", (function(e) {
                        o.trigger("focus", e)
                    })), this.$selection.on("focusout", ".select2-search--inline", (function(e) {
                        o._handleBlur(e)
                    })), this.$selection.on("keydown", ".select2-search--inline", (function(e) {
                        if (e.stopPropagation(), o.trigger("keypress", e), o._keyUpPrevented = e.isDefaultPrevented(), e.which === n.BACKSPACE && "" === o.$search.val()) {
                            var i = o.$searchContainer.prev(".select2-selection__choice");
                            if (0 < i.length) {
                                var r = t.GetData(i[0], "data");
                                o.searchRemoveChoice(r), e.preventDefault()
                            }
                        }
                    })), this.$selection.on("click", ".select2-search--inline", (function(e) {
                        o.$search.val() && e.stopPropagation()
                    }));
                    var s = document.documentMode,
                        l = s && s <= 11;
                    this.$selection.on("input.searchcheck", ".select2-search--inline", (function(e) {
                        l ? o.$selection.off("input.search input.searchcheck") : o.$selection.off("keyup.search")
                    })), this.$selection.on("keyup.search input.search", ".select2-search--inline", (function(e) {
                        if (l && "input" === e.type) o.$selection.off("input.search input.searchcheck");
                        else {
                            var t = e.which;
                            t != n.SHIFT && t != n.CTRL && t != n.ALT && t != n.TAB && o.handleSearch(e)
                        }
                    }))
                }, i.prototype._transferTabIndex = function(e) {
                    this.$search.attr("tabindex", this.$selection.attr("tabindex")), this.$selection.attr("tabindex", "-1")
                }, i.prototype.createPlaceholder = function(e, t) {
                    this.$search.attr("placeholder", t.text)
                }, i.prototype.update = function(e, t) {
                    var n = this.$search[0] == document.activeElement;
                    this.$search.attr("placeholder", ""), e.call(this, t), this.$selection.find(".select2-selection__rendered").append(this.$searchContainer), this.resizeSearch(), n && this.$search.trigger("focus")
                }, i.prototype.handleSearch = function() {
                    if (this.resizeSearch(), !this._keyUpPrevented) {
                        var e = this.$search.val();
                        this.trigger("query", {
                            term: e
                        })
                    }
                    this._keyUpPrevented = !1
                }, i.prototype.searchRemoveChoice = function(e, t) {
                    this.trigger("unselect", {
                        data: t
                    }), this.$search.val(t.text), this.handleSearch()
                }, i.prototype.resizeSearch = function() {
                    this.$search.css("width", "25px");
                    var e = "";
                    e = "" !== this.$search.attr("placeholder") ? this.$selection.find(".select2-selection__rendered").width() : .75 * (this.$search.val().length + 1) + "em", this.$search.css("width", e)
                }, i
            })), t.define("select2/selection/eventRelay", ["jquery"], (function(e) {
                function t() {}
                return t.prototype.bind = function(t, n, i) {
                    var r = this,
                        o = ["open", "opening", "close", "closing", "select", "selecting", "unselect", "unselecting", "clear", "clearing"],
                        a = ["opening", "closing", "selecting", "unselecting", "clearing"];
                    t.call(this, n, i), n.on("*", (function(t, n) {
                        if (-1 !== e.inArray(t, o)) {
                            n = n || {};
                            var i = e.Event("select2:" + t, {
                                params: n
                            });
                            r.$element.trigger(i), -1 !== e.inArray(t, a) && (n.prevented = i.isDefaultPrevented())
                        }
                    }))
                }, t
            })), t.define("select2/translation", ["jquery", "require"], (function(e, t) {
                function n(e) {
                    this.dict = e || {}
                }
                return n.prototype.all = function() {
                    return this.dict
                }, n.prototype.get = function(e) {
                    return this.dict[e]
                }, n.prototype.extend = function(t) {
                    this.dict = e.extend({}, t.all(), this.dict)
                }, n._cache = {}, n.loadPath = function(e) {
                    if (!(e in n._cache)) {
                        var i = t(e);
                        n._cache[e] = i
                    }
                    return new n(n._cache[e])
                }, n
            })), t.define("select2/diacritics", [], (function() {
                return {
                    "Ⓐ": "A",
                    "A": "A",
                    "À": "A",
                    "Á": "A",
                    "Â": "A",
                    "Ầ": "A",
                    "Ấ": "A",
                    "Ẫ": "A",
                    "Ẩ": "A",
                    "Ã": "A",
                    "Ā": "A",
                    "Ă": "A",
                    "Ằ": "A",
                    "Ắ": "A",
                    "Ẵ": "A",
                    "Ẳ": "A",
                    "Ȧ": "A",
                    "Ǡ": "A",
                    "Ä": "A",
                    "Ǟ": "A",
                    "Ả": "A",
                    "Å": "A",
                    "Ǻ": "A",
                    "Ǎ": "A",
                    "Ȁ": "A",
                    "Ȃ": "A",
                    "Ạ": "A",
                    "Ậ": "A",
                    "Ặ": "A",
                    "Ḁ": "A",
                    "Ą": "A",
                    "Ⱥ": "A",
                    "Ɐ": "A",
                    "Ꜳ": "AA",
                    "Æ": "AE",
                    "Ǽ": "AE",
                    "Ǣ": "AE",
                    "Ꜵ": "AO",
                    "Ꜷ": "AU",
                    "Ꜹ": "AV",
                    "Ꜻ": "AV",
                    "Ꜽ": "AY",
                    "Ⓑ": "B",
                    "B": "B",
                    "Ḃ": "B",
                    "Ḅ": "B",
                    "Ḇ": "B",
                    "Ƀ": "B",
                    "Ƃ": "B",
                    "Ɓ": "B",
                    "Ⓒ": "C",
                    "C": "C",
                    "Ć": "C",
                    "Ĉ": "C",
                    "Ċ": "C",
                    "Č": "C",
                    "Ç": "C",
                    "Ḉ": "C",
                    "Ƈ": "C",
                    "Ȼ": "C",
                    "Ꜿ": "C",
                    "Ⓓ": "D",
                    "D": "D",
                    "Ḋ": "D",
                    "Ď": "D",
                    "Ḍ": "D",
                    "Ḑ": "D",
                    "Ḓ": "D",
                    "Ḏ": "D",
                    "Đ": "D",
                    "Ƌ": "D",
                    "Ɗ": "D",
                    "Ɖ": "D",
                    "Ꝺ": "D",
                    "DZ": "DZ",
                    "DŽ": "DZ",
                    "Dz": "Dz",
                    "Dž": "Dz",
                    "Ⓔ": "E",
                    "E": "E",
                    "È": "E",
                    "É": "E",
                    "Ê": "E",
                    "Ề": "E",
                    "Ế": "E",
                    "Ễ": "E",
                    "Ể": "E",
                    "Ẽ": "E",
                    "Ē": "E",
                    "Ḕ": "E",
                    "Ḗ": "E",
                    "Ĕ": "E",
                    "Ė": "E",
                    "Ë": "E",
                    "Ẻ": "E",
                    "Ě": "E",
                    "Ȅ": "E",
                    "Ȇ": "E",
                    "Ẹ": "E",
                    "Ệ": "E",
                    "Ȩ": "E",
                    "Ḝ": "E",
                    "Ę": "E",
                    "Ḙ": "E",
                    "Ḛ": "E",
                    "Ɛ": "E",
                    "Ǝ": "E",
                    "Ⓕ": "F",
                    "F": "F",
                    "Ḟ": "F",
                    "Ƒ": "F",
                    "Ꝼ": "F",
                    "Ⓖ": "G",
                    "G": "G",
                    "Ǵ": "G",
                    "Ĝ": "G",
                    "Ḡ": "G",
                    "Ğ": "G",
                    "Ġ": "G",
                    "Ǧ": "G",
                    "Ģ": "G",
                    "Ǥ": "G",
                    "Ɠ": "G",
                    "Ꞡ": "G",
                    "Ᵹ": "G",
                    "Ꝿ": "G",
                    "Ⓗ": "H",
                    "H": "H",
                    "Ĥ": "H",
                    "Ḣ": "H",
                    "Ḧ": "H",
                    "Ȟ": "H",
                    "Ḥ": "H",
                    "Ḩ": "H",
                    "Ḫ": "H",
                    "Ħ": "H",
                    "Ⱨ": "H",
                    "Ⱶ": "H",
                    "Ɥ": "H",
                    "Ⓘ": "I",
                    "I": "I",
                    "Ì": "I",
                    "Í": "I",
                    "Î": "I",
                    "Ĩ": "I",
                    "Ī": "I",
                    "Ĭ": "I",
                    "İ": "I",
                    "Ï": "I",
                    "Ḯ": "I",
                    "Ỉ": "I",
                    "Ǐ": "I",
                    "Ȉ": "I",
                    "Ȋ": "I",
                    "Ị": "I",
                    "Į": "I",
                    "Ḭ": "I",
                    "Ɨ": "I",
                    "Ⓙ": "J",
                    "J": "J",
                    "Ĵ": "J",
                    "Ɉ": "J",
                    "Ⓚ": "K",
                    "K": "K",
                    "Ḱ": "K",
                    "Ǩ": "K",
                    "Ḳ": "K",
                    "Ķ": "K",
                    "Ḵ": "K",
                    "Ƙ": "K",
                    "Ⱪ": "K",
                    "Ꝁ": "K",
                    "Ꝃ": "K",
                    "Ꝅ": "K",
                    "Ꞣ": "K",
                    "Ⓛ": "L",
                    "L": "L",
                    "Ŀ": "L",
                    "Ĺ": "L",
                    "Ľ": "L",
                    "Ḷ": "L",
                    "Ḹ": "L",
                    "Ļ": "L",
                    "Ḽ": "L",
                    "Ḻ": "L",
                    "Ł": "L",
                    "Ƚ": "L",
                    "Ɫ": "L",
                    "Ⱡ": "L",
                    "Ꝉ": "L",
                    "Ꝇ": "L",
                    "Ꞁ": "L",
                    "LJ": "LJ",
                    "Lj": "Lj",
                    "Ⓜ": "M",
                    "M": "M",
                    "Ḿ": "M",
                    "Ṁ": "M",
                    "Ṃ": "M",
                    "Ɱ": "M",
                    "Ɯ": "M",
                    "Ⓝ": "N",
                    "N": "N",
                    "Ǹ": "N",
                    "Ń": "N",
                    "Ñ": "N",
                    "Ṅ": "N",
                    "Ň": "N",
                    "Ṇ": "N",
                    "Ņ": "N",
                    "Ṋ": "N",
                    "Ṉ": "N",
                    "Ƞ": "N",
                    "Ɲ": "N",
                    "Ꞑ": "N",
                    "Ꞥ": "N",
                    "NJ": "NJ",
                    "Nj": "Nj",
                    "Ⓞ": "O",
                    "O": "O",
                    "Ò": "O",
                    "Ó": "O",
                    "Ô": "O",
                    "Ồ": "O",
                    "Ố": "O",
                    "Ỗ": "O",
                    "Ổ": "O",
                    "Õ": "O",
                    "Ṍ": "O",
                    "Ȭ": "O",
                    "Ṏ": "O",
                    "Ō": "O",
                    "Ṑ": "O",
                    "Ṓ": "O",
                    "Ŏ": "O",
                    "Ȯ": "O",
                    "Ȱ": "O",
                    "Ö": "O",
                    "Ȫ": "O",
                    "Ỏ": "O",
                    "Ő": "O",
                    "Ǒ": "O",
                    "Ȍ": "O",
                    "Ȏ": "O",
                    "Ơ": "O",
                    "Ờ": "O",
                    "Ớ": "O",
                    "Ỡ": "O",
                    "Ở": "O",
                    "Ợ": "O",
                    "Ọ": "O",
                    "Ộ": "O",
                    "Ǫ": "O",
                    "Ǭ": "O",
                    "Ø": "O",
                    "Ǿ": "O",
                    "Ɔ": "O",
                    "Ɵ": "O",
                    "Ꝋ": "O",
                    "Ꝍ": "O",
                    "Œ": "OE",
                    "Ƣ": "OI",
                    "Ꝏ": "OO",
                    "Ȣ": "OU",
                    "Ⓟ": "P",
                    "P": "P",
                    "Ṕ": "P",
                    "Ṗ": "P",
                    "Ƥ": "P",
                    "Ᵽ": "P",
                    "Ꝑ": "P",
                    "Ꝓ": "P",
                    "Ꝕ": "P",
                    "Ⓠ": "Q",
                    "Q": "Q",
                    "Ꝗ": "Q",
                    "Ꝙ": "Q",
                    "Ɋ": "Q",
                    "Ⓡ": "R",
                    "R": "R",
                    "Ŕ": "R",
                    "Ṙ": "R",
                    "Ř": "R",
                    "Ȑ": "R",
                    "Ȓ": "R",
                    "Ṛ": "R",
                    "Ṝ": "R",
                    "Ŗ": "R",
                    "Ṟ": "R",
                    "Ɍ": "R",
                    "Ɽ": "R",
                    "Ꝛ": "R",
                    "Ꞧ": "R",
                    "Ꞃ": "R",
                    "Ⓢ": "S",
                    "S": "S",
                    "ẞ": "S",
                    "Ś": "S",
                    "Ṥ": "S",
                    "Ŝ": "S",
                    "Ṡ": "S",
                    "Š": "S",
                    "Ṧ": "S",
                    "Ṣ": "S",
                    "Ṩ": "S",
                    "Ș": "S",
                    "Ş": "S",
                    "Ȿ": "S",
                    "Ꞩ": "S",
                    "Ꞅ": "S",
                    "Ⓣ": "T",
                    "T": "T",
                    "Ṫ": "T",
                    "Ť": "T",
                    "Ṭ": "T",
                    "Ț": "T",
                    "Ţ": "T",
                    "Ṱ": "T",
                    "Ṯ": "T",
                    "Ŧ": "T",
                    "Ƭ": "T",
                    "Ʈ": "T",
                    "Ⱦ": "T",
                    "Ꞇ": "T",
                    "Ꜩ": "TZ",
                    "Ⓤ": "U",
                    "U": "U",
                    "Ù": "U",
                    "Ú": "U",
                    "Û": "U",
                    "Ũ": "U",
                    "Ṹ": "U",
                    "Ū": "U",
                    "Ṻ": "U",
                    "Ŭ": "U",
                    "Ü": "U",
                    "Ǜ": "U",
                    "Ǘ": "U",
                    "Ǖ": "U",
                    "Ǚ": "U",
                    "Ủ": "U",
                    "Ů": "U",
                    "Ű": "U",
                    "Ǔ": "U",
                    "Ȕ": "U",
                    "Ȗ": "U",
                    "Ư": "U",
                    "Ừ": "U",
                    "Ứ": "U",
                    "Ữ": "U",
                    "Ử": "U",
                    "Ự": "U",
                    "Ụ": "U",
                    "Ṳ": "U",
                    "Ų": "U",
                    "Ṷ": "U",
                    "Ṵ": "U",
                    "Ʉ": "U",
                    "Ⓥ": "V",
                    "V": "V",
                    "Ṽ": "V",
                    "Ṿ": "V",
                    "Ʋ": "V",
                    "Ꝟ": "V",
                    "Ʌ": "V",
                    "Ꝡ": "VY",
                    "Ⓦ": "W",
                    "W": "W",
                    "Ẁ": "W",
                    "Ẃ": "W",
                    "Ŵ": "W",
                    "Ẇ": "W",
                    "Ẅ": "W",
                    "Ẉ": "W",
                    "Ⱳ": "W",
                    "Ⓧ": "X",
                    "X": "X",
                    "Ẋ": "X",
                    "Ẍ": "X",
                    "Ⓨ": "Y",
                    "Y": "Y",
                    "Ỳ": "Y",
                    "Ý": "Y",
                    "Ŷ": "Y",
                    "Ỹ": "Y",
                    "Ȳ": "Y",
                    "Ẏ": "Y",
                    "Ÿ": "Y",
                    "Ỷ": "Y",
                    "Ỵ": "Y",
                    "Ƴ": "Y",
                    "Ɏ": "Y",
                    "Ỿ": "Y",
                    "Ⓩ": "Z",
                    "Z": "Z",
                    "Ź": "Z",
                    "Ẑ": "Z",
                    "Ż": "Z",
                    "Ž": "Z",
                    "Ẓ": "Z",
                    "Ẕ": "Z",
                    "Ƶ": "Z",
                    "Ȥ": "Z",
                    "Ɀ": "Z",
                    "Ⱬ": "Z",
                    "Ꝣ": "Z",
                    "ⓐ": "a",
                    "a": "a",
                    "ẚ": "a",
                    "à": "a",
                    "á": "a",
                    "â": "a",
                    "ầ": "a",
                    "ấ": "a",
                    "ẫ": "a",
                    "ẩ": "a",
                    "ã": "a",
                    "ā": "a",
                    "ă": "a",
                    "ằ": "a",
                    "ắ": "a",
                    "ẵ": "a",
                    "ẳ": "a",
                    "ȧ": "a",
                    "ǡ": "a",
                    "ä": "a",
                    "ǟ": "a",
                    "ả": "a",
                    "å": "a",
                    "ǻ": "a",
                    "ǎ": "a",
                    "ȁ": "a",
                    "ȃ": "a",
                    "ạ": "a",
                    "ậ": "a",
                    "ặ": "a",
                    "ḁ": "a",
                    "ą": "a",
                    "ⱥ": "a",
                    "ɐ": "a",
                    "ꜳ": "aa",
                    "æ": "ae",
                    "ǽ": "ae",
                    "ǣ": "ae",
                    "ꜵ": "ao",
                    "ꜷ": "au",
                    "ꜹ": "av",
                    "ꜻ": "av",
                    "ꜽ": "ay",
                    "ⓑ": "b",
                    "b": "b",
                    "ḃ": "b",
                    "ḅ": "b",
                    "ḇ": "b",
                    "ƀ": "b",
                    "ƃ": "b",
                    "ɓ": "b",
                    "ⓒ": "c",
                    "c": "c",
                    "ć": "c",
                    "ĉ": "c",
                    "ċ": "c",
                    "č": "c",
                    "ç": "c",
                    "ḉ": "c",
                    "ƈ": "c",
                    "ȼ": "c",
                    "ꜿ": "c",
                    "ↄ": "c",
                    "ⓓ": "d",
                    "d": "d",
                    "ḋ": "d",
                    "ď": "d",
                    "ḍ": "d",
                    "ḑ": "d",
                    "ḓ": "d",
                    "ḏ": "d",
                    "đ": "d",
                    "ƌ": "d",
                    "ɖ": "d",
                    "ɗ": "d",
                    "ꝺ": "d",
                    "dz": "dz",
                    "dž": "dz",
                    "ⓔ": "e",
                    "e": "e",
                    "è": "e",
                    "é": "e",
                    "ê": "e",
                    "ề": "e",
                    "ế": "e",
                    "ễ": "e",
                    "ể": "e",
                    "ẽ": "e",
                    "ē": "e",
                    "ḕ": "e",
                    "ḗ": "e",
                    "ĕ": "e",
                    "ė": "e",
                    "ë": "e",
                    "ẻ": "e",
                    "ě": "e",
                    "ȅ": "e",
                    "ȇ": "e",
                    "ẹ": "e",
                    "ệ": "e",
                    "ȩ": "e",
                    "ḝ": "e",
                    "ę": "e",
                    "ḙ": "e",
                    "ḛ": "e",
                    "ɇ": "e",
                    "ɛ": "e",
                    "ǝ": "e",
                    "ⓕ": "f",
                    "f": "f",
                    "ḟ": "f",
                    "ƒ": "f",
                    "ꝼ": "f",
                    "ⓖ": "g",
                    "g": "g",
                    "ǵ": "g",
                    "ĝ": "g",
                    "ḡ": "g",
                    "ğ": "g",
                    "ġ": "g",
                    "ǧ": "g",
                    "ģ": "g",
                    "ǥ": "g",
                    "ɠ": "g",
                    "ꞡ": "g",
                    "ᵹ": "g",
                    "ꝿ": "g",
                    "ⓗ": "h",
                    "h": "h",
                    "ĥ": "h",
                    "ḣ": "h",
                    "ḧ": "h",
                    "ȟ": "h",
                    "ḥ": "h",
                    "ḩ": "h",
                    "ḫ": "h",
                    "ẖ": "h",
                    "ħ": "h",
                    "ⱨ": "h",
                    "ⱶ": "h",
                    "ɥ": "h",
                    "ƕ": "hv",
                    "ⓘ": "i",
                    "i": "i",
                    "ì": "i",
                    "í": "i",
                    "î": "i",
                    "ĩ": "i",
                    "ī": "i",
                    "ĭ": "i",
                    "ï": "i",
                    "ḯ": "i",
                    "ỉ": "i",
                    "ǐ": "i",
                    "ȉ": "i",
                    "ȋ": "i",
                    "ị": "i",
                    "į": "i",
                    "ḭ": "i",
                    "ɨ": "i",
                    "ı": "i",
                    "ⓙ": "j",
                    "j": "j",
                    "ĵ": "j",
                    "ǰ": "j",
                    "ɉ": "j",
                    "ⓚ": "k",
                    "k": "k",
                    "ḱ": "k",
                    "ǩ": "k",
                    "ḳ": "k",
                    "ķ": "k",
                    "ḵ": "k",
                    "ƙ": "k",
                    "ⱪ": "k",
                    "ꝁ": "k",
                    "ꝃ": "k",
                    "ꝅ": "k",
                    "ꞣ": "k",
                    "ⓛ": "l",
                    "l": "l",
                    "ŀ": "l",
                    "ĺ": "l",
                    "ľ": "l",
                    "ḷ": "l",
                    "ḹ": "l",
                    "ļ": "l",
                    "ḽ": "l",
                    "ḻ": "l",
                    "ſ": "l",
                    "ł": "l",
                    "ƚ": "l",
                    "ɫ": "l",
                    "ⱡ": "l",
                    "ꝉ": "l",
                    "ꞁ": "l",
                    "ꝇ": "l",
                    "lj": "lj",
                    "ⓜ": "m",
                    "m": "m",
                    "ḿ": "m",
                    "ṁ": "m",
                    "ṃ": "m",
                    "ɱ": "m",
                    "ɯ": "m",
                    "ⓝ": "n",
                    "n": "n",
                    "ǹ": "n",
                    "ń": "n",
                    "ñ": "n",
                    "ṅ": "n",
                    "ň": "n",
                    "ṇ": "n",
                    "ņ": "n",
                    "ṋ": "n",
                    "ṉ": "n",
                    "ƞ": "n",
                    "ɲ": "n",
                    "ʼn": "n",
                    "ꞑ": "n",
                    "ꞥ": "n",
                    "nj": "nj",
                    "ⓞ": "o",
                    "o": "o",
                    "ò": "o",
                    "ó": "o",
                    "ô": "o",
                    "ồ": "o",
                    "ố": "o",
                    "ỗ": "o",
                    "ổ": "o",
                    "õ": "o",
                    "ṍ": "o",
                    "ȭ": "o",
                    "ṏ": "o",
                    "ō": "o",
                    "ṑ": "o",
                    "ṓ": "o",
                    "ŏ": "o",
                    "ȯ": "o",
                    "ȱ": "o",
                    "ö": "o",
                    "ȫ": "o",
                    "ỏ": "o",
                    "ő": "o",
                    "ǒ": "o",
                    "ȍ": "o",
                    "ȏ": "o",
                    "ơ": "o",
                    "ờ": "o",
                    "ớ": "o",
                    "ỡ": "o",
                    "ở": "o",
                    "ợ": "o",
                    "ọ": "o",
                    "ộ": "o",
                    "ǫ": "o",
                    "ǭ": "o",
                    "ø": "o",
                    "ǿ": "o",
                    "ɔ": "o",
                    "ꝋ": "o",
                    "ꝍ": "o",
                    "ɵ": "o",
                    "œ": "oe",
                    "ƣ": "oi",
                    "ȣ": "ou",
                    "ꝏ": "oo",
                    "ⓟ": "p",
                    "p": "p",
                    "ṕ": "p",
                    "ṗ": "p",
                    "ƥ": "p",
                    "ᵽ": "p",
                    "ꝑ": "p",
                    "ꝓ": "p",
                    "ꝕ": "p",
                    "ⓠ": "q",
                    "q": "q",
                    "ɋ": "q",
                    "ꝗ": "q",
                    "ꝙ": "q",
                    "ⓡ": "r",
                    "r": "r",
                    "ŕ": "r",
                    "ṙ": "r",
                    "ř": "r",
                    "ȑ": "r",
                    "ȓ": "r",
                    "ṛ": "r",
                    "ṝ": "r",
                    "ŗ": "r",
                    "ṟ": "r",
                    "ɍ": "r",
                    "ɽ": "r",
                    "ꝛ": "r",
                    "ꞧ": "r",
                    "ꞃ": "r",
                    "ⓢ": "s",
                    "s": "s",
                    "ß": "s",
                    "ś": "s",
                    "ṥ": "s",
                    "ŝ": "s",
                    "ṡ": "s",
                    "š": "s",
                    "ṧ": "s",
                    "ṣ": "s",
                    "ṩ": "s",
                    "ș": "s",
                    "ş": "s",
                    "ȿ": "s",
                    "ꞩ": "s",
                    "ꞅ": "s",
                    "ẛ": "s",
                    "ⓣ": "t",
                    "t": "t",
                    "ṫ": "t",
                    "ẗ": "t",
                    "ť": "t",
                    "ṭ": "t",
                    "ț": "t",
                    "ţ": "t",
                    "ṱ": "t",
                    "ṯ": "t",
                    "ŧ": "t",
                    "ƭ": "t",
                    "ʈ": "t",
                    "ⱦ": "t",
                    "ꞇ": "t",
                    "ꜩ": "tz",
                    "ⓤ": "u",
                    "u": "u",
                    "ù": "u",
                    "ú": "u",
                    "û": "u",
                    "ũ": "u",
                    "ṹ": "u",
                    "ū": "u",
                    "ṻ": "u",
                    "ŭ": "u",
                    "ü": "u",
                    "ǜ": "u",
                    "ǘ": "u",
                    "ǖ": "u",
                    "ǚ": "u",
                    "ủ": "u",
                    "ů": "u",
                    "ű": "u",
                    "ǔ": "u",
                    "ȕ": "u",
                    "ȗ": "u",
                    "ư": "u",
                    "ừ": "u",
                    "ứ": "u",
                    "ữ": "u",
                    "ử": "u",
                    "ự": "u",
                    "ụ": "u",
                    "ṳ": "u",
                    "ų": "u",
                    "ṷ": "u",
                    "ṵ": "u",
                    "ʉ": "u",
                    "ⓥ": "v",
                    "v": "v",
                    "ṽ": "v",
                    "ṿ": "v",
                    "ʋ": "v",
                    "ꝟ": "v",
                    "ʌ": "v",
                    "ꝡ": "vy",
                    "ⓦ": "w",
                    "w": "w",
                    "ẁ": "w",
                    "ẃ": "w",
                    "ŵ": "w",
                    "ẇ": "w",
                    "ẅ": "w",
                    "ẘ": "w",
                    "ẉ": "w",
                    "ⱳ": "w",
                    "ⓧ": "x",
                    "x": "x",
                    "ẋ": "x",
                    "ẍ": "x",
                    "ⓨ": "y",
                    "y": "y",
                    "ỳ": "y",
                    "ý": "y",
                    "ŷ": "y",
                    "ỹ": "y",
                    "ȳ": "y",
                    "ẏ": "y",
                    "ÿ": "y",
                    "ỷ": "y",
                    "ẙ": "y",
                    "ỵ": "y",
                    "ƴ": "y",
                    "ɏ": "y",
                    "ỿ": "y",
                    "ⓩ": "z",
                    "z": "z",
                    "ź": "z",
                    "ẑ": "z",
                    "ż": "z",
                    "ž": "z",
                    "ẓ": "z",
                    "ẕ": "z",
                    "ƶ": "z",
                    "ȥ": "z",
                    "ɀ": "z",
                    "ⱬ": "z",
                    "ꝣ": "z",
                    "Ά": "Α",
                    "Έ": "Ε",
                    "Ή": "Η",
                    "Ί": "Ι",
                    "Ϊ": "Ι",
                    "Ό": "Ο",
                    "Ύ": "Υ",
                    "Ϋ": "Υ",
                    "Ώ": "Ω",
                    "ά": "α",
                    "έ": "ε",
                    "ή": "η",
                    "ί": "ι",
                    "ϊ": "ι",
                    "ΐ": "ι",
                    "ό": "ο",
                    "ύ": "υ",
                    "ϋ": "υ",
                    "ΰ": "υ",
                    "ώ": "ω",
                    "ς": "σ",
                    "’": "'"
                }
            })), t.define("select2/data/base", ["../utils"], (function(e) {
                function t(e, n) {
                    t.__super__.constructor.call(this)
                }
                return e.Extend(t, e.Observable), t.prototype.current = function(e) {
                    throw new Error("The `current` method must be defined in child classes.")
                }, t.prototype.query = function(e, t) {
                    throw new Error("The `query` method must be defined in child classes.")
                }, t.prototype.bind = function(e, t) {}, t.prototype.destroy = function() {}, t.prototype.generateResultId = function(t, n) {
                    var i = t.id + "-result-";
                    return i += e.generateChars(4), null != n.id ? i += "-" + n.id.toString() : i += "-" + e.generateChars(4), i
                }, t
            })), t.define("select2/data/select", ["./base", "../utils", "jquery"], (function(e, t, n) {
                function i(e, t) {
                    this.$element = e, this.options = t, i.__super__.constructor.call(this)
                }
                return t.Extend(i, e), i.prototype.current = function(e) {
                    var t = [],
                        i = this;
                    this.$element.find(":selected").each((function() {
                        var e = n(this),
                            r = i.item(e);
                        t.push(r)
                    })), e(t)
                }, i.prototype.select = function(e) {
                    var t = this;
                    if (e.selected = !0, n(e.element).is("option")) return e.element.selected = !0, void this.$element.trigger("input").trigger("change");
                    if (this.$element.prop("multiple")) this.current((function(i) {
                        var r = [];
                        (e = [e]).push.apply(e, i);
                        for (var o = 0; o < e.length; o++) {
                            var a = e[o].id; - 1 === n.inArray(a, r) && r.push(a)
                        }
                        t.$element.val(r), t.$element.trigger("input").trigger("change")
                    }));
                    else {
                        var i = e.id;
                        this.$element.val(i), this.$element.trigger("input").trigger("change")
                    }
                }, i.prototype.unselect = function(e) {
                    var t = this;
                    if (this.$element.prop("multiple")) {
                        if (e.selected = !1, n(e.element).is("option")) return e.element.selected = !1, void this.$element.trigger("input").trigger("change");
                        this.current((function(i) {
                            for (var r = [], o = 0; o < i.length; o++) {
                                var a = i[o].id;
                                a !== e.id && -1 === n.inArray(a, r) && r.push(a)
                            }
                            t.$element.val(r), t.$element.trigger("input").trigger("change")
                        }))
                    }
                }, i.prototype.bind = function(e, t) {
                    var n = this;
                    (this.container = e).on("select", (function(e) {
                        n.select(e.data)
                    })), e.on("unselect", (function(e) {
                        n.unselect(e.data)
                    }))
                }, i.prototype.destroy = function() {
                    this.$element.find("*").each((function() {
                        t.RemoveData(this)
                    }))
                }, i.prototype.query = function(e, t) {
                    var i = [],
                        r = this;
                    this.$element.children().each((function() {
                        var t = n(this);
                        if (t.is("option") || t.is("optgroup")) {
                            var o = r.item(t),
                                a = r.matches(e, o);
                            null !== a && i.push(a)
                        }
                    })), t({
                        results: i
                    })
                }, i.prototype.addOptions = function(e) {
                    t.appendMany(this.$element, e)
                }, i.prototype.option = function(e) {
                    var i;
                    e.children ? (i = document.createElement("optgroup")).label = e.text : void 0 !== (i = document.createElement("option")).textContent ? i.textContent = e.text : i.innerText = e.text, void 0 !== e.id && (i.value = e.id), e.disabled && (i.disabled = !0), e.selected && (i.selected = !0), e.title && (i.title = e.title);
                    var r = n(i),
                        o = this._normalizeItem(e);
                    return o.element = i, t.StoreData(i, "data", o), r
                }, i.prototype.item = function(e) {
                    var i = {};
                    if (null != (i = t.GetData(e[0], "data"))) return i;
                    if (e.is("option")) i = {
                        id: e.val(),
                        text: e.text(),
                        disabled: e.prop("disabled"),
                        selected: e.prop("selected"),
                        title: e.prop("title")
                    };
                    else if (e.is("optgroup")) {
                        i = {
                            text: e.prop("label"),
                            children: [],
                            title: e.prop("title")
                        };
                        for (var r = e.children("option"), o = [], a = 0; a < r.length; a++) {
                            var s = n(r[a]),
                                l = this.item(s);
                            o.push(l)
                        }
                        i.children = o
                    }
                    return (i = this._normalizeItem(i)).element = e[0], t.StoreData(e[0], "data", i), i
                }, i.prototype._normalizeItem = function(e) {
                    return e !== Object(e) && (e = {
                        id: e,
                        text: e
                    }), null != (e = n.extend({}, {
                        text: ""
                    }, e)).id && (e.id = e.id.toString()), null != e.text && (e.text = e.text.toString()), null == e._resultId && e.id && null != this.container && (e._resultId = this.generateResultId(this.container, e)), n.extend({}, {
                        selected: !1,
                        disabled: !1
                    }, e)
                }, i.prototype.matches = function(e, t) {
                    return this.options.get("matcher")(e, t)
                }, i
            })), t.define("select2/data/array", ["./select", "../utils", "jquery"], (function(e, t, n) {
                function i(e, t) {
                    this._dataToConvert = t.get("data") || [], i.__super__.constructor.call(this, e, t)
                }
                return t.Extend(i, e), i.prototype.bind = function(e, t) {
                    i.__super__.bind.call(this, e, t), this.addOptions(this.convertToOptions(this._dataToConvert))
                }, i.prototype.select = function(e) {
                    var t = this.$element.find("option").filter((function(t, n) {
                        return n.value == e.id.toString()
                    }));
                    0 === t.length && (t = this.option(e), this.addOptions(t)), i.__super__.select.call(this, e)
                }, i.prototype.convertToOptions = function(e) {
                    var i = this,
                        r = this.$element.find("option"),
                        o = r.map((function() {
                            return i.item(n(this)).id
                        })).get(),
                        a = [];

                    function s(e) {
                        return function() {
                            return n(this).val() == e.id
                        }
                    }
                    for (var l = 0; l < e.length; l++) {
                        var c = this._normalizeItem(e[l]);
                        if (0 <= n.inArray(c.id, o)) {
                            var u = r.filter(s(c)),
                                d = this.item(u),
                                h = n.extend(!0, {}, c, d),
                                f = this.option(h);
                            u.replaceWith(f)
                        } else {
                            var p = this.option(c);
                            if (c.children) {
                                var g = this.convertToOptions(c.children);
                                t.appendMany(p, g)
                            }
                            a.push(p)
                        }
                    }
                    return a
                }, i
            })), t.define("select2/data/ajax", ["./array", "../utils", "jquery"], (function(e, t, n) {
                function i(e, t) {
                    this.ajaxOptions = this._applyDefaults(t.get("ajax")), null != this.ajaxOptions.processResults && (this.processResults = this.ajaxOptions.processResults), i.__super__.constructor.call(this, e, t)
                }
                return t.Extend(i, e), i.prototype._applyDefaults = function(e) {
                    var t = {
                        data: function(e) {
                            return n.extend({}, e, {
                                q: e.term
                            })
                        },
                        transport: function(e, t, i) {
                            var r = n.ajax(e);
                            return r.then(t), r.fail(i), r
                        }
                    };
                    return n.extend({}, t, e, !0)
                }, i.prototype.processResults = function(e) {
                    return e
                }, i.prototype.query = function(e, t) {
                    var i = this;
                    null != this._request && (n.isFunction(this._request.abort) && this._request.abort(), this._request = null);
                    var r = n.extend({
                        type: "GET"
                    }, this.ajaxOptions);

                    function o() {
                        var o = r.transport(r, (function(r) {
                            var o = i.processResults(r, e);
                            i.options.get("debug") && window.console && console.error && (o && o.results && n.isArray(o.results) || console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")), t(o)
                        }), (function() {
                            "status" in o && (0 === o.status || "0" === o.status) || i.trigger("results:message", {
                                message: "errorLoading"
                            })
                        }));
                        i._request = o
                    }
                    "function" == typeof r.url && (r.url = r.url.call(this.$element, e)), "function" == typeof r.data && (r.data = r.data.call(this.$element, e)), this.ajaxOptions.delay && null != e.term ? (this._queryTimeout && window.clearTimeout(this._queryTimeout), this._queryTimeout = window.setTimeout(o, this.ajaxOptions.delay)) : o()
                }, i
            })), t.define("select2/data/tags", ["jquery"], (function(e) {
                function t(t, n, i) {
                    var r = i.get("tags"),
                        o = i.get("createTag");
                    void 0 !== o && (this.createTag = o);
                    var a = i.get("insertTag");
                    if (void 0 !== a && (this.insertTag = a), t.call(this, n, i), e.isArray(r))
                        for (var s = 0; s < r.length; s++) {
                            var l = r[s],
                                c = this._normalizeItem(l),
                                u = this.option(c);
                            this.$element.append(u)
                        }
                }
                return t.prototype.query = function(e, t, n) {
                    var i = this;
                    this._removeOldTags(), null != t.term && null == t.page ? e.call(this, t, (function e(r, o) {
                        for (var a = r.results, s = 0; s < a.length; s++) {
                            var l = a[s],
                                c = null != l.children && !e({
                                    results: l.children
                                }, !0);
                            if ((l.text || "").toUpperCase() === (t.term || "").toUpperCase() || c) return !o && (r.data = a, void n(r))
                        }
                        if (o) return !0;
                        var u = i.createTag(t);
                        if (null != u) {
                            var d = i.option(u);
                            d.attr("data-select2-tag", !0), i.addOptions([d]), i.insertTag(a, u)
                        }
                        r.results = a, n(r)
                    })) : e.call(this, t, n)
                }, t.prototype.createTag = function(t, n) {
                    var i = e.trim(n.term);
                    return "" === i ? null : {
                        id: i,
                        text: i
                    }
                }, t.prototype.insertTag = function(e, t, n) {
                    t.unshift(n)
                }, t.prototype._removeOldTags = function(t) {
                    this.$element.find("option[data-select2-tag]").each((function() {
                        this.selected || e(this).remove()
                    }))
                }, t
            })), t.define("select2/data/tokenizer", ["jquery"], (function(e) {
                function t(e, t, n) {
                    var i = n.get("tokenizer");
                    void 0 !== i && (this.tokenizer = i), e.call(this, t, n)
                }
                return t.prototype.bind = function(e, t, n) {
                    e.call(this, t, n), this.$search = t.dropdown.$search || t.selection.$search || n.find(".select2-search__field")
                }, t.prototype.query = function(t, n, i) {
                    var r = this;
                    n.term = n.term || "";
                    var o = this.tokenizer(n, this.options, (function(t) {
                        var n, i = r._normalizeItem(t);
                        if (!r.$element.find("option").filter((function() {
                                return e(this).val() === i.id
                            })).length) {
                            var o = r.option(i);
                            o.attr("data-select2-tag", !0), r._removeOldTags(), r.addOptions([o])
                        }
                        n = i, r.trigger("select", {
                            data: n
                        })
                    }));
                    o.term !== n.term && (this.$search.length && (this.$search.val(o.term), this.$search.trigger("focus")), n.term = o.term), t.call(this, n, i)
                }, t.prototype.tokenizer = function(t, n, i, r) {
                    for (var o = i.get("tokenSeparators") || [], a = n.term, s = 0, l = this.createTag || function(e) {
                            return {
                                id: e.term,
                                text: e.term
                            }
                        }; s < a.length;) {
                        var c = a[s];
                        if (-1 !== e.inArray(c, o)) {
                            var u = a.substr(0, s),
                                d = l(e.extend({}, n, {
                                    term: u
                                }));
                            null != d ? (r(d), a = a.substr(s + 1) || "", s = 0) : s++
                        } else s++
                    }
                    return {
                        term: a
                    }
                }, t
            })), t.define("select2/data/minimumInputLength", [], (function() {
                function e(e, t, n) {
                    this.minimumInputLength = n.get("minimumInputLength"), e.call(this, t, n)
                }
                return e.prototype.query = function(e, t, n) {
                    t.term = t.term || "", t.term.length < this.minimumInputLength ? this.trigger("results:message", {
                        message: "inputTooShort",
                        args: {
                            minimum: this.minimumInputLength,
                            input: t.term,
                            params: t
                        }
                    }) : e.call(this, t, n)
                }, e
            })), t.define("select2/data/maximumInputLength", [], (function() {
                function e(e, t, n) {
                    this.maximumInputLength = n.get("maximumInputLength"), e.call(this, t, n)
                }
                return e.prototype.query = function(e, t, n) {
                    t.term = t.term || "", 0 < this.maximumInputLength && t.term.length > this.maximumInputLength ? this.trigger("results:message", {
                        message: "inputTooLong",
                        args: {
                            maximum: this.maximumInputLength,
                            input: t.term,
                            params: t
                        }
                    }) : e.call(this, t, n)
                }, e
            })), t.define("select2/data/maximumSelectionLength", [], (function() {
                function e(e, t, n) {
                    this.maximumSelectionLength = n.get("maximumSelectionLength"), e.call(this, t, n)
                }
                return e.prototype.bind = function(e, t, n) {
                    var i = this;
                    e.call(this, t, n), t.on("select", (function() {
                        i._checkIfMaximumSelected()
                    }))
                }, e.prototype.query = function(e, t, n) {
                    var i = this;
                    this._checkIfMaximumSelected((function() {
                        e.call(i, t, n)
                    }))
                }, e.prototype._checkIfMaximumSelected = function(e, t) {
                    var n = this;
                    this.current((function(e) {
                        var i = null != e ? e.length : 0;
                        0 < n.maximumSelectionLength && i >= n.maximumSelectionLength ? n.trigger("results:message", {
                            message: "maximumSelected",
                            args: {
                                maximum: n.maximumSelectionLength
                            }
                        }) : t && t()
                    }))
                }, e
            })), t.define("select2/dropdown", ["jquery", "./utils"], (function(e, t) {
                function n(e, t) {
                    this.$element = e, this.options = t, n.__super__.constructor.call(this)
                }
                return t.Extend(n, t.Observable), n.prototype.render = function() {
                    var t = e('<span class="select2-dropdown"><span class="select2-results"></span></span>');
                    return t.attr("dir", this.options.get("dir")), this.$dropdown = t
                }, n.prototype.bind = function() {}, n.prototype.position = function(e, t) {}, n.prototype.destroy = function() {
                    this.$dropdown.remove()
                }, n
            })), t.define("select2/dropdown/search", ["jquery", "../utils"], (function(e, t) {
                function n() {}
                return n.prototype.render = function(t) {
                    var n = t.call(this),
                        i = e('<span class="select2-search select2-search--dropdown"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="none" spellcheck="false" role="searchbox" aria-autocomplete="list" /></span>');
                    return this.$searchContainer = i, this.$search = i.find("input"), n.prepend(i), n
                }, n.prototype.bind = function(t, n, i) {
                    var r = this,
                        o = n.id + "-results";
                    t.call(this, n, i), this.$search.on("keydown", (function(e) {
                        r.trigger("keypress", e), r._keyUpPrevented = e.isDefaultPrevented()
                    })), this.$search.on("input", (function(t) {
                        e(this).off("keyup")
                    })), this.$search.on("keyup input", (function(e) {
                        r.handleSearch(e)
                    })), n.on("open", (function() {
                        r.$search.attr("tabindex", 0), r.$search.attr("aria-controls", o), r.$search.trigger("focus"), window.setTimeout((function() {
                            r.$search.trigger("focus")
                        }), 0)
                    })), n.on("close", (function() {
                        r.$search.attr("tabindex", -1), r.$search.removeAttr("aria-controls"), r.$search.removeAttr("aria-activedescendant"), r.$search.val(""), r.$search.trigger("blur")
                    })), n.on("focus", (function() {
                        n.isOpen() || r.$search.trigger("focus")
                    })), n.on("results:all", (function(e) {
                        null != e.query.term && "" !== e.query.term || (r.showSearch(e) ? r.$searchContainer.removeClass("select2-search--hide") : r.$searchContainer.addClass("select2-search--hide"))
                    })), n.on("results:focus", (function(e) {
                        e.data._resultId ? r.$search.attr("aria-activedescendant", e.data._resultId) : r.$search.removeAttr("aria-activedescendant")
                    }))
                }, n.prototype.handleSearch = function(e) {
                    if (!this._keyUpPrevented) {
                        var t = this.$search.val();
                        this.trigger("query", {
                            term: t
                        })
                    }
                    this._keyUpPrevented = !1
                }, n.prototype.showSearch = function(e, t) {
                    return !0
                }, n
            })), t.define("select2/dropdown/hidePlaceholder", [], (function() {
                function e(e, t, n, i) {
                    this.placeholder = this.normalizePlaceholder(n.get("placeholder")), e.call(this, t, n, i)
                }
                return e.prototype.append = function(e, t) {
                    t.results = this.removePlaceholder(t.results), e.call(this, t)
                }, e.prototype.normalizePlaceholder = function(e, t) {
                    return "string" == typeof t && (t = {
                        id: "",
                        text: t
                    }), t
                }, e.prototype.removePlaceholder = function(e, t) {
                    for (var n = t.slice(0), i = t.length - 1; 0 <= i; i--) {
                        var r = t[i];
                        this.placeholder.id === r.id && n.splice(i, 1)
                    }
                    return n
                }, e
            })), t.define("select2/dropdown/infiniteScroll", ["jquery"], (function(e) {
                function t(e, t, n, i) {
                    this.lastParams = {}, e.call(this, t, n, i), this.$loadingMore = this.createLoadingMore(), this.loading = !1
                }
                return t.prototype.append = function(e, t) {
                    this.$loadingMore.remove(), this.loading = !1, e.call(this, t), this.showLoadingMore(t) && (this.$results.append(this.$loadingMore), this.loadMoreIfNeeded())
                }, t.prototype.bind = function(e, t, n) {
                    var i = this;
                    e.call(this, t, n), t.on("query", (function(e) {
                        i.lastParams = e, i.loading = !0
                    })), t.on("query:append", (function(e) {
                        i.lastParams = e, i.loading = !0
                    })), this.$results.on("scroll", this.loadMoreIfNeeded.bind(this))
                }, t.prototype.loadMoreIfNeeded = function() {
                    var t = e.contains(document.documentElement, this.$loadingMore[0]);
                    if (!this.loading && t) {
                        var n = this.$results.offset().top + this.$results.outerHeight(!1);
                        this.$loadingMore.offset().top + this.$loadingMore.outerHeight(!1) <= n + 50 && this.loadMore()
                    }
                }, t.prototype.loadMore = function() {
                    this.loading = !0;
                    var t = e.extend({}, {
                        page: 1
                    }, this.lastParams);
                    t.page++, this.trigger("query:append", t)
                }, t.prototype.showLoadingMore = function(e, t) {
                    return t.pagination && t.pagination.more
                }, t.prototype.createLoadingMore = function() {
                    var t = e('<li class="select2-results__option select2-results__option--load-more"role="option" aria-disabled="true"></li>'),
                        n = this.options.get("translations").get("loadingMore");
                    return t.html(n(this.lastParams)), t
                }, t
            })), t.define("select2/dropdown/attachBody", ["jquery", "../utils"], (function(e, t) {
                function n(t, n, i) {
                    this.$dropdownParent = e(i.get("dropdownParent") || document.body), t.call(this, n, i)
                }
                return n.prototype.bind = function(e, t, n) {
                    var i = this;
                    e.call(this, t, n), t.on("open", (function() {
                        i._showDropdown(), i._attachPositioningHandler(t), i._bindContainerResultHandlers(t)
                    })), t.on("close", (function() {
                        i._hideDropdown(), i._detachPositioningHandler(t)
                    })), this.$dropdownContainer.on("mousedown", (function(e) {
                        e.stopPropagation()
                    }))
                }, n.prototype.destroy = function(e) {
                    e.call(this), this.$dropdownContainer.remove()
                }, n.prototype.position = function(e, t, n) {
                    t.attr("class", n.attr("class")), t.removeClass("select2"), t.addClass("select2-container--open"), t.css({
                        position: "absolute",
                        top: -999999
                    }), this.$container = n
                }, n.prototype.render = function(t) {
                    var n = e("<span></span>"),
                        i = t.call(this);
                    return n.append(i), this.$dropdownContainer = n
                }, n.prototype._hideDropdown = function(e) {
                    this.$dropdownContainer.detach()
                }, n.prototype._bindContainerResultHandlers = function(e, t) {
                    if (!this._containerResultsHandlersBound) {
                        var n = this;
                        t.on("results:all", (function() {
                            n._positionDropdown(), n._resizeDropdown()
                        })), t.on("results:append", (function() {
                            n._positionDropdown(), n._resizeDropdown()
                        })), t.on("results:message", (function() {
                            n._positionDropdown(), n._resizeDropdown()
                        })), t.on("select", (function() {
                            n._positionDropdown(), n._resizeDropdown()
                        })), t.on("unselect", (function() {
                            n._positionDropdown(), n._resizeDropdown()
                        })), this._containerResultsHandlersBound = !0
                    }
                }, n.prototype._attachPositioningHandler = function(n, i) {
                    var r = this,
                        o = "scroll.select2." + i.id,
                        a = "resize.select2." + i.id,
                        s = "orientationchange.select2." + i.id,
                        l = this.$container.parents().filter(t.hasScroll);
                    l.each((function() {
                        t.StoreData(this, "select2-scroll-position", {
                            x: e(this).scrollLeft(),
                            y: e(this).scrollTop()
                        })
                    })), l.on(o, (function(n) {
                        var i = t.GetData(this, "select2-scroll-position");
                        e(this).scrollTop(i.y)
                    })), e(window).on(o + " " + a + " " + s, (function(e) {
                        r._positionDropdown(), r._resizeDropdown()
                    }))
                }, n.prototype._detachPositioningHandler = function(n, i) {
                    var r = "scroll.select2." + i.id,
                        o = "resize.select2." + i.id,
                        a = "orientationchange.select2." + i.id;
                    this.$container.parents().filter(t.hasScroll).off(r), e(window).off(r + " " + o + " " + a)
                }, n.prototype._positionDropdown = function() {
                    var t = e(window),
                        n = this.$dropdown.hasClass("select2-dropdown--above"),
                        i = this.$dropdown.hasClass("select2-dropdown--below"),
                        r = null,
                        o = this.$container.offset();
                    o.bottom = o.top + this.$container.outerHeight(!1);
                    var a = {
                        height: this.$container.outerHeight(!1)
                    };
                    a.top = o.top, a.bottom = o.top + a.height;
                    var s = this.$dropdown.outerHeight(!1),
                        l = t.scrollTop(),
                        c = t.scrollTop() + t.height(),
                        u = l < o.top - s,
                        d = c > o.bottom + s,
                        h = {
                            left: o.left,
                            top: a.bottom
                        },
                        f = this.$dropdownParent;
                    "static" === f.css("position") && (f = f.offsetParent());
                    var p = {
                        top: 0,
                        left: 0
                    };
                    (e.contains(document.body, f[0]) || f[0].isConnected) && (p = f.offset()), h.top -= p.top, h.left -= p.left, n || i || (r = "below"), d || !u || n ? !u && d && n && (r = "below") : r = "above", ("above" == r || n && "below" !== r) && (h.top = a.top - p.top - s), null != r && (this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--" + r), this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--" + r)), this.$dropdownContainer.css(h)
                }, n.prototype._resizeDropdown = function() {
                    var e = {
                        width: this.$container.outerWidth(!1) + "px"
                    };
                    this.options.get("dropdownAutoWidth") && (e.minWidth = e.width, e.position = "relative", e.width = "auto"), this.$dropdown.css(e)
                }, n.prototype._showDropdown = function(e) {
                    this.$dropdownContainer.appendTo(this.$dropdownParent), this._positionDropdown(), this._resizeDropdown()
                }, n
            })), t.define("select2/dropdown/minimumResultsForSearch", [], (function() {
                function e(e, t, n, i) {
                    this.minimumResultsForSearch = n.get("minimumResultsForSearch"), this.minimumResultsForSearch < 0 && (this.minimumResultsForSearch = 1 / 0), e.call(this, t, n, i)
                }
                return e.prototype.showSearch = function(e, t) {
                    return !(function e(t) {
                        for (var n = 0, i = 0; i < t.length; i++) {
                            var r = t[i];
                            r.children ? n += e(r.children) : n++
                        }
                        return n
                    }(t.data.results) < this.minimumResultsForSearch) && e.call(this, t)
                }, e
            })), t.define("select2/dropdown/selectOnClose", ["../utils"], (function(e) {
                function t() {}
                return t.prototype.bind = function(e, t, n) {
                    var i = this;
                    e.call(this, t, n), t.on("close", (function(e) {
                        i._handleSelectOnClose(e)
                    }))
                }, t.prototype._handleSelectOnClose = function(t, n) {
                    if (n && null != n.originalSelect2Event) {
                        var i = n.originalSelect2Event;
                        if ("select" === i._type || "unselect" === i._type) return
                    }
                    var r = this.getHighlightedResults();
                    if (!(r.length < 1)) {
                        var o = e.GetData(r[0], "data");
                        null != o.element && o.element.selected || null == o.element && o.selected || this.trigger("select", {
                            data: o
                        })
                    }
                }, t
            })), t.define("select2/dropdown/closeOnSelect", [], (function() {
                function e() {}
                return e.prototype.bind = function(e, t, n) {
                    var i = this;
                    e.call(this, t, n), t.on("select", (function(e) {
                        i._selectTriggered(e)
                    })), t.on("unselect", (function(e) {
                        i._selectTriggered(e)
                    }))
                }, e.prototype._selectTriggered = function(e, t) {
                    var n = t.originalEvent;
                    n && (n.ctrlKey || n.metaKey) || this.trigger("close", {
                        originalEvent: n,
                        originalSelect2Event: t
                    })
                }, e
            })), t.define("select2/i18n/en", [], (function() {
                return {
                    errorLoading: function() {
                        return "The results could not be loaded."
                    },
                    inputTooLong: function(e) {
                        var t = e.input.length - e.maximum,
                            n = "Please delete " + t + " character";
                        return 1 != t && (n += "s"), n
                    },
                    inputTooShort: function(e) {
                        return "Please enter " + (e.minimum - e.input.length) + " or more characters"
                    },
                    loadingMore: function() {
                        return "Loading more results…"
                    },
                    maximumSelected: function(e) {
                        var t = "You can only select " + e.maximum + " item";
                        return 1 != e.maximum && (t += "s"), t
                    },
                    noResults: function() {
                        return "No results found"
                    },
                    searching: function() {
                        return "Searching…"
                    },
                    removeAllItems: function() {
                        return "Remove all items"
                    }
                }
            })), t.define("select2/defaults", ["jquery", "require", "./results", "./selection/single", "./selection/multiple", "./selection/placeholder", "./selection/allowClear", "./selection/search", "./selection/eventRelay", "./utils", "./translation", "./diacritics", "./data/select", "./data/array", "./data/ajax", "./data/tags", "./data/tokenizer", "./data/minimumInputLength", "./data/maximumInputLength", "./data/maximumSelectionLength", "./dropdown", "./dropdown/search", "./dropdown/hidePlaceholder", "./dropdown/infiniteScroll", "./dropdown/attachBody", "./dropdown/minimumResultsForSearch", "./dropdown/selectOnClose", "./dropdown/closeOnSelect", "./i18n/en"], (function(e, t, n, i, r, o, a, s, l, c, u, d, h, f, p, g, m, v, y, b, w, x, _, C, k, S, T, D, E) {
                function A() {
                    this.reset()
                }
                return A.prototype.apply = function(u) {
                    if (null == (u = e.extend(!0, {}, this.defaults, u)).dataAdapter) {
                        if (null != u.ajax ? u.dataAdapter = p : null != u.data ? u.dataAdapter = f : u.dataAdapter = h, 0 < u.minimumInputLength && (u.dataAdapter = c.Decorate(u.dataAdapter, v)), 0 < u.maximumInputLength && (u.dataAdapter = c.Decorate(u.dataAdapter, y)), 0 < u.maximumSelectionLength && (u.dataAdapter = c.Decorate(u.dataAdapter, b)), u.tags && (u.dataAdapter = c.Decorate(u.dataAdapter, g)), null == u.tokenSeparators && null == u.tokenizer || (u.dataAdapter = c.Decorate(u.dataAdapter, m)), null != u.query) {
                            var d = t(u.amdBase + "compat/query");
                            u.dataAdapter = c.Decorate(u.dataAdapter, d)
                        }
                        if (null != u.initSelection) {
                            var E = t(u.amdBase + "compat/initSelection");
                            u.dataAdapter = c.Decorate(u.dataAdapter, E)
                        }
                    }
                    if (null == u.resultsAdapter && (u.resultsAdapter = n, null != u.ajax && (u.resultsAdapter = c.Decorate(u.resultsAdapter, C)), null != u.placeholder && (u.resultsAdapter = c.Decorate(u.resultsAdapter, _)), u.selectOnClose && (u.resultsAdapter = c.Decorate(u.resultsAdapter, T))), null == u.dropdownAdapter) {
                        if (u.multiple) u.dropdownAdapter = w;
                        else {
                            var A = c.Decorate(w, x);
                            u.dropdownAdapter = A
                        }
                        if (0 !== u.minimumResultsForSearch && (u.dropdownAdapter = c.Decorate(u.dropdownAdapter, S)), u.closeOnSelect && (u.dropdownAdapter = c.Decorate(u.dropdownAdapter, D)), null != u.dropdownCssClass || null != u.dropdownCss || null != u.adaptDropdownCssClass) {
                            var M = t(u.amdBase + "compat/dropdownCss");
                            u.dropdownAdapter = c.Decorate(u.dropdownAdapter, M)
                        }
                        u.dropdownAdapter = c.Decorate(u.dropdownAdapter, k)
                    }
                    if (null == u.selectionAdapter) {
                        if (u.multiple ? u.selectionAdapter = r : u.selectionAdapter = i, null != u.placeholder && (u.selectionAdapter = c.Decorate(u.selectionAdapter, o)), u.allowClear && (u.selectionAdapter = c.Decorate(u.selectionAdapter, a)), u.multiple && (u.selectionAdapter = c.Decorate(u.selectionAdapter, s)), null != u.containerCssClass || null != u.containerCss || null != u.adaptContainerCssClass) {
                            var O = t(u.amdBase + "compat/containerCss");
                            u.selectionAdapter = c.Decorate(u.selectionAdapter, O)
                        }
                        u.selectionAdapter = c.Decorate(u.selectionAdapter, l)
                    }
                    u.language = this._resolveLanguage(u.language), u.language.push("en");
                    for (var I = [], P = 0; P < u.language.length; P++) {
                        var L = u.language[P]; - 1 === I.indexOf(L) && I.push(L)
                    }
                    return u.language = I, u.translations = this._processTranslations(u.language, u.debug), u
                }, A.prototype.reset = function() {
                    function t(e) {
                        return e.replace(/[^\u0000-\u007E]/g, (function(e) {
                            return d[e] || e
                        }))
                    }
                    this.defaults = {
                        amdBase: "./",
                        amdLanguageBase: "./i18n/",
                        closeOnSelect: !0,
                        debug: !1,
                        dropdownAutoWidth: !1,
                        escapeMarkup: c.escapeMarkup,
                        language: {},
                        matcher: function n(i, r) {
                            if ("" === e.trim(i.term)) return r;
                            if (r.children && 0 < r.children.length) {
                                for (var o = e.extend(!0, {}, r), a = r.children.length - 1; 0 <= a; a--) null == n(i, r.children[a]) && o.children.splice(a, 1);
                                return 0 < o.children.length ? o : n(i, o)
                            }
                            var s = t(r.text).toUpperCase(),
                                l = t(i.term).toUpperCase();
                            return -1 < s.indexOf(l) ? r : null
                        },
                        minimumInputLength: 0,
                        maximumInputLength: 0,
                        maximumSelectionLength: 0,
                        minimumResultsForSearch: 0,
                        selectOnClose: !1,
                        scrollAfterSelect: !1,
                        sorter: function(e) {
                            return e
                        },
                        templateResult: function(e) {
                            return e.text
                        },
                        templateSelection: function(e) {
                            return e.text
                        },
                        theme: "default",
                        width: "resolve"
                    }
                }, A.prototype.applyFromElement = function(e, t) {
                    var n = e.language,
                        i = this.defaults.language,
                        r = t.prop("lang"),
                        o = t.closest("[lang]").prop("lang"),
                        a = Array.prototype.concat.call(this._resolveLanguage(r), this._resolveLanguage(n), this._resolveLanguage(i), this._resolveLanguage(o));
                    return e.language = a, e
                }, A.prototype._resolveLanguage = function(t) {
                    if (!t) return [];
                    if (e.isEmptyObject(t)) return [];
                    if (e.isPlainObject(t)) return [t];
                    var n;
                    n = e.isArray(t) ? t : [t];
                    for (var i = [], r = 0; r < n.length; r++)
                        if (i.push(n[r]), "string" == typeof n[r] && 0 < n[r].indexOf("-")) {
                            var o = n[r].split("-")[0];
                            i.push(o)
                        }
                    return i
                }, A.prototype._processTranslations = function(t, n) {
                    for (var i = new u, r = 0; r < t.length; r++) {
                        var o = new u,
                            a = t[r];
                        if ("string" == typeof a) try {
                            o = u.loadPath(a)
                        } catch (t) {
                            try {
                                a = this.defaults.amdLanguageBase + a, o = u.loadPath(a)
                            } catch (t) {
                                n && window.console && console.warn && console.warn('Select2: The language file for "' + a + '" could not be automatically loaded. A fallback will be used instead.')
                            }
                        } else o = e.isPlainObject(a) ? new u(a) : a;
                        i.extend(o)
                    }
                    return i
                }, A.prototype.set = function(t, n) {
                    var i = {};
                    i[e.camelCase(t)] = n;
                    var r = c._convertData(i);
                    e.extend(!0, this.defaults, r)
                }, new A
            })), t.define("select2/options", ["require", "jquery", "./defaults", "./utils"], (function(e, t, n, i) {
                function r(t, r) {
                    if (this.options = t, null != r && this.fromElement(r), null != r && (this.options = n.applyFromElement(this.options, r)), this.options = n.apply(this.options), r && r.is("input")) {
                        var o = e(this.get("amdBase") + "compat/inputData");
                        this.options.dataAdapter = i.Decorate(this.options.dataAdapter, o)
                    }
                }
                return r.prototype.fromElement = function(e) {
                    var n = ["select2"];
                    null == this.options.multiple && (this.options.multiple = e.prop("multiple")), null == this.options.disabled && (this.options.disabled = e.prop("disabled")), null == this.options.dir && (e.prop("dir") ? this.options.dir = e.prop("dir") : e.closest("[dir]").prop("dir") ? this.options.dir = e.closest("[dir]").prop("dir") : this.options.dir = "ltr"), e.prop("disabled", this.options.disabled), e.prop("multiple", this.options.multiple), i.GetData(e[0], "select2Tags") && (this.options.debug && window.console && console.warn && console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'), i.StoreData(e[0], "data", i.GetData(e[0], "select2Tags")), i.StoreData(e[0], "tags", !0)), i.GetData(e[0], "ajaxUrl") && (this.options.debug && window.console && console.warn && console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."), e.attr("ajax--url", i.GetData(e[0], "ajaxUrl")), i.StoreData(e[0], "ajax-Url", i.GetData(e[0], "ajaxUrl")));
                    var r = {};

                    function o(e, t) {
                        return t.toUpperCase()
                    }
                    for (var a = 0; a < e[0].attributes.length; a++) {
                        var s = e[0].attributes[a].name,
                            l = "data-";
                        if (s.substr(0, l.length) == l) {
                            var c = s.substring(l.length),
                                u = i.GetData(e[0], c);
                            r[c.replace(/-([a-z])/g, o)] = u
                        }
                    }
                    t.fn.jquery && "1." == t.fn.jquery.substr(0, 2) && e[0].dataset && (r = t.extend(!0, {}, e[0].dataset, r));
                    var d = t.extend(!0, {}, i.GetData(e[0]), r);
                    for (var h in d = i._convertData(d)) - 1 < t.inArray(h, n) || (t.isPlainObject(this.options[h]) ? t.extend(this.options[h], d[h]) : this.options[h] = d[h]);
                    return this
                }, r.prototype.get = function(e) {
                    return this.options[e]
                }, r.prototype.set = function(e, t) {
                    this.options[e] = t
                }, r
            })), t.define("select2/core", ["jquery", "./options", "./utils", "./keys"], (function(e, t, n, i) {
                var r = function(e, i) {
                    null != n.GetData(e[0], "select2") && n.GetData(e[0], "select2").destroy(), this.$element = e, this.id = this._generateId(e), i = i || {}, this.options = new t(i, e), r.__super__.constructor.call(this);
                    var o = e.attr("tabindex") || 0;
                    n.StoreData(e[0], "old-tabindex", o), e.attr("tabindex", "-1");
                    var a = this.options.get("dataAdapter");
                    this.dataAdapter = new a(e, this.options);
                    var s = this.render();
                    this._placeContainer(s);
                    var l = this.options.get("selectionAdapter");
                    this.selection = new l(e, this.options), this.$selection = this.selection.render(), this.selection.position(this.$selection, s);
                    var c = this.options.get("dropdownAdapter");
                    this.dropdown = new c(e, this.options), this.$dropdown = this.dropdown.render(), this.dropdown.position(this.$dropdown, s);
                    var u = this.options.get("resultsAdapter");
                    this.results = new u(e, this.options, this.dataAdapter), this.$results = this.results.render(), this.results.position(this.$results, this.$dropdown);
                    var d = this;
                    this._bindAdapters(), this._registerDomEvents(), this._registerDataEvents(), this._registerSelectionEvents(), this._registerDropdownEvents(), this._registerResultsEvents(), this._registerEvents(), this.dataAdapter.current((function(e) {
                        d.trigger("selection:update", {
                            data: e
                        })
                    })), e.addClass("select2-hidden-accessible"), e.attr("aria-hidden", "true"), this._syncAttributes(), n.StoreData(e[0], "select2", this), e.data("select2", this)
                };
                return n.Extend(r, n.Observable), r.prototype._generateId = function(e) {
                    return "select2-" + (null != e.attr("id") ? e.attr("id") : null != e.attr("name") ? e.attr("name") + "-" + n.generateChars(2) : n.generateChars(4)).replace(/(:|\.|\[|\]|,)/g, "")
                }, r.prototype._placeContainer = function(e) {
                    e.insertAfter(this.$element);
                    var t = this._resolveWidth(this.$element, this.options.get("width"));
                    null != t && e.css("width", t)
                }, r.prototype._resolveWidth = function(e, t) {
                    var n = /^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;
                    if ("resolve" == t) {
                        var i = this._resolveWidth(e, "style");
                        return null != i ? i : this._resolveWidth(e, "element")
                    }
                    if ("element" == t) {
                        var r = e.outerWidth(!1);
                        return r <= 0 ? "auto" : r + "px"
                    }
                    if ("style" != t) return "computedstyle" != t ? t : window.getComputedStyle(e[0]).width;
                    var o = e.attr("style");
                    if ("string" != typeof o) return null;
                    for (var a = o.split(";"), s = 0, l = a.length; s < l; s += 1) {
                        var c = a[s].replace(/\s/g, "").match(n);
                        if (null !== c && 1 <= c.length) return c[1]
                    }
                    return null
                }, r.prototype._bindAdapters = function() {
                    this.dataAdapter.bind(this, this.$container), this.selection.bind(this, this.$container), this.dropdown.bind(this, this.$container), this.results.bind(this, this.$container)
                }, r.prototype._registerDomEvents = function() {
                    var e = this;
                    this.$element.on("change.select2", (function() {
                        e.dataAdapter.current((function(t) {
                            e.trigger("selection:update", {
                                data: t
                            })
                        }))
                    })), this.$element.on("focus.select2", (function(t) {
                        e.trigger("focus", t)
                    })), this._syncA = n.bind(this._syncAttributes, this), this._syncS = n.bind(this._syncSubtree, this), this.$element[0].attachEvent && this.$element[0].attachEvent("onpropertychange", this._syncA);
                    var t = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
                    null != t ? (this._observer = new t((function(t) {
                        e._syncA(), e._syncS(null, t)
                    })), this._observer.observe(this.$element[0], {
                        attributes: !0,
                        childList: !0,
                        subtree: !1
                    })) : this.$element[0].addEventListener && (this.$element[0].addEventListener("DOMAttrModified", e._syncA, !1), this.$element[0].addEventListener("DOMNodeInserted", e._syncS, !1), this.$element[0].addEventListener("DOMNodeRemoved", e._syncS, !1))
                }, r.prototype._registerDataEvents = function() {
                    var e = this;
                    this.dataAdapter.on("*", (function(t, n) {
                        e.trigger(t, n)
                    }))
                }, r.prototype._registerSelectionEvents = function() {
                    var t = this,
                        n = ["toggle", "focus"];
                    this.selection.on("toggle", (function() {
                        t.toggleDropdown()
                    })), this.selection.on("focus", (function(e) {
                        t.focus(e)
                    })), this.selection.on("*", (function(i, r) {
                        -1 === e.inArray(i, n) && t.trigger(i, r)
                    }))
                }, r.prototype._registerDropdownEvents = function() {
                    var e = this;
                    this.dropdown.on("*", (function(t, n) {
                        e.trigger(t, n)
                    }))
                }, r.prototype._registerResultsEvents = function() {
                    var e = this;
                    this.results.on("*", (function(t, n) {
                        e.trigger(t, n)
                    }))
                }, r.prototype._registerEvents = function() {
                    var e = this;
                    this.on("open", (function() {
                        e.$container.addClass("select2-container--open")
                    })), this.on("close", (function() {
                        e.$container.removeClass("select2-container--open")
                    })), this.on("enable", (function() {
                        e.$container.removeClass("select2-container--disabled")
                    })), this.on("disable", (function() {
                        e.$container.addClass("select2-container--disabled")
                    })), this.on("blur", (function() {
                        e.$container.removeClass("select2-container--focus")
                    })), this.on("query", (function(t) {
                        e.isOpen() || e.trigger("open", {}), this.dataAdapter.query(t, (function(n) {
                            e.trigger("results:all", {
                                data: n,
                                query: t
                            })
                        }))
                    })), this.on("query:append", (function(t) {
                        this.dataAdapter.query(t, (function(n) {
                            e.trigger("results:append", {
                                data: n,
                                query: t
                            })
                        }))
                    })), this.on("keypress", (function(t) {
                        var n = t.which;
                        e.isOpen() ? n === i.ESC || n === i.TAB || n === i.UP && t.altKey ? (e.close(t), t.preventDefault()) : n === i.ENTER ? (e.trigger("results:select", {}), t.preventDefault()) : n === i.SPACE && t.ctrlKey ? (e.trigger("results:toggle", {}), t.preventDefault()) : n === i.UP ? (e.trigger("results:previous", {}), t.preventDefault()) : n === i.DOWN && (e.trigger("results:next", {}), t.preventDefault()) : (n === i.ENTER || n === i.SPACE || n === i.DOWN && t.altKey) && (e.open(), t.preventDefault())
                    }))
                }, r.prototype._syncAttributes = function() {
                    this.options.set("disabled", this.$element.prop("disabled")), this.isDisabled() ? (this.isOpen() && this.close(), this.trigger("disable", {})) : this.trigger("enable", {})
                }, r.prototype._isChangeMutation = function(t, n) {
                    var i = !1,
                        r = this;
                    if (!t || !t.target || "OPTION" === t.target.nodeName || "OPTGROUP" === t.target.nodeName) {
                        if (n)
                            if (n.addedNodes && 0 < n.addedNodes.length)
                                for (var o = 0; o < n.addedNodes.length; o++) n.addedNodes[o].selected && (i = !0);
                            else n.removedNodes && 0 < n.removedNodes.length ? i = !0 : e.isArray(n) && e.each(n, (function(e, t) {
                                if (r._isChangeMutation(e, t)) return !(i = !0)
                            }));
                        else i = !0;
                        return i
                    }
                }, r.prototype._syncSubtree = function(e, t) {
                    var n = this._isChangeMutation(e, t),
                        i = this;
                    n && this.dataAdapter.current((function(e) {
                        i.trigger("selection:update", {
                            data: e
                        })
                    }))
                }, r.prototype.trigger = function(e, t) {
                    var n = r.__super__.trigger,
                        i = {
                            open: "opening",
                            close: "closing",
                            select: "selecting",
                            unselect: "unselecting",
                            clear: "clearing"
                        };
                    if (void 0 === t && (t = {}), e in i) {
                        var o = i[e],
                            a = {
                                prevented: !1,
                                name: e,
                                args: t
                            };
                        if (n.call(this, o, a), a.prevented) return void(t.prevented = !0)
                    }
                    n.call(this, e, t)
                }, r.prototype.toggleDropdown = function() {
                    this.isDisabled() || (this.isOpen() ? this.close() : this.open())
                }, r.prototype.open = function() {
                    this.isOpen() || this.isDisabled() || this.trigger("query", {})
                }, r.prototype.close = function(e) {
                    this.isOpen() && this.trigger("close", {
                        originalEvent: e
                    })
                }, r.prototype.isEnabled = function() {
                    return !this.isDisabled()
                }, r.prototype.isDisabled = function() {
                    return this.options.get("disabled")
                }, r.prototype.isOpen = function() {
                    return this.$container.hasClass("select2-container--open")
                }, r.prototype.hasFocus = function() {
                    return this.$container.hasClass("select2-container--focus")
                }, r.prototype.focus = function(e) {
                    this.hasFocus() || (this.$container.addClass("select2-container--focus"), this.trigger("focus", {}))
                }, r.prototype.enable = function(e) {
                    this.options.get("debug") && window.console && console.warn && console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'), null != e && 0 !== e.length || (e = [!0]);
                    var t = !e[0];
                    this.$element.prop("disabled", t)
                }, r.prototype.data = function() {
                    this.options.get("debug") && 0 < arguments.length && window.console && console.warn && console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');
                    var e = [];
                    return this.dataAdapter.current((function(t) {
                        e = t
                    })), e
                }, r.prototype.val = function(t) {
                    if (this.options.get("debug") && window.console && console.warn && console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'), null == t || 0 === t.length) return this.$element.val();
                    var n = t[0];
                    e.isArray(n) && (n = e.map(n, (function(e) {
                        return e.toString()
                    }))), this.$element.val(n).trigger("input").trigger("change")
                }, r.prototype.destroy = function() {
                    this.$container.remove(), this.$element[0].detachEvent && this.$element[0].detachEvent("onpropertychange", this._syncA), null != this._observer ? (this._observer.disconnect(), this._observer = null) : this.$element[0].removeEventListener && (this.$element[0].removeEventListener("DOMAttrModified", this._syncA, !1), this.$element[0].removeEventListener("DOMNodeInserted", this._syncS, !1), this.$element[0].removeEventListener("DOMNodeRemoved", this._syncS, !1)), this._syncA = null, this._syncS = null, this.$element.off(".select2"), this.$element.attr("tabindex", n.GetData(this.$element[0], "old-tabindex")), this.$element.removeClass("select2-hidden-accessible"), this.$element.attr("aria-hidden", "false"), n.RemoveData(this.$element[0]), this.$element.removeData("select2"), this.dataAdapter.destroy(), this.selection.destroy(), this.dropdown.destroy(), this.results.destroy(), this.dataAdapter = null, this.selection = null, this.dropdown = null, this.results = null
                }, r.prototype.render = function() {
                    var t = e('<span class="select2 select2-container"><span class="selection"></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>');
                    return t.attr("dir", this.options.get("dir")), this.$container = t, this.$container.addClass("select2-container--" + this.options.get("theme")), n.StoreData(t[0], "element", this.$element), t
                }, r
            })), t.define("select2/compat/utils", ["jquery"], (function(e) {
                return {
                    syncCssClasses: function(t, n, i) {
                        var r, o, a = [];
                        (r = e.trim(t.attr("class"))) && e((r = "" + r).split(/\s+/)).each((function() {
                            0 === this.indexOf("select2-") && a.push(this)
                        })), (r = e.trim(n.attr("class"))) && e((r = "" + r).split(/\s+/)).each((function() {
                            0 !== this.indexOf("select2-") && null != (o = i(this)) && a.push(o)
                        })), t.attr("class", a.join(" "))
                    }
                }
            })), t.define("select2/compat/containerCss", ["jquery", "./utils"], (function(e, t) {
                function n(e) {
                    return null
                }

                function i() {}
                return i.prototype.render = function(i) {
                    var r = i.call(this),
                        o = this.options.get("containerCssClass") || "";
                    e.isFunction(o) && (o = o(this.$element));
                    var a = this.options.get("adaptContainerCssClass");
                    if (a = a || n, -1 !== o.indexOf(":all:")) {
                        o = o.replace(":all:", "");
                        var s = a;
                        a = function(e) {
                            var t = s(e);
                            return null != t ? t + " " + e : e
                        }
                    }
                    var l = this.options.get("containerCss") || {};
                    return e.isFunction(l) && (l = l(this.$element)), t.syncCssClasses(r, this.$element, a), r.css(l), r.addClass(o), r
                }, i
            })), t.define("select2/compat/dropdownCss", ["jquery", "./utils"], (function(e, t) {
                function n(e) {
                    return null
                }

                function i() {}
                return i.prototype.render = function(i) {
                    var r = i.call(this),
                        o = this.options.get("dropdownCssClass") || "";
                    e.isFunction(o) && (o = o(this.$element));
                    var a = this.options.get("adaptDropdownCssClass");
                    if (a = a || n, -1 !== o.indexOf(":all:")) {
                        o = o.replace(":all:", "");
                        var s = a;
                        a = function(e) {
                            var t = s(e);
                            return null != t ? t + " " + e : e
                        }
                    }
                    var l = this.options.get("dropdownCss") || {};
                    return e.isFunction(l) && (l = l(this.$element)), t.syncCssClasses(r, this.$element, a), r.css(l), r.addClass(o), r
                }, i
            })), t.define("select2/compat/initSelection", ["jquery"], (function(e) {
                function t(e, t, n) {
                    n.get("debug") && window.console && console.warn && console.warn("Select2: The `initSelection` option has been deprecated in favor of a custom data adapter that overrides the `current` method. This method is now called multiple times instead of a single time when the instance is initialized. Support will be removed for the `initSelection` option in future versions of Select2"), this.initSelection = n.get("initSelection"), this._isInitialized = !1, e.call(this, t, n)
                }
                return t.prototype.current = function(t, n) {
                    var i = this;
                    this._isInitialized ? t.call(this, n) : this.initSelection.call(null, this.$element, (function(t) {
                        i._isInitialized = !0, e.isArray(t) || (t = [t]), n(t)
                    }))
                }, t
            })), t.define("select2/compat/inputData", ["jquery", "../utils"], (function(e, t) {
                function n(e, t, n) {
                    this._currentData = [], this._valueSeparator = n.get("valueSeparator") || ",", "hidden" === t.prop("type") && n.get("debug") && console && console.warn && console.warn("Select2: Using a hidden input with Select2 is no longer supported and may stop working in the future. It is recommended to use a `<select>` element instead."), e.call(this, t, n)
                }
                return n.prototype.current = function(t, n) {
                    function i(t, n) {
                        var r = [];
                        return t.selected || -1 !== e.inArray(t.id, n) ? (t.selected = !0, r.push(t)) : t.selected = !1, t.children && r.push.apply(r, i(t.children, n)), r
                    }
                    for (var r = [], o = 0; o < this._currentData.length; o++) {
                        var a = this._currentData[o];
                        r.push.apply(r, i(a, this.$element.val().split(this._valueSeparator)))
                    }
                    n(r)
                }, n.prototype.select = function(t, n) {
                    if (this.options.get("multiple")) {
                        var i = this.$element.val();
                        i += this._valueSeparator + n.id, this.$element.val(i), this.$element.trigger("input").trigger("change")
                    } else this.current((function(t) {
                        e.map(t, (function(e) {
                            e.selected = !1
                        }))
                    })), this.$element.val(n.id), this.$element.trigger("input").trigger("change")
                }, n.prototype.unselect = function(e, t) {
                    var n = this;
                    t.selected = !1, this.current((function(e) {
                        for (var i = [], r = 0; r < e.length; r++) {
                            var o = e[r];
                            t.id != o.id && i.push(o.id)
                        }
                        n.$element.val(i.join(n._valueSeparator)), n.$element.trigger("input").trigger("change")
                    }))
                }, n.prototype.query = function(e, t, n) {
                    for (var i = [], r = 0; r < this._currentData.length; r++) {
                        var o = this._currentData[r],
                            a = this.matches(t, o);
                        null !== a && i.push(a)
                    }
                    n({
                        results: i
                    })
                }, n.prototype.addOptions = function(n, i) {
                    var r = e.map(i, (function(e) {
                        return t.GetData(e[0], "data")
                    }));
                    this._currentData.push.apply(this._currentData, r)
                }, n
            })), t.define("select2/compat/matcher", ["jquery"], (function(e) {
                return function(t) {
                    return function(n, i) {
                        var r = e.extend(!0, {}, i);
                        if (null == n.term || "" === e.trim(n.term)) return r;
                        if (i.children) {
                            for (var o = i.children.length - 1; 0 <= o; o--) {
                                var a = i.children[o];
                                t(n.term, a.text, a) || r.children.splice(o, 1)
                            }
                            if (0 < r.children.length) return r
                        }
                        return t(n.term, i.text, i) ? r : null
                    }
                }
            })), t.define("select2/compat/query", [], (function() {
                function e(e, t, n) {
                    n.get("debug") && window.console && console.warn && console.warn("Select2: The `query` option has been deprecated in favor of a custom data adapter that overrides the `query` method. Support will be removed for the `query` option in future versions of Select2."), e.call(this, t, n)
                }
                return e.prototype.query = function(e, t, n) {
                    t.callback = n, this.options.get("query").call(null, t)
                }, e
            })), t.define("select2/dropdown/attachContainer", [], (function() {
                function e(e, t, n) {
                    e.call(this, t, n)
                }
                return e.prototype.position = function(e, t, n) {
                    n.find(".dropdown-wrapper").append(t), t.addClass("select2-dropdown--below"), n.addClass("select2-container--below")
                }, e
            })), t.define("select2/dropdown/stopPropagation", [], (function() {
                function e() {}
                return e.prototype.bind = function(e, t, n) {
                    e.call(this, t, n), this.$dropdown.on(["blur", "change", "click", "dblclick", "focus", "focusin", "focusout", "input", "keydown", "keyup", "keypress", "mousedown", "mouseenter", "mouseleave", "mousemove", "mouseover", "mouseup", "search", "touchend", "touchstart"].join(" "), (function(e) {
                        e.stopPropagation()
                    }))
                }, e
            })), t.define("select2/selection/stopPropagation", [], (function() {
                function e() {}
                return e.prototype.bind = function(e, t, n) {
                    e.call(this, t, n), this.$selection.on(["blur", "change", "click", "dblclick", "focus", "focusin", "focusout", "input", "keydown", "keyup", "keypress", "mousedown", "mouseenter", "mouseleave", "mousemove", "mouseover", "mouseup", "search", "touchend", "touchstart"].join(" "), (function(e) {
                        e.stopPropagation()
                    }))
                }, e
            })), v = function(e) {
                var t, n, i = ["wheel", "mousewheel", "DOMMouseScroll", "MozMousePixelScroll"],
                    r = "onwheel" in document || 9 <= document.documentMode ? ["wheel"] : ["mousewheel", "DomMouseScroll", "MozMousePixelScroll"],
                    o = Array.prototype.slice;
                if (e.event.fixHooks)
                    for (var a = i.length; a;) e.event.fixHooks[i[--a]] = e.event.mouseHooks;
                var s = e.event.special.mousewheel = {
                    version: "3.1.12",
                    setup: function() {
                        if (this.addEventListener)
                            for (var t = r.length; t;) this.addEventListener(r[--t], l, !1);
                        else this.onmousewheel = l;
                        e.data(this, "mousewheel-line-height", s.getLineHeight(this)), e.data(this, "mousewheel-page-height", s.getPageHeight(this))
                    },
                    teardown: function() {
                        if (this.removeEventListener)
                            for (var t = r.length; t;) this.removeEventListener(r[--t], l, !1);
                        else this.onmousewheel = null;
                        e.removeData(this, "mousewheel-line-height"), e.removeData(this, "mousewheel-page-height")
                    },
                    getLineHeight: function(t) {
                        var n = e(t),
                            i = n["offsetParent" in e.fn ? "offsetParent" : "parent"]();
                        return i.length || (i = e("body")), parseInt(i.css("fontSize"), 10) || parseInt(n.css("fontSize"), 10) || 16
                    },
                    getPageHeight: function(t) {
                        return e(t).height()
                    },
                    settings: {
                        adjustOldDeltas: !0,
                        normalizeOffset: !0
                    }
                };

                function l(i) {
                    var r, a = i || window.event,
                        l = o.call(arguments, 1),
                        d = 0,
                        h = 0,
                        f = 0,
                        p = 0,
                        g = 0;
                    if ((i = e.event.fix(a)).type = "mousewheel", "detail" in a && (f = -1 * a.detail), "wheelDelta" in a && (f = a.wheelDelta), "wheelDeltaY" in a && (f = a.wheelDeltaY), "wheelDeltaX" in a && (h = -1 * a.wheelDeltaX), "axis" in a && a.axis === a.HORIZONTAL_AXIS && (h = -1 * f, f = 0), d = 0 === f ? h : f, "deltaY" in a && (d = f = -1 * a.deltaY), "deltaX" in a && (h = a.deltaX, 0 === f && (d = -1 * h)), 0 !== f || 0 !== h) {
                        if (1 === a.deltaMode) {
                            var m = e.data(this, "mousewheel-line-height");
                            d *= m, f *= m, h *= m
                        } else if (2 === a.deltaMode) {
                            var v = e.data(this, "mousewheel-page-height");
                            d *= v, f *= v, h *= v
                        }
                        if (r = Math.max(Math.abs(f), Math.abs(h)), (!n || r < n) && u(a, n = r) && (n /= 40), u(a, r) && (d /= 40, h /= 40, f /= 40), d = Math[1 <= d ? "floor" : "ceil"](d / n), h = Math[1 <= h ? "floor" : "ceil"](h / n), f = Math[1 <= f ? "floor" : "ceil"](f / n), s.settings.normalizeOffset && this.getBoundingClientRect) {
                            var y = this.getBoundingClientRect();
                            p = i.clientX - y.left, g = i.clientY - y.top
                        }
                        return i.deltaX = h, i.deltaY = f, i.deltaFactor = n, i.offsetX = p, i.offsetY = g, i.deltaMode = 0, l.unshift(i, d, h, f), t && clearTimeout(t), t = setTimeout(c, 200), (e.event.dispatch || e.event.handle).apply(this, l)
                    }
                }

                function c() {
                    n = null
                }

                function u(e, t) {
                    return s.settings.adjustOldDeltas && "mousewheel" === e.type && t % 120 == 0
                }
                e.fn.extend({
                    mousewheel: function(e) {
                        return e ? this.bind("mousewheel", e) : this.trigger("mousewheel")
                    },
                    unmousewheel: function(e) {
                        return this.unbind("mousewheel", e)
                    }
                })
            }, "function" == typeof t.define && t.define.amd ? t.define("jquery-mousewheel", ["jquery"], v) : "object" == typeof exports ? module.exports = v : v(e), t.define("jquery.select2", ["jquery", "jquery-mousewheel", "./select2/core", "./select2/defaults", "./select2/utils"], (function(e, t, n, i, r) {
                if (null == e.fn.select2) {
                    var o = ["open", "close", "destroy"];
                    e.fn.select2 = function(t) {
                        if ("object" == typeof(t = t || {})) return this.each((function() {
                            var i = e.extend(!0, {}, t);
                            new n(e(this), i)
                        })), this;
                        if ("string" != typeof t) throw new Error("Invalid arguments for Select2: " + t);
                        var i, a = Array.prototype.slice.call(arguments, 1);
                        return this.each((function() {
                            var e = r.GetData(this, "select2");
                            null == e && window.console && console.error && console.error("The select2('" + t + "') method was called on an element that is not using Select2."), i = e[t].apply(e, a)
                        })), -1 < e.inArray(t, o) ? this : i
                    }
                }
                return null == e.fn.select2.defaults && (e.fn.select2.defaults = i), n
            })), {
                define: t.define,
                require: t.require
            }
        }(),
        n = t.require("jquery.select2");
    return e.fn.select2.amd = t, n
})),
function(e, t) {
    "object" == typeof exports && "undefined" != typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define(t) : (e = e || self).Sweetalert2 = t()
}(this, (function() {
    "use strict";

    function e(t) {
        return (e = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
            return typeof e
        } : function(e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(t)
    }

    function t(e, t) {
        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
    }

    function n(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function i(e, t, i) {
        return t && n(e.prototype, t), i && n(e, i), e
    }

    function r() {
        return (r = Object.assign || function(e) {
            for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var i in n) Object.prototype.hasOwnProperty.call(n, i) && (e[i] = n[i])
            }
            return e
        }).apply(this, arguments)
    }

    function o(e) {
        return (o = Object.setPrototypeOf ? Object.getPrototypeOf : function(e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    function a(e, t) {
        return (a = Object.setPrototypeOf || function(e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function s() {
        if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
        if (Reflect.construct.sham) return !1;
        if ("function" == typeof Proxy) return !0;
        try {
            return Date.prototype.toString.call(Reflect.construct(Date, [], (function() {}))), !0
        } catch (e) {
            return !1
        }
    }

    function l(e, t, n) {
        return (l = s() ? Reflect.construct : function(e, t, n) {
            var i = [null];
            i.push.apply(i, t);
            var r = new(Function.bind.apply(e, i));
            return n && a(r, n.prototype), r
        }).apply(null, arguments)
    }

    function c(e, t) {
        return !t || "object" != typeof t && "function" != typeof t ? function(e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function u(e, t, n) {
        return (u = "undefined" != typeof Reflect && Reflect.get ? Reflect.get : function(e, t, n) {
            var i = function(e, t) {
                for (; !Object.prototype.hasOwnProperty.call(e, t) && null !== (e = o(e)););
                return e
            }(e, t);
            if (i) {
                var r = Object.getOwnPropertyDescriptor(i, t);
                return r.get ? r.get.call(n) : r.value
            }
        })(e, t, n || e)
    }

    function d(e) {
        return Object.keys(e).map((function(t) {
            return e[t]
        }))
    }

    function h(e) {
        return Array.prototype.slice.call(e)
    }

    function f(e, t) {
        var n;
        n = '"'.concat(e, '" is deprecated and will be removed in the next major release. Please use "').concat(t, '" instead.'), -1 === W.indexOf(n) && (W.push(n), B(n))
    }

    function p(e) {
        return e && "function" == typeof e.toPromise
    }

    function g(e) {
        return p(e) ? e.toPromise() : Promise.resolve(e)
    }

    function m(e) {
        return e && Promise.resolve(e) === e
    }

    function v(t) {
        return t instanceof Element || "object" === e(n = t) && n.jquery;
        var n
    }

    function y(e) {
        var t = {};
        for (var n in e) t[e[n]] = "swal2-" + e[n];
        return t
    }

    function b(e) {
        var t = G();
        return t ? t.querySelector(e) : null
    }

    function w(e) {
        return b(".".concat(e))
    }

    function x() {
        return h(Q().querySelectorAll(".".concat(Y.icon)))
    }

    function _() {
        var e = x().filter((function(e) {
            return me(e)
        }));
        return e.length ? e[0] : null
    }

    function C() {
        return w(Y.title)
    }

    function k() {
        return w(Y.content)
    }

    function S() {
        return w(Y.image)
    }

    function T() {
        return w(Y["progress-steps"])
    }

    function D() {
        return w(Y["validation-message"])
    }

    function E() {
        return b(".".concat(Y.actions, " .").concat(Y.confirm))
    }

    function A() {
        return b(".".concat(Y.actions, " .").concat(Y.cancel))
    }

    function M() {
        return w(Y.actions)
    }

    function O() {
        return w(Y.header)
    }

    function I() {
        return w(Y.footer)
    }

    function P() {
        return w(Y["timer-progress-bar"])
    }

    function L() {
        return w(Y.close)
    }

    function F() {
        var e = h(Q().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')).sort((function(e, t) {
                return e = parseInt(e.getAttribute("tabindex")), (t = parseInt(t.getAttribute("tabindex"))) < e ? 1 : e < t ? -1 : 0
            })),
            t = h(Q().querySelectorAll('\n  a[href],\n  area[href],\n  input:not([disabled]),\n  select:not([disabled]),\n  textarea:not([disabled]),\n  button:not([disabled]),\n  iframe,\n  object,\n  embed,\n  [tabindex="0"],\n  [contenteditable],\n  audio[controls],\n  video[controls],\n  summary\n')).filter((function(e) {
                return "-1" !== e.getAttribute("tabindex")
            }));
        return function(e) {
            for (var t = [], n = 0; n < e.length; n++) - 1 === t.indexOf(e[n]) && t.push(e[n]);
            return t
        }(e.concat(t)).filter((function(e) {
            return me(e)
        }))
    }

    function N() {
        return !K() && !document.body.classList.contains(Y["no-backdrop"])
    }

    function R() {
        return Q().hasAttribute("data-loading")
    }

    function j(e, t) {
        var n;
        e.textContent = "", t && (h((n = (new DOMParser).parseFromString(t, "text/html")).querySelector("head").childNodes).forEach((function(t) {
            e.appendChild(t)
        })), h(n.querySelector("body").childNodes).forEach((function(t) {
            e.appendChild(t)
        })))
    }

    function $(e, t) {
        if (t) {
            for (var n = t.split(/\s+/), i = 0; i < n.length; i++)
                if (!e.classList.contains(n[i])) return;
            return 1
        }
    }

    function z(t, n, i) {
        var r, o;
        if (o = n, h((r = t).classList).forEach((function(e) {
                -1 === d(Y).indexOf(e) && -1 === d(X).indexOf(e) && -1 === d(o.showClass).indexOf(e) && r.classList.remove(e)
            })), n.customClass && n.customClass[i]) {
            if ("string" != typeof n.customClass[i] && !n.customClass[i].forEach) return B("Invalid type of customClass.".concat(i, '! Expected string or iterable object, got "').concat(e(n.customClass[i]), '"'));
            fe(t, n.customClass[i])
        }
    }
    var H = "SweetAlert2:",
        B = function(e) {
            console.warn("".concat(H, " ").concat(e))
        },
        q = function(e) {
            console.error("".concat(H, " ").concat(e))
        },
        W = [],
        U = function(e) {
            return "function" == typeof e ? e() : e
        },
        V = Object.freeze({
            cancel: "cancel",
            backdrop: "backdrop",
            close: "close",
            esc: "esc",
            timer: "timer"
        }),
        Y = y(["container", "shown", "height-auto", "iosfix", "popup", "modal", "no-backdrop", "no-transition", "toast", "toast-shown", "toast-column", "show", "hide", "close", "title", "header", "content", "html-container", "actions", "confirm", "cancel", "footer", "icon", "icon-content", "image", "input", "file", "range", "select", "radio", "checkbox", "label", "textarea", "inputerror", "validation-message", "progress-steps", "active-progress-step", "progress-step", "progress-step-line", "loading", "styled", "top", "top-start", "top-end", "top-left", "top-right", "center", "center-start", "center-end", "center-left", "center-right", "bottom", "bottom-start", "bottom-end", "bottom-left", "bottom-right", "grow-row", "grow-column", "grow-fullscreen", "rtl", "timer-progress-bar", "timer-progress-bar-container", "scrollbar-measure", "icon-success", "icon-warning", "icon-info", "icon-question", "icon-error"]),
        X = y(["success", "warning", "info", "question", "error"]),
        G = function() {
            return document.body.querySelector(".".concat(Y.container))
        },
        Q = function() {
            return w(Y.popup)
        },
        K = function() {
            return document.body.classList.contains(Y["toast-shown"])
        },
        J = {
            previousBodyPadding: null
        };

    function Z(e, t) {
        if (!t) return null;
        switch (t) {
            case "select":
            case "textarea":
            case "file":
                return ge(e, Y[t]);
            case "checkbox":
                return e.querySelector(".".concat(Y.checkbox, " input"));
            case "radio":
                return e.querySelector(".".concat(Y.radio, " input:checked")) || e.querySelector(".".concat(Y.radio, " input:first-child"));
            case "range":
                return e.querySelector(".".concat(Y.range, " input"));
            default:
                return ge(e, Y.input)
        }
    }

    function ee(e) {
        var t;
        e.focus(), "file" !== e.type && (t = e.value, e.value = "", e.value = t)
    }

    function te(e, t, n) {
        e && t && ("string" == typeof t && (t = t.split(/\s+/).filter(Boolean)), t.forEach((function(t) {
            e.forEach ? e.forEach((function(e) {
                n ? e.classList.add(t) : e.classList.remove(t)
            })) : n ? e.classList.add(t) : e.classList.remove(t)
        })))
    }

    function ne(e, t, n) {
        n || 0 === parseInt(n) ? e.style[t] = "number" == typeof n ? "".concat(n, "px") : n : e.style.removeProperty(t)
    }

    function ie(e, t) {
        var n = 1 < arguments.length && void 0 !== t ? t : "flex";
        e.style.opacity = "", e.style.display = n
    }

    function re(e) {
        e.style.opacity = "", e.style.display = "none"
    }

    function oe(e, t, n) {
        t ? ie(e, n) : re(e)
    }

    function ae(e) {
        return !!(e.scrollHeight > e.clientHeight)
    }

    function se(e) {
        var t = window.getComputedStyle(e),
            n = parseFloat(t.getPropertyValue("animation-duration") || "0"),
            i = parseFloat(t.getPropertyValue("transition-duration") || "0");
        return 0 < n || 0 < i
    }

    function le(e, t) {
        var n = 1 < arguments.length && void 0 !== t && t,
            i = P();
        me(i) && (n && (i.style.transition = "none", i.style.width = "100%"), setTimeout((function() {
            i.style.transition = "width ".concat(e / 1e3, "s linear"), i.style.width = "0%"
        }), 10))
    }

    function ce() {
        return "undefined" == typeof window || "undefined" == typeof document
    }

    function ue(e) {
        jt.isVisible() && he !== e.target.value && jt.resetValidationMessage(), he = e.target.value
    }

    function de(t, n) {
        t instanceof HTMLElement ? n.appendChild(t) : "object" === e(t) ? ye(t, n) : t && j(n, t)
    }
    var he, fe = function(e, t) {
            te(e, t, !0)
        },
        pe = function(e, t) {
            te(e, t, !1)
        },
        ge = function(e, t) {
            for (var n = 0; n < e.childNodes.length; n++)
                if ($(e.childNodes[n], t)) return e.childNodes[n]
        },
        me = function(e) {
            return !(!e || !(e.offsetWidth || e.offsetHeight || e.getClientRects().length))
        },
        ve = '\n <div aria-labelledby="'.concat(Y.title, '" aria-describedby="').concat(Y.content, '" class="').concat(Y.popup, '" tabindex="-1">\n   <div class="').concat(Y.header, '">\n     <ul class="').concat(Y["progress-steps"], '"></ul>\n     <div class="').concat(Y.icon, " ").concat(X.error, '"></div>\n     <div class="').concat(Y.icon, " ").concat(X.question, '"></div>\n     <div class="').concat(Y.icon, " ").concat(X.warning, '"></div>\n     <div class="').concat(Y.icon, " ").concat(X.info, '"></div>\n     <div class="').concat(Y.icon, " ").concat(X.success, '"></div>\n     <img class="').concat(Y.image, '" />\n     <h2 class="').concat(Y.title, '" id="').concat(Y.title, '"></h2>\n     <button type="button" class="').concat(Y.close, '"></button>\n   </div>\n   <div class="').concat(Y.content, '">\n     <div id="').concat(Y.content, '" class="').concat(Y["html-container"], '"></div>\n     <input class="').concat(Y.input, '" />\n     <input type="file" class="').concat(Y.file, '" />\n     <div class="').concat(Y.range, '">\n       <input type="range" />\n       <output></output>\n     </div>\n     <select class="').concat(Y.select, '"></select>\n     <div class="').concat(Y.radio, '"></div>\n     <label for="').concat(Y.checkbox, '" class="').concat(Y.checkbox, '">\n       <input type="checkbox" />\n       <span class="').concat(Y.label, '"></span>\n     </label>\n     <textarea class="').concat(Y.textarea, '"></textarea>\n     <div class="').concat(Y["validation-message"], '" id="').concat(Y["validation-message"], '"></div>\n   </div>\n   <div class="').concat(Y.actions, '">\n     <button type="button" class="').concat(Y.confirm, '">OK</button>\n     <button type="button" class="').concat(Y.cancel, '">Cancel</button>\n   </div>\n   <div class="').concat(Y.footer, '"></div>\n   <div class="').concat(Y["timer-progress-bar-container"], '">\n     <div class="').concat(Y["timer-progress-bar"], '"></div>\n   </div>\n </div>\n').replace(/(^|\n)\s*/g, ""),
        ye = function(e, t) {
            e.jquery ? be(t, e) : j(t, e.toString())
        },
        be = function(e, t) {
            if (e.textContent = "", 0 in t)
                for (var n = 0; n in t; n++) e.appendChild(t[n].cloneNode(!0));
            else e.appendChild(t.cloneNode(!0))
        },
        we = function() {
            if (ce()) return !1;
            var e = document.createElement("div"),
                t = {
                    WebkitAnimation: "webkitAnimationEnd",
                    OAnimation: "oAnimationEnd oanimationend",
                    animation: "animationend"
                };
            for (var n in t)
                if (Object.prototype.hasOwnProperty.call(t, n) && void 0 !== e.style[n]) return t[n];
            return !1
        }();

    function xe(e, t, n) {
        var i;
        oe(e, n["show".concat((i = t).charAt(0).toUpperCase() + i.slice(1), "Button")], "inline-block"), j(e, n["".concat(t, "ButtonText")]), e.setAttribute("aria-label", n["".concat(t, "ButtonAriaLabel")]), e.className = Y[t], z(e, n, "".concat(t, "Button")), fe(e, n["".concat(t, "ButtonClass")])
    }

    function _e(e, t) {
        e.placeholder && !t.inputPlaceholder || (e.placeholder = t.inputPlaceholder)
    }
    var Ce = {
            promise: new WeakMap,
            innerParams: new WeakMap,
            domCache: new WeakMap
        },
        ke = ["input", "file", "range", "select", "radio", "checkbox", "textarea"],
        Se = function(e) {
            var t = Y[e] ? Y[e] : Y.input;
            return ge(k(), t)
        },
        Te = {};

    function De(e, t) {
        var n, i, r, o, a, s = k().querySelector("#".concat(Y.content));
        t.html ? (de(t.html, s), ie(s, "block")) : t.text ? (s.textContent = t.text, ie(s, "block")) : re(s), n = e, i = t, r = k(), o = Ce.innerParams.get(n), a = !o || i.input !== o.input, ke.forEach((function(e) {
            var t = Y[e],
                n = ge(r, t);
            (function(e, t) {
                var n = Z(k(), e);
                if (n)
                    for (var i in function(e) {
                            for (var t = 0; t < e.attributes.length; t++) {
                                var n = e.attributes[t].name; - 1 === ["type", "value", "style"].indexOf(n) && e.removeAttribute(n)
                            }
                        }(n), t) "range" === e && "placeholder" === i || n.setAttribute(i, t[i])
            })(e, i.inputAttributes), n.className = t, a && re(n)
        })), i.input && (a && function(e) {
            if (!Te[e.input]) return q('Unexpected type of input! Expected "text", "email", "password", "number", "tel", "select", "radio", "checkbox", "textarea", "file" or "url", got "'.concat(e.input, '"'));
            var t = Se(e.input),
                n = Te[e.input](t, e);
            ie(n), setTimeout((function() {
                ee(n)
            }))
        }(i), function(e) {
            var t = Se(e.input);
            e.customClass && fe(t, e.customClass.input)
        }(i)), z(k(), t, "content")
    }

    function Ee() {
        return G() && G().getAttribute("data-queue-step")
    }

    function Ae(e, t) {
        var n, i, r, o, a, s, l, c;
        z(O(), t, "header"),
            function(e, t) {
                var n = T();
                if (!t.progressSteps || 0 === t.progressSteps.length) return re(n), 0;
                ie(n), n.textContent = "";
                var i = parseInt(void 0 === t.currentProgressStep ? Ee() : t.currentProgressStep);
                i >= t.progressSteps.length && B("Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)"), t.progressSteps.forEach((function(e, r) {
                    var o, a, s, l, c, u = (o = e, a = document.createElement("li"), fe(a, Y["progress-step"]), j(a, o), a);
                    n.appendChild(u), r === i && fe(u, Y["active-progress-step"]), r !== t.progressSteps.length - 1 && (l = t, c = document.createElement("li"), fe(c, Y["progress-step-line"]), l.progressStepsDistance && (c.style.width = l.progressStepsDistance), s = c, n.appendChild(s))
                }))
            }(0, t), n = e, i = t, (o = Ce.innerParams.get(n)) && i.icon === o.icon && _() ? z(_(), i, "icon") : (Ie(), i.icon && (-1 !== Object.keys(X).indexOf(i.icon) ? (ie(r = b(".".concat(Y.icon, ".").concat(X[i.icon]))), Le(r, i), Pe(), z(r, i, "icon"), fe(r, i.showClass.icon)) : q('Unknown icon! Expected "success", "error", "warning", "info" or "question", got "'.concat(i.icon, '"')))),
            function(e) {
                var t = S();
                if (!e.imageUrl) return re(t);
                ie(t, ""), t.setAttribute("src", e.imageUrl), t.setAttribute("alt", e.imageAlt), ne(t, "width", e.imageWidth), ne(t, "height", e.imageHeight), t.className = Y.image, z(t, e, "image")
            }(t), a = t, oe(s = C(), a.title || a.titleText), a.title && de(a.title, s), a.titleText && (s.innerText = a.titleText), z(s, a, "title"), l = t, j(c = L(), l.closeButtonHtml), z(c, l, "closeButton"), oe(c, l.showCloseButton), c.setAttribute("aria-label", l.closeButtonAriaLabel)
    }

    function Me(e, t) {
        var n, i, r, o;
        n = t, ne(i = Q(), "width", n.width), ne(i, "padding", n.padding), n.background && (i.style.background = n.background), Re(i, n),
            function(e, t) {
                var n, i, r, o, a, s, l, c, u = G();
                u && (n = u, "string" == typeof(i = t.backdrop) ? n.style.background = i : i || fe([document.documentElement, document.body], Y["no-backdrop"]), !t.backdrop && t.allowOutsideClick && B('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`'), r = u, (o = t.position) in Y ? fe(r, Y[o]) : (B('The "position" parameter is not valid, defaulting to "center"'), fe(r, Y.center)), a = u, !(s = t.grow) || "string" != typeof s || (l = "grow-".concat(s)) in Y && fe(a, Y[l]), z(u, t, "container"), (c = document.body.getAttribute("data-swal2-queue-step")) && (u.setAttribute("data-queue-step", c), document.body.removeAttribute("data-swal2-queue-step")))
            }(0, t), Ae(e, t), De(e, t),
            function(e, t) {
                var n = M(),
                    i = E(),
                    r = A();
                t.showConfirmButton || t.showCancelButton || re(n), z(n, t, "actions"), xe(i, "confirm", t), xe(r, "cancel", t), t.buttonsStyling ? function(e, t, n) {
                    var i;
                    fe([e, t], Y.styled), n.confirmButtonColor && (e.style.backgroundColor = n.confirmButtonColor), n.cancelButtonColor && (t.style.backgroundColor = n.cancelButtonColor), R() || (i = window.getComputedStyle(e).getPropertyValue("background-color"), e.style.borderLeftColor = i, e.style.borderRightColor = i)
                }(i, r, t) : (pe([i, r], Y.styled), i.style.backgroundColor = i.style.borderLeftColor = i.style.borderRightColor = "", r.style.backgroundColor = r.style.borderLeftColor = r.style.borderRightColor = ""), t.reverseButtons && i.parentNode.insertBefore(r, i)
            }(0, t), r = t, oe(o = I(), r.footer), r.footer && de(r.footer, o), z(o, r, "footer"), "function" == typeof t.onRender && t.onRender(Q())
    }

    function Oe() {
        return E() && E().click()
    }
    Te.text = Te.email = Te.password = Te.number = Te.tel = Te.url = function(t, n) {
        return "string" == typeof n.inputValue || "number" == typeof n.inputValue ? t.value = n.inputValue : m(n.inputValue) || B('Unexpected type of inputValue! Expected "string", "number" or "Promise", got "'.concat(e(n.inputValue), '"')), _e(t, n), t.type = n.input, t
    }, Te.file = function(e, t) {
        return _e(e, t), e
    }, Te.range = function(e, t) {
        var n = e.querySelector("input"),
            i = e.querySelector("output");
        return n.value = t.inputValue, n.type = t.input, i.value = t.inputValue, e
    }, Te.select = function(e, t) {
        var n;
        return e.textContent = "", t.inputPlaceholder && (j(n = document.createElement("option"), t.inputPlaceholder), n.value = "", n.disabled = !0, n.selected = !0, e.appendChild(n)), e
    }, Te.radio = function(e) {
        return e.textContent = "", e
    }, Te.checkbox = function(e, t) {
        var n = Z(k(), "checkbox");
        return n.value = 1, n.id = Y.checkbox, n.checked = Boolean(t.inputValue), j(e.querySelector("span"), t.inputPlaceholder), e
    }, Te.textarea = function(e, t) {
        var n, i;
        return e.value = t.inputValue, _e(e, t), "MutationObserver" in window && (n = parseInt(window.getComputedStyle(Q()).width), i = parseInt(window.getComputedStyle(Q()).paddingLeft) + parseInt(window.getComputedStyle(Q()).paddingRight), new MutationObserver((function() {
            var t = e.offsetWidth + i;
            Q().style.width = n < t ? "".concat(t, "px") : null
        })).observe(e, {
            attributes: !0,
            attributeFilter: ["style"]
        })), e
    };
    var Ie = function() {
            for (var e = x(), t = 0; t < e.length; t++) re(e[t])
        },
        Pe = function() {
            for (var e = Q(), t = window.getComputedStyle(e).getPropertyValue("background-color"), n = e.querySelectorAll("[class^=swal2-success-circular-line], .swal2-success-fix"), i = 0; i < n.length; i++) n[i].style.backgroundColor = t
        },
        Le = function(e, t) {
            e.textContent = "", t.iconHtml ? j(e, Fe(t.iconHtml)) : "success" === t.icon ? j(e, '\n      <div class="swal2-success-circular-line-left"></div>\n      <span class="swal2-success-line-tip"></span> <span class="swal2-success-line-long"></span>\n      <div class="swal2-success-ring"></div> <div class="swal2-success-fix"></div>\n      <div class="swal2-success-circular-line-right"></div>\n    ') : "error" === t.icon ? j(e, '\n      <span class="swal2-x-mark">\n        <span class="swal2-x-mark-line-left"></span>\n        <span class="swal2-x-mark-line-right"></span>\n      </span>\n    ') : j(e, Fe({
                question: "?",
                warning: "!",
                info: "i"
            }[t.icon]))
        },
        Fe = function(e) {
            return '<div class="'.concat(Y["icon-content"], '">').concat(e, "</div>")
        },
        Ne = [],
        Re = function(e, t) {
            e.className = "".concat(Y.popup, " ").concat(me(e) ? t.showClass.popup : ""), t.toast ? (fe([document.documentElement, document.body], Y["toast-shown"]), fe(e, Y.toast)) : fe(e, Y.modal), z(e, t, "popup"), "string" == typeof t.customClass && fe(e, t.customClass), t.icon && fe(e, Y["icon-".concat(t.icon)])
        };

    function je() {
        var e = Q();
        e || jt.fire(), e = Q();
        var t = M(),
            n = E();
        ie(t), ie(n, "inline-block"), fe([e, t], Y.loading), n.disabled = !0, e.setAttribute("data-loading", !0), e.setAttribute("aria-busy", !0), e.focus()
    }

    function $e() {
        if (qe.timeout) return function() {
            var e = P(),
                t = parseInt(window.getComputedStyle(e).width);
            e.style.removeProperty("transition"), e.style.width = "100%";
            var n = parseInt(window.getComputedStyle(e).width),
                i = parseInt(t / n * 100);
            e.style.removeProperty("transition"), e.style.width = "".concat(i, "%")
        }(), qe.timeout.stop()
    }

    function ze() {
        if (qe.timeout) {
            var e = qe.timeout.start();
            return le(e), e
        }
    }

    function He(e) {
        return Object.prototype.hasOwnProperty.call(We, e)
    }

    function Be(e) {
        return Ve[e]
    }
    var qe = {},
        We = {
            title: "",
            titleText: "",
            text: "",
            html: "",
            footer: "",
            icon: void 0,
            iconHtml: void 0,
            toast: !1,
            animation: !0,
            showClass: {
                popup: "swal2-show",
                backdrop: "swal2-backdrop-show",
                icon: "swal2-icon-show"
            },
            hideClass: {
                popup: "swal2-hide",
                backdrop: "swal2-backdrop-hide",
                icon: "swal2-icon-hide"
            },
            customClass: void 0,
            target: "body",
            backdrop: !0,
            heightAuto: !0,
            allowOutsideClick: !0,
            allowEscapeKey: !0,
            allowEnterKey: !0,
            stopKeydownPropagation: !0,
            keydownListenerCapture: !1,
            showConfirmButton: !0,
            showCancelButton: !1,
            preConfirm: void 0,
            confirmButtonText: "OK",
            confirmButtonAriaLabel: "",
            confirmButtonColor: void 0,
            cancelButtonText: "Cancel",
            cancelButtonAriaLabel: "",
            cancelButtonColor: void 0,
            buttonsStyling: !0,
            reverseButtons: !1,
            focusConfirm: !0,
            focusCancel: !1,
            showCloseButton: !1,
            closeButtonHtml: "&times;",
            closeButtonAriaLabel: "Close this dialog",
            showLoaderOnConfirm: !1,
            imageUrl: void 0,
            imageWidth: void 0,
            imageHeight: void 0,
            imageAlt: "",
            timer: void 0,
            timerProgressBar: !1,
            width: void 0,
            padding: void 0,
            background: void 0,
            input: void 0,
            inputPlaceholder: "",
            inputValue: "",
            inputOptions: {},
            inputAutoTrim: !0,
            inputAttributes: {},
            inputValidator: void 0,
            validationMessage: void 0,
            grow: !1,
            position: "center",
            progressSteps: [],
            currentProgressStep: void 0,
            progressStepsDistance: void 0,
            onBeforeOpen: void 0,
            onOpen: void 0,
            onRender: void 0,
            onClose: void 0,
            onAfterClose: void 0,
            onDestroy: void 0,
            scrollbarPadding: !0
        },
        Ue = ["allowEscapeKey", "allowOutsideClick", "buttonsStyling", "cancelButtonAriaLabel", "cancelButtonColor", "cancelButtonText", "closeButtonAriaLabel", "closeButtonHtml", "confirmButtonAriaLabel", "confirmButtonColor", "confirmButtonText", "currentProgressStep", "customClass", "footer", "hideClass", "html", "icon", "imageAlt", "imageHeight", "imageUrl", "imageWidth", "onAfterClose", "onClose", "onDestroy", "progressSteps", "reverseButtons", "showCancelButton", "showCloseButton", "showConfirmButton", "text", "title", "titleText"],
        Ve = {
            animation: 'showClass" and "hideClass'
        },
        Ye = ["allowOutsideClick", "allowEnterKey", "backdrop", "focusConfirm", "focusCancel", "heightAuto", "keydownListenerCapture"],
        Xe = Object.freeze({
            isValidParameter: He,
            isUpdatableParameter: function(e) {
                return -1 !== Ue.indexOf(e)
            },
            isDeprecatedParameter: Be,
            argsToParams: function(t) {
                var n = {};
                return "object" !== e(t[0]) || v(t[0]) ? ["title", "html", "icon"].forEach((function(i, r) {
                    var o = t[r];
                    "string" == typeof o || v(o) ? n[i] = o : void 0 !== o && q("Unexpected type of ".concat(i, '! Expected "string" or "Element", got ').concat(e(o)))
                })) : r(n, t[0]), n
            },
            isVisible: function() {
                return me(Q())
            },
            clickConfirm: Oe,
            clickCancel: function() {
                return A() && A().click()
            },
            getContainer: G,
            getPopup: Q,
            getTitle: C,
            getContent: k,
            getHtmlContainer: function() {
                return w(Y["html-container"])
            },
            getImage: S,
            getIcon: _,
            getIcons: x,
            getCloseButton: L,
            getActions: M,
            getConfirmButton: E,
            getCancelButton: A,
            getHeader: O,
            getFooter: I,
            getTimerProgressBar: P,
            getFocusableElements: F,
            getValidationMessage: D,
            isLoading: R,
            fire: function() {
                for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) t[n] = arguments[n];
                return l(this, t)
            },
            mixin: function(e) {
                return function(n) {
                    ! function(e, t) {
                        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
                        e.prototype = Object.create(t && t.prototype, {
                            constructor: {
                                value: e,
                                writable: !0,
                                configurable: !0
                            }
                        }), t && a(e, t)
                    }(f, n);
                    var l, d, h = (l = f, d = s(), function() {
                        var e, t = o(l);
                        return c(this, d ? (e = o(this).constructor, Reflect.construct(t, arguments, e)) : t.apply(this, arguments))
                    });

                    function f() {
                        return t(this, f), h.apply(this, arguments)
                    }
                    return i(f, [{
                        key: "_main",
                        value: function(t) {
                            return u(o(f.prototype), "_main", this).call(this, r({}, e, t))
                        }
                    }]), f
                }(this)
            },
            queue: function(e) {
                var t = this;

                function n(e, t) {
                    Ne = [], e(t)
                }
                Ne = e;
                var i = [];
                return new Promise((function(e) {
                    ! function r(o, a) {
                        o < Ne.length ? (document.body.setAttribute("data-swal2-queue-step", o), t.fire(Ne[o]).then((function(t) {
                            void 0 !== t.value ? (i.push(t.value), r(o + 1, a)) : n(e, {
                                dismiss: t.dismiss
                            })
                        }))) : n(e, {
                            value: i
                        })
                    }(0)
                }))
            },
            getQueueStep: Ee,
            insertQueueStep: function(e, t) {
                return t && t < Ne.length ? Ne.splice(t, 0, e) : Ne.push(e)
            },
            deleteQueueStep: function(e) {
                void 0 !== Ne[e] && Ne.splice(e, 1)
            },
            showLoading: je,
            enableLoading: je,
            getTimerLeft: function() {
                return qe.timeout && qe.timeout.getTimerLeft()
            },
            stopTimer: $e,
            resumeTimer: ze,
            toggleTimer: function() {
                var e = qe.timeout;
                return e && (e.running ? $e : ze)()
            },
            increaseTimer: function(e) {
                if (qe.timeout) {
                    var t = qe.timeout.increase(e);
                    return le(t, !0), t
                }
            },
            isTimerRunning: function() {
                return qe.timeout && qe.timeout.isRunning()
            }
        });

    function Ge() {
        var e, t = Ce.innerParams.get(this);
        t && (e = Ce.domCache.get(this), t.showConfirmButton || (re(e.confirmButton), t.showCancelButton || re(e.actions)), pe([e.popup, e.actions], Y.loading), e.popup.removeAttribute("aria-busy"), e.popup.removeAttribute("data-loading"), e.confirmButton.disabled = !1, e.cancelButton.disabled = !1)
    }

    function Qe() {
        return !!window.MSInputMethodContext && !!document.documentMode
    }

    function Ke() {
        var e = G(),
            t = Q();
        e.style.removeProperty("align-items"), t.offsetTop < 0 && (e.style.alignItems = "flex-start")
    }
    var Je = function(e) {
            var t = G();
            return e === t || !(ae(t) || "INPUT" === e.tagName || ae(k()) && k().contains(e))
        },
        Ze = {
            swalPromiseResolve: new WeakMap
        };

    function et(e, t, n, i) {
        var r;
        n ? it(e, i) : (new Promise((function(e) {
            var t = window.scrollX,
                n = window.scrollY;
            qe.restoreFocusTimeout = setTimeout((function() {
                qe.previousActiveElement && qe.previousActiveElement.focus ? (qe.previousActiveElement.focus(), qe.previousActiveElement = null) : document.body && document.body.focus(), e()
            }), 100), void 0 !== t && void 0 !== n && window.scrollTo(t, n)
        })).then((function() {
            return it(e, i)
        })), qe.keydownTarget.removeEventListener("keydown", qe.keydownHandler, {
            capture: qe.keydownListenerCapture
        }), qe.keydownHandlerAdded = !1), t.parentNode && !document.body.getAttribute("data-swal2-queue-step") && t.parentNode.removeChild(t), N() && (null !== J.previousBodyPadding && (document.body.style.paddingRight = "".concat(J.previousBodyPadding, "px"), J.previousBodyPadding = null), $(document.body, Y.iosfix) && (r = parseInt(document.body.style.top, 10), pe(document.body, Y.iosfix), document.body.style.top = "", document.body.scrollTop = -1 * r), "undefined" != typeof window && Qe() && window.removeEventListener("resize", Ke), h(document.body.children).forEach((function(e) {
            e.hasAttribute("data-previous-aria-hidden") ? (e.setAttribute("aria-hidden", e.getAttribute("data-previous-aria-hidden")), e.removeAttribute("data-previous-aria-hidden")) : e.removeAttribute("aria-hidden")
        }))), pe([document.documentElement, document.body], [Y.shown, Y["height-auto"], Y["no-backdrop"], Y["toast-shown"], Y["toast-column"]])
    }

    function tt(e) {
        var t, n, i, r = Q();
        r && (t = Ce.innerParams.get(this)) && !$(r, t.hideClass.popup) && (n = Ze.swalPromiseResolve.get(this), pe(r, t.showClass.popup), fe(r, t.hideClass.popup), i = G(), pe(i, t.showClass.backdrop), fe(i, t.hideClass.backdrop), function(e, t, n) {
            var i = G(),
                r = we && se(t),
                o = n.onClose,
                a = n.onAfterClose;
            null !== o && "function" == typeof o && o(t), r ? nt(e, t, i, a) : et(e, i, K(), a)
        }(this, r, t), void 0 !== e ? (e.isDismissed = void 0 !== e.dismiss, e.isConfirmed = void 0 === e.dismiss) : e = {
            isDismissed: !0,
            isConfirmed: !1
        }, n(e || {}))
    }
    var nt = function(e, t, n, i) {
            qe.swalCloseEventFinishedCallback = et.bind(null, e, n, K(), i), t.addEventListener(we, (function(e) {
                e.target === t && (qe.swalCloseEventFinishedCallback(), delete qe.swalCloseEventFinishedCallback)
            }))
        },
        it = function(e, t) {
            setTimeout((function() {
                "function" == typeof t && t(), e._destroy()
            }))
        };

    function rt(e, t, n) {
        var i = Ce.domCache.get(e);
        t.forEach((function(e) {
            i[e].disabled = n
        }))
    }

    function ot(e, t) {
        if (!e) return !1;
        if ("radio" === e.type)
            for (var n = e.parentNode.parentNode.querySelectorAll("input"), i = 0; i < n.length; i++) n[i].disabled = t;
        else e.disabled = t
    }
    var at = function() {
            function e(n, i) {
                t(this, e), this.callback = n, this.remaining = i, this.running = !1, this.start()
            }
            return i(e, [{
                key: "start",
                value: function() {
                    return this.running || (this.running = !0, this.started = new Date, this.id = setTimeout(this.callback, this.remaining)), this.remaining
                }
            }, {
                key: "stop",
                value: function() {
                    return this.running && (this.running = !1, clearTimeout(this.id), this.remaining -= new Date - this.started), this.remaining
                }
            }, {
                key: "increase",
                value: function(e) {
                    var t = this.running;
                    return t && this.stop(), this.remaining += e, t && this.start(), this.remaining
                }
            }, {
                key: "getTimerLeft",
                value: function() {
                    return this.running && (this.stop(), this.start()), this.remaining
                }
            }, {
                key: "isRunning",
                value: function() {
                    return this.running
                }
            }]), e
        }(),
        st = {
            email: function(e, t) {
                return /^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]{2,24}$/.test(e) ? Promise.resolve() : Promise.resolve(t || "Invalid email address")
            },
            url: function(e, t) {
                return /^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(e) ? Promise.resolve() : Promise.resolve(t || "Invalid URL")
            }
        };

    function lt(e) {
        var t, n;
        (t = e).inputValidator || Object.keys(st).forEach((function(e) {
                t.input === e && (t.inputValidator = st[e])
            })), e.showLoaderOnConfirm && !e.preConfirm && B("showLoaderOnConfirm is set to true, but preConfirm is not defined.\nshowLoaderOnConfirm should be used together with preConfirm, see usage example:\nhttps://sweetalert2.github.io/#ajax-request"), e.animation = U(e.animation), (n = e).target && ("string" != typeof n.target || document.querySelector(n.target)) && ("string" == typeof n.target || n.target.appendChild) || (B('Target parameter is not valid, defaulting to "body"'), n.target = "body"), "string" == typeof e.title && (e.title = e.title.split("\n").join("<br />")),
            function(e) {
                var t, n, i, r, o, a, s, l, c, u, d, h, f, p, g, m = !!(t = G()) && (t.parentNode.removeChild(t), pe([document.documentElement, document.body], [Y["no-backdrop"], Y["toast-shown"], Y["has-column"]]), !0);
                ce() ? q("SweetAlert2 requires document to initialize") : ((n = document.createElement("div")).className = Y.container, m && fe(n, Y["no-transition"]), j(n, ve), (i = "string" == typeof(r = e.target) ? document.querySelector(r) : r).appendChild(n), o = e, (a = Q()).setAttribute("role", o.toast ? "alert" : "dialog"), a.setAttribute("aria-live", o.toast ? "polite" : "assertive"), o.toast || a.setAttribute("aria-modal", "true"), s = i, "rtl" === window.getComputedStyle(s).direction && fe(G(), Y.rtl), l = k(), c = ge(l, Y.input), u = ge(l, Y.file), d = l.querySelector(".".concat(Y.range, " input")), h = l.querySelector(".".concat(Y.range, " output")), f = ge(l, Y.select), p = l.querySelector(".".concat(Y.checkbox, " input")), g = ge(l, Y.textarea), c.oninput = ue, u.onchange = ue, f.onchange = ue, p.onchange = ue, g.oninput = ue, d.oninput = function(e) {
                    ue(e), h.value = d.value
                }, d.onchange = function(e) {
                    ue(e), d.nextSibling.value = d.value
                })
            }(e)
    }

    function ct(e) {
        var t, n = Q();
        e.target === n && (t = G(), n.removeEventListener(we, ct), t.style.overflowY = "auto")
    }

    function ut(e, t) {
        e.closePopup({
            value: t
        })
    }

    function dt(e, t, n) {
        var i = F();
        if (0 < i.length) return (t += n) === i.length ? t = 0 : -1 === t && (t = i.length - 1), i[t].focus();
        Q().focus()
    }
    var ht, ft = function(e, t) {
            we && se(t) ? (e.style.overflowY = "hidden", t.addEventListener(we, ct)) : e.style.overflowY = "auto"
        },
        pt = function(e, t, n) {
            var i;
            (/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream || "MacIntel" === navigator.platform && 1 < navigator.maxTouchPoints) && !$(document.body, Y.iosfix) && (i = document.body.scrollTop, document.body.style.top = "".concat(-1 * i, "px"), fe(document.body, Y.iosfix), function() {
                var e, t = G();
                t.ontouchstart = function(t) {
                    e = Je(t.target)
                }, t.ontouchmove = function(t) {
                    e && (t.preventDefault(), t.stopPropagation())
                }
            }(), navigator.userAgent.match(/(CriOS|FxiOS|EdgiOS|YaBrowser|UCBrowser)/i) || Q().scrollHeight > window.innerHeight - 44 && (G().style.paddingBottom = "".concat(44, "px"))), "undefined" != typeof window && Qe() && (Ke(), window.addEventListener("resize", Ke)), t && "hidden" !== n && null === J.previousBodyPadding && document.body.scrollHeight > window.innerHeight && (J.previousBodyPadding = parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")), document.body.style.paddingRight = "".concat(J.previousBodyPadding + function() {
                var e = document.createElement("div");
                e.className = Y["scrollbar-measure"], document.body.appendChild(e);
                var t = e.getBoundingClientRect().width - e.clientWidth;
                return document.body.removeChild(e), t
            }(), "px")), setTimeout((function() {
                e.scrollTop = 0
            }))
        },
        gt = function(e, t, n) {
            fe(e, n.showClass.backdrop), ie(t), fe(t, n.showClass.popup), fe([document.documentElement, document.body], Y.shown), n.heightAuto && n.backdrop && !n.toast && fe([document.documentElement, document.body], Y["height-auto"])
        },
        mt = function(t, n) {
            function i(e) {
                return yt[n.input](r, bt(e), n)
            }
            var r = k();
            p(n.inputOptions) || m(n.inputOptions) ? (je(), g(n.inputOptions).then((function(e) {
                t.hideLoading(), i(e)
            }))) : "object" === e(n.inputOptions) ? i(n.inputOptions) : q("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(e(n.inputOptions)))
        },
        vt = function(e, t) {
            var n = e.getInput();
            re(n), g(t.inputValue).then((function(i) {
                n.value = "number" === t.input ? parseFloat(i) || 0 : "".concat(i), ie(n), n.focus(), e.hideLoading()
            })).catch((function(t) {
                q("Error in inputValue promise: ".concat(t)), n.value = "", ie(n), n.focus(), e.hideLoading()
            }))
        },
        yt = {
            select: function(e, t, n) {
                function i(e, t, i) {
                    var r = document.createElement("option");
                    r.value = i, j(r, t), n.inputValue.toString() === i.toString() && (r.selected = !0), e.appendChild(r)
                }
                var r = ge(e, Y.select);
                t.forEach((function(e) {
                    var t, n = e[0],
                        o = e[1];
                    Array.isArray(o) ? ((t = document.createElement("optgroup")).label = n, t.disabled = !1, r.appendChild(t), o.forEach((function(e) {
                        return i(t, e[1], e[0])
                    }))) : i(r, o, n)
                })), r.focus()
            },
            radio: function(e, t, n) {
                var i = ge(e, Y.radio);
                t.forEach((function(e) {
                    var t = e[0],
                        r = e[1],
                        o = document.createElement("input"),
                        a = document.createElement("label");
                    o.type = "radio", o.name = Y.radio, o.value = t, n.inputValue.toString() === t.toString() && (o.checked = !0);
                    var s = document.createElement("span");
                    j(s, r), s.className = Y.label, a.appendChild(o), a.appendChild(s), i.appendChild(a)
                }));
                var r = i.querySelectorAll("input");
                r.length && r[0].focus()
            }
        },
        bt = function t(n) {
            var i = [];
            return "undefined" != typeof Map && n instanceof Map ? n.forEach((function(n, r) {
                var o = n;
                "object" === e(o) && (o = t(o)), i.push([r, o])
            })) : Object.keys(n).forEach((function(r) {
                var o = n[r];
                "object" === e(o) && (o = t(o)), i.push([r, o])
            })), i
        },
        wt = function(e, t) {
            var n = function(e, t) {
                var n = e.getInput();
                if (!n) return null;
                switch (t.input) {
                    case "checkbox":
                        return function(e) {
                            return e.checked ? 1 : 0
                        }(n);
                    case "radio":
                        return function(e) {
                            return e.checked ? e.value : null
                        }(n);
                    case "file":
                        return function(e) {
                            return e.files.length ? null !== e.getAttribute("multiple") ? e.files : e.files[0] : null
                        }(n);
                    default:
                        return t.inputAutoTrim ? n.value.trim() : n.value
                }
            }(e, t);
            t.inputValidator ? (e.disableInput(), Promise.resolve().then((function() {
                return g(t.inputValidator(n, t.validationMessage))
            })).then((function(i) {
                e.enableButtons(), e.enableInput(), i ? e.showValidationMessage(i) : xt(e, t, n)
            }))) : e.getInput().checkValidity() ? xt(e, t, n) : (e.enableButtons(), e.showValidationMessage(t.validationMessage))
        },
        xt = function(e, t, n) {
            t.showLoaderOnConfirm && je(), t.preConfirm ? (e.resetValidationMessage(), Promise.resolve().then((function() {
                return g(t.preConfirm(n, t.validationMessage))
            })).then((function(t) {
                me(D()) || !1 === t ? e.hideLoading() : ut(e, void 0 === t ? n : t)
            }))) : ut(e, n)
        },
        _t = ["ArrowLeft", "ArrowRight", "ArrowUp", "ArrowDown", "Left", "Right", "Up", "Down"],
        Ct = ["Escape", "Esc"],
        kt = function(e, t, n) {
            var i = Ce.innerParams.get(e);
            i.stopKeydownPropagation && t.stopPropagation(), "Enter" === t.key ? St(e, t, i) : "Tab" === t.key ? Tt(t, i) : -1 !== _t.indexOf(t.key) ? Dt() : -1 !== Ct.indexOf(t.key) && Et(t, i, n)
        },
        St = function(e, t, n) {
            if (!t.isComposing && t.target && e.getInput() && t.target.outerHTML === e.getInput().outerHTML) {
                if (-1 !== ["textarea", "file"].indexOf(n.input)) return;
                Oe(), t.preventDefault()
            }
        },
        Tt = function(e) {
            for (var t = e.target, n = F(), i = -1, r = 0; r < n.length; r++)
                if (t === n[r]) {
                    i = r;
                    break
                }
            e.shiftKey ? dt(0, i, -1) : dt(0, i, 1), e.stopPropagation(), e.preventDefault()
        },
        Dt = function() {
            var e = E(),
                t = A();
            document.activeElement === e && me(t) ? t.focus() : document.activeElement === t && me(e) && e.focus()
        },
        Et = function(e, t, n) {
            U(t.allowEscapeKey) && (e.preventDefault(), n(V.esc))
        },
        At = function(e, t, n) {
            t.popup.onclick = function() {
                var t = Ce.innerParams.get(e);
                t.showConfirmButton || t.showCancelButton || t.showCloseButton || t.input || n(V.close)
            }
        },
        Mt = !1,
        Ot = function(e) {
            e.popup.onmousedown = function() {
                e.container.onmouseup = function(t) {
                    e.container.onmouseup = void 0, t.target === e.container && (Mt = !0)
                }
            }
        },
        It = function(e) {
            e.container.onmousedown = function() {
                e.popup.onmouseup = function(t) {
                    e.popup.onmouseup = void 0, t.target !== e.popup && !e.popup.contains(t.target) || (Mt = !0)
                }
            }
        },
        Pt = function(e, t, n) {
            t.container.onclick = function(i) {
                var r = Ce.innerParams.get(e);
                Mt ? Mt = !1 : i.target === t.container && U(r.allowOutsideClick) && n(V.backdrop)
            }
        },
        Lt = function() {
            document.activeElement && "function" == typeof document.activeElement.blur && document.activeElement.blur()
        },
        Ft = function(e) {
            for (var t in e) e[t] = new WeakMap
        },
        Nt = Object.freeze({
            hideLoading: Ge,
            disableLoading: Ge,
            getInput: function(e) {
                var t = Ce.innerParams.get(e || this),
                    n = Ce.domCache.get(e || this);
                return n ? Z(n.content, t.input) : null
            },
            close: tt,
            closePopup: tt,
            closeModal: tt,
            closeToast: tt,
            enableButtons: function() {
                rt(this, ["confirmButton", "cancelButton"], !1)
            },
            disableButtons: function() {
                rt(this, ["confirmButton", "cancelButton"], !0)
            },
            enableInput: function() {
                return ot(this.getInput(), !1)
            },
            disableInput: function() {
                return ot(this.getInput(), !0)
            },
            showValidationMessage: function(e) {
                var t = Ce.domCache.get(this);
                j(t.validationMessage, e);
                var n = window.getComputedStyle(t.popup);
                t.validationMessage.style.marginLeft = "-".concat(n.getPropertyValue("padding-left")), t.validationMessage.style.marginRight = "-".concat(n.getPropertyValue("padding-right")), ie(t.validationMessage);
                var i = this.getInput();
                i && (i.setAttribute("aria-invalid", !0), i.setAttribute("aria-describedBy", Y["validation-message"]), ee(i), fe(i, Y.inputerror))
            },
            resetValidationMessage: function() {
                var e = Ce.domCache.get(this);
                e.validationMessage && re(e.validationMessage);
                var t = this.getInput();
                t && (t.removeAttribute("aria-invalid"), t.removeAttribute("aria-describedBy"), pe(t, Y.inputerror))
            },
            getProgressSteps: function() {
                return Ce.domCache.get(this).progressSteps
            },
            _main: function(e) {
                (function(e) {
                    for (var t in e) He(r = t) || B('Unknown parameter "'.concat(r, '"')), e.toast && (i = t, -1 !== Ye.indexOf(i) && B('The parameter "'.concat(i, '" is incompatible with toasts'))), Be(n = t) && f(n, Be(n));
                    var n, i, r
                })(e), qe.currentInstance && qe.currentInstance._destroy(), qe.currentInstance = this;
                var t = function(e) {
                    var t = r({}, We.showClass, e.showClass),
                        n = r({}, We.hideClass, e.hideClass),
                        i = r({}, We, e);
                    return i.showClass = t, i.hideClass = n, !1 === e.animation && (i.showClass = {
                        popup: "swal2-noanimation",
                        backdrop: "swal2-noanimation"
                    }, i.hideClass = {}), i
                }(e);
                lt(t), Object.freeze(t), qe.timeout && (qe.timeout.stop(), delete qe.timeout), clearTimeout(qe.restoreFocusTimeout);
                var n = function(e) {
                    var t = {
                        popup: Q(),
                        container: G(),
                        content: k(),
                        actions: M(),
                        confirmButton: E(),
                        cancelButton: A(),
                        closeButton: L(),
                        validationMessage: D(),
                        progressSteps: T()
                    };
                    return Ce.domCache.set(e, t), t
                }(this);
                return Me(this, t), Ce.innerParams.set(this, t),
                    function(e, t, n) {
                        return new Promise((function(i) {
                            var r = function(t) {
                                e.closePopup({
                                    dismiss: t
                                })
                            };
                            Ze.swalPromiseResolve.set(e, i), t.confirmButton.onclick = function() {
                                    return function(e, t) {
                                        e.disableButtons(), t.input ? wt(e, t) : xt(e, t, !0)
                                    }(e, n)
                                }, t.cancelButton.onclick = function() {
                                    return function(e, t) {
                                        e.disableButtons(), t(V.cancel)
                                    }(e, r)
                                }, t.closeButton.onclick = function() {
                                    return r(V.close)
                                },
                                function(e, t, n) {
                                    Ce.innerParams.get(e).toast ? At(e, t, n) : (Ot(t), It(t), Pt(e, t, n))
                                }(e, t, r),
                                function(e, t, n, i) {
                                    t.keydownTarget && t.keydownHandlerAdded && (t.keydownTarget.removeEventListener("keydown", t.keydownHandler, {
                                        capture: t.keydownListenerCapture
                                    }), t.keydownHandlerAdded = !1), n.toast || (t.keydownHandler = function(t) {
                                        return kt(e, t, i)
                                    }, t.keydownTarget = n.keydownListenerCapture ? window : Q(), t.keydownListenerCapture = n.keydownListenerCapture, t.keydownTarget.addEventListener("keydown", t.keydownHandler, {
                                        capture: t.keydownListenerCapture
                                    }), t.keydownHandlerAdded = !0)
                                }(e, qe, n, r), n.toast && (n.input || n.footer || n.showCloseButton) ? fe(document.body, Y["toast-column"]) : pe(document.body, Y["toast-column"]),
                                function(e, t) {
                                    "select" === t.input || "radio" === t.input ? mt(e, t) : -1 !== ["text", "email", "number", "tel", "textarea"].indexOf(t.input) && (p(t.inputValue) || m(t.inputValue)) && vt(e, t)
                                }(e, n),
                                function(e) {
                                    var t = G(),
                                        n = Q();
                                    "function" == typeof e.onBeforeOpen && e.onBeforeOpen(n);
                                    var i = window.getComputedStyle(document.body).overflowY;
                                    gt(t, n, e), ft(t, n), N() && (pt(t, e.scrollbarPadding, i), h(document.body.children).forEach((function(e) {
                                        e === G() || function(e, t) {
                                            if ("function" == typeof e.contains) return e.contains(t)
                                        }(e, G()) || (e.hasAttribute("aria-hidden") && e.setAttribute("data-previous-aria-hidden", e.getAttribute("aria-hidden")), e.setAttribute("aria-hidden", "true"))
                                    }))), K() || qe.previousActiveElement || (qe.previousActiveElement = document.activeElement), "function" == typeof e.onOpen && setTimeout((function() {
                                        return e.onOpen(n)
                                    })), pe(t, Y["no-transition"])
                                }(n),
                                function(e, t, n) {
                                    var i = P();
                                    re(i), t.timer && (e.timeout = new at((function() {
                                        n("timer"), delete e.timeout
                                    }), t.timer), t.timerProgressBar && (ie(i), setTimeout((function() {
                                        e.timeout.running && le(t.timer)
                                    }))))
                                }(qe, n, r),
                                function(e, t) {
                                    if (!t.toast) U(t.allowEnterKey) ? t.focusCancel && me(e.cancelButton) ? e.cancelButton.focus() : t.focusConfirm && me(e.confirmButton) ? e.confirmButton.focus() : dt(0, -1, 1) : Lt()
                                }(t, n), setTimeout((function() {
                                    t.container.scrollTop = 0
                                }))
                        }))
                    }(this, n, t)
            },
            update: function(e) {
                var t = Q(),
                    n = Ce.innerParams.get(this);
                if (!t || $(t, n.hideClass.popup)) return B("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.");
                var i = {};
                Object.keys(e).forEach((function(t) {
                    jt.isUpdatableParameter(t) ? i[t] = e[t] : B('Invalid parameter to update: "'.concat(t, '". Updatable params are listed here: https://github.com/sweetalert2/sweetalert2/blob/master/src/utils/params.js'))
                }));
                var o = r({}, n, i);
                Me(this, o), Ce.innerParams.set(this, o), Object.defineProperties(this, {
                    params: {
                        value: r({}, this.params, e),
                        writable: !1,
                        enumerable: !0
                    }
                })
            },
            _destroy: function() {
                var e = Ce.domCache.get(this),
                    t = Ce.innerParams.get(this);
                t && (e.popup && qe.swalCloseEventFinishedCallback && (qe.swalCloseEventFinishedCallback(), delete qe.swalCloseEventFinishedCallback), qe.deferDisposalTimer && (clearTimeout(qe.deferDisposalTimer), delete qe.deferDisposalTimer), "function" == typeof t.onDestroy && t.onDestroy(), delete this.params, delete qe.keydownHandler, delete qe.keydownTarget, Ft(Ce), Ft(Ze))
            }
        }),
        Rt = function() {
            function e() {
                if (t(this, e), "undefined" != typeof window) {
                    "undefined" == typeof Promise && q("This package requires a Promise library, please include a shim to enable it in this browser (See: https://github.com/sweetalert2/sweetalert2/wiki/Migration-from-SweetAlert-to-SweetAlert2#1-ie-support)"), ht = this;
                    for (var n = arguments.length, i = new Array(n), r = 0; r < n; r++) i[r] = arguments[r];
                    var o = Object.freeze(this.constructor.argsToParams(i));
                    Object.defineProperties(this, {
                        params: {
                            value: o,
                            writable: !1,
                            enumerable: !0,
                            configurable: !0
                        }
                    });
                    var a = this._main(this.params);
                    Ce.promise.set(this, a)
                }
            }
            return i(e, [{
                key: "then",
                value: function(e) {
                    return Ce.promise.get(this).then(e)
                }
            }, {
                key: "finally",
                value: function(e) {
                    return Ce.promise.get(this).finally(e)
                }
            }]), e
        }();
    r(Rt.prototype, Nt), r(Rt, Xe), Object.keys(Nt).forEach((function(e) {
        Rt[e] = function() {
            if (ht) return ht[e].apply(ht, arguments)
        }
    })), Rt.DismissReason = V, Rt.version = "9.17.2";
    var jt = Rt;
    return jt.default = jt
})), void 0 !== this && this.Sweetalert2 && (this.swal = this.sweetAlert = this.Swal = this.SweetAlert = this.Sweetalert2),
    function(e) {
        e(["jquery"], (function(e) {
            return function() {
                function t(t, n) {
                    return t || (t = a()), (l = e("#" + t.containerId)).length || n && (l = function(t) {
                        return (l = e("<div/>").attr("id", t.containerId).addClass(t.positionClass)).appendTo(e(t.target)), l
                    }(t)), l
                }

                function n(t) {
                    for (var n = l.children(), r = n.length - 1; r >= 0; r--) i(e(n[r]), t)
                }

                function i(t, n, i) {
                    var r = !(!i || !i.force) && i.force;
                    return !(!t || !r && 0 !== e(":focus", t).length || (t[n.hideMethod]({
                        duration: n.hideDuration,
                        easing: n.hideEasing,
                        complete: function() {
                            s(t)
                        }
                    }), 0))
                }

                function r(e) {
                    c && c(e)
                }

                function o(n) {
                    function i(e) {
                        return null == e && (e = ""), e.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/'/g, "&#39;").replace(/</g, "&lt;").replace(/>/g, "&gt;")
                    }

                    function o(t) {
                        var n = t && !1 !== p.closeMethod ? p.closeMethod : p.hideMethod,
                            i = t && !1 !== p.closeDuration ? p.closeDuration : p.hideDuration,
                            o = t && !1 !== p.closeEasing ? p.closeEasing : p.hideEasing;
                        if (!e(":focus", v).length || t) return clearTimeout(_.intervalId), v[n]({
                            duration: i,
                            easing: o,
                            complete: function() {
                                s(v), clearTimeout(m), p.onHidden && "hidden" !== C.state && p.onHidden(), C.state = "hidden", C.endTime = new Date, r(C)
                            }
                        })
                    }

                    function c() {
                        (p.timeOut > 0 || p.extendedTimeOut > 0) && (m = setTimeout(o, p.extendedTimeOut), _.maxHideTime = parseFloat(p.extendedTimeOut), _.hideEta = (new Date).getTime() + _.maxHideTime)
                    }

                    function h() {
                        clearTimeout(m), _.hideEta = 0, v.stop(!0, !0)[p.showMethod]({
                            duration: p.showDuration,
                            easing: p.showEasing
                        })
                    }

                    function f() {
                        var e = (_.hideEta - (new Date).getTime()) / _.maxHideTime * 100;
                        w.width(e + "%")
                    }
                    var p = a(),
                        g = n.iconClass || p.iconClass;
                    if (void 0 !== n.optionsOverride && (p = e.extend(p, n.optionsOverride), g = n.optionsOverride.iconClass || g), ! function(e, t) {
                            if (e.preventDuplicates) {
                                if (t.message === u) return !0;
                                u = t.message
                            }
                            return !1
                        }(p, n)) {
                        d++, l = t(p, !0);
                        var m = null,
                            v = e("<div/>"),
                            y = e("<div/>"),
                            b = e("<div/>"),
                            w = e("<div/>"),
                            x = e(p.closeHtml),
                            _ = {
                                intervalId: null,
                                hideEta: null,
                                maxHideTime: null
                            },
                            C = {
                                toastId: d,
                                state: "visible",
                                startTime: new Date,
                                options: p,
                                map: n
                            };
                        return n.iconClass && v.addClass(p.toastClass).addClass(g),
                            function() {
                                if (n.title) {
                                    var e = n.title;
                                    p.escapeHtml && (e = i(n.title)), y.append(e).addClass(p.titleClass), v.append(y)
                                }
                            }(),
                            function() {
                                if (n.message) {
                                    var e = n.message;
                                    p.escapeHtml && (e = i(n.message)), b.append(e).addClass(p.messageClass), v.append(b)
                                }
                            }(), p.closeButton && (x.addClass(p.closeClass).attr("role", "button"), v.prepend(x)), p.progressBar && (w.addClass(p.progressClass), v.prepend(w)), p.rtl && v.addClass("rtl"), p.newestOnTop ? l.prepend(v) : l.append(v),
                            function() {
                                var e = "";
                                switch (n.iconClass) {
                                    case "toast-success":
                                    case "toast-info":
                                        e = "polite";
                                        break;
                                    default:
                                        e = "assertive"
                                }
                                v.attr("aria-live", e)
                            }(), v.hide(), v[p.showMethod]({
                                duration: p.showDuration,
                                easing: p.showEasing,
                                complete: p.onShown
                            }), p.timeOut > 0 && (m = setTimeout(o, p.timeOut), _.maxHideTime = parseFloat(p.timeOut), _.hideEta = (new Date).getTime() + _.maxHideTime, p.progressBar && (_.intervalId = setInterval(f, 10))), p.closeOnHover && v.hover(h, c), !p.onclick && p.tapToDismiss && v.click(o), p.closeButton && x && x.click((function(e) {
                                e.stopPropagation ? e.stopPropagation() : void 0 !== e.cancelBubble && !0 !== e.cancelBubble && (e.cancelBubble = !0), p.onCloseClick && p.onCloseClick(e), o(!0)
                            })), p.onclick && v.click((function(e) {
                                p.onclick(e), o()
                            })), r(C), p.debug && console && console.log(C), v
                    }
                }

                function a() {
                    return e.extend({}, {
                        tapToDismiss: !0,
                        toastClass: "toast",
                        containerId: "toast-container",
                        debug: !1,
                        showMethod: "fadeIn",
                        showDuration: 300,
                        showEasing: "swing",
                        onShown: void 0,
                        hideMethod: "fadeOut",
                        hideDuration: 1e3,
                        hideEasing: "swing",
                        onHidden: void 0,
                        closeMethod: !1,
                        closeDuration: !1,
                        closeEasing: !1,
                        closeOnHover: !0,
                        extendedTimeOut: 1e3,
                        iconClasses: {
                            error: "toast-error",
                            info: "toast-info",
                            success: "toast-success",
                            warning: "toast-warning"
                        },
                        iconClass: "toast-info",
                        positionClass: "toast-top-right",
                        timeOut: 5e3,
                        titleClass: "toast-title",
                        messageClass: "toast-message",
                        escapeHtml: !1,
                        target: "body",
                        closeHtml: '<button type="button">&times;</button>',
                        closeClass: "toast-close-button",
                        newestOnTop: !0,
                        preventDuplicates: !1,
                        progressBar: !1,
                        progressClass: "toast-progress",
                        rtl: !1
                    }, f.options)
                }

                function s(e) {
                    l || (l = t()), e.is(":visible") || (e.remove(), e = null, 0 === l.children().length && (l.remove(), u = void 0))
                }
                var l, c, u, d = 0,
                    h = {
                        error: "error",
                        info: "info",
                        success: "success",
                        warning: "warning"
                    },
                    f = {
                        clear: function(e, r) {
                            var o = a();
                            l || t(o), i(e, o, r) || n(o)
                        },
                        remove: function(n) {
                            var i = a();
                            return l || t(i), n && 0 === e(":focus", n).length ? void s(n) : void(l.children().length && l.remove())
                        },
                        error: function(e, t, n) {
                            return o({
                                type: h.error,
                                iconClass: a().iconClasses.error,
                                message: e,
                                optionsOverride: n,
                                title: t
                            })
                        },
                        getContainer: t,
                        info: function(e, t, n) {
                            return o({
                                type: h.info,
                                iconClass: a().iconClasses.info,
                                message: e,
                                optionsOverride: n,
                                title: t
                            })
                        },
                        options: {},
                        subscribe: function(e) {
                            c = e
                        },
                        success: function(e, t, n) {
                            return o({
                                type: h.success,
                                iconClass: a().iconClasses.success,
                                message: e,
                                optionsOverride: n,
                                title: t
                            })
                        },
                        version: "2.1.4",
                        warning: function(e, t, n) {
                            return o({
                                type: h.warning,
                                iconClass: a().iconClasses.warning,
                                message: e,
                                optionsOverride: n,
                                title: t
                            })
                        }
                    };
                return f
            }()
        }))
    }("function" == typeof define && define.amd ? define : function(e, t) {
        "undefined" != typeof module && module.exports ? module.exports = t(require("jquery")) : window.toastr = t(window.jQuery)
    }),
    function(e) {
        "function" == typeof define && define.amd ? define(["jquery"], e) : "object" == typeof module && module.exports ? module.exports = e(require("jquery")) : e(jQuery)
    }((function(e) {
        e.extend(e.fn, {
            validate: function(t) {
                if (this.length) {
                    var n = e.data(this[0], "validator");
                    return n || (this.attr("novalidate", "novalidate"), n = new e.validator(t, this[0]), e.data(this[0], "validator", n), n.settings.onsubmit && (this.on("click.validate", ":submit", (function(t) {
                        n.submitButton = t.currentTarget, e(this).hasClass("cancel") && (n.cancelSubmit = !0), void 0 !== e(this).attr("formnovalidate") && (n.cancelSubmit = !0)
                    })), this.on("submit.validate", (function(t) {
                        function i() {
                            var i, r;
                            return n.submitButton && (n.settings.submitHandler || n.formSubmitted) && (i = e("<input type='hidden'/>").attr("name", n.submitButton.name).val(e(n.submitButton).val()).appendTo(n.currentForm)), !(n.settings.submitHandler && !n.settings.debug) || (r = n.settings.submitHandler.call(n, n.currentForm, t), i && i.remove(), void 0 !== r && r)
                        }
                        return n.settings.debug && t.preventDefault(), n.cancelSubmit ? (n.cancelSubmit = !1, i()) : n.form() ? n.pendingRequest ? (n.formSubmitted = !0, !1) : i() : (n.focusInvalid(), !1)
                    }))), n)
                }
                t && t.debug && window.console && console.warn("Nothing selected, can't validate, returning nothing.")
            },
            valid: function() {
                var t, n, i;
                return e(this[0]).is("form") ? t = this.validate().form() : (i = [], t = !0, n = e(this[0].form).validate(), this.each((function() {
                    (t = n.element(this) && t) || (i = i.concat(n.errorList))
                })), n.errorList = i), t
            },
            rules: function(t, n) {
                var i, r, o, a, s, l, c = this[0],
                    u = void 0 !== this.attr("contenteditable") && "false" !== this.attr("contenteditable");
                if (null != c && (!c.form && u && (c.form = this.closest("form")[0], c.name = this.attr("name")), null != c.form)) {
                    if (t) switch (i = e.data(c.form, "validator").settings, r = i.rules, o = e.validator.staticRules(c), t) {
                        case "add":
                            e.extend(o, e.validator.normalizeRule(n)), delete o.messages, r[c.name] = o, n.messages && (i.messages[c.name] = e.extend(i.messages[c.name], n.messages));
                            break;
                        case "remove":
                            return n ? (l = {}, e.each(n.split(/\s/), (function(e, t) {
                                l[t] = o[t], delete o[t]
                            })), l) : (delete r[c.name], o)
                    }
                    return (a = e.validator.normalizeRules(e.extend({}, e.validator.classRules(c), e.validator.attributeRules(c), e.validator.dataRules(c), e.validator.staticRules(c)), c)).required && (s = a.required, delete a.required, a = e.extend({
                        required: s
                    }, a)), a.remote && (s = a.remote, delete a.remote, a = e.extend(a, {
                        remote: s
                    })), a
                }
            }
        });
        var t = function(e) {
            return e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "")
        };
        e.extend(e.expr.pseudos || e.expr[":"], {
            blank: function(n) {
                return !t("" + e(n).val())
            },
            filled: function(n) {
                var i = e(n).val();
                return null !== i && !!t("" + i)
            },
            unchecked: function(t) {
                return !e(t).prop("checked")
            }
        }), e.validator = function(t, n) {
            this.settings = e.extend(!0, {}, e.validator.defaults, t), this.currentForm = n, this.init()
        }, e.validator.format = function(t, n) {
            return 1 === arguments.length ? function() {
                var n = e.makeArray(arguments);
                return n.unshift(t), e.validator.format.apply(this, n)
            } : (void 0 === n || (arguments.length > 2 && n.constructor !== Array && (n = e.makeArray(arguments).slice(1)), n.constructor !== Array && (n = [n]), e.each(n, (function(e, n) {
                t = t.replace(new RegExp("\\{" + e + "\\}", "g"), (function() {
                    return n
                }))
            }))), t)
        }, e.extend(e.validator, {
            defaults: {
                messages: {},
                groups: {},
                rules: {},
                errorClass: "error",
                pendingClass: "pending",
                validClass: "valid",
                errorElement: "label",
                focusCleanup: !1,
                focusInvalid: !0,
                errorContainer: e([]),
                errorLabelContainer: e([]),
                onsubmit: !0,
                ignore: ":hidden",
                ignoreTitle: !1,
                onfocusin: function(e) {
                    this.lastActive = e, this.settings.focusCleanup && (this.settings.unhighlight && this.settings.unhighlight.call(this, e, this.settings.errorClass, this.settings.validClass), this.hideThese(this.errorsFor(e)))
                },
                onfocusout: function(e) {
                    this.checkable(e) || !(e.name in this.submitted) && this.optional(e) || this.element(e)
                },
                onkeyup: function(t, n) {
                    9 === n.which && "" === this.elementValue(t) || -1 !== e.inArray(n.keyCode, [16, 17, 18, 20, 35, 36, 37, 38, 39, 40, 45, 144, 225]) || (t.name in this.submitted || t.name in this.invalid) && this.element(t)
                },
                onclick: function(e) {
                    e.name in this.submitted ? this.element(e) : e.parentNode.name in this.submitted && this.element(e.parentNode)
                },
                highlight: function(t, n, i) {
                    "radio" === t.type ? this.findByName(t.name).addClass(n).removeClass(i) : e(t).addClass(n).removeClass(i)
                },
                unhighlight: function(t, n, i) {
                    "radio" === t.type ? this.findByName(t.name).removeClass(n).addClass(i) : e(t).removeClass(n).addClass(i)
                }
            },
            setDefaults: function(t) {
                e.extend(e.validator.defaults, t)
            },
            messages: {
                required: "This field is required.",
                remote: "Please fix this field.",
                email: "Please enter a valid email address.",
                url: "Please enter a valid URL.",
                date: "Please enter a valid date.",
                dateISO: "Please enter a valid date (ISO).",
                number: "Please enter a valid number.",
                digits: "Please enter only digits.",
                equalTo: "Please enter the same value again.",
                maxlength: e.validator.format("Please enter no more than {0} characters."),
                minlength: e.validator.format("Please enter at least {0} characters."),
                rangelength: e.validator.format("Please enter a value between {0} and {1} characters long."),
                range: e.validator.format("Please enter a value between {0} and {1}."),
                max: e.validator.format("Please enter a value less than or equal to {0}."),
                min: e.validator.format("Please enter a value greater than or equal to {0}."),
                step: e.validator.format("Please enter a multiple of {0}.")
            },
            autoCreateRanges: !1,
            prototype: {
                init: function() {
                    function t(t) {
                        var n = void 0 !== e(this).attr("contenteditable") && "false" !== e(this).attr("contenteditable");
                        if (!this.form && n && (this.form = e(this).closest("form")[0], this.name = e(this).attr("name")), i === this.form) {
                            var r = e.data(this.form, "validator"),
                                o = "on" + t.type.replace(/^validate/, ""),
                                a = r.settings;
                            a[o] && !e(this).is(a.ignore) && a[o].call(r, this, t)
                        }
                    }
                    this.labelContainer = e(this.settings.errorLabelContainer), this.errorContext = this.labelContainer.length && this.labelContainer || e(this.currentForm), this.containers = e(this.settings.errorContainer).add(this.settings.errorLabelContainer), this.submitted = {}, this.valueCache = {}, this.pendingRequest = 0, this.pending = {}, this.invalid = {}, this.reset();
                    var n, i = this.currentForm,
                        r = this.groups = {};
                    e.each(this.settings.groups, (function(t, n) {
                        "string" == typeof n && (n = n.split(/\s/)), e.each(n, (function(e, n) {
                            r[n] = t
                        }))
                    })), n = this.settings.rules, e.each(n, (function(t, i) {
                        n[t] = e.validator.normalizeRule(i)
                    })), e(this.currentForm).on("focusin.validate focusout.validate keyup.validate", ":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], [type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], [type='radio'], [type='checkbox'], [contenteditable], [type='button']", t).on("click.validate", "select, option, [type='radio'], [type='checkbox']", t), this.settings.invalidHandler && e(this.currentForm).on("invalid-form.validate", this.settings.invalidHandler)
                },
                form: function() {
                    return this.checkForm(), e.extend(this.submitted, this.errorMap), this.invalid = e.extend({}, this.errorMap), this.valid() || e(this.currentForm).triggerHandler("invalid-form", [this]), this.showErrors(), this.valid()
                },
                checkForm: function() {
                    this.prepareForm();
                    for (var e = 0, t = this.currentElements = this.elements(); t[e]; e++) this.check(t[e]);
                    return this.valid()
                },
                element: function(t) {
                    var n, i, r = this.clean(t),
                        o = this.validationTargetFor(r),
                        a = this,
                        s = !0;
                    return void 0 === o ? delete this.invalid[r.name] : (this.prepareElement(o), this.currentElements = e(o), (i = this.groups[o.name]) && e.each(this.groups, (function(e, t) {
                        t === i && e !== o.name && ((r = a.validationTargetFor(a.clean(a.findByName(e)))) && r.name in a.invalid && (a.currentElements.push(r), s = a.check(r) && s))
                    })), n = !1 !== this.check(o), s = s && n, this.invalid[o.name] = !n, this.numberOfInvalids() || (this.toHide = this.toHide.add(this.containers)), this.showErrors(), e(t).attr("aria-invalid", !n)), s
                },
                showErrors: function(t) {
                    if (t) {
                        var n = this;
                        e.extend(this.errorMap, t), this.errorList = e.map(this.errorMap, (function(e, t) {
                            return {
                                message: e,
                                element: n.findByName(t)[0]
                            }
                        })), this.successList = e.grep(this.successList, (function(e) {
                            return !(e.name in t)
                        }))
                    }
                    this.settings.showErrors ? this.settings.showErrors.call(this, this.errorMap, this.errorList) : this.defaultShowErrors()
                },
                resetForm: function() {
                    e.fn.resetForm && e(this.currentForm).resetForm(), this.invalid = {}, this.submitted = {}, this.prepareForm(), this.hideErrors();
                    var t = this.elements().removeData("previousValue").removeAttr("aria-invalid");
                    this.resetElements(t)
                },
                resetElements: function(e) {
                    var t;
                    if (this.settings.unhighlight)
                        for (t = 0; e[t]; t++) this.settings.unhighlight.call(this, e[t], this.settings.errorClass, ""), this.findByName(e[t].name).removeClass(this.settings.validClass);
                    else e.removeClass(this.settings.errorClass).removeClass(this.settings.validClass)
                },
                numberOfInvalids: function() {
                    return this.objectLength(this.invalid)
                },
                objectLength: function(e) {
                    var t, n = 0;
                    for (t in e) void 0 !== e[t] && null !== e[t] && !1 !== e[t] && n++;
                    return n
                },
                hideErrors: function() {
                    this.hideThese(this.toHide)
                },
                hideThese: function(e) {
                    e.not(this.containers).text(""), this.addWrapper(e).hide()
                },
                valid: function() {
                    return 0 === this.size()
                },
                size: function() {
                    return this.errorList.length
                },
                focusInvalid: function() {
                    if (this.settings.focusInvalid) try {
                        e(this.findLastActive() || this.errorList.length && this.errorList[0].element || []).filter(":visible").trigger("focus").trigger("focusin")
                    } catch (e) {}
                },
                findLastActive: function() {
                    var t = this.lastActive;
                    return t && 1 === e.grep(this.errorList, (function(e) {
                        return e.element.name === t.name
                    })).length && t
                },
                elements: function() {
                    var t = this,
                        n = {};
                    return e(this.currentForm).find("input, select, textarea, [contenteditable]").not(":submit, :reset, :image, :disabled").not(this.settings.ignore).filter((function() {
                        var i = this.name || e(this).attr("name"),
                            r = void 0 !== e(this).attr("contenteditable") && "false" !== e(this).attr("contenteditable");
                        return !i && t.settings.debug && window.console && console.error("%o has no name assigned", this), r && (this.form = e(this).closest("form")[0], this.name = i), !(this.form !== t.currentForm || i in n || !t.objectLength(e(this).rules()) || (n[i] = !0, 0))
                    }))
                },
                clean: function(t) {
                    return e(t)[0]
                },
                errors: function() {
                    var t = this.settings.errorClass.split(" ").join(".");
                    return e(this.settings.errorElement + "." + t, this.errorContext)
                },
                resetInternals: function() {
                    this.successList = [], this.errorList = [], this.errorMap = {}, this.toShow = e([]), this.toHide = e([])
                },
                reset: function() {
                    this.resetInternals(), this.currentElements = e([])
                },
                prepareForm: function() {
                    this.reset(), this.toHide = this.errors().add(this.containers)
                },
                prepareElement: function(e) {
                    this.reset(), this.toHide = this.errorsFor(e)
                },
                elementValue: function(t) {
                    var n, i, r = e(t),
                        o = t.type,
                        a = void 0 !== r.attr("contenteditable") && "false" !== r.attr("contenteditable");
                    return "radio" === o || "checkbox" === o ? this.findByName(t.name).filter(":checked").val() : "number" === o && void 0 !== t.validity ? t.validity.badInput ? "NaN" : r.val() : (n = a ? r.text() : r.val(), "file" === o ? "C:\\fakepath\\" === n.substr(0, 12) ? n.substr(12) : (i = n.lastIndexOf("/")) >= 0 ? n.substr(i + 1) : (i = n.lastIndexOf("\\")) >= 0 ? n.substr(i + 1) : n : "string" == typeof n ? n.replace(/\r/g, "") : n)
                },
                check: function(t) {
                    t = this.validationTargetFor(this.clean(t));
                    var n, i, r, o, a = e(t).rules(),
                        s = e.map(a, (function(e, t) {
                            return t
                        })).length,
                        l = !1,
                        c = this.elementValue(t);
                    for (i in "function" == typeof a.normalizer ? o = a.normalizer : "function" == typeof this.settings.normalizer && (o = this.settings.normalizer), o && (c = o.call(t, c), delete a.normalizer), a) {
                        r = {
                            method: i,
                            parameters: a[i]
                        };
                        try {
                            if ("dependency-mismatch" === (n = e.validator.methods[i].call(this, c, t, r.parameters)) && 1 === s) {
                                l = !0;
                                continue
                            }
                            if (l = !1, "pending" === n) return void(this.toHide = this.toHide.not(this.errorsFor(t)));
                            if (!n) return this.formatAndAdd(t, r), !1
                        } catch (e) {
                            throw this.settings.debug && window.console && console.log("Exception occurred when checking element " + t.id + ", check the '" + r.method + "' method.", e), e instanceof TypeError && (e.message += ".  Exception occurred when checking element " + t.id + ", check the '" + r.method + "' method."), e
                        }
                    }
                    if (!l) return this.objectLength(a) && this.successList.push(t), !0
                },
                customDataMessage: function(t, n) {
                    return e(t).data("msg" + n.charAt(0).toUpperCase() + n.substring(1).toLowerCase()) || e(t).data("msg")
                },
                customMessage: function(e, t) {
                    var n = this.settings.messages[e];
                    return n && (n.constructor === String ? n : n[t])
                },
                findDefined: function() {
                    for (var e = 0; e < arguments.length; e++)
                        if (void 0 !== arguments[e]) return arguments[e]
                },
                defaultMessage: function(t, n) {
                    "string" == typeof n && (n = {
                        method: n
                    });
                    var i = this.findDefined(this.customMessage(t.name, n.method), this.customDataMessage(t, n.method), !this.settings.ignoreTitle && t.title || void 0, e.validator.messages[n.method], "<strong>Warning: No message defined for " + t.name + "</strong>"),
                        r = /\$?\{(\d+)\}/g;
                    return "function" == typeof i ? i = i.call(this, n.parameters, t) : r.test(i) && (i = e.validator.format(i.replace(r, "{$1}"), n.parameters)), i
                },
                formatAndAdd: function(e, t) {
                    var n = this.defaultMessage(e, t);
                    this.errorList.push({
                        message: n,
                        element: e,
                        method: t.method
                    }), this.errorMap[e.name] = n, this.submitted[e.name] = n
                },
                addWrapper: function(e) {
                    return this.settings.wrapper && (e = e.add(e.parent(this.settings.wrapper))), e
                },
                defaultShowErrors: function() {
                    var e, t, n;
                    for (e = 0; this.errorList[e]; e++) n = this.errorList[e], this.settings.highlight && this.settings.highlight.call(this, n.element, this.settings.errorClass, this.settings.validClass), this.showLabel(n.element, n.message);
                    if (this.errorList.length && (this.toShow = this.toShow.add(this.containers)), this.settings.success)
                        for (e = 0; this.successList[e]; e++) this.showLabel(this.successList[e]);
                    if (this.settings.unhighlight)
                        for (e = 0, t = this.validElements(); t[e]; e++) this.settings.unhighlight.call(this, t[e], this.settings.errorClass, this.settings.validClass);
                    this.toHide = this.toHide.not(this.toShow), this.hideErrors(), this.addWrapper(this.toShow).show()
                },
                validElements: function() {
                    return this.currentElements.not(this.invalidElements())
                },
                invalidElements: function() {
                    return e(this.errorList).map((function() {
                        return this.element
                    }))
                },
                showLabel: function(t, n) {
                    var i, r, o, a, s = this.errorsFor(t),
                        l = this.idOrName(t),
                        c = e(t).attr("aria-describedby");
                    s.length ? (s.removeClass(this.settings.validClass).addClass(this.settings.errorClass), s.html(n)) : (i = s = e("<" + this.settings.errorElement + ">").attr("id", l + "-error").addClass(this.settings.errorClass).html(n || ""), this.settings.wrapper && (i = s.hide().show().wrap("<" + this.settings.wrapper + "/>").parent()), this.labelContainer.length ? this.labelContainer.append(i) : this.settings.errorPlacement ? this.settings.errorPlacement.call(this, i, e(t)) : i.insertAfter(t), s.is("label") ? s.attr("for", l) : 0 === s.parents("label[for='" + this.escapeCssMeta(l) + "']").length && (o = s.attr("id"), c ? c.match(new RegExp("\\b" + this.escapeCssMeta(o) + "\\b")) || (c += " " + o) : c = o, e(t).attr("aria-describedby", c), (r = this.groups[t.name]) && (a = this, e.each(a.groups, (function(t, n) {
                        n === r && e("[name='" + a.escapeCssMeta(t) + "']", a.currentForm).attr("aria-describedby", s.attr("id"))
                    }))))), !n && this.settings.success && (s.text(""), "string" == typeof this.settings.success ? s.addClass(this.settings.success) : this.settings.success(s, t)), this.toShow = this.toShow.add(s)
                },
                errorsFor: function(t) {
                    var n = this.escapeCssMeta(this.idOrName(t)),
                        i = e(t).attr("aria-describedby"),
                        r = "label[for='" + n + "'], label[for='" + n + "'] *";
                    return i && (r = r + ", #" + this.escapeCssMeta(i).replace(/\s+/g, ", #")), this.errors().filter(r)
                },
                escapeCssMeta: function(e) {
                    return e.replace(/([\\!"#$%&'()*+,.\/:;<=>?@\[\]^`{|}~])/g, "\\$1")
                },
                idOrName: function(e) {
                    return this.groups[e.name] || (this.checkable(e) ? e.name : e.id || e.name)
                },
                validationTargetFor: function(t) {
                    return this.checkable(t) && (t = this.findByName(t.name)), e(t).not(this.settings.ignore)[0]
                },
                checkable: function(e) {
                    return /radio|checkbox/i.test(e.type)
                },
                findByName: function(t) {
                    return e(this.currentForm).find("[name='" + this.escapeCssMeta(t) + "']")
                },
                getLength: function(t, n) {
                    switch (n.nodeName.toLowerCase()) {
                        case "select":
                            return e("option:selected", n).length;
                        case "input":
                            if (this.checkable(n)) return this.findByName(n.name).filter(":checked").length
                    }
                    return t.length
                },
                depend: function(e, t) {
                    return !this.dependTypes[typeof e] || this.dependTypes[typeof e](e, t)
                },
                dependTypes: {
                    boolean: function(e) {
                        return e
                    },
                    string: function(t, n) {
                        return !!e(t, n.form).length
                    },
                    function: function(e, t) {
                        return e(t)
                    }
                },
                optional: function(t) {
                    var n = this.elementValue(t);
                    return !e.validator.methods.required.call(this, n, t) && "dependency-mismatch"
                },
                startRequest: function(t) {
                    this.pending[t.name] || (this.pendingRequest++, e(t).addClass(this.settings.pendingClass), this.pending[t.name] = !0)
                },
                stopRequest: function(t, n) {
                    this.pendingRequest--, this.pendingRequest < 0 && (this.pendingRequest = 0), delete this.pending[t.name], e(t).removeClass(this.settings.pendingClass), n && 0 === this.pendingRequest && this.formSubmitted && this.form() ? (e(this.currentForm).submit(), this.submitButton && e("input:hidden[name='" + this.submitButton.name + "']", this.currentForm).remove(), this.formSubmitted = !1) : !n && 0 === this.pendingRequest && this.formSubmitted && (e(this.currentForm).triggerHandler("invalid-form", [this]), this.formSubmitted = !1)
                },
                previousValue: function(t, n) {
                    return n = "string" == typeof n && n || "remote", e.data(t, "previousValue") || e.data(t, "previousValue", {
                        old: null,
                        valid: !0,
                        message: this.defaultMessage(t, {
                            method: n
                        })
                    })
                },
                destroy: function() {
                    this.resetForm(), e(this.currentForm).off(".validate").removeData("validator").find(".validate-equalTo-blur").off(".validate-equalTo").removeClass("validate-equalTo-blur").find(".validate-lessThan-blur").off(".validate-lessThan").removeClass("validate-lessThan-blur").find(".validate-lessThanEqual-blur").off(".validate-lessThanEqual").removeClass("validate-lessThanEqual-blur").find(".validate-greaterThanEqual-blur").off(".validate-greaterThanEqual").removeClass("validate-greaterThanEqual-blur").find(".validate-greaterThan-blur").off(".validate-greaterThan").removeClass("validate-greaterThan-blur")
                }
            },
            classRuleSettings: {
                required: {
                    required: !0
                },
                email: {
                    email: !0
                },
                url: {
                    url: !0
                },
                date: {
                    date: !0
                },
                dateISO: {
                    dateISO: !0
                },
                number: {
                    number: !0
                },
                digits: {
                    digits: !0
                },
                creditcard: {
                    creditcard: !0
                }
            },
            addClassRules: function(t, n) {
                t.constructor === String ? this.classRuleSettings[t] = n : e.extend(this.classRuleSettings, t)
            },
            classRules: function(t) {
                var n = {},
                    i = e(t).attr("class");
                return i && e.each(i.split(" "), (function() {
                    this in e.validator.classRuleSettings && e.extend(n, e.validator.classRuleSettings[this])
                })), n
            },
            normalizeAttributeRule: function(e, t, n, i) {
                /min|max|step/.test(n) && (null === t || /number|range|text/.test(t)) && (i = Number(i), isNaN(i) && (i = void 0)), i || 0 === i ? e[n] = i : t === n && "range" !== t && (e[n] = !0)
            },
            attributeRules: function(t) {
                var n, i, r = {},
                    o = e(t),
                    a = t.getAttribute("type");
                for (n in e.validator.methods) "required" === n ? ("" === (i = t.getAttribute(n)) && (i = !0), i = !!i) : i = o.attr(n), this.normalizeAttributeRule(r, a, n, i);
                return r.maxlength && /-1|2147483647|524288/.test(r.maxlength) && delete r.maxlength, r
            },
            dataRules: function(t) {
                var n, i, r = {},
                    o = e(t),
                    a = t.getAttribute("type");
                for (n in e.validator.methods) "" === (i = o.data("rule" + n.charAt(0).toUpperCase() + n.substring(1).toLowerCase())) && (i = !0), this.normalizeAttributeRule(r, a, n, i);
                return r
            },
            staticRules: function(t) {
                var n = {},
                    i = e.data(t.form, "validator");
                return i.settings.rules && (n = e.validator.normalizeRule(i.settings.rules[t.name]) || {}), n
            },
            normalizeRules: function(t, n) {
                return e.each(t, (function(i, r) {
                    if (!1 !== r) {
                        if (r.param || r.depends) {
                            var o = !0;
                            switch (typeof r.depends) {
                                case "string":
                                    o = !!e(r.depends, n.form).length;
                                    break;
                                case "function":
                                    o = r.depends.call(n, n)
                            }
                            o ? t[i] = void 0 === r.param || r.param : (e.data(n.form, "validator").resetElements(e(n)), delete t[i])
                        }
                    } else delete t[i]
                })), e.each(t, (function(i, r) {
                    t[i] = e.isFunction(r) && "normalizer" !== i ? r(n) : r
                })), e.each(["minlength", "maxlength"], (function() {
                    t[this] && (t[this] = Number(t[this]))
                })), e.each(["rangelength", "range"], (function() {
                    var n;
                    t[this] && (e.isArray(t[this]) ? t[this] = [Number(t[this][0]), Number(t[this][1])] : "string" == typeof t[this] && (n = t[this].replace(/[\[\]]/g, "").split(/[\s,]+/), t[this] = [Number(n[0]), Number(n[1])]))
                })), e.validator.autoCreateRanges && (null != t.min && null != t.max && (t.range = [t.min, t.max], delete t.min, delete t.max), null != t.minlength && null != t.maxlength && (t.rangelength = [t.minlength, t.maxlength], delete t.minlength, delete t.maxlength)), t
            },
            normalizeRule: function(t) {
                if ("string" == typeof t) {
                    var n = {};
                    e.each(t.split(/\s/), (function() {
                        n[this] = !0
                    })), t = n
                }
                return t
            },
            addMethod: function(t, n, i) {
                e.validator.methods[t] = n, e.validator.messages[t] = void 0 !== i ? i : e.validator.messages[t], n.length < 3 && e.validator.addClassRules(t, e.validator.normalizeRule(t))
            },
            methods: {
                required: function(t, n, i) {
                    if (!this.depend(i, n)) return "dependency-mismatch";
                    if ("select" === n.nodeName.toLowerCase()) {
                        var r = e(n).val();
                        return r && r.length > 0
                    }
                    return this.checkable(n) ? this.getLength(t, n) > 0 : null != t && t.length > 0
                },
                email: function(e, t) {
                    return this.optional(t) || /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(e)
                },
                url: function(e, t) {
                    return this.optional(t) || /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[\/?#]\S*)?$/i.test(e)
                },
                date: function() {
                    var e = !1;
                    return function(t, n) {
                        return e || (e = !0, this.settings.debug && window.console && console.warn("The `date` method is deprecated and will be removed in version '2.0.0'.\nPlease don't use it, since it relies on the Date constructor, which\nbehaves very differently across browsers and locales. Use `dateISO`\ninstead or one of the locale specific methods in `localizations/`\nand `additional-methods.js`.")), this.optional(n) || !/Invalid|NaN/.test(new Date(t).toString())
                    }
                }(),
                dateISO: function(e, t) {
                    return this.optional(t) || /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(e)
                },
                number: function(e, t) {
                    return this.optional(t) || /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(e)
                },
                digits: function(e, t) {
                    return this.optional(t) || /^\d+$/.test(e)
                },
                minlength: function(t, n, i) {
                    var r = e.isArray(t) ? t.length : this.getLength(t, n);
                    return this.optional(n) || r >= i
                },
                maxlength: function(t, n, i) {
                    var r = e.isArray(t) ? t.length : this.getLength(t, n);
                    return this.optional(n) || r <= i
                },
                rangelength: function(t, n, i) {
                    var r = e.isArray(t) ? t.length : this.getLength(t, n);
                    return this.optional(n) || r >= i[0] && r <= i[1]
                },
                min: function(e, t, n) {
                    return this.optional(t) || e >= n
                },
                max: function(e, t, n) {
                    return this.optional(t) || e <= n
                },
                range: function(e, t, n) {
                    return this.optional(t) || e >= n[0] && e <= n[1]
                },
                step: function(t, n, i) {
                    var r, o = e(n).attr("type"),
                        a = "Step attribute on input type " + o + " is not supported.",
                        s = new RegExp("\\b" + o + "\\b"),
                        l = function(e) {
                            var t = ("" + e).match(/(?:\.(\d+))?$/);
                            return t && t[1] ? t[1].length : 0
                        },
                        c = function(e) {
                            return Math.round(e * Math.pow(10, r))
                        },
                        u = !0;
                    if (o && !s.test(["text", "number", "range"].join())) throw new Error(a);
                    return r = l(i), (l(t) > r || c(t) % c(i) != 0) && (u = !1), this.optional(n) || u
                },
                equalTo: function(t, n, i) {
                    var r = e(i);
                    return this.settings.onfocusout && r.not(".validate-equalTo-blur").length && r.addClass("validate-equalTo-blur").on("blur.validate-equalTo", (function() {
                        e(n).valid()
                    })), t === r.val()
                },
                remote: function(t, n, i, r) {
                    if (this.optional(n)) return "dependency-mismatch";
                    r = "string" == typeof r && r || "remote";
                    var o, a, s, l = this.previousValue(n, r);
                    return this.settings.messages[n.name] || (this.settings.messages[n.name] = {}), l.originalMessage = l.originalMessage || this.settings.messages[n.name][r], this.settings.messages[n.name][r] = l.message, i = "string" == typeof i && {
                        url: i
                    } || i, s = e.param(e.extend({
                        data: t
                    }, i.data)), l.old === s ? l.valid : (l.old = s, o = this, this.startRequest(n), (a = {})[n.name] = t, e.ajax(e.extend(!0, {
                        mode: "abort",
                        port: "validate" + n.name,
                        dataType: "json",
                        data: a,
                        context: o.currentForm,
                        success: function(e) {
                            var i, a, s, c = !0 === e || "true" === e;
                            o.settings.messages[n.name][r] = l.originalMessage, c ? (s = o.formSubmitted, o.resetInternals(), o.toHide = o.errorsFor(n), o.formSubmitted = s, o.successList.push(n), o.invalid[n.name] = !1, o.showErrors()) : (i = {}, a = e || o.defaultMessage(n, {
                                method: r,
                                parameters: t
                            }), i[n.name] = l.message = a, o.invalid[n.name] = !0, o.showErrors(i)), l.valid = c, o.stopRequest(n, c)
                        }
                    }, i)), "pending")
                }
            }
        });
        var n, i = {};
        return e.ajaxPrefilter ? e.ajaxPrefilter((function(e, t, n) {
            var r = e.port;
            "abort" === e.mode && (i[r] && i[r].abort(), i[r] = n)
        })) : (n = e.ajax, e.ajax = function(t) {
            var r = ("mode" in t ? t : e.ajaxSettings).mode,
                o = ("port" in t ? t : e.ajaxSettings).port;
            return "abort" === r ? (i[o] && i[o].abort(), i[o] = n.apply(this, arguments), i[o]) : n.apply(this, arguments)
        }), e
    })),
    function(e) {
        "use strict";
        "function" == typeof define && define.amd ? define(["jquery"], e) : "undefined" != typeof exports ? module.exports = e(require("jquery")) : e(jQuery)
    }((function(e) {
        "use strict";
        var t = window.Slick || {};
        (t = function() {
            var t = 0;
            return function(n, i) {
                var r, o = this;
                o.defaults = {
                    accessibility: !0,
                    adaptiveHeight: !1,
                    appendArrows: e(n),
                    appendDots: e(n),
                    arrows: !0,
                    asNavFor: null,
                    prevArrow: '<button class="slick-prev" aria-label="Previous" type="button">Previous</button>',
                    nextArrow: '<button class="slick-next" aria-label="Next" type="button">Next</button>',
                    autoplay: !1,
                    autoplaySpeed: 3e3,
                    centerMode: !1,
                    centerPadding: "50px",
                    cssEase: "ease",
                    customPaging: function(t, n) {
                        return e('<button type="button" />').text(n + 1)
                    },
                    dots: !1,
                    dotsClass: "slick-dots",
                    draggable: !0,
                    easing: "linear",
                    edgeFriction: .35,
                    fade: !1,
                    focusOnSelect: !1,
                    focusOnChange: !1,
                    infinite: !0,
                    initialSlide: 0,
                    lazyLoad: "ondemand",
                    mobileFirst: !1,
                    pauseOnHover: !0,
                    pauseOnFocus: !0,
                    pauseOnDotsHover: !1,
                    respondTo: "window",
                    responsive: null,
                    rows: 1,
                    rtl: !1,
                    slide: "",
                    slidesPerRow: 1,
                    slidesToShow: 1,
                    slidesToScroll: 1,
                    speed: 500,
                    swipe: !0,
                    swipeToSlide: !1,
                    touchMove: !0,
                    touchThreshold: 5,
                    useCSS: !0,
                    useTransform: !0,
                    variableWidth: !1,
                    vertical: !1,
                    verticalSwiping: !1,
                    waitForAnimate: !0,
                    zIndex: 1e3
                }, o.initials = {
                    animating: !1,
                    dragging: !1,
                    autoPlayTimer: null,
                    currentDirection: 0,
                    currentLeft: null,
                    currentSlide: 0,
                    direction: 1,
                    $dots: null,
                    listWidth: null,
                    listHeight: null,
                    loadIndex: 0,
                    $nextArrow: null,
                    $prevArrow: null,
                    scrolling: !1,
                    slideCount: null,
                    slideWidth: null,
                    $slideTrack: null,
                    $slides: null,
                    sliding: !1,
                    slideOffset: 0,
                    swipeLeft: null,
                    swiping: !1,
                    $list: null,
                    touchObject: {},
                    transformsEnabled: !1,
                    unslicked: !1
                }, e.extend(o, o.initials), o.activeBreakpoint = null, o.animType = null, o.animProp = null, o.breakpoints = [], o.breakpointSettings = [], o.cssTransitions = !1, o.focussed = !1, o.interrupted = !1, o.hidden = "hidden", o.paused = !0, o.positionProp = null, o.respondTo = null, o.rowCount = 1, o.shouldClick = !0, o.$slider = e(n), o.$slidesCache = null, o.transformType = null, o.transitionType = null, o.visibilityChange = "visibilitychange", o.windowWidth = 0, o.windowTimer = null, r = e(n).data("slick") || {}, o.options = e.extend({}, o.defaults, i, r), o.currentSlide = o.options.initialSlide, o.originalSettings = o.options, void 0 !== document.mozHidden ? (o.hidden = "mozHidden", o.visibilityChange = "mozvisibilitychange") : void 0 !== document.webkitHidden && (o.hidden = "webkitHidden", o.visibilityChange = "webkitvisibilitychange"), o.autoPlay = e.proxy(o.autoPlay, o), o.autoPlayClear = e.proxy(o.autoPlayClear, o), o.autoPlayIterator = e.proxy(o.autoPlayIterator, o), o.changeSlide = e.proxy(o.changeSlide, o), o.clickHandler = e.proxy(o.clickHandler, o), o.selectHandler = e.proxy(o.selectHandler, o), o.setPosition = e.proxy(o.setPosition, o), o.swipeHandler = e.proxy(o.swipeHandler, o), o.dragHandler = e.proxy(o.dragHandler, o), o.keyHandler = e.proxy(o.keyHandler, o), o.instanceUid = t++, o.htmlExpr = /^(?:\s*(<[\w\W]+>)[^>]*)$/, o.registerBreakpoints(), o.init(!0)
            }
        }()).prototype.activateADA = function() {
            this.$slideTrack.find(".slick-active").attr({
                "aria-hidden": "false"
            }).find("a, input, button, select").attr({
                tabindex: "0"
            })
        }, t.prototype.addSlide = t.prototype.slickAdd = function(t, n, i) {
            var r = this;
            if ("boolean" == typeof n) i = n, n = null;
            else if (n < 0 || n >= r.slideCount) return !1;
            r.unload(), "number" == typeof n ? 0 === n && 0 === r.$slides.length ? e(t).appendTo(r.$slideTrack) : i ? e(t).insertBefore(r.$slides.eq(n)) : e(t).insertAfter(r.$slides.eq(n)) : !0 === i ? e(t).prependTo(r.$slideTrack) : e(t).appendTo(r.$slideTrack), r.$slides = r.$slideTrack.children(this.options.slide), r.$slideTrack.children(this.options.slide).detach(), r.$slideTrack.append(r.$slides), r.$slides.each((function(t, n) {
                e(n).attr("data-slick-index", t)
            })), r.$slidesCache = r.$slides, r.reinit()
        }, t.prototype.animateHeight = function() {
            var e = this;
            if (1 === e.options.slidesToShow && !0 === e.options.adaptiveHeight && !1 === e.options.vertical) {
                var t = e.$slides.eq(e.currentSlide).outerHeight(!0);
                e.$list.animate({
                    height: t
                }, e.options.speed)
            }
        }, t.prototype.animateSlide = function(t, n) {
            var i = {},
                r = this;
            r.animateHeight(), !0 === r.options.rtl && !1 === r.options.vertical && (t = -t), !1 === r.transformsEnabled ? !1 === r.options.vertical ? r.$slideTrack.animate({
                left: t
            }, r.options.speed, r.options.easing, n) : r.$slideTrack.animate({
                top: t
            }, r.options.speed, r.options.easing, n) : !1 === r.cssTransitions ? (!0 === r.options.rtl && (r.currentLeft = -r.currentLeft), e({
                animStart: r.currentLeft
            }).animate({
                animStart: t
            }, {
                duration: r.options.speed,
                easing: r.options.easing,
                step: function(e) {
                    e = Math.ceil(e), !1 === r.options.vertical ? (i[r.animType] = "translate(" + e + "px, 0px)", r.$slideTrack.css(i)) : (i[r.animType] = "translate(0px," + e + "px)", r.$slideTrack.css(i))
                },
                complete: function() {
                    n && n.call()
                }
            })) : (r.applyTransition(), t = Math.ceil(t), !1 === r.options.vertical ? i[r.animType] = "translate3d(" + t + "px, 0px, 0px)" : i[r.animType] = "translate3d(0px," + t + "px, 0px)", r.$slideTrack.css(i), n && setTimeout((function() {
                r.disableTransition(), n.call()
            }), r.options.speed))
        }, t.prototype.getNavTarget = function() {
            var t = this.options.asNavFor;
            return t && null !== t && (t = e(t).not(this.$slider)), t
        }, t.prototype.asNavFor = function(t) {
            var n = this.getNavTarget();
            null !== n && "object" == typeof n && n.each((function() {
                var n = e(this).slick("getSlick");
                n.unslicked || n.slideHandler(t, !0)
            }))
        }, t.prototype.applyTransition = function(e) {
            var t = this,
                n = {};
            !1 === t.options.fade ? n[t.transitionType] = t.transformType + " " + t.options.speed + "ms " + t.options.cssEase : n[t.transitionType] = "opacity " + t.options.speed + "ms " + t.options.cssEase, !1 === t.options.fade ? t.$slideTrack.css(n) : t.$slides.eq(e).css(n)
        }, t.prototype.autoPlay = function() {
            var e = this;
            e.autoPlayClear(), e.slideCount > e.options.slidesToShow && (e.autoPlayTimer = setInterval(e.autoPlayIterator, e.options.autoplaySpeed))
        }, t.prototype.autoPlayClear = function() {
            this.autoPlayTimer && clearInterval(this.autoPlayTimer)
        }, t.prototype.autoPlayIterator = function() {
            var e = this,
                t = e.currentSlide + e.options.slidesToScroll;
            e.paused || e.interrupted || e.focussed || (!1 === e.options.infinite && (1 === e.direction && e.currentSlide + 1 === e.slideCount - 1 ? e.direction = 0 : 0 === e.direction && (t = e.currentSlide - e.options.slidesToScroll, e.currentSlide - 1 == 0 && (e.direction = 1))), e.slideHandler(t))
        }, t.prototype.buildArrows = function() {
            var t = this;
            !0 === t.options.arrows && (t.$prevArrow = e(t.options.prevArrow).addClass("slick-arrow"), t.$nextArrow = e(t.options.nextArrow).addClass("slick-arrow"), t.slideCount > t.options.slidesToShow ? (t.$prevArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"), t.$nextArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"), t.htmlExpr.test(t.options.prevArrow) && t.$prevArrow.prependTo(t.options.appendArrows), t.htmlExpr.test(t.options.nextArrow) && t.$nextArrow.appendTo(t.options.appendArrows), !0 !== t.options.infinite && t.$prevArrow.addClass("slick-disabled").attr("aria-disabled", "true")) : t.$prevArrow.add(t.$nextArrow).addClass("slick-hidden").attr({
                "aria-disabled": "true",
                tabindex: "-1"
            }))
        }, t.prototype.buildDots = function() {
            var t, n, i = this;
            if (!0 === i.options.dots) {
                for (i.$slider.addClass("slick-dotted"), n = e("<ul />").addClass(i.options.dotsClass), t = 0; t <= i.getDotCount(); t += 1) n.append(e("<li />").append(i.options.customPaging.call(this, i, t)));
                i.$dots = n.appendTo(i.options.appendDots), i.$dots.find("li").first().addClass("slick-active")
            }
        }, t.prototype.buildOut = function() {
            var t = this;
            t.$slides = t.$slider.children(t.options.slide + ":not(.slick-cloned)").addClass("slick-slide"), t.slideCount = t.$slides.length, t.$slides.each((function(t, n) {
                e(n).attr("data-slick-index", t).data("originalStyling", e(n).attr("style") || "")
            })), t.$slider.addClass("slick-slider"), t.$slideTrack = 0 === t.slideCount ? e('<div class="slick-track"/>').appendTo(t.$slider) : t.$slides.wrapAll('<div class="slick-track"/>').parent(), t.$list = t.$slideTrack.wrap('<div class="slick-list"/>').parent(), t.$slideTrack.css("opacity", 0), !0 !== t.options.centerMode && !0 !== t.options.swipeToSlide || (t.options.slidesToScroll = 1), e("img[data-lazy]", t.$slider).not("[src]").addClass("slick-loading"), t.setupInfinite(), t.buildArrows(), t.buildDots(), t.updateDots(), t.setSlideClasses("number" == typeof t.currentSlide ? t.currentSlide : 0), !0 === t.options.draggable && t.$list.addClass("draggable")
        }, t.prototype.buildRows = function() {
            var e, t, n, i, r, o, a, s = this;
            if (i = document.createDocumentFragment(), o = s.$slider.children(), s.options.rows > 1) {
                for (a = s.options.slidesPerRow * s.options.rows, r = Math.ceil(o.length / a), e = 0; e < r; e++) {
                    var l = document.createElement("div");
                    for (t = 0; t < s.options.rows; t++) {
                        var c = document.createElement("div");
                        for (n = 0; n < s.options.slidesPerRow; n++) {
                            var u = e * a + (t * s.options.slidesPerRow + n);
                            o.get(u) && c.appendChild(o.get(u))
                        }
                        l.appendChild(c)
                    }
                    i.appendChild(l)
                }
                s.$slider.empty().append(i), s.$slider.children().children().children().css({
                    width: 100 / s.options.slidesPerRow + "%",
                    display: "inline-block"
                })
            }
        }, t.prototype.checkResponsive = function(t, n) {
            var i, r, o, a = this,
                s = !1,
                l = a.$slider.width(),
                c = window.innerWidth || e(window).width();
            if ("window" === a.respondTo ? o = c : "slider" === a.respondTo ? o = l : "min" === a.respondTo && (o = Math.min(c, l)), a.options.responsive && a.options.responsive.length && null !== a.options.responsive) {
                for (i in r = null, a.breakpoints) a.breakpoints.hasOwnProperty(i) && (!1 === a.originalSettings.mobileFirst ? o < a.breakpoints[i] && (r = a.breakpoints[i]) : o > a.breakpoints[i] && (r = a.breakpoints[i]));
                null !== r ? null !== a.activeBreakpoint ? (r !== a.activeBreakpoint || n) && (a.activeBreakpoint = r, "unslick" === a.breakpointSettings[r] ? a.unslick(r) : (a.options = e.extend({}, a.originalSettings, a.breakpointSettings[r]), !0 === t && (a.currentSlide = a.options.initialSlide), a.refresh(t)), s = r) : (a.activeBreakpoint = r, "unslick" === a.breakpointSettings[r] ? a.unslick(r) : (a.options = e.extend({}, a.originalSettings, a.breakpointSettings[r]), !0 === t && (a.currentSlide = a.options.initialSlide), a.refresh(t)), s = r) : null !== a.activeBreakpoint && (a.activeBreakpoint = null, a.options = a.originalSettings, !0 === t && (a.currentSlide = a.options.initialSlide), a.refresh(t), s = r), t || !1 === s || a.$slider.trigger("breakpoint", [a, s])
            }
        }, t.prototype.changeSlide = function(t, n) {
            var i, r, o = this,
                a = e(t.currentTarget);
            switch (a.is("a") && t.preventDefault(), a.is("li") || (a = a.closest("li")), i = o.slideCount % o.options.slidesToScroll != 0 ? 0 : (o.slideCount - o.currentSlide) % o.options.slidesToScroll, t.data.message) {
                case "previous":
                    r = 0 === i ? o.options.slidesToScroll : o.options.slidesToShow - i, o.slideCount > o.options.slidesToShow && o.slideHandler(o.currentSlide - r, !1, n);
                    break;
                case "next":
                    r = 0 === i ? o.options.slidesToScroll : i, o.slideCount > o.options.slidesToShow && o.slideHandler(o.currentSlide + r, !1, n);
                    break;
                case "index":
                    var s = 0 === t.data.index ? 0 : t.data.index || a.index() * o.options.slidesToScroll;
                    o.slideHandler(o.checkNavigable(s), !1, n), a.children().trigger("focus");
                    break;
                default:
                    return
            }
        }, t.prototype.checkNavigable = function(e) {
            var t, n;
            if (n = 0, e > (t = this.getNavigableIndexes())[t.length - 1]) e = t[t.length - 1];
            else
                for (var i in t) {
                    if (e < t[i]) {
                        e = n;
                        break
                    }
                    n = t[i]
                }
            return e
        }, t.prototype.cleanUpEvents = function() {
            var t = this;
            t.options.dots && null !== t.$dots && (e("li", t.$dots).off("click.slick", t.changeSlide).off("mouseenter.slick", e.proxy(t.interrupt, t, !0)).off("mouseleave.slick", e.proxy(t.interrupt, t, !1)), !0 === t.options.accessibility && t.$dots.off("keydown.slick", t.keyHandler)), t.$slider.off("focus.slick blur.slick"), !0 === t.options.arrows && t.slideCount > t.options.slidesToShow && (t.$prevArrow && t.$prevArrow.off("click.slick", t.changeSlide), t.$nextArrow && t.$nextArrow.off("click.slick", t.changeSlide), !0 === t.options.accessibility && (t.$prevArrow && t.$prevArrow.off("keydown.slick", t.keyHandler), t.$nextArrow && t.$nextArrow.off("keydown.slick", t.keyHandler))), t.$list.off("touchstart.slick mousedown.slick", t.swipeHandler), t.$list.off("touchmove.slick mousemove.slick", t.swipeHandler), t.$list.off("touchend.slick mouseup.slick", t.swipeHandler), t.$list.off("touchcancel.slick mouseleave.slick", t.swipeHandler), t.$list.off("click.slick", t.clickHandler), e(document).off(t.visibilityChange, t.visibility), t.cleanUpSlideEvents(), !0 === t.options.accessibility && t.$list.off("keydown.slick", t.keyHandler), !0 === t.options.focusOnSelect && e(t.$slideTrack).children().off("click.slick", t.selectHandler), e(window).off("orientationchange.slick.slick-" + t.instanceUid, t.orientationChange), e(window).off("resize.slick.slick-" + t.instanceUid, t.resize), e("[draggable!=true]", t.$slideTrack).off("dragstart", t.preventDefault), e(window).off("load.slick.slick-" + t.instanceUid, t.setPosition)
        }, t.prototype.cleanUpSlideEvents = function() {
            var t = this;
            t.$list.off("mouseenter.slick", e.proxy(t.interrupt, t, !0)), t.$list.off("mouseleave.slick", e.proxy(t.interrupt, t, !1))
        }, t.prototype.cleanUpRows = function() {
            var e, t = this;
            t.options.rows > 1 && ((e = t.$slides.children().children()).removeAttr("style"), t.$slider.empty().append(e))
        }, t.prototype.clickHandler = function(e) {
            !1 === this.shouldClick && (e.stopImmediatePropagation(), e.stopPropagation(), e.preventDefault())
        }, t.prototype.destroy = function(t) {
            var n = this;
            n.autoPlayClear(), n.touchObject = {}, n.cleanUpEvents(), e(".slick-cloned", n.$slider).detach(), n.$dots && n.$dots.remove(), n.$prevArrow && n.$prevArrow.length && (n.$prevArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display", ""), n.htmlExpr.test(n.options.prevArrow) && n.$prevArrow.remove()), n.$nextArrow && n.$nextArrow.length && (n.$nextArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display", ""), n.htmlExpr.test(n.options.nextArrow) && n.$nextArrow.remove()), n.$slides && (n.$slides.removeClass("slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr("data-slick-index").each((function() {
                e(this).attr("style", e(this).data("originalStyling"))
            })), n.$slideTrack.children(this.options.slide).detach(), n.$slideTrack.detach(), n.$list.detach(), n.$slider.append(n.$slides)), n.cleanUpRows(), n.$slider.removeClass("slick-slider"), n.$slider.removeClass("slick-initialized"), n.$slider.removeClass("slick-dotted"), n.unslicked = !0, t || n.$slider.trigger("destroy", [n])
        }, t.prototype.disableTransition = function(e) {
            var t = this,
                n = {};
            n[t.transitionType] = "", !1 === t.options.fade ? t.$slideTrack.css(n) : t.$slides.eq(e).css(n)
        }, t.prototype.fadeSlide = function(e, t) {
            var n = this;
            !1 === n.cssTransitions ? (n.$slides.eq(e).css({
                zIndex: n.options.zIndex
            }), n.$slides.eq(e).animate({
                opacity: 1
            }, n.options.speed, n.options.easing, t)) : (n.applyTransition(e), n.$slides.eq(e).css({
                opacity: 1,
                zIndex: n.options.zIndex
            }), t && setTimeout((function() {
                n.disableTransition(e), t.call()
            }), n.options.speed))
        }, t.prototype.fadeSlideOut = function(e) {
            var t = this;
            !1 === t.cssTransitions ? t.$slides.eq(e).animate({
                opacity: 0,
                zIndex: t.options.zIndex - 2
            }, t.options.speed, t.options.easing) : (t.applyTransition(e), t.$slides.eq(e).css({
                opacity: 0,
                zIndex: t.options.zIndex - 2
            }))
        }, t.prototype.filterSlides = t.prototype.slickFilter = function(e) {
            var t = this;
            null !== e && (t.$slidesCache = t.$slides, t.unload(), t.$slideTrack.children(this.options.slide).detach(), t.$slidesCache.filter(e).appendTo(t.$slideTrack), t.reinit())
        }, t.prototype.focusHandler = function() {
            var t = this;
            t.$slider.off("focus.slick blur.slick").on("focus.slick blur.slick", "*", (function(n) {
                n.stopImmediatePropagation();
                var i = e(this);
                setTimeout((function() {
                    t.options.pauseOnFocus && (t.focussed = i.is(":focus"), t.autoPlay())
                }), 0)
            }))
        }, t.prototype.getCurrent = t.prototype.slickCurrentSlide = function() {
            return this.currentSlide
        }, t.prototype.getDotCount = function() {
            var e = this,
                t = 0,
                n = 0,
                i = 0;
            if (!0 === e.options.infinite)
                if (e.slideCount <= e.options.slidesToShow) ++i;
                else
                    for (; t < e.slideCount;) ++i, t = n + e.options.slidesToScroll, n += e.options.slidesToScroll <= e.options.slidesToShow ? e.options.slidesToScroll : e.options.slidesToShow;
            else if (!0 === e.options.centerMode) i = e.slideCount;
            else if (e.options.asNavFor)
                for (; t < e.slideCount;) ++i, t = n + e.options.slidesToScroll, n += e.options.slidesToScroll <= e.options.slidesToShow ? e.options.slidesToScroll : e.options.slidesToShow;
            else i = 1 + Math.ceil((e.slideCount - e.options.slidesToShow) / e.options.slidesToScroll);
            return i - 1
        }, t.prototype.getLeft = function(e) {
            var t, n, i, r, o = this,
                a = 0;
            return o.slideOffset = 0, n = o.$slides.first().outerHeight(!0), !0 === o.options.infinite ? (o.slideCount > o.options.slidesToShow && (o.slideOffset = o.slideWidth * o.options.slidesToShow * -1, r = -1, !0 === o.options.vertical && !0 === o.options.centerMode && (2 === o.options.slidesToShow ? r = -1.5 : 1 === o.options.slidesToShow && (r = -2)), a = n * o.options.slidesToShow * r), o.slideCount % o.options.slidesToScroll != 0 && e + o.options.slidesToScroll > o.slideCount && o.slideCount > o.options.slidesToShow && (e > o.slideCount ? (o.slideOffset = (o.options.slidesToShow - (e - o.slideCount)) * o.slideWidth * -1, a = (o.options.slidesToShow - (e - o.slideCount)) * n * -1) : (o.slideOffset = o.slideCount % o.options.slidesToScroll * o.slideWidth * -1, a = o.slideCount % o.options.slidesToScroll * n * -1))) : e + o.options.slidesToShow > o.slideCount && (o.slideOffset = (e + o.options.slidesToShow - o.slideCount) * o.slideWidth, a = (e + o.options.slidesToShow - o.slideCount) * n), o.slideCount <= o.options.slidesToShow && (o.slideOffset = 0, a = 0), !0 === o.options.centerMode && o.slideCount <= o.options.slidesToShow ? o.slideOffset = o.slideWidth * Math.floor(o.options.slidesToShow) / 2 - o.slideWidth * o.slideCount / 2 : !0 === o.options.centerMode && !0 === o.options.infinite ? o.slideOffset += o.slideWidth * Math.floor(o.options.slidesToShow / 2) - o.slideWidth : !0 === o.options.centerMode && (o.slideOffset = 0, o.slideOffset += o.slideWidth * Math.floor(o.options.slidesToShow / 2)), t = !1 === o.options.vertical ? e * o.slideWidth * -1 + o.slideOffset : e * n * -1 + a, !0 === o.options.variableWidth && (i = o.slideCount <= o.options.slidesToShow || !1 === o.options.infinite ? o.$slideTrack.children(".slick-slide").eq(e) : o.$slideTrack.children(".slick-slide").eq(e + o.options.slidesToShow), t = !0 === o.options.rtl ? i[0] ? -1 * (o.$slideTrack.width() - i[0].offsetLeft - i.width()) : 0 : i[0] ? -1 * i[0].offsetLeft : 0, !0 === o.options.centerMode && (i = o.slideCount <= o.options.slidesToShow || !1 === o.options.infinite ? o.$slideTrack.children(".slick-slide").eq(e) : o.$slideTrack.children(".slick-slide").eq(e + o.options.slidesToShow + 1), t = !0 === o.options.rtl ? i[0] ? -1 * (o.$slideTrack.width() - i[0].offsetLeft - i.width()) : 0 : i[0] ? -1 * i[0].offsetLeft : 0, t += (o.$list.width() - i.outerWidth()) / 2)), t
        }, t.prototype.getOption = t.prototype.slickGetOption = function(e) {
            return this.options[e]
        }, t.prototype.getNavigableIndexes = function() {
            var e, t = this,
                n = 0,
                i = 0,
                r = [];
            for (!1 === t.options.infinite ? e = t.slideCount : (n = -1 * t.options.slidesToScroll, i = -1 * t.options.slidesToScroll, e = 2 * t.slideCount); n < e;) r.push(n), n = i + t.options.slidesToScroll, i += t.options.slidesToScroll <= t.options.slidesToShow ? t.options.slidesToScroll : t.options.slidesToShow;
            return r
        }, t.prototype.getSlick = function() {
            return this
        }, t.prototype.getSlideCount = function() {
            var t, n, i = this;
            return n = !0 === i.options.centerMode ? i.slideWidth * Math.floor(i.options.slidesToShow / 2) : 0, !0 === i.options.swipeToSlide ? (i.$slideTrack.find(".slick-slide").each((function(r, o) {
                if (o.offsetLeft - n + e(o).outerWidth() / 2 > -1 * i.swipeLeft) return t = o, !1
            })), Math.abs(e(t).attr("data-slick-index") - i.currentSlide) || 1) : i.options.slidesToScroll
        }, t.prototype.goTo = t.prototype.slickGoTo = function(e, t) {
            this.changeSlide({
                data: {
                    message: "index",
                    index: parseInt(e)
                }
            }, t)
        }, t.prototype.init = function(t) {
            var n = this;
            e(n.$slider).hasClass("slick-initialized") || (e(n.$slider).addClass("slick-initialized"), n.buildRows(), n.buildOut(), n.setProps(), n.startLoad(), n.loadSlider(), n.initializeEvents(), n.updateArrows(), n.updateDots(), n.checkResponsive(!0), n.focusHandler()), t && n.$slider.trigger("init", [n]), !0 === n.options.accessibility && n.initADA(), n.options.autoplay && (n.paused = !1, n.autoPlay())
        }, t.prototype.initADA = function() {
            var t = this,
                n = Math.ceil(t.slideCount / t.options.slidesToShow),
                i = t.getNavigableIndexes().filter((function(e) {
                    return e >= 0 && e < t.slideCount
                }));
            t.$slides.add(t.$slideTrack.find(".slick-cloned")).attr({
                "aria-hidden": "true",
                tabindex: "-1"
            }).find("a, input, button, select").attr({
                tabindex: "-1"
            }), null !== t.$dots && (t.$slides.not(t.$slideTrack.find(".slick-cloned")).each((function(n) {
                var r = i.indexOf(n);
                e(this).attr({
                    role: "tabpanel",
                    id: "slick-slide" + t.instanceUid + n,
                    tabindex: -1
                }), -1 !== r && e(this).attr({
                    "aria-describedby": "slick-slide-control" + t.instanceUid + r
                })
            })), t.$dots.attr("role", "tablist").find("li").each((function(r) {
                var o = i[r];
                e(this).attr({
                    role: "presentation"
                }), e(this).find("button").first().attr({
                    role: "tab",
                    id: "slick-slide-control" + t.instanceUid + r,
                    "aria-controls": "slick-slide" + t.instanceUid + o,
                    "aria-label": r + 1 + " of " + n,
                    "aria-selected": null,
                    tabindex: "-1"
                })
            })).eq(t.currentSlide).find("button").attr({
                "aria-selected": "true",
                tabindex: "0"
            }).end());
            for (var r = t.currentSlide, o = r + t.options.slidesToShow; r < o; r++) t.$slides.eq(r).attr("tabindex", 0);
            t.activateADA()
        }, t.prototype.initArrowEvents = function() {
            var e = this;
            !0 === e.options.arrows && e.slideCount > e.options.slidesToShow && (e.$prevArrow.off("click.slick").on("click.slick", {
                message: "previous"
            }, e.changeSlide), e.$nextArrow.off("click.slick").on("click.slick", {
                message: "next"
            }, e.changeSlide), !0 === e.options.accessibility && (e.$prevArrow.on("keydown.slick", e.keyHandler), e.$nextArrow.on("keydown.slick", e.keyHandler)))
        }, t.prototype.initDotEvents = function() {
            var t = this;
            !0 === t.options.dots && (e("li", t.$dots).on("click.slick", {
                message: "index"
            }, t.changeSlide), !0 === t.options.accessibility && t.$dots.on("keydown.slick", t.keyHandler)), !0 === t.options.dots && !0 === t.options.pauseOnDotsHover && e("li", t.$dots).on("mouseenter.slick", e.proxy(t.interrupt, t, !0)).on("mouseleave.slick", e.proxy(t.interrupt, t, !1))
        }, t.prototype.initSlideEvents = function() {
            var t = this;
            t.options.pauseOnHover && (t.$list.on("mouseenter.slick", e.proxy(t.interrupt, t, !0)), t.$list.on("mouseleave.slick", e.proxy(t.interrupt, t, !1)))
        }, t.prototype.initializeEvents = function() {
            var t = this;
            t.initArrowEvents(), t.initDotEvents(), t.initSlideEvents(), t.$list.on("touchstart.slick mousedown.slick", {
                action: "start"
            }, t.swipeHandler), t.$list.on("touchmove.slick mousemove.slick", {
                action: "move"
            }, t.swipeHandler), t.$list.on("touchend.slick mouseup.slick", {
                action: "end"
            }, t.swipeHandler), t.$list.on("touchcancel.slick mouseleave.slick", {
                action: "end"
            }, t.swipeHandler), t.$list.on("click.slick", t.clickHandler), e(document).on(t.visibilityChange, e.proxy(t.visibility, t)), !0 === t.options.accessibility && t.$list.on("keydown.slick", t.keyHandler), !0 === t.options.focusOnSelect && e(t.$slideTrack).children().on("click.slick", t.selectHandler), e(window).on("orientationchange.slick.slick-" + t.instanceUid, e.proxy(t.orientationChange, t)), e(window).on("resize.slick.slick-" + t.instanceUid, e.proxy(t.resize, t)), e("[draggable!=true]", t.$slideTrack).on("dragstart", t.preventDefault), e(window).on("load.slick.slick-" + t.instanceUid, t.setPosition), e(t.setPosition)
        }, t.prototype.initUI = function() {
            var e = this;
            !0 === e.options.arrows && e.slideCount > e.options.slidesToShow && (e.$prevArrow.show(), e.$nextArrow.show()), !0 === e.options.dots && e.slideCount > e.options.slidesToShow && e.$dots.show()
        }, t.prototype.keyHandler = function(e) {
            var t = this;
            e.target.tagName.match("TEXTAREA|INPUT|SELECT") || (37 === e.keyCode && !0 === t.options.accessibility ? t.changeSlide({
                data: {
                    message: !0 === t.options.rtl ? "next" : "previous"
                }
            }) : 39 === e.keyCode && !0 === t.options.accessibility && t.changeSlide({
                data: {
                    message: !0 === t.options.rtl ? "previous" : "next"
                }
            }))
        }, t.prototype.lazyLoad = function() {
            function t(t) {
                e("img[data-lazy]", t).each((function() {
                    var t = e(this),
                        n = e(this).attr("data-lazy"),
                        i = e(this).attr("data-srcset"),
                        r = e(this).attr("data-sizes") || o.$slider.attr("data-sizes"),
                        a = document.createElement("img");
                    a.onload = function() {
                        t.animate({
                            opacity: 0
                        }, 100, (function() {
                            i && (t.attr("srcset", i), r && t.attr("sizes", r)), t.attr("src", n).animate({
                                opacity: 1
                            }, 200, (function() {
                                t.removeAttr("data-lazy data-srcset data-sizes").removeClass("slick-loading")
                            })), o.$slider.trigger("lazyLoaded", [o, t, n])
                        }))
                    }, a.onerror = function() {
                        t.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"), o.$slider.trigger("lazyLoadError", [o, t, n])
                    }, a.src = n
                }))
            }
            var n, i, r, o = this;
            if (!0 === o.options.centerMode ? !0 === o.options.infinite ? r = (i = o.currentSlide + (o.options.slidesToShow / 2 + 1)) + o.options.slidesToShow + 2 : (i = Math.max(0, o.currentSlide - (o.options.slidesToShow / 2 + 1)), r = o.options.slidesToShow / 2 + 1 + 2 + o.currentSlide) : (i = o.options.infinite ? o.options.slidesToShow + o.currentSlide : o.currentSlide, r = Math.ceil(i + o.options.slidesToShow), !0 === o.options.fade && (i > 0 && i--, r <= o.slideCount && r++)), n = o.$slider.find(".slick-slide").slice(i, r), "anticipated" === o.options.lazyLoad)
                for (var a = i - 1, s = r, l = o.$slider.find(".slick-slide"), c = 0; c < o.options.slidesToScroll; c++) a < 0 && (a = o.slideCount - 1), n = (n = n.add(l.eq(a))).add(l.eq(s)), a--, s++;
            t(n), o.slideCount <= o.options.slidesToShow ? t(o.$slider.find(".slick-slide")) : o.currentSlide >= o.slideCount - o.options.slidesToShow ? t(o.$slider.find(".slick-cloned").slice(0, o.options.slidesToShow)) : 0 === o.currentSlide && t(o.$slider.find(".slick-cloned").slice(-1 * o.options.slidesToShow))
        }, t.prototype.loadSlider = function() {
            var e = this;
            e.setPosition(), e.$slideTrack.css({
                opacity: 1
            }), e.$slider.removeClass("slick-loading"), e.initUI(), "progressive" === e.options.lazyLoad && e.progressiveLazyLoad()
        }, t.prototype.next = t.prototype.slickNext = function() {
            this.changeSlide({
                data: {
                    message: "next"
                }
            })
        }, t.prototype.orientationChange = function() {
            this.checkResponsive(), this.setPosition()
        }, t.prototype.pause = t.prototype.slickPause = function() {
            this.autoPlayClear(), this.paused = !0
        }, t.prototype.play = t.prototype.slickPlay = function() {
            var e = this;
            e.autoPlay(), e.options.autoplay = !0, e.paused = !1, e.focussed = !1, e.interrupted = !1
        }, t.prototype.postSlide = function(t) {
            var n = this;
            n.unslicked || (n.$slider.trigger("afterChange", [n, t]), n.animating = !1, n.slideCount > n.options.slidesToShow && n.setPosition(), n.swipeLeft = null, n.options.autoplay && n.autoPlay(), !0 === n.options.accessibility && (n.initADA(), n.options.focusOnChange && e(n.$slides.get(n.currentSlide)).attr("tabindex", 0).focus()))
        }, t.prototype.prev = t.prototype.slickPrev = function() {
            this.changeSlide({
                data: {
                    message: "previous"
                }
            })
        }, t.prototype.preventDefault = function(e) {
            e.preventDefault()
        }, t.prototype.progressiveLazyLoad = function(t) {
            t = t || 1;
            var n, i, r, o, a, s = this,
                l = e("img[data-lazy]", s.$slider);
            l.length ? (n = l.first(), i = n.attr("data-lazy"), r = n.attr("data-srcset"), o = n.attr("data-sizes") || s.$slider.attr("data-sizes"), (a = document.createElement("img")).onload = function() {
                r && (n.attr("srcset", r), o && n.attr("sizes", o)), n.attr("src", i).removeAttr("data-lazy data-srcset data-sizes").removeClass("slick-loading"), !0 === s.options.adaptiveHeight && s.setPosition(), s.$slider.trigger("lazyLoaded", [s, n, i]), s.progressiveLazyLoad()
            }, a.onerror = function() {
                t < 3 ? setTimeout((function() {
                    s.progressiveLazyLoad(t + 1)
                }), 500) : (n.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"), s.$slider.trigger("lazyLoadError", [s, n, i]), s.progressiveLazyLoad())
            }, a.src = i) : s.$slider.trigger("allImagesLoaded", [s])
        }, t.prototype.refresh = function(t) {
            var n, i, r = this;
            i = r.slideCount - r.options.slidesToShow, !r.options.infinite && r.currentSlide > i && (r.currentSlide = i), r.slideCount <= r.options.slidesToShow && (r.currentSlide = 0), n = r.currentSlide, r.destroy(!0), e.extend(r, r.initials, {
                currentSlide: n
            }), r.init(), t || r.changeSlide({
                data: {
                    message: "index",
                    index: n
                }
            }, !1)
        }, t.prototype.registerBreakpoints = function() {
            var t, n, i, r = this,
                o = r.options.responsive || null;
            if ("array" === e.type(o) && o.length) {
                for (t in r.respondTo = r.options.respondTo || "window", o)
                    if (i = r.breakpoints.length - 1, o.hasOwnProperty(t)) {
                        for (n = o[t].breakpoint; i >= 0;) r.breakpoints[i] && r.breakpoints[i] === n && r.breakpoints.splice(i, 1), i--;
                        r.breakpoints.push(n), r.breakpointSettings[n] = o[t].settings
                    }
                r.breakpoints.sort((function(e, t) {
                    return r.options.mobileFirst ? e - t : t - e
                }))
            }
        }, t.prototype.reinit = function() {
            var t = this;
            t.$slides = t.$slideTrack.children(t.options.slide).addClass("slick-slide"), t.slideCount = t.$slides.length, t.currentSlide >= t.slideCount && 0 !== t.currentSlide && (t.currentSlide = t.currentSlide - t.options.slidesToScroll), t.slideCount <= t.options.slidesToShow && (t.currentSlide = 0), t.registerBreakpoints(), t.setProps(), t.setupInfinite(), t.buildArrows(), t.updateArrows(), t.initArrowEvents(), t.buildDots(), t.updateDots(), t.initDotEvents(), t.cleanUpSlideEvents(), t.initSlideEvents(), t.checkResponsive(!1, !0), !0 === t.options.focusOnSelect && e(t.$slideTrack).children().on("click.slick", t.selectHandler), t.setSlideClasses("number" == typeof t.currentSlide ? t.currentSlide : 0), t.setPosition(), t.focusHandler(), t.paused = !t.options.autoplay, t.autoPlay(), t.$slider.trigger("reInit", [t])
        }, t.prototype.resize = function() {
            var t = this;
            e(window).width() !== t.windowWidth && (clearTimeout(t.windowDelay), t.windowDelay = window.setTimeout((function() {
                t.windowWidth = e(window).width(), t.checkResponsive(), t.unslicked || t.setPosition()
            }), 50))
        }, t.prototype.removeSlide = t.prototype.slickRemove = function(e, t, n) {
            var i = this;
            if (e = "boolean" == typeof e ? !0 === (t = e) ? 0 : i.slideCount - 1 : !0 === t ? --e : e, i.slideCount < 1 || e < 0 || e > i.slideCount - 1) return !1;
            i.unload(), !0 === n ? i.$slideTrack.children().remove() : i.$slideTrack.children(this.options.slide).eq(e).remove(), i.$slides = i.$slideTrack.children(this.options.slide), i.$slideTrack.children(this.options.slide).detach(), i.$slideTrack.append(i.$slides), i.$slidesCache = i.$slides, i.reinit()
        }, t.prototype.setCSS = function(e) {
            var t, n, i = this,
                r = {};
            !0 === i.options.rtl && (e = -e), t = "left" == i.positionProp ? Math.ceil(e) + "px" : "0px", n = "top" == i.positionProp ? Math.ceil(e) + "px" : "0px", r[i.positionProp] = e, !1 === i.transformsEnabled ? i.$slideTrack.css(r) : (r = {}, !1 === i.cssTransitions ? (r[i.animType] = "translate(" + t + ", " + n + ")", i.$slideTrack.css(r)) : (r[i.animType] = "translate3d(" + t + ", " + n + ", 0px)", i.$slideTrack.css(r)))
        }, t.prototype.setDimensions = function() {
            var e = this;
            !1 === e.options.vertical ? !0 === e.options.centerMode && e.$list.css({
                padding: "0px " + e.options.centerPadding
            }) : (e.$list.height(e.$slides.first().outerHeight(!0) * e.options.slidesToShow), !0 === e.options.centerMode && e.$list.css({
                padding: e.options.centerPadding + " 0px"
            })), e.listWidth = e.$list.width(), e.listHeight = e.$list.height(), !1 === e.options.vertical && !1 === e.options.variableWidth ? (e.slideWidth = Math.ceil(e.listWidth / e.options.slidesToShow), e.$slideTrack.width(Math.ceil(e.slideWidth * e.$slideTrack.children(".slick-slide").length))) : !0 === e.options.variableWidth ? e.$slideTrack.width(5e3 * e.slideCount) : (e.slideWidth = Math.ceil(e.listWidth), e.$slideTrack.height(Math.ceil(e.$slides.first().outerHeight(!0) * e.$slideTrack.children(".slick-slide").length)));
            var t = e.$slides.first().outerWidth(!0) - e.$slides.first().width();
            !1 === e.options.variableWidth && e.$slideTrack.children(".slick-slide").width(e.slideWidth - t)
        }, t.prototype.setFade = function() {
            var t, n = this;
            n.$slides.each((function(i, r) {
                t = n.slideWidth * i * -1, !0 === n.options.rtl ? e(r).css({
                    position: "relative",
                    right: t,
                    top: 0,
                    zIndex: n.options.zIndex - 2,
                    opacity: 0
                }) : e(r).css({
                    position: "relative",
                    left: t,
                    top: 0,
                    zIndex: n.options.zIndex - 2,
                    opacity: 0
                })
            })), n.$slides.eq(n.currentSlide).css({
                zIndex: n.options.zIndex - 1,
                opacity: 1
            })
        }, t.prototype.setHeight = function() {
            var e = this;
            if (1 === e.options.slidesToShow && !0 === e.options.adaptiveHeight && !1 === e.options.vertical) {
                var t = e.$slides.eq(e.currentSlide).outerHeight(!0);
                e.$list.css("height", t)
            }
        }, t.prototype.setOption = t.prototype.slickSetOption = function() {
            var t, n, i, r, o, a = this,
                s = !1;
            if ("object" === e.type(arguments[0]) ? (i = arguments[0], s = arguments[1], o = "multiple") : "string" === e.type(arguments[0]) && (i = arguments[0], r = arguments[1], s = arguments[2], "responsive" === arguments[0] && "array" === e.type(arguments[1]) ? o = "responsive" : void 0 !== arguments[1] && (o = "single")), "single" === o) a.options[i] = r;
            else if ("multiple" === o) e.each(i, (function(e, t) {
                a.options[e] = t
            }));
            else if ("responsive" === o)
                for (n in r)
                    if ("array" !== e.type(a.options.responsive)) a.options.responsive = [r[n]];
                    else {
                        for (t = a.options.responsive.length - 1; t >= 0;) a.options.responsive[t].breakpoint === r[n].breakpoint && a.options.responsive.splice(t, 1), t--;
                        a.options.responsive.push(r[n])
                    }
            s && (a.unload(), a.reinit())
        }, t.prototype.setPosition = function() {
            var e = this;
            e.setDimensions(), e.setHeight(), !1 === e.options.fade ? e.setCSS(e.getLeft(e.currentSlide)) : e.setFade(), e.$slider.trigger("setPosition", [e])
        }, t.prototype.setProps = function() {
            var e = this,
                t = document.body.style;
            e.positionProp = !0 === e.options.vertical ? "top" : "left", "top" === e.positionProp ? e.$slider.addClass("slick-vertical") : e.$slider.removeClass("slick-vertical"), void 0 === t.WebkitTransition && void 0 === t.MozTransition && void 0 === t.msTransition || !0 === e.options.useCSS && (e.cssTransitions = !0), e.options.fade && ("number" == typeof e.options.zIndex ? e.options.zIndex < 3 && (e.options.zIndex = 3) : e.options.zIndex = e.defaults.zIndex), void 0 !== t.OTransform && (e.animType = "OTransform", e.transformType = "-o-transform", e.transitionType = "OTransition", void 0 === t.perspectiveProperty && void 0 === t.webkitPerspective && (e.animType = !1)), void 0 !== t.MozTransform && (e.animType = "MozTransform", e.transformType = "-moz-transform", e.transitionType = "MozTransition", void 0 === t.perspectiveProperty && void 0 === t.MozPerspective && (e.animType = !1)), void 0 !== t.webkitTransform && (e.animType = "webkitTransform", e.transformType = "-webkit-transform", e.transitionType = "webkitTransition", void 0 === t.perspectiveProperty && void 0 === t.webkitPerspective && (e.animType = !1)), void 0 !== t.msTransform && (e.animType = "msTransform", e.transformType = "-ms-transform", e.transitionType = "msTransition", void 0 === t.msTransform && (e.animType = !1)), void 0 !== t.transform && !1 !== e.animType && (e.animType = "transform", e.transformType = "transform", e.transitionType = "transition"), e.transformsEnabled = e.options.useTransform && null !== e.animType && !1 !== e.animType
        }, t.prototype.setSlideClasses = function(e) {
            var t, n, i, r, o = this;
            if (n = o.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden", "true"), o.$slides.eq(e).addClass("slick-current"), !0 === o.options.centerMode) {
                var a = o.options.slidesToShow % 2 == 0 ? 1 : 0;
                t = Math.floor(o.options.slidesToShow / 2), !0 === o.options.infinite && (e >= t && e <= o.slideCount - 1 - t ? o.$slides.slice(e - t + a, e + t + 1).addClass("slick-active").attr("aria-hidden", "false") : (i = o.options.slidesToShow + e, n.slice(i - t + 1 + a, i + t + 2).addClass("slick-active").attr("aria-hidden", "false")), 0 === e ? n.eq(n.length - 1 - o.options.slidesToShow).addClass("slick-center") : e === o.slideCount - 1 && n.eq(o.options.slidesToShow).addClass("slick-center")), o.$slides.eq(e).addClass("slick-center")
            } else e >= 0 && e <= o.slideCount - o.options.slidesToShow ? o.$slides.slice(e, e + o.options.slidesToShow).addClass("slick-active").attr("aria-hidden", "false") : n.length <= o.options.slidesToShow ? n.addClass("slick-active").attr("aria-hidden", "false") : (r = o.slideCount % o.options.slidesToShow, i = !0 === o.options.infinite ? o.options.slidesToShow + e : e, o.options.slidesToShow == o.options.slidesToScroll && o.slideCount - e < o.options.slidesToShow ? n.slice(i - (o.options.slidesToShow - r), i + r).addClass("slick-active").attr("aria-hidden", "false") : n.slice(i, i + o.options.slidesToShow).addClass("slick-active").attr("aria-hidden", "false"));
            "ondemand" !== o.options.lazyLoad && "anticipated" !== o.options.lazyLoad || o.lazyLoad()
        }, t.prototype.setupInfinite = function() {
            var t, n, i, r = this;
            if (!0 === r.options.fade && (r.options.centerMode = !1), !0 === r.options.infinite && !1 === r.options.fade && (n = null, r.slideCount > r.options.slidesToShow)) {
                for (i = !0 === r.options.centerMode ? r.options.slidesToShow + 1 : r.options.slidesToShow, t = r.slideCount; t > r.slideCount - i; t -= 1) n = t - 1, e(r.$slides[n]).clone(!0).attr("id", "").attr("data-slick-index", n - r.slideCount).prependTo(r.$slideTrack).addClass("slick-cloned");
                for (t = 0; t < i + r.slideCount; t += 1) n = t, e(r.$slides[n]).clone(!0).attr("id", "").attr("data-slick-index", n + r.slideCount).appendTo(r.$slideTrack).addClass("slick-cloned");
                r.$slideTrack.find(".slick-cloned").find("[id]").each((function() {
                    e(this).attr("id", "")
                }))
            }
        }, t.prototype.interrupt = function(e) {
            e || this.autoPlay(), this.interrupted = e
        }, t.prototype.selectHandler = function(t) {
            var n = this,
                i = e(t.target).is(".slick-slide") ? e(t.target) : e(t.target).parents(".slick-slide"),
                r = parseInt(i.attr("data-slick-index"));
            r || (r = 0), n.slideCount <= n.options.slidesToShow ? n.slideHandler(r, !1, !0) : n.slideHandler(r)
        }, t.prototype.slideHandler = function(e, t, n) {
            var i, r, o, a, s, l = null,
                c = this;
            if (t = t || !1, !(!0 === c.animating && !0 === c.options.waitForAnimate || !0 === c.options.fade && c.currentSlide === e))
                if (!1 === t && c.asNavFor(e), i = e, l = c.getLeft(i), a = c.getLeft(c.currentSlide), c.currentLeft = null === c.swipeLeft ? a : c.swipeLeft, !1 === c.options.infinite && !1 === c.options.centerMode && (e < 0 || e > c.getDotCount() * c.options.slidesToScroll)) !1 === c.options.fade && (i = c.currentSlide, !0 !== n ? c.animateSlide(a, (function() {
                    c.postSlide(i)
                })) : c.postSlide(i));
                else if (!1 === c.options.infinite && !0 === c.options.centerMode && (e < 0 || e > c.slideCount - c.options.slidesToScroll)) !1 === c.options.fade && (i = c.currentSlide, !0 !== n ? c.animateSlide(a, (function() {
                c.postSlide(i)
            })) : c.postSlide(i));
            else {
                if (c.options.autoplay && clearInterval(c.autoPlayTimer), r = i < 0 ? c.slideCount % c.options.slidesToScroll != 0 ? c.slideCount - c.slideCount % c.options.slidesToScroll : c.slideCount + i : i >= c.slideCount ? c.slideCount % c.options.slidesToScroll != 0 ? 0 : i - c.slideCount : i, c.animating = !0, c.$slider.trigger("beforeChange", [c, c.currentSlide, r]), o = c.currentSlide, c.currentSlide = r, c.setSlideClasses(c.currentSlide), c.options.asNavFor && (s = (s = c.getNavTarget()).slick("getSlick")).slideCount <= s.options.slidesToShow && s.setSlideClasses(c.currentSlide), c.updateDots(), c.updateArrows(), !0 === c.options.fade) return !0 !== n ? (c.fadeSlideOut(o), c.fadeSlide(r, (function() {
                    c.postSlide(r)
                }))) : c.postSlide(r), void c.animateHeight();
                !0 !== n ? c.animateSlide(l, (function() {
                    c.postSlide(r)
                })) : c.postSlide(r)
            }
        }, t.prototype.startLoad = function() {
            var e = this;
            !0 === e.options.arrows && e.slideCount > e.options.slidesToShow && (e.$prevArrow.hide(), e.$nextArrow.hide()), !0 === e.options.dots && e.slideCount > e.options.slidesToShow && e.$dots.hide(), e.$slider.addClass("slick-loading")
        }, t.prototype.swipeDirection = function() {
            var e, t, n, i, r = this;
            return e = r.touchObject.startX - r.touchObject.curX, t = r.touchObject.startY - r.touchObject.curY, n = Math.atan2(t, e), (i = Math.round(180 * n / Math.PI)) < 0 && (i = 360 - Math.abs(i)), i <= 45 && i >= 0 || i <= 360 && i >= 315 ? !1 === r.options.rtl ? "left" : "right" : i >= 135 && i <= 225 ? !1 === r.options.rtl ? "right" : "left" : !0 === r.options.verticalSwiping ? i >= 35 && i <= 135 ? "down" : "up" : "vertical"
        }, t.prototype.swipeEnd = function(e) {
            var t, n, i = this;
            if (i.dragging = !1, i.swiping = !1, i.scrolling) return i.scrolling = !1, !1;
            if (i.interrupted = !1, i.shouldClick = !(i.touchObject.swipeLength > 10), void 0 === i.touchObject.curX) return !1;
            if (!0 === i.touchObject.edgeHit && i.$slider.trigger("edge", [i, i.swipeDirection()]), i.touchObject.swipeLength >= i.touchObject.minSwipe) {
                switch (n = i.swipeDirection()) {
                    case "left":
                    case "down":
                        t = i.options.swipeToSlide ? i.checkNavigable(i.currentSlide + i.getSlideCount()) : i.currentSlide + i.getSlideCount(), i.currentDirection = 0;
                        break;
                    case "right":
                    case "up":
                        t = i.options.swipeToSlide ? i.checkNavigable(i.currentSlide - i.getSlideCount()) : i.currentSlide - i.getSlideCount(), i.currentDirection = 1
                }
                "vertical" != n && (i.slideHandler(t), i.touchObject = {}, i.$slider.trigger("swipe", [i, n]))
            } else i.touchObject.startX !== i.touchObject.curX && (i.slideHandler(i.currentSlide), i.touchObject = {})
        }, t.prototype.swipeHandler = function(e) {
            var t = this;
            if (!(!1 === t.options.swipe || "ontouchend" in document && !1 === t.options.swipe || !1 === t.options.draggable && -1 !== e.type.indexOf("mouse"))) switch (t.touchObject.fingerCount = e.originalEvent && void 0 !== e.originalEvent.touches ? e.originalEvent.touches.length : 1, t.touchObject.minSwipe = t.listWidth / t.options.touchThreshold, !0 === t.options.verticalSwiping && (t.touchObject.minSwipe = t.listHeight / t.options.touchThreshold), e.data.action) {
                case "start":
                    t.swipeStart(e);
                    break;
                case "move":
                    t.swipeMove(e);
                    break;
                case "end":
                    t.swipeEnd(e)
            }
        }, t.prototype.swipeMove = function(e) {
            var t, n, i, r, o, a, s = this;
            return o = void 0 !== e.originalEvent ? e.originalEvent.touches : null, !(!s.dragging || s.scrolling || o && 1 !== o.length) && (t = s.getLeft(s.currentSlide), s.touchObject.curX = void 0 !== o ? o[0].pageX : e.clientX, s.touchObject.curY = void 0 !== o ? o[0].pageY : e.clientY, s.touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(s.touchObject.curX - s.touchObject.startX, 2))), a = Math.round(Math.sqrt(Math.pow(s.touchObject.curY - s.touchObject.startY, 2))), !s.options.verticalSwiping && !s.swiping && a > 4 ? (s.scrolling = !0, !1) : (!0 === s.options.verticalSwiping && (s.touchObject.swipeLength = a), n = s.swipeDirection(), void 0 !== e.originalEvent && s.touchObject.swipeLength > 4 && (s.swiping = !0, e.preventDefault()), r = (!1 === s.options.rtl ? 1 : -1) * (s.touchObject.curX > s.touchObject.startX ? 1 : -1), !0 === s.options.verticalSwiping && (r = s.touchObject.curY > s.touchObject.startY ? 1 : -1), i = s.touchObject.swipeLength, s.touchObject.edgeHit = !1, !1 === s.options.infinite && (0 === s.currentSlide && "right" === n || s.currentSlide >= s.getDotCount() && "left" === n) && (i = s.touchObject.swipeLength * s.options.edgeFriction, s.touchObject.edgeHit = !0), !1 === s.options.vertical ? s.swipeLeft = t + i * r : s.swipeLeft = t + i * (s.$list.height() / s.listWidth) * r, !0 === s.options.verticalSwiping && (s.swipeLeft = t + i * r), !0 !== s.options.fade && !1 !== s.options.touchMove && (!0 === s.animating ? (s.swipeLeft = null, !1) : void s.setCSS(s.swipeLeft))))
        }, t.prototype.swipeStart = function(e) {
            var t, n = this;
            if (n.interrupted = !0, 1 !== n.touchObject.fingerCount || n.slideCount <= n.options.slidesToShow) return n.touchObject = {}, !1;
            void 0 !== e.originalEvent && void 0 !== e.originalEvent.touches && (t = e.originalEvent.touches[0]), n.touchObject.startX = n.touchObject.curX = void 0 !== t ? t.pageX : e.clientX, n.touchObject.startY = n.touchObject.curY = void 0 !== t ? t.pageY : e.clientY, n.dragging = !0
        }, t.prototype.unfilterSlides = t.prototype.slickUnfilter = function() {
            var e = this;
            null !== e.$slidesCache && (e.unload(), e.$slideTrack.children(this.options.slide).detach(), e.$slidesCache.appendTo(e.$slideTrack), e.reinit())
        }, t.prototype.unload = function() {
            var t = this;
            e(".slick-cloned", t.$slider).remove(), t.$dots && t.$dots.remove(), t.$prevArrow && t.htmlExpr.test(t.options.prevArrow) && t.$prevArrow.remove(), t.$nextArrow && t.htmlExpr.test(t.options.nextArrow) && t.$nextArrow.remove(), t.$slides.removeClass("slick-slide slick-active slick-visible slick-current").attr("aria-hidden", "true").css("width", "")
        }, t.prototype.unslick = function(e) {
            var t = this;
            t.$slider.trigger("unslick", [t, e]), t.destroy()
        }, t.prototype.updateArrows = function() {
            var e = this;
            Math.floor(e.options.slidesToShow / 2), !0 === e.options.arrows && e.slideCount > e.options.slidesToShow && !e.options.infinite && (e.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false"), e.$nextArrow.removeClass("slick-disabled").attr("aria-disabled", "false"), 0 === e.currentSlide ? (e.$prevArrow.addClass("slick-disabled").attr("aria-disabled", "true"), e.$nextArrow.removeClass("slick-disabled").attr("aria-disabled", "false")) : (e.currentSlide >= e.slideCount - e.options.slidesToShow && !1 === e.options.centerMode || e.currentSlide >= e.slideCount - 1 && !0 === e.options.centerMode) && (e.$nextArrow.addClass("slick-disabled").attr("aria-disabled", "true"), e.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false")))
        }, t.prototype.updateDots = function() {
            var e = this;
            null !== e.$dots && (e.$dots.find("li").removeClass("slick-active").end(), e.$dots.find("li").eq(Math.floor(e.currentSlide / e.options.slidesToScroll)).addClass("slick-active"))
        }, t.prototype.visibility = function() {
            var e = this;
            e.options.autoplay && (document[e.hidden] ? e.interrupted = !0 : e.interrupted = !1)
        }, e.fn.slick = function() {
            var e, n, i = this,
                r = arguments[0],
                o = Array.prototype.slice.call(arguments, 1),
                a = i.length;
            for (e = 0; e < a; e++)
                if ("object" == typeof r || void 0 === r ? i[e].slick = new t(i[e], r) : n = i[e].slick[r].apply(i[e].slick, o), void 0 !== n) return n;
            return i
        }
    })),
    function(e, t) {
        "object" == typeof exports && "object" == typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define([], t) : "object" == typeof exports ? exports.ClipboardJS = t() : e.ClipboardJS = t()
    }(this, (function() {
        return n = {}, e.m = t = [function(e, t) {
            e.exports = function(e) {
                var t;
                if ("SELECT" === e.nodeName) e.focus(), t = e.value;
                else if ("INPUT" === e.nodeName || "TEXTAREA" === e.nodeName) {
                    var n = e.hasAttribute("readonly");
                    n || e.setAttribute("readonly", ""), e.select(), e.setSelectionRange(0, e.value.length), n || e.removeAttribute("readonly"), t = e.value
                } else {
                    e.hasAttribute("contenteditable") && e.focus();
                    var i = window.getSelection(),
                        r = document.createRange();
                    r.selectNodeContents(e), i.removeAllRanges(), i.addRange(r), t = i.toString()
                }
                return t
            }
        }, function(e, t) {
            function n() {}
            n.prototype = {
                on: function(e, t, n) {
                    var i = this.e || (this.e = {});
                    return (i[e] || (i[e] = [])).push({
                        fn: t,
                        ctx: n
                    }), this
                },
                once: function(e, t, n) {
                    var i = this;

                    function r() {
                        i.off(e, r), t.apply(n, arguments)
                    }
                    return r._ = t, this.on(e, r, n)
                },
                emit: function(e) {
                    for (var t = [].slice.call(arguments, 1), n = ((this.e || (this.e = {}))[e] || []).slice(), i = 0, r = n.length; i < r; i++) n[i].fn.apply(n[i].ctx, t);
                    return this
                },
                off: function(e, t) {
                    var n = this.e || (this.e = {}),
                        i = n[e],
                        r = [];
                    if (i && t)
                        for (var o = 0, a = i.length; o < a; o++) i[o].fn !== t && i[o].fn._ !== t && r.push(i[o]);
                    return r.length ? n[e] = r : delete n[e], this
                }
            }, e.exports = n, e.exports.TinyEmitter = n
        }, function(e, t, n) {
            var i = n(3),
                r = n(4);
            e.exports = function(e, t, n) {
                if (!e && !t && !n) throw new Error("Missing required arguments");
                if (!i.string(t)) throw new TypeError("Second argument must be a String");
                if (!i.fn(n)) throw new TypeError("Third argument must be a Function");
                if (i.node(e)) return h = t, f = n, (d = e).addEventListener(h, f), {
                    destroy: function() {
                        d.removeEventListener(h, f)
                    }
                };
                if (i.nodeList(e)) return l = e, c = t, u = n, Array.prototype.forEach.call(l, (function(e) {
                    e.addEventListener(c, u)
                })), {
                    destroy: function() {
                        Array.prototype.forEach.call(l, (function(e) {
                            e.removeEventListener(c, u)
                        }))
                    }
                };
                if (i.string(e)) return o = e, a = t, s = n, r(document.body, o, a, s);
                throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList");
                var o, a, s, l, c, u, d, h, f
            }
        }, function(e, t) {
            t.node = function(e) {
                return void 0 !== e && e instanceof HTMLElement && 1 === e.nodeType
            }, t.nodeList = function(e) {
                var n = Object.prototype.toString.call(e);
                return void 0 !== e && ("[object NodeList]" === n || "[object HTMLCollection]" === n) && "length" in e && (0 === e.length || t.node(e[0]))
            }, t.string = function(e) {
                return "string" == typeof e || e instanceof String
            }, t.fn = function(e) {
                return "[object Function]" === Object.prototype.toString.call(e)
            }
        }, function(e, t, n) {
            var i = n(5);

            function r(e, t, n, r, o) {
                var a = function(e, t, n, r) {
                    return function(n) {
                        n.delegateTarget = i(n.target, t), n.delegateTarget && r.call(e, n)
                    }
                }.apply(this, arguments);
                return e.addEventListener(n, a, o), {
                    destroy: function() {
                        e.removeEventListener(n, a, o)
                    }
                }
            }
            e.exports = function(e, t, n, i, o) {
                return "function" == typeof e.addEventListener ? r.apply(null, arguments) : "function" == typeof n ? r.bind(null, document).apply(null, arguments) : ("string" == typeof e && (e = document.querySelectorAll(e)), Array.prototype.map.call(e, (function(e) {
                    return r(e, t, n, i, o)
                })))
            }
        }, function(e, t) {
            if ("undefined" != typeof Element && !Element.prototype.matches) {
                var n = Element.prototype;
                n.matches = n.matchesSelector || n.mozMatchesSelector || n.msMatchesSelector || n.oMatchesSelector || n.webkitMatchesSelector
            }
            e.exports = function(e, t) {
                for (; e && 9 !== e.nodeType;) {
                    if ("function" == typeof e.matches && e.matches(t)) return e;
                    e = e.parentNode
                }
            }
        }, function(e, t, n) {
            "use strict";
            n.r(t);
            var i = n(0),
                r = n.n(i),
                o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                    return typeof e
                } : function(e) {
                    return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                };

            function a(e, t) {
                for (var n = 0; n < t.length; n++) {
                    var i = t[n];
                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
                }
            }

            function s(e) {
                ! function(e, t) {
                    if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                }(this, s), this.resolveOptions(e), this.initSelection()
            }
            var l = (function(e, t, n) {
                    t && a(e.prototype, t)
                }(s, [{
                    key: "resolveOptions",
                    value: function(e) {
                        var t = 0 < arguments.length && void 0 !== e ? e : {};
                        this.action = t.action, this.container = t.container, this.emitter = t.emitter, this.target = t.target, this.text = t.text, this.trigger = t.trigger, this.selectedText = ""
                    }
                }, {
                    key: "initSelection",
                    value: function() {
                        this.text ? this.selectFake() : this.target && this.selectTarget()
                    }
                }, {
                    key: "selectFake",
                    value: function() {
                        var e = this,
                            t = "rtl" == document.documentElement.getAttribute("dir");
                        this.removeFake(), this.fakeHandlerCallback = function() {
                            return e.removeFake()
                        }, this.fakeHandler = this.container.addEventListener("click", this.fakeHandlerCallback) || !0, this.fakeElem = document.createElement("textarea"), this.fakeElem.style.fontSize = "12pt", this.fakeElem.style.border = "0", this.fakeElem.style.padding = "0", this.fakeElem.style.margin = "0", this.fakeElem.style.position = "absolute", this.fakeElem.style[t ? "right" : "left"] = "-9999px";
                        var n = window.pageYOffset || document.documentElement.scrollTop;
                        this.fakeElem.style.top = n + "px", this.fakeElem.setAttribute("readonly", ""), this.fakeElem.value = this.text, this.container.appendChild(this.fakeElem), this.selectedText = r()(this.fakeElem), this.copyText()
                    }
                }, {
                    key: "removeFake",
                    value: function() {
                        this.fakeHandler && (this.container.removeEventListener("click", this.fakeHandlerCallback), this.fakeHandler = null, this.fakeHandlerCallback = null), this.fakeElem && (this.container.removeChild(this.fakeElem), this.fakeElem = null)
                    }
                }, {
                    key: "selectTarget",
                    value: function() {
                        this.selectedText = r()(this.target), this.copyText()
                    }
                }, {
                    key: "copyText",
                    value: function() {
                        var e = void 0;
                        try {
                            e = document.execCommand(this.action)
                        } catch (t) {
                            e = !1
                        }
                        this.handleResult(e)
                    }
                }, {
                    key: "handleResult",
                    value: function(e) {
                        this.emitter.emit(e ? "success" : "error", {
                            action: this.action,
                            text: this.selectedText,
                            trigger: this.trigger,
                            clearSelection: this.clearSelection.bind(this)
                        })
                    }
                }, {
                    key: "clearSelection",
                    value: function() {
                        this.trigger && this.trigger.focus(), document.activeElement.blur(), window.getSelection().removeAllRanges()
                    }
                }, {
                    key: "destroy",
                    value: function() {
                        this.removeFake()
                    }
                }, {
                    key: "action",
                    set: function(e) {
                        var t = 0 < arguments.length && void 0 !== e ? e : "copy";
                        if (this._action = t, "copy" !== this._action && "cut" !== this._action) throw new Error('Invalid "action" value, use either "copy" or "cut"')
                    },
                    get: function() {
                        return this._action
                    }
                }, {
                    key: "target",
                    set: function(e) {
                        if (void 0 !== e) {
                            if (!e || "object" !== (void 0 === e ? "undefined" : o(e)) || 1 !== e.nodeType) throw new Error('Invalid "target" value, use a valid Element');
                            if ("copy" === this.action && e.hasAttribute("disabled")) throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');
                            if ("cut" === this.action && (e.hasAttribute("readonly") || e.hasAttribute("disabled"))) throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');
                            this._target = e
                        }
                    },
                    get: function() {
                        return this._target
                    }
                }]), s),
                c = n(1),
                u = n.n(c),
                d = n(2),
                h = n.n(d),
                f = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                    return typeof e
                } : function(e) {
                    return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                };

            function p(e, t) {
                for (var n = 0; n < t.length; n++) {
                    var i = t[n];
                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
                }
            }
            var g = (function(e, t) {
                if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                e.prototype = Object.create(t && t.prototype, {
                    constructor: {
                        value: e,
                        enumerable: !1,
                        writable: !0,
                        configurable: !0
                    }
                }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
            }(m, u.a), function(e, t, n) {
                t && p(e.prototype, t), n && p(e, n)
            }(m, [{
                key: "resolveOptions",
                value: function(e) {
                    var t = 0 < arguments.length && void 0 !== e ? e : {};
                    this.action = "function" == typeof t.action ? t.action : this.defaultAction, this.target = "function" == typeof t.target ? t.target : this.defaultTarget, this.text = "function" == typeof t.text ? t.text : this.defaultText, this.container = "object" === f(t.container) ? t.container : document.body
                }
            }, {
                key: "listenClick",
                value: function(e) {
                    var t = this;
                    this.listener = h()(e, "click", (function(e) {
                        return t.onClick(e)
                    }))
                }
            }, {
                key: "onClick",
                value: function(e) {
                    var t = e.delegateTarget || e.currentTarget;
                    this.clipboardAction && (this.clipboardAction = null), this.clipboardAction = new l({
                        action: this.action(t),
                        target: this.target(t),
                        text: this.text(t),
                        container: this.container,
                        trigger: t,
                        emitter: this
                    })
                }
            }, {
                key: "defaultAction",
                value: function(e) {
                    return v("action", e)
                }
            }, {
                key: "defaultTarget",
                value: function(e) {
                    var t = v("target", e);
                    if (t) return document.querySelector(t)
                }
            }, {
                key: "defaultText",
                value: function(e) {
                    return v("text", e)
                }
            }, {
                key: "destroy",
                value: function() {
                    this.listener.destroy(), this.clipboardAction && (this.clipboardAction.destroy(), this.clipboardAction = null)
                }
            }], [{
                key: "isSupported",
                value: function(e) {
                    var t = 0 < arguments.length && void 0 !== e ? e : ["copy", "cut"],
                        n = "string" == typeof t ? [t] : t,
                        i = !!document.queryCommandSupported;
                    return n.forEach((function(e) {
                        i = i && !!document.queryCommandSupported(e)
                    })), i
                }
            }]), m);

            function m(e, t) {
                ! function(e, t) {
                    if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                }(this, m);
                var n = function(e, t) {
                    if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                    return !t || "object" != typeof t && "function" != typeof t ? e : t
                }(this, (m.__proto__ || Object.getPrototypeOf(m)).call(this));
                return n.resolveOptions(t), n.listenClick(e), n
            }

            function v(e, t) {
                var n = "data-clipboard-" + e;
                if (t.hasAttribute(n)) return t.getAttribute(n)
            }
            t.default = g
        }], e.c = n, e.d = function(t, n, i) {
            e.o(t, n) || Object.defineProperty(t, n, {
                enumerable: !0,
                get: i
            })
        }, e.r = function(e) {
            "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {
                value: "Module"
            }), Object.defineProperty(e, "__esModule", {
                value: !0
            })
        }, e.t = function(t, n) {
            if (1 & n && (t = e(t)), 8 & n) return t;
            if (4 & n && "object" == typeof t && t && t.__esModule) return t;
            var i = Object.create(null);
            if (e.r(i), Object.defineProperty(i, "default", {
                    enumerable: !0,
                    value: t
                }), 2 & n && "string" != typeof t)
                for (var r in t) e.d(i, r, function(e) {
                    return t[e]
                }.bind(null, r));
            return i
        }, e.n = function(t) {
            var n = t && t.__esModule ? function() {
                return t.default
            } : function() {
                return t
            };
            return e.d(n, "a", n), n
        }, e.o = function(e, t) {
            return Object.prototype.hasOwnProperty.call(e, t)
        }, e.p = "", e(e.s = 6).default;

        function e(i) {
            if (n[i]) return n[i].exports;
            var r = n[i] = {
                i: i,
                l: !1,
                exports: {}
            };
            return t[i].call(r.exports, r, r.exports, e), r.l = !0, r.exports
        }
        var t, n
    })),
    function(e, t) {
        "object" == typeof exports && "undefined" != typeof module ? module.exports = t(function() {
            try {
                return require("moment")
            } catch (e) {}
        }()) : "function" == typeof define && define.amd ? define(["require"], (function(e) {
            return t(function() {
                try {
                    return e("moment")
                } catch (e) {}
            }())
        })) : (e = e || self).Chart = t(e.moment)
    }(this, (function(e) {
        "use strict";
        e = e && e.hasOwnProperty("default") ? e.default : e;
        var t = {
                aliceblue: [240, 248, 255],
                antiquewhite: [250, 235, 215],
                aqua: [0, 255, 255],
                aquamarine: [127, 255, 212],
                azure: [240, 255, 255],
                beige: [245, 245, 220],
                bisque: [255, 228, 196],
                black: [0, 0, 0],
                blanchedalmond: [255, 235, 205],
                blue: [0, 0, 255],
                blueviolet: [138, 43, 226],
                brown: [165, 42, 42],
                burlywood: [222, 184, 135],
                cadetblue: [95, 158, 160],
                chartreuse: [127, 255, 0],
                chocolate: [210, 105, 30],
                coral: [255, 127, 80],
                cornflowerblue: [100, 149, 237],
                cornsilk: [255, 248, 220],
                crimson: [220, 20, 60],
                cyan: [0, 255, 255],
                darkblue: [0, 0, 139],
                darkcyan: [0, 139, 139],
                darkgoldenrod: [184, 134, 11],
                darkgray: [169, 169, 169],
                darkgreen: [0, 100, 0],
                darkgrey: [169, 169, 169],
                darkkhaki: [189, 183, 107],
                darkmagenta: [139, 0, 139],
                darkolivegreen: [85, 107, 47],
                darkorange: [255, 140, 0],
                darkorchid: [153, 50, 204],
                darkred: [139, 0, 0],
                darksalmon: [233, 150, 122],
                darkseagreen: [143, 188, 143],
                darkslateblue: [72, 61, 139],
                darkslategray: [47, 79, 79],
                darkslategrey: [47, 79, 79],
                darkturquoise: [0, 206, 209],
                darkviolet: [148, 0, 211],
                deeppink: [255, 20, 147],
                deepskyblue: [0, 191, 255],
                dimgray: [105, 105, 105],
                dimgrey: [105, 105, 105],
                dodgerblue: [30, 144, 255],
                firebrick: [178, 34, 34],
                floralwhite: [255, 250, 240],
                forestgreen: [34, 139, 34],
                fuchsia: [255, 0, 255],
                gainsboro: [220, 220, 220],
                ghostwhite: [248, 248, 255],
                gold: [255, 215, 0],
                goldenrod: [218, 165, 32],
                gray: [128, 128, 128],
                green: [0, 128, 0],
                greenyellow: [173, 255, 47],
                grey: [128, 128, 128],
                honeydew: [240, 255, 240],
                hotpink: [255, 105, 180],
                indianred: [205, 92, 92],
                indigo: [75, 0, 130],
                ivory: [255, 255, 240],
                khaki: [240, 230, 140],
                lavender: [230, 230, 250],
                lavenderblush: [255, 240, 245],
                lawngreen: [124, 252, 0],
                lemonchiffon: [255, 250, 205],
                lightblue: [173, 216, 230],
                lightcoral: [240, 128, 128],
                lightcyan: [224, 255, 255],
                lightgoldenrodyellow: [250, 250, 210],
                lightgray: [211, 211, 211],
                lightgreen: [144, 238, 144],
                lightgrey: [211, 211, 211],
                lightpink: [255, 182, 193],
                lightsalmon: [255, 160, 122],
                lightseagreen: [32, 178, 170],
                lightskyblue: [135, 206, 250],
                lightslategray: [119, 136, 153],
                lightslategrey: [119, 136, 153],
                lightsteelblue: [176, 196, 222],
                lightyellow: [255, 255, 224],
                lime: [0, 255, 0],
                limegreen: [50, 205, 50],
                linen: [250, 240, 230],
                magenta: [255, 0, 255],
                maroon: [128, 0, 0],
                mediumaquamarine: [102, 205, 170],
                mediumblue: [0, 0, 205],
                mediumorchid: [186, 85, 211],
                mediumpurple: [147, 112, 219],
                mediumseagreen: [60, 179, 113],
                mediumslateblue: [123, 104, 238],
                mediumspringgreen: [0, 250, 154],
                mediumturquoise: [72, 209, 204],
                mediumvioletred: [199, 21, 133],
                midnightblue: [25, 25, 112],
                mintcream: [245, 255, 250],
                mistyrose: [255, 228, 225],
                moccasin: [255, 228, 181],
                navajowhite: [255, 222, 173],
                navy: [0, 0, 128],
                oldlace: [253, 245, 230],
                olive: [128, 128, 0],
                olivedrab: [107, 142, 35],
                orange: [255, 165, 0],
                orangered: [255, 69, 0],
                orchid: [218, 112, 214],
                palegoldenrod: [238, 232, 170],
                palegreen: [152, 251, 152],
                paleturquoise: [175, 238, 238],
                palevioletred: [219, 112, 147],
                papayawhip: [255, 239, 213],
                peachpuff: [255, 218, 185],
                peru: [205, 133, 63],
                pink: [255, 192, 203],
                plum: [221, 160, 221],
                powderblue: [176, 224, 230],
                purple: [128, 0, 128],
                rebeccapurple: [102, 51, 153],
                red: [255, 0, 0],
                rosybrown: [188, 143, 143],
                royalblue: [65, 105, 225],
                saddlebrown: [139, 69, 19],
                salmon: [250, 128, 114],
                sandybrown: [244, 164, 96],
                seagreen: [46, 139, 87],
                seashell: [255, 245, 238],
                sienna: [160, 82, 45],
                silver: [192, 192, 192],
                skyblue: [135, 206, 235],
                slateblue: [106, 90, 205],
                slategray: [112, 128, 144],
                slategrey: [112, 128, 144],
                snow: [255, 250, 250],
                springgreen: [0, 255, 127],
                steelblue: [70, 130, 180],
                tan: [210, 180, 140],
                teal: [0, 128, 128],
                thistle: [216, 191, 216],
                tomato: [255, 99, 71],
                turquoise: [64, 224, 208],
                violet: [238, 130, 238],
                wheat: [245, 222, 179],
                white: [255, 255, 255],
                whitesmoke: [245, 245, 245],
                yellow: [255, 255, 0],
                yellowgreen: [154, 205, 50]
            },
            n = function(e, t) {
                return e(t = {
                    exports: {}
                }), t.exports
            }((function(e) {
                var n = {};
                for (var i in t) t.hasOwnProperty(i) && (n[t[i]] = i);
                var r = e.exports = {
                    rgb: {
                        channels: 3,
                        labels: "rgb"
                    },
                    hsl: {
                        channels: 3,
                        labels: "hsl"
                    },
                    hsv: {
                        channels: 3,
                        labels: "hsv"
                    },
                    hwb: {
                        channels: 3,
                        labels: "hwb"
                    },
                    cmyk: {
                        channels: 4,
                        labels: "cmyk"
                    },
                    xyz: {
                        channels: 3,
                        labels: "xyz"
                    },
                    lab: {
                        channels: 3,
                        labels: "lab"
                    },
                    lch: {
                        channels: 3,
                        labels: "lch"
                    },
                    hex: {
                        channels: 1,
                        labels: ["hex"]
                    },
                    keyword: {
                        channels: 1,
                        labels: ["keyword"]
                    },
                    ansi16: {
                        channels: 1,
                        labels: ["ansi16"]
                    },
                    ansi256: {
                        channels: 1,
                        labels: ["ansi256"]
                    },
                    hcg: {
                        channels: 3,
                        labels: ["h", "c", "g"]
                    },
                    apple: {
                        channels: 3,
                        labels: ["r16", "g16", "b16"]
                    },
                    gray: {
                        channels: 1,
                        labels: ["gray"]
                    }
                };
                for (var o in r)
                    if (r.hasOwnProperty(o)) {
                        if (!("channels" in r[o])) throw new Error("missing channels property: " + o);
                        if (!("labels" in r[o])) throw new Error("missing channel labels property: " + o);
                        if (r[o].labels.length !== r[o].channels) throw new Error("channel and label counts mismatch: " + o);
                        var a = r[o].channels,
                            s = r[o].labels;
                        delete r[o].channels, delete r[o].labels, Object.defineProperty(r[o], "channels", {
                            value: a
                        }), Object.defineProperty(r[o], "labels", {
                            value: s
                        })
                    }
                r.rgb.hsl = function(e) {
                    var t, n, i = e[0] / 255,
                        r = e[1] / 255,
                        o = e[2] / 255,
                        a = Math.min(i, r, o),
                        s = Math.max(i, r, o),
                        l = s - a;
                    return s === a ? t = 0 : i === s ? t = (r - o) / l : r === s ? t = 2 + (o - i) / l : o === s && (t = 4 + (i - r) / l), (t = Math.min(60 * t, 360)) < 0 && (t += 360), n = (a + s) / 2, [t, 100 * (s === a ? 0 : n <= .5 ? l / (s + a) : l / (2 - s - a)), 100 * n]
                }, r.rgb.hsv = function(e) {
                    var t, n, i, r, o, a = e[0] / 255,
                        s = e[1] / 255,
                        l = e[2] / 255,
                        c = Math.max(a, s, l),
                        u = c - Math.min(a, s, l),
                        d = function(e) {
                            return (c - e) / 6 / u + .5
                        };
                    return 0 === u ? r = o = 0 : (o = u / c, t = d(a), n = d(s), i = d(l), a === c ? r = i - n : s === c ? r = 1 / 3 + t - i : l === c && (r = 2 / 3 + n - t), r < 0 ? r += 1 : r > 1 && (r -= 1)), [360 * r, 100 * o, 100 * c]
                }, r.rgb.hwb = function(e) {
                    var t = e[0],
                        n = e[1],
                        i = e[2];
                    return [r.rgb.hsl(e)[0], 1 / 255 * Math.min(t, Math.min(n, i)) * 100, 100 * (i = 1 - 1 / 255 * Math.max(t, Math.max(n, i)))]
                }, r.rgb.cmyk = function(e) {
                    var t, n = e[0] / 255,
                        i = e[1] / 255,
                        r = e[2] / 255;
                    return [100 * ((1 - n - (t = Math.min(1 - n, 1 - i, 1 - r))) / (1 - t) || 0), 100 * ((1 - i - t) / (1 - t) || 0), 100 * ((1 - r - t) / (1 - t) || 0), 100 * t]
                }, r.rgb.keyword = function(e) {
                    var i = n[e];
                    if (i) return i;
                    var r, o, a, s = 1 / 0;
                    for (var l in t)
                        if (t.hasOwnProperty(l)) {
                            var c = (o = e, a = t[l], Math.pow(o[0] - a[0], 2) + Math.pow(o[1] - a[1], 2) + Math.pow(o[2] - a[2], 2));
                            c < s && (s = c, r = l)
                        }
                    return r
                }, r.keyword.rgb = function(e) {
                    return t[e]
                }, r.rgb.xyz = function(e) {
                    var t = e[0] / 255,
                        n = e[1] / 255,
                        i = e[2] / 255;
                    return [100 * (.4124 * (t = t > .04045 ? Math.pow((t + .055) / 1.055, 2.4) : t / 12.92) + .3576 * (n = n > .04045 ? Math.pow((n + .055) / 1.055, 2.4) : n / 12.92) + .1805 * (i = i > .04045 ? Math.pow((i + .055) / 1.055, 2.4) : i / 12.92)), 100 * (.2126 * t + .7152 * n + .0722 * i), 100 * (.0193 * t + .1192 * n + .9505 * i)]
                }, r.rgb.lab = function(e) {
                    var t = r.rgb.xyz(e),
                        n = t[0],
                        i = t[1],
                        o = t[2];
                    return i /= 100, o /= 108.883, n = (n /= 95.047) > .008856 ? Math.pow(n, 1 / 3) : 7.787 * n + 16 / 116, [116 * (i = i > .008856 ? Math.pow(i, 1 / 3) : 7.787 * i + 16 / 116) - 16, 500 * (n - i), 200 * (i - (o = o > .008856 ? Math.pow(o, 1 / 3) : 7.787 * o + 16 / 116))]
                }, r.hsl.rgb = function(e) {
                    var t, n, i, r, o, a = e[0] / 360,
                        s = e[1] / 100,
                        l = e[2] / 100;
                    if (0 === s) return [o = 255 * l, o, o];
                    t = 2 * l - (n = l < .5 ? l * (1 + s) : l + s - l * s), r = [0, 0, 0];
                    for (var c = 0; c < 3; c++)(i = a + 1 / 3 * -(c - 1)) < 0 && i++, i > 1 && i--, o = 6 * i < 1 ? t + 6 * (n - t) * i : 2 * i < 1 ? n : 3 * i < 2 ? t + (n - t) * (2 / 3 - i) * 6 : t, r[c] = 255 * o;
                    return r
                }, r.hsl.hsv = function(e) {
                    var t = e[0],
                        n = e[1] / 100,
                        i = e[2] / 100,
                        r = n,
                        o = Math.max(i, .01);
                    return n *= (i *= 2) <= 1 ? i : 2 - i, r *= o <= 1 ? o : 2 - o, [t, 100 * (0 === i ? 2 * r / (o + r) : 2 * n / (i + n)), (i + n) / 2 * 100]
                }, r.hsv.rgb = function(e) {
                    var t = e[0] / 60,
                        n = e[1] / 100,
                        i = e[2] / 100,
                        r = Math.floor(t) % 6,
                        o = t - Math.floor(t),
                        a = 255 * i * (1 - n),
                        s = 255 * i * (1 - n * o),
                        l = 255 * i * (1 - n * (1 - o));
                    switch (i *= 255, r) {
                        case 0:
                            return [i, l, a];
                        case 1:
                            return [s, i, a];
                        case 2:
                            return [a, i, l];
                        case 3:
                            return [a, s, i];
                        case 4:
                            return [l, a, i];
                        case 5:
                            return [i, a, s]
                    }
                }, r.hsv.hsl = function(e) {
                    var t, n, i, r = e[0],
                        o = e[1] / 100,
                        a = e[2] / 100,
                        s = Math.max(a, .01);
                    return i = (2 - o) * a, n = o * s, [r, 100 * (n = (n /= (t = (2 - o) * s) <= 1 ? t : 2 - t) || 0), 100 * (i /= 2)]
                }, r.hwb.rgb = function(e) {
                    var t, n, i, r, o, a, s, l = e[0] / 360,
                        c = e[1] / 100,
                        u = e[2] / 100,
                        d = c + u;
                    switch (d > 1 && (c /= d, u /= d), i = 6 * l - (t = Math.floor(6 * l)), 0 != (1 & t) && (i = 1 - i), r = c + i * ((n = 1 - u) - c), t) {
                        default:
                            case 6:
                            case 0:
                            o = n,
                        a = r,
                        s = c;
                        break;
                        case 1:
                                o = r,
                            a = n,
                            s = c;
                            break;
                        case 2:
                                o = c,
                            a = n,
                            s = r;
                            break;
                        case 3:
                                o = c,
                            a = r,
                            s = n;
                            break;
                        case 4:
                                o = r,
                            a = c,
                            s = n;
                            break;
                        case 5:
                                o = n,
                            a = c,
                            s = r
                    }
                    return [255 * o, 255 * a, 255 * s]
                }, r.cmyk.rgb = function(e) {
                    var t = e[0] / 100,
                        n = e[1] / 100,
                        i = e[2] / 100,
                        r = e[3] / 100;
                    return [255 * (1 - Math.min(1, t * (1 - r) + r)), 255 * (1 - Math.min(1, n * (1 - r) + r)), 255 * (1 - Math.min(1, i * (1 - r) + r))]
                }, r.xyz.rgb = function(e) {
                    var t, n, i, r = e[0] / 100,
                        o = e[1] / 100,
                        a = e[2] / 100;
                    return n = -.9689 * r + 1.8758 * o + .0415 * a, i = .0557 * r + -.204 * o + 1.057 * a, t = (t = 3.2406 * r + -1.5372 * o + -.4986 * a) > .0031308 ? 1.055 * Math.pow(t, 1 / 2.4) - .055 : 12.92 * t, n = n > .0031308 ? 1.055 * Math.pow(n, 1 / 2.4) - .055 : 12.92 * n, i = i > .0031308 ? 1.055 * Math.pow(i, 1 / 2.4) - .055 : 12.92 * i, [255 * (t = Math.min(Math.max(0, t), 1)), 255 * (n = Math.min(Math.max(0, n), 1)), 255 * (i = Math.min(Math.max(0, i), 1))]
                }, r.xyz.lab = function(e) {
                    var t = e[0],
                        n = e[1],
                        i = e[2];
                    return n /= 100, i /= 108.883, t = (t /= 95.047) > .008856 ? Math.pow(t, 1 / 3) : 7.787 * t + 16 / 116, [116 * (n = n > .008856 ? Math.pow(n, 1 / 3) : 7.787 * n + 16 / 116) - 16, 500 * (t - n), 200 * (n - (i = i > .008856 ? Math.pow(i, 1 / 3) : 7.787 * i + 16 / 116))]
                }, r.lab.xyz = function(e) {
                    var t, n, i, r = e[0];
                    t = e[1] / 500 + (n = (r + 16) / 116), i = n - e[2] / 200;
                    var o = Math.pow(n, 3),
                        a = Math.pow(t, 3),
                        s = Math.pow(i, 3);
                    return n = o > .008856 ? o : (n - 16 / 116) / 7.787, t = a > .008856 ? a : (t - 16 / 116) / 7.787, i = s > .008856 ? s : (i - 16 / 116) / 7.787, [t *= 95.047, n *= 100, i *= 108.883]
                }, r.lab.lch = function(e) {
                    var t, n = e[0],
                        i = e[1],
                        r = e[2];
                    return (t = 360 * Math.atan2(r, i) / 2 / Math.PI) < 0 && (t += 360), [n, Math.sqrt(i * i + r * r), t]
                }, r.lch.lab = function(e) {
                    var t, n = e[0],
                        i = e[1];
                    return t = e[2] / 360 * 2 * Math.PI, [n, i * Math.cos(t), i * Math.sin(t)]
                }, r.rgb.ansi16 = function(e) {
                    var t = e[0],
                        n = e[1],
                        i = e[2],
                        o = 1 in arguments ? arguments[1] : r.rgb.hsv(e)[2];
                    if (0 === (o = Math.round(o / 50))) return 30;
                    var a = 30 + (Math.round(i / 255) << 2 | Math.round(n / 255) << 1 | Math.round(t / 255));
                    return 2 === o && (a += 60), a
                }, r.hsv.ansi16 = function(e) {
                    return r.rgb.ansi16(r.hsv.rgb(e), e[2])
                }, r.rgb.ansi256 = function(e) {
                    var t = e[0],
                        n = e[1],
                        i = e[2];
                    return t === n && n === i ? t < 8 ? 16 : t > 248 ? 231 : Math.round((t - 8) / 247 * 24) + 232 : 16 + 36 * Math.round(t / 255 * 5) + 6 * Math.round(n / 255 * 5) + Math.round(i / 255 * 5)
                }, r.ansi16.rgb = function(e) {
                    var t = e % 10;
                    if (0 === t || 7 === t) return e > 50 && (t += 3.5), [t = t / 10.5 * 255, t, t];
                    var n = .5 * (1 + ~~(e > 50));
                    return [(1 & t) * n * 255, (t >> 1 & 1) * n * 255, (t >> 2 & 1) * n * 255]
                }, r.ansi256.rgb = function(e) {
                    if (e >= 232) {
                        var t = 10 * (e - 232) + 8;
                        return [t, t, t]
                    }
                    var n;
                    return e -= 16, [Math.floor(e / 36) / 5 * 255, Math.floor((n = e % 36) / 6) / 5 * 255, n % 6 / 5 * 255]
                }, r.rgb.hex = function(e) {
                    var t = (((255 & Math.round(e[0])) << 16) + ((255 & Math.round(e[1])) << 8) + (255 & Math.round(e[2]))).toString(16).toUpperCase();
                    return "000000".substring(t.length) + t
                }, r.hex.rgb = function(e) {
                    var t = e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);
                    if (!t) return [0, 0, 0];
                    var n = t[0];
                    3 === t[0].length && (n = n.split("").map((function(e) {
                        return e + e
                    })).join(""));
                    var i = parseInt(n, 16);
                    return [i >> 16 & 255, i >> 8 & 255, 255 & i]
                }, r.rgb.hcg = function(e) {
                    var t, n = e[0] / 255,
                        i = e[1] / 255,
                        r = e[2] / 255,
                        o = Math.max(Math.max(n, i), r),
                        a = Math.min(Math.min(n, i), r),
                        s = o - a;
                    return t = s <= 0 ? 0 : o === n ? (i - r) / s % 6 : o === i ? 2 + (r - n) / s : 4 + (n - i) / s + 4, t /= 6, [360 * (t %= 1), 100 * s, 100 * (s < 1 ? a / (1 - s) : 0)]
                }, r.hsl.hcg = function(e) {
                    var t, n = e[1] / 100,
                        i = e[2] / 100,
                        r = 0;
                    return (t = i < .5 ? 2 * n * i : 2 * n * (1 - i)) < 1 && (r = (i - .5 * t) / (1 - t)), [e[0], 100 * t, 100 * r]
                }, r.hsv.hcg = function(e) {
                    var t = e[1] / 100,
                        n = e[2] / 100,
                        i = t * n,
                        r = 0;
                    return i < 1 && (r = (n - i) / (1 - i)), [e[0], 100 * i, 100 * r]
                }, r.hcg.rgb = function(e) {
                    var t = e[0] / 360,
                        n = e[1] / 100,
                        i = e[2] / 100;
                    if (0 === n) return [255 * i, 255 * i, 255 * i];
                    var r, o = [0, 0, 0],
                        a = t % 1 * 6,
                        s = a % 1,
                        l = 1 - s;
                    switch (Math.floor(a)) {
                        case 0:
                            o[0] = 1, o[1] = s, o[2] = 0;
                            break;
                        case 1:
                            o[0] = l, o[1] = 1, o[2] = 0;
                            break;
                        case 2:
                            o[0] = 0, o[1] = 1, o[2] = s;
                            break;
                        case 3:
                            o[0] = 0, o[1] = l, o[2] = 1;
                            break;
                        case 4:
                            o[0] = s, o[1] = 0, o[2] = 1;
                            break;
                        default:
                            o[0] = 1, o[1] = 0, o[2] = l
                    }
                    return r = (1 - n) * i, [255 * (n * o[0] + r), 255 * (n * o[1] + r), 255 * (n * o[2] + r)]
                }, r.hcg.hsv = function(e) {
                    var t = e[1] / 100,
                        n = t + e[2] / 100 * (1 - t),
                        i = 0;
                    return n > 0 && (i = t / n), [e[0], 100 * i, 100 * n]
                }, r.hcg.hsl = function(e) {
                    var t = e[1] / 100,
                        n = e[2] / 100 * (1 - t) + .5 * t,
                        i = 0;
                    return n > 0 && n < .5 ? i = t / (2 * n) : n >= .5 && n < 1 && (i = t / (2 * (1 - n))), [e[0], 100 * i, 100 * n]
                }, r.hcg.hwb = function(e) {
                    var t = e[1] / 100,
                        n = t + e[2] / 100 * (1 - t);
                    return [e[0], 100 * (n - t), 100 * (1 - n)]
                }, r.hwb.hcg = function(e) {
                    var t = e[1] / 100,
                        n = 1 - e[2] / 100,
                        i = n - t,
                        r = 0;
                    return i < 1 && (r = (n - i) / (1 - i)), [e[0], 100 * i, 100 * r]
                }, r.apple.rgb = function(e) {
                    return [e[0] / 65535 * 255, e[1] / 65535 * 255, e[2] / 65535 * 255]
                }, r.rgb.apple = function(e) {
                    return [e[0] / 255 * 65535, e[1] / 255 * 65535, e[2] / 255 * 65535]
                }, r.gray.rgb = function(e) {
                    return [e[0] / 100 * 255, e[0] / 100 * 255, e[0] / 100 * 255]
                }, r.gray.hsl = r.gray.hsv = function(e) {
                    return [0, 0, e[0]]
                }, r.gray.hwb = function(e) {
                    return [0, 100, e[0]]
                }, r.gray.cmyk = function(e) {
                    return [0, 0, 0, e[0]]
                }, r.gray.lab = function(e) {
                    return [e[0], 0, 0]
                }, r.gray.hex = function(e) {
                    var t = 255 & Math.round(e[0] / 100 * 255),
                        n = ((t << 16) + (t << 8) + t).toString(16).toUpperCase();
                    return "000000".substring(n.length) + n
                }, r.rgb.gray = function(e) {
                    return [(e[0] + e[1] + e[2]) / 3 / 255 * 100]
                }
            }));

        function i(e) {
            var t = function() {
                    for (var e = {}, t = Object.keys(n), i = t.length, r = 0; r < i; r++) e[t[r]] = {
                        distance: -1,
                        parent: null
                    };
                    return e
                }(),
                i = [e];
            for (t[e].distance = 0; i.length;)
                for (var r = i.pop(), o = Object.keys(n[r]), a = o.length, s = 0; s < a; s++) {
                    var l = o[s],
                        c = t[l]; - 1 === c.distance && (c.distance = t[r].distance + 1, c.parent = r, i.unshift(l))
                }
            return t
        }

        function r(e, t) {
            return function(n) {
                return t(e(n))
            }
        }

        function o(e, t) {
            for (var i = [t[e].parent, e], o = n[t[e].parent][e], a = t[e].parent; t[a].parent;) i.unshift(t[a].parent), o = r(n[t[a].parent][a], o), a = t[a].parent;
            return o.conversion = i, o
        }
        n.rgb, n.hsl, n.hsv, n.hwb, n.cmyk, n.xyz, n.lab, n.lch, n.hex, n.keyword, n.ansi16, n.ansi256, n.hcg, n.apple, n.gray;
        var a = {};
        Object.keys(n).forEach((function(e) {
            a[e] = {}, Object.defineProperty(a[e], "channels", {
                value: n[e].channels
            }), Object.defineProperty(a[e], "labels", {
                value: n[e].labels
            });
            var t = function(e) {
                for (var t = i(e), n = {}, r = Object.keys(t), a = r.length, s = 0; s < a; s++) {
                    var l = r[s];
                    null !== t[l].parent && (n[l] = o(l, t))
                }
                return n
            }(e);
            Object.keys(t).forEach((function(n) {
                var i = t[n];
                a[e][n] = function(e) {
                    var t = function(t) {
                        if (null == t) return t;
                        arguments.length > 1 && (t = Array.prototype.slice.call(arguments));
                        var n = e(t);
                        if ("object" == typeof n)
                            for (var i = n.length, r = 0; r < i; r++) n[r] = Math.round(n[r]);
                        return n
                    };
                    return "conversion" in e && (t.conversion = e.conversion), t
                }(i), a[e][n].raw = function(e) {
                    var t = function(t) {
                        return null == t ? t : (arguments.length > 1 && (t = Array.prototype.slice.call(arguments)), e(t))
                    };
                    return "conversion" in e && (t.conversion = e.conversion), t
                }(i)
            }))
        }));
        var s = a,
            l = {
                aliceblue: [240, 248, 255],
                antiquewhite: [250, 235, 215],
                aqua: [0, 255, 255],
                aquamarine: [127, 255, 212],
                azure: [240, 255, 255],
                beige: [245, 245, 220],
                bisque: [255, 228, 196],
                black: [0, 0, 0],
                blanchedalmond: [255, 235, 205],
                blue: [0, 0, 255],
                blueviolet: [138, 43, 226],
                brown: [165, 42, 42],
                burlywood: [222, 184, 135],
                cadetblue: [95, 158, 160],
                chartreuse: [127, 255, 0],
                chocolate: [210, 105, 30],
                coral: [255, 127, 80],
                cornflowerblue: [100, 149, 237],
                cornsilk: [255, 248, 220],
                crimson: [220, 20, 60],
                cyan: [0, 255, 255],
                darkblue: [0, 0, 139],
                darkcyan: [0, 139, 139],
                darkgoldenrod: [184, 134, 11],
                darkgray: [169, 169, 169],
                darkgreen: [0, 100, 0],
                darkgrey: [169, 169, 169],
                darkkhaki: [189, 183, 107],
                darkmagenta: [139, 0, 139],
                darkolivegreen: [85, 107, 47],
                darkorange: [255, 140, 0],
                darkorchid: [153, 50, 204],
                darkred: [139, 0, 0],
                darksalmon: [233, 150, 122],
                darkseagreen: [143, 188, 143],
                darkslateblue: [72, 61, 139],
                darkslategray: [47, 79, 79],
                darkslategrey: [47, 79, 79],
                darkturquoise: [0, 206, 209],
                darkviolet: [148, 0, 211],
                deeppink: [255, 20, 147],
                deepskyblue: [0, 191, 255],
                dimgray: [105, 105, 105],
                dimgrey: [105, 105, 105],
                dodgerblue: [30, 144, 255],
                firebrick: [178, 34, 34],
                floralwhite: [255, 250, 240],
                forestgreen: [34, 139, 34],
                fuchsia: [255, 0, 255],
                gainsboro: [220, 220, 220],
                ghostwhite: [248, 248, 255],
                gold: [255, 215, 0],
                goldenrod: [218, 165, 32],
                gray: [128, 128, 128],
                green: [0, 128, 0],
                greenyellow: [173, 255, 47],
                grey: [128, 128, 128],
                honeydew: [240, 255, 240],
                hotpink: [255, 105, 180],
                indianred: [205, 92, 92],
                indigo: [75, 0, 130],
                ivory: [255, 255, 240],
                khaki: [240, 230, 140],
                lavender: [230, 230, 250],
                lavenderblush: [255, 240, 245],
                lawngreen: [124, 252, 0],
                lemonchiffon: [255, 250, 205],
                lightblue: [173, 216, 230],
                lightcoral: [240, 128, 128],
                lightcyan: [224, 255, 255],
                lightgoldenrodyellow: [250, 250, 210],
                lightgray: [211, 211, 211],
                lightgreen: [144, 238, 144],
                lightgrey: [211, 211, 211],
                lightpink: [255, 182, 193],
                lightsalmon: [255, 160, 122],
                lightseagreen: [32, 178, 170],
                lightskyblue: [135, 206, 250],
                lightslategray: [119, 136, 153],
                lightslategrey: [119, 136, 153],
                lightsteelblue: [176, 196, 222],
                lightyellow: [255, 255, 224],
                lime: [0, 255, 0],
                limegreen: [50, 205, 50],
                linen: [250, 240, 230],
                magenta: [255, 0, 255],
                maroon: [128, 0, 0],
                mediumaquamarine: [102, 205, 170],
                mediumblue: [0, 0, 205],
                mediumorchid: [186, 85, 211],
                mediumpurple: [147, 112, 219],
                mediumseagreen: [60, 179, 113],
                mediumslateblue: [123, 104, 238],
                mediumspringgreen: [0, 250, 154],
                mediumturquoise: [72, 209, 204],
                mediumvioletred: [199, 21, 133],
                midnightblue: [25, 25, 112],
                mintcream: [245, 255, 250],
                mistyrose: [255, 228, 225],
                moccasin: [255, 228, 181],
                navajowhite: [255, 222, 173],
                navy: [0, 0, 128],
                oldlace: [253, 245, 230],
                olive: [128, 128, 0],
                olivedrab: [107, 142, 35],
                orange: [255, 165, 0],
                orangered: [255, 69, 0],
                orchid: [218, 112, 214],
                palegoldenrod: [238, 232, 170],
                palegreen: [152, 251, 152],
                paleturquoise: [175, 238, 238],
                palevioletred: [219, 112, 147],
                papayawhip: [255, 239, 213],
                peachpuff: [255, 218, 185],
                peru: [205, 133, 63],
                pink: [255, 192, 203],
                plum: [221, 160, 221],
                powderblue: [176, 224, 230],
                purple: [128, 0, 128],
                rebeccapurple: [102, 51, 153],
                red: [255, 0, 0],
                rosybrown: [188, 143, 143],
                royalblue: [65, 105, 225],
                saddlebrown: [139, 69, 19],
                salmon: [250, 128, 114],
                sandybrown: [244, 164, 96],
                seagreen: [46, 139, 87],
                seashell: [255, 245, 238],
                sienna: [160, 82, 45],
                silver: [192, 192, 192],
                skyblue: [135, 206, 235],
                slateblue: [106, 90, 205],
                slategray: [112, 128, 144],
                slategrey: [112, 128, 144],
                snow: [255, 250, 250],
                springgreen: [0, 255, 127],
                steelblue: [70, 130, 180],
                tan: [210, 180, 140],
                teal: [0, 128, 128],
                thistle: [216, 191, 216],
                tomato: [255, 99, 71],
                turquoise: [64, 224, 208],
                violet: [238, 130, 238],
                wheat: [245, 222, 179],
                white: [255, 255, 255],
                whitesmoke: [245, 245, 245],
                yellow: [255, 255, 0],
                yellowgreen: [154, 205, 50]
            },
            c = {
                getRgba: u,
                getHsla: d,
                getRgb: function(e) {
                    var t = u(e);
                    return t && t.slice(0, 3)
                },
                getHsl: function(e) {
                    var t = d(e);
                    return t && t.slice(0, 3)
                },
                getHwb: h,
                getAlpha: function(e) {
                    var t = u(e);
                    return t || (t = d(e)) || (t = h(e)) ? t[3] : void 0
                },
                hexString: function(e, t) {
                    return t = void 0 !== t && 3 === e.length ? t : e[3], "#" + v(e[0]) + v(e[1]) + v(e[2]) + (t >= 0 && t < 1 ? v(Math.round(255 * t)) : "")
                },
                rgbString: function(e, t) {
                    return t < 1 || e[3] && e[3] < 1 ? f(e, t) : "rgb(" + e[0] + ", " + e[1] + ", " + e[2] + ")"
                },
                rgbaString: f,
                percentString: function(e, t) {
                    return t < 1 || e[3] && e[3] < 1 ? p(e, t) : "rgb(" + Math.round(e[0] / 255 * 100) + "%, " + Math.round(e[1] / 255 * 100) + "%, " + Math.round(e[2] / 255 * 100) + "%)"
                },
                percentaString: p,
                hslString: function(e, t) {
                    return t < 1 || e[3] && e[3] < 1 ? g(e, t) : "hsl(" + e[0] + ", " + e[1] + "%, " + e[2] + "%)"
                },
                hslaString: g,
                hwbString: function(e, t) {
                    return void 0 === t && (t = void 0 !== e[3] ? e[3] : 1), "hwb(" + e[0] + ", " + e[1] + "%, " + e[2] + "%" + (void 0 !== t && 1 !== t ? ", " + t : "") + ")"
                },
                keyword: function(e) {
                    return y[e.slice(0, 3)]
                }
            };

        function u(e) {
            if (e) {
                var t = [0, 0, 0],
                    n = 1,
                    i = e.match(/^#([a-fA-F0-9]{3,4})$/i),
                    r = "";
                if (i) {
                    r = (i = i[1])[3];
                    for (var o = 0; o < t.length; o++) t[o] = parseInt(i[o] + i[o], 16);
                    r && (n = Math.round(parseInt(r + r, 16) / 255 * 100) / 100)
                } else if (i = e.match(/^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i)) {
                    for (r = i[2], i = i[1], o = 0; o < t.length; o++) t[o] = parseInt(i.slice(2 * o, 2 * o + 2), 16);
                    r && (n = Math.round(parseInt(r, 16) / 255 * 100) / 100)
                } else if (i = e.match(/^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)) {
                    for (o = 0; o < t.length; o++) t[o] = parseInt(i[o + 1]);
                    n = parseFloat(i[4])
                } else if (i = e.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)) {
                    for (o = 0; o < t.length; o++) t[o] = Math.round(2.55 * parseFloat(i[o + 1]));
                    n = parseFloat(i[4])
                } else if (i = e.match(/(\w+)/)) {
                    if ("transparent" == i[1]) return [0, 0, 0, 0];
                    if (!(t = l[i[1]])) return
                }
                for (o = 0; o < t.length; o++) t[o] = m(t[o], 0, 255);
                return n = n || 0 == n ? m(n, 0, 1) : 1, t[3] = n, t
            }
        }

        function d(e) {
            if (e) {
                var t = e.match(/^hsla?\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/);
                if (t) {
                    var n = parseFloat(t[4]);
                    return [m(parseInt(t[1]), 0, 360), m(parseFloat(t[2]), 0, 100), m(parseFloat(t[3]), 0, 100), m(isNaN(n) ? 1 : n, 0, 1)]
                }
            }
        }

        function h(e) {
            if (e) {
                var t = e.match(/^hwb\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/);
                if (t) {
                    var n = parseFloat(t[4]);
                    return [m(parseInt(t[1]), 0, 360), m(parseFloat(t[2]), 0, 100), m(parseFloat(t[3]), 0, 100), m(isNaN(n) ? 1 : n, 0, 1)]
                }
            }
        }

        function f(e, t) {
            return void 0 === t && (t = void 0 !== e[3] ? e[3] : 1), "rgba(" + e[0] + ", " + e[1] + ", " + e[2] + ", " + t + ")"
        }

        function p(e, t) {
            return "rgba(" + Math.round(e[0] / 255 * 100) + "%, " + Math.round(e[1] / 255 * 100) + "%, " + Math.round(e[2] / 255 * 100) + "%, " + (t || e[3] || 1) + ")"
        }

        function g(e, t) {
            return void 0 === t && (t = void 0 !== e[3] ? e[3] : 1), "hsla(" + e[0] + ", " + e[1] + "%, " + e[2] + "%, " + t + ")"
        }

        function m(e, t, n) {
            return Math.min(Math.max(t, e), n)
        }

        function v(e) {
            var t = e.toString(16).toUpperCase();
            return t.length < 2 ? "0" + t : t
        }
        var y = {};
        for (var b in l) y[l[b]] = b;
        var w = function(e) {
            return e instanceof w ? e : this instanceof w ? (this.valid = !1, this.values = {
                rgb: [0, 0, 0],
                hsl: [0, 0, 0],
                hsv: [0, 0, 0],
                hwb: [0, 0, 0],
                cmyk: [0, 0, 0, 0],
                alpha: 1
            }, void("string" == typeof e ? (t = c.getRgba(e)) ? this.setValues("rgb", t) : (t = c.getHsla(e)) ? this.setValues("hsl", t) : (t = c.getHwb(e)) && this.setValues("hwb", t) : "object" == typeof e && (void 0 !== (t = e).r || void 0 !== t.red ? this.setValues("rgb", t) : void 0 !== t.l || void 0 !== t.lightness ? this.setValues("hsl", t) : void 0 !== t.v || void 0 !== t.value ? this.setValues("hsv", t) : void 0 !== t.w || void 0 !== t.whiteness ? this.setValues("hwb", t) : void 0 === t.c && void 0 === t.cyan || this.setValues("cmyk", t)))) : new w(e);
            var t
        };
        w.prototype = {
            isValid: function() {
                return this.valid
            },
            rgb: function() {
                return this.setSpace("rgb", arguments)
            },
            hsl: function() {
                return this.setSpace("hsl", arguments)
            },
            hsv: function() {
                return this.setSpace("hsv", arguments)
            },
            hwb: function() {
                return this.setSpace("hwb", arguments)
            },
            cmyk: function() {
                return this.setSpace("cmyk", arguments)
            },
            rgbArray: function() {
                return this.values.rgb
            },
            hslArray: function() {
                return this.values.hsl
            },
            hsvArray: function() {
                return this.values.hsv
            },
            hwbArray: function() {
                var e = this.values;
                return 1 !== e.alpha ? e.hwb.concat([e.alpha]) : e.hwb
            },
            cmykArray: function() {
                return this.values.cmyk
            },
            rgbaArray: function() {
                var e = this.values;
                return e.rgb.concat([e.alpha])
            },
            hslaArray: function() {
                var e = this.values;
                return e.hsl.concat([e.alpha])
            },
            alpha: function(e) {
                return void 0 === e ? this.values.alpha : (this.setValues("alpha", e), this)
            },
            red: function(e) {
                return this.setChannel("rgb", 0, e)
            },
            green: function(e) {
                return this.setChannel("rgb", 1, e)
            },
            blue: function(e) {
                return this.setChannel("rgb", 2, e)
            },
            hue: function(e) {
                return e && (e = (e %= 360) < 0 ? 360 + e : e), this.setChannel("hsl", 0, e)
            },
            saturation: function(e) {
                return this.setChannel("hsl", 1, e)
            },
            lightness: function(e) {
                return this.setChannel("hsl", 2, e)
            },
            saturationv: function(e) {
                return this.setChannel("hsv", 1, e)
            },
            whiteness: function(e) {
                return this.setChannel("hwb", 1, e)
            },
            blackness: function(e) {
                return this.setChannel("hwb", 2, e)
            },
            value: function(e) {
                return this.setChannel("hsv", 2, e)
            },
            cyan: function(e) {
                return this.setChannel("cmyk", 0, e)
            },
            magenta: function(e) {
                return this.setChannel("cmyk", 1, e)
            },
            yellow: function(e) {
                return this.setChannel("cmyk", 2, e)
            },
            black: function(e) {
                return this.setChannel("cmyk", 3, e)
            },
            hexString: function() {
                return c.hexString(this.values.rgb)
            },
            rgbString: function() {
                return c.rgbString(this.values.rgb, this.values.alpha)
            },
            rgbaString: function() {
                return c.rgbaString(this.values.rgb, this.values.alpha)
            },
            percentString: function() {
                return c.percentString(this.values.rgb, this.values.alpha)
            },
            hslString: function() {
                return c.hslString(this.values.hsl, this.values.alpha)
            },
            hslaString: function() {
                return c.hslaString(this.values.hsl, this.values.alpha)
            },
            hwbString: function() {
                return c.hwbString(this.values.hwb, this.values.alpha)
            },
            keyword: function() {
                return c.keyword(this.values.rgb, this.values.alpha)
            },
            rgbNumber: function() {
                var e = this.values.rgb;
                return e[0] << 16 | e[1] << 8 | e[2]
            },
            luminosity: function() {
                for (var e = this.values.rgb, t = [], n = 0; n < e.length; n++) {
                    var i = e[n] / 255;
                    t[n] = i <= .03928 ? i / 12.92 : Math.pow((i + .055) / 1.055, 2.4)
                }
                return .2126 * t[0] + .7152 * t[1] + .0722 * t[2]
            },
            contrast: function(e) {
                var t = this.luminosity(),
                    n = e.luminosity();
                return t > n ? (t + .05) / (n + .05) : (n + .05) / (t + .05)
            },
            level: function(e) {
                var t = this.contrast(e);
                return t >= 7.1 ? "AAA" : t >= 4.5 ? "AA" : ""
            },
            dark: function() {
                var e = this.values.rgb;
                return (299 * e[0] + 587 * e[1] + 114 * e[2]) / 1e3 < 128
            },
            light: function() {
                return !this.dark()
            },
            negate: function() {
                for (var e = [], t = 0; t < 3; t++) e[t] = 255 - this.values.rgb[t];
                return this.setValues("rgb", e), this
            },
            lighten: function(e) {
                var t = this.values.hsl;
                return t[2] += t[2] * e, this.setValues("hsl", t), this
            },
            darken: function(e) {
                var t = this.values.hsl;
                return t[2] -= t[2] * e, this.setValues("hsl", t), this
            },
            saturate: function(e) {
                var t = this.values.hsl;
                return t[1] += t[1] * e, this.setValues("hsl", t), this
            },
            desaturate: function(e) {
                var t = this.values.hsl;
                return t[1] -= t[1] * e, this.setValues("hsl", t), this
            },
            whiten: function(e) {
                var t = this.values.hwb;
                return t[1] += t[1] * e, this.setValues("hwb", t), this
            },
            blacken: function(e) {
                var t = this.values.hwb;
                return t[2] += t[2] * e, this.setValues("hwb", t), this
            },
            greyscale: function() {
                var e = this.values.rgb,
                    t = .3 * e[0] + .59 * e[1] + .11 * e[2];
                return this.setValues("rgb", [t, t, t]), this
            },
            clearer: function(e) {
                var t = this.values.alpha;
                return this.setValues("alpha", t - t * e), this
            },
            opaquer: function(e) {
                var t = this.values.alpha;
                return this.setValues("alpha", t + t * e), this
            },
            rotate: function(e) {
                var t = this.values.hsl,
                    n = (t[0] + e) % 360;
                return t[0] = n < 0 ? 360 + n : n, this.setValues("hsl", t), this
            },
            mix: function(e, t) {
                var n = e,
                    i = void 0 === t ? .5 : t,
                    r = 2 * i - 1,
                    o = this.alpha() - n.alpha(),
                    a = ((r * o == -1 ? r : (r + o) / (1 + r * o)) + 1) / 2,
                    s = 1 - a;
                return this.rgb(a * this.red() + s * n.red(), a * this.green() + s * n.green(), a * this.blue() + s * n.blue()).alpha(this.alpha() * i + n.alpha() * (1 - i))
            },
            toJSON: function() {
                return this.rgb()
            },
            clone: function() {
                var e, t, n = new w,
                    i = this.values,
                    r = n.values;
                for (var o in i) i.hasOwnProperty(o) && (e = i[o], "[object Array]" === (t = {}.toString.call(e)) ? r[o] = e.slice(0) : "[object Number]" === t ? r[o] = e : console.error("unexpected color value:", e));
                return n
            }
        }, w.prototype.spaces = {
            rgb: ["red", "green", "blue"],
            hsl: ["hue", "saturation", "lightness"],
            hsv: ["hue", "saturation", "value"],
            hwb: ["hue", "whiteness", "blackness"],
            cmyk: ["cyan", "magenta", "yellow", "black"]
        }, w.prototype.maxes = {
            rgb: [255, 255, 255],
            hsl: [360, 100, 100],
            hsv: [360, 100, 100],
            hwb: [360, 100, 100],
            cmyk: [100, 100, 100, 100]
        }, w.prototype.getValues = function(e) {
            for (var t = this.values, n = {}, i = 0; i < e.length; i++) n[e.charAt(i)] = t[e][i];
            return 1 !== t.alpha && (n.a = t.alpha), n
        }, w.prototype.setValues = function(e, t) {
            var n, i, r = this.values,
                o = this.spaces,
                a = this.maxes,
                l = 1;
            if (this.valid = !0, "alpha" === e) l = t;
            else if (t.length) r[e] = t.slice(0, e.length), l = t[e.length];
            else if (void 0 !== t[e.charAt(0)]) {
                for (n = 0; n < e.length; n++) r[e][n] = t[e.charAt(n)];
                l = t.a
            } else if (void 0 !== t[o[e][0]]) {
                var c = o[e];
                for (n = 0; n < e.length; n++) r[e][n] = t[c[n]];
                l = t.alpha
            }
            if (r.alpha = Math.max(0, Math.min(1, void 0 === l ? r.alpha : l)), "alpha" === e) return !1;
            for (n = 0; n < e.length; n++) i = Math.max(0, Math.min(a[e][n], r[e][n])), r[e][n] = Math.round(i);
            for (var u in o) u !== e && (r[u] = s[e][u](r[e]));
            return !0
        }, w.prototype.setSpace = function(e, t) {
            var n = t[0];
            return void 0 === n ? this.getValues(e) : ("number" == typeof n && (n = Array.prototype.slice.call(t)), this.setValues(e, n), this)
        }, w.prototype.setChannel = function(e, t, n) {
            var i = this.values[e];
            return void 0 === n ? i[t] : (n === i[t] || (i[t] = n, this.setValues(e, i)), this)
        }, "undefined" != typeof window && (window.Color = w);
        var x, _ = w,
            C = {
                noop: function() {},
                uid: (x = 0, function() {
                    return x++
                }),
                isNullOrUndef: function(e) {
                    return null == e
                },
                isArray: function(e) {
                    if (Array.isArray && Array.isArray(e)) return !0;
                    var t = Object.prototype.toString.call(e);
                    return "[object" === t.substr(0, 7) && "Array]" === t.substr(-6)
                },
                isObject: function(e) {
                    return null !== e && "[object Object]" === Object.prototype.toString.call(e)
                },
                isFinite: function(e) {
                    return ("number" == typeof e || e instanceof Number) && isFinite(e)
                },
                valueOrDefault: function(e, t) {
                    return void 0 === e ? t : e
                },
                valueAtIndexOrDefault: function(e, t, n) {
                    return C.valueOrDefault(C.isArray(e) ? e[t] : e, n)
                },
                callback: function(e, t, n) {
                    if (e && "function" == typeof e.call) return e.apply(n, t)
                },
                each: function(e, t, n, i) {
                    var r, o, a;
                    if (C.isArray(e))
                        if (o = e.length, i)
                            for (r = o - 1; r >= 0; r--) t.call(n, e[r], r);
                        else
                            for (r = 0; r < o; r++) t.call(n, e[r], r);
                    else if (C.isObject(e))
                        for (o = (a = Object.keys(e)).length, r = 0; r < o; r++) t.call(n, e[a[r]], a[r])
                },
                arrayEquals: function(e, t) {
                    var n, i, r, o;
                    if (!e || !t || e.length !== t.length) return !1;
                    for (n = 0, i = e.length; n < i; ++n)
                        if (r = e[n], o = t[n], r instanceof Array && o instanceof Array) {
                            if (!C.arrayEquals(r, o)) return !1
                        } else if (r !== o) return !1;
                    return !0
                },
                clone: function(e) {
                    if (C.isArray(e)) return e.map(C.clone);
                    if (C.isObject(e)) {
                        for (var t = {}, n = Object.keys(e), i = n.length, r = 0; r < i; ++r) t[n[r]] = C.clone(e[n[r]]);
                        return t
                    }
                    return e
                },
                _merger: function(e, t, n, i) {
                    var r = t[e],
                        o = n[e];
                    C.isObject(r) && C.isObject(o) ? C.merge(r, o, i) : t[e] = C.clone(o)
                },
                _mergerIf: function(e, t, n) {
                    var i = t[e],
                        r = n[e];
                    C.isObject(i) && C.isObject(r) ? C.mergeIf(i, r) : t.hasOwnProperty(e) || (t[e] = C.clone(r))
                },
                merge: function(e, t, n) {
                    var i, r, o, a, s, l = C.isArray(t) ? t : [t],
                        c = l.length;
                    if (!C.isObject(e)) return e;
                    for (i = (n = n || {}).merger || C._merger, r = 0; r < c; ++r)
                        if (t = l[r], C.isObject(t))
                            for (s = 0, a = (o = Object.keys(t)).length; s < a; ++s) i(o[s], e, t, n);
                    return e
                },
                mergeIf: function(e, t) {
                    return C.merge(e, t, {
                        merger: C._mergerIf
                    })
                },
                extend: Object.assign || function(e) {
                    return C.merge(e, [].slice.call(arguments, 1), {
                        merger: function(e, t, n) {
                            t[e] = n[e]
                        }
                    })
                },
                inherits: function(e) {
                    var t = this,
                        n = e && e.hasOwnProperty("constructor") ? e.constructor : function() {
                            return t.apply(this, arguments)
                        },
                        i = function() {
                            this.constructor = n
                        };
                    return i.prototype = t.prototype, n.prototype = new i, n.extend = C.inherits, e && C.extend(n.prototype, e), n.__super__ = t.prototype, n
                },
                _deprecated: function(e, t, n, i) {
                    void 0 !== t && console.warn(e + ': "' + n + '" is deprecated. Please use "' + i + '" instead')
                }
            },
            k = C;
        C.callCallback = C.callback, C.indexOf = function(e, t, n) {
            return Array.prototype.indexOf.call(e, t, n)
        }, C.getValueOrDefault = C.valueOrDefault, C.getValueAtIndexOrDefault = C.valueAtIndexOrDefault;
        var S = {
                linear: function(e) {
                    return e
                },
                easeInQuad: function(e) {
                    return e * e
                },
                easeOutQuad: function(e) {
                    return -e * (e - 2)
                },
                easeInOutQuad: function(e) {
                    return (e /= .5) < 1 ? .5 * e * e : -.5 * (--e * (e - 2) - 1)
                },
                easeInCubic: function(e) {
                    return e * e * e
                },
                easeOutCubic: function(e) {
                    return (e -= 1) * e * e + 1
                },
                easeInOutCubic: function(e) {
                    return (e /= .5) < 1 ? .5 * e * e * e : .5 * ((e -= 2) * e * e + 2)
                },
                easeInQuart: function(e) {
                    return e * e * e * e
                },
                easeOutQuart: function(e) {
                    return -((e -= 1) * e * e * e - 1)
                },
                easeInOutQuart: function(e) {
                    return (e /= .5) < 1 ? .5 * e * e * e * e : -.5 * ((e -= 2) * e * e * e - 2)
                },
                easeInQuint: function(e) {
                    return e * e * e * e * e
                },
                easeOutQuint: function(e) {
                    return (e -= 1) * e * e * e * e + 1
                },
                easeInOutQuint: function(e) {
                    return (e /= .5) < 1 ? .5 * e * e * e * e * e : .5 * ((e -= 2) * e * e * e * e + 2)
                },
                easeInSine: function(e) {
                    return 1 - Math.cos(e * (Math.PI / 2))
                },
                easeOutSine: function(e) {
                    return Math.sin(e * (Math.PI / 2))
                },
                easeInOutSine: function(e) {
                    return -.5 * (Math.cos(Math.PI * e) - 1)
                },
                easeInExpo: function(e) {
                    return 0 === e ? 0 : Math.pow(2, 10 * (e - 1))
                },
                easeOutExpo: function(e) {
                    return 1 === e ? 1 : 1 - Math.pow(2, -10 * e)
                },
                easeInOutExpo: function(e) {
                    return 0 === e ? 0 : 1 === e ? 1 : (e /= .5) < 1 ? .5 * Math.pow(2, 10 * (e - 1)) : .5 * (2 - Math.pow(2, -10 * --e))
                },
                easeInCirc: function(e) {
                    return e >= 1 ? e : -(Math.sqrt(1 - e * e) - 1)
                },
                easeOutCirc: function(e) {
                    return Math.sqrt(1 - (e -= 1) * e)
                },
                easeInOutCirc: function(e) {
                    return (e /= .5) < 1 ? -.5 * (Math.sqrt(1 - e * e) - 1) : .5 * (Math.sqrt(1 - (e -= 2) * e) + 1)
                },
                easeInElastic: function(e) {
                    var t = 1.70158,
                        n = 0,
                        i = 1;
                    return 0 === e ? 0 : 1 === e ? 1 : (n || (n = .3), i < 1 ? (i = 1, t = n / 4) : t = n / (2 * Math.PI) * Math.asin(1 / i), -i * Math.pow(2, 10 * (e -= 1)) * Math.sin((e - t) * (2 * Math.PI) / n))
                },
                easeOutElastic: function(e) {
                    var t = 1.70158,
                        n = 0,
                        i = 1;
                    return 0 === e ? 0 : 1 === e ? 1 : (n || (n = .3), i < 1 ? (i = 1, t = n / 4) : t = n / (2 * Math.PI) * Math.asin(1 / i), i * Math.pow(2, -10 * e) * Math.sin((e - t) * (2 * Math.PI) / n) + 1)
                },
                easeInOutElastic: function(e) {
                    var t = 1.70158,
                        n = 0,
                        i = 1;
                    return 0 === e ? 0 : 2 == (e /= .5) ? 1 : (n || (n = .45), i < 1 ? (i = 1, t = n / 4) : t = n / (2 * Math.PI) * Math.asin(1 / i), e < 1 ? i * Math.pow(2, 10 * (e -= 1)) * Math.sin((e - t) * (2 * Math.PI) / n) * -.5 : i * Math.pow(2, -10 * (e -= 1)) * Math.sin((e - t) * (2 * Math.PI) / n) * .5 + 1)
                },
                easeInBack: function(e) {
                    var t = 1.70158;
                    return e * e * ((t + 1) * e - t)
                },
                easeOutBack: function(e) {
                    var t = 1.70158;
                    return (e -= 1) * e * ((t + 1) * e + t) + 1
                },
                easeInOutBack: function(e) {
                    var t = 1.70158;
                    return (e /= .5) < 1 ? e * e * ((1 + (t *= 1.525)) * e - t) * .5 : .5 * ((e -= 2) * e * ((1 + (t *= 1.525)) * e + t) + 2)
                },
                easeInBounce: function(e) {
                    return 1 - S.easeOutBounce(1 - e)
                },
                easeOutBounce: function(e) {
                    return e < 1 / 2.75 ? 7.5625 * e * e : e < 2 / 2.75 ? 7.5625 * (e -= 1.5 / 2.75) * e + .75 : e < 2.5 / 2.75 ? 7.5625 * (e -= 2.25 / 2.75) * e + .9375 : 7.5625 * (e -= 2.625 / 2.75) * e + .984375
                },
                easeInOutBounce: function(e) {
                    return e < .5 ? .5 * S.easeInBounce(2 * e) : .5 * S.easeOutBounce(2 * e - 1) + .5
                }
            },
            T = {
                effects: S
            };
        k.easingEffects = S;
        var D = Math.PI,
            E = D / 180,
            A = 2 * D,
            M = D / 2,
            O = D / 4,
            I = 2 * D / 3,
            P = {
                clear: function(e) {
                    e.ctx.clearRect(0, 0, e.width, e.height)
                },
                roundedRect: function(e, t, n, i, r, o) {
                    if (o) {
                        var a = Math.min(o, r / 2, i / 2),
                            s = t + a,
                            l = n + a,
                            c = t + i - a,
                            u = n + r - a;
                        e.moveTo(t, l), s < c && l < u ? (e.arc(s, l, a, -D, -M), e.arc(c, l, a, -M, 0), e.arc(c, u, a, 0, M), e.arc(s, u, a, M, D)) : s < c ? (e.moveTo(s, n), e.arc(c, l, a, -M, M), e.arc(s, l, a, M, D + M)) : l < u ? (e.arc(s, l, a, -D, 0), e.arc(s, u, a, 0, D)) : e.arc(s, l, a, -D, D), e.closePath(), e.moveTo(t, n)
                    } else e.rect(t, n, i, r)
                },
                drawPoint: function(e, t, n, i, r, o) {
                    var a, s, l, c, u, d = (o || 0) * E;
                    if (t && "object" == typeof t && ("[object HTMLImageElement]" === (a = t.toString()) || "[object HTMLCanvasElement]" === a)) return e.save(), e.translate(i, r), e.rotate(d), e.drawImage(t, -t.width / 2, -t.height / 2, t.width, t.height), void e.restore();
                    if (!(isNaN(n) || n <= 0)) {
                        switch (e.beginPath(), t) {
                            default: e.arc(i, r, n, 0, A),
                            e.closePath();
                            break;
                            case "triangle":
                                    e.moveTo(i + Math.sin(d) * n, r - Math.cos(d) * n),
                                d += I,
                                e.lineTo(i + Math.sin(d) * n, r - Math.cos(d) * n),
                                d += I,
                                e.lineTo(i + Math.sin(d) * n, r - Math.cos(d) * n),
                                e.closePath();
                                break;
                            case "rectRounded":
                                    c = n - (u = .516 * n),
                                s = Math.cos(d + O) * c,
                                l = Math.sin(d + O) * c,
                                e.arc(i - s, r - l, u, d - D, d - M),
                                e.arc(i + l, r - s, u, d - M, d),
                                e.arc(i + s, r + l, u, d, d + M),
                                e.arc(i - l, r + s, u, d + M, d + D),
                                e.closePath();
                                break;
                            case "rect":
                                    if (!o) {
                                    c = Math.SQRT1_2 * n, e.rect(i - c, r - c, 2 * c, 2 * c);
                                    break
                                }d += O;
                            case "rectRot":
                                    s = Math.cos(d) * n,
                                l = Math.sin(d) * n,
                                e.moveTo(i - s, r - l),
                                e.lineTo(i + l, r - s),
                                e.lineTo(i + s, r + l),
                                e.lineTo(i - l, r + s),
                                e.closePath();
                                break;
                            case "crossRot":
                                    d += O;
                            case "cross":
                                    s = Math.cos(d) * n,
                                l = Math.sin(d) * n,
                                e.moveTo(i - s, r - l),
                                e.lineTo(i + s, r + l),
                                e.moveTo(i + l, r - s),
                                e.lineTo(i - l, r + s);
                                break;
                            case "star":
                                    s = Math.cos(d) * n,
                                l = Math.sin(d) * n,
                                e.moveTo(i - s, r - l),
                                e.lineTo(i + s, r + l),
                                e.moveTo(i + l, r - s),
                                e.lineTo(i - l, r + s),
                                d += O,
                                s = Math.cos(d) * n,
                                l = Math.sin(d) * n,
                                e.moveTo(i - s, r - l),
                                e.lineTo(i + s, r + l),
                                e.moveTo(i + l, r - s),
                                e.lineTo(i - l, r + s);
                                break;
                            case "line":
                                    s = Math.cos(d) * n,
                                l = Math.sin(d) * n,
                                e.moveTo(i - s, r - l),
                                e.lineTo(i + s, r + l);
                                break;
                            case "dash":
                                    e.moveTo(i, r),
                                e.lineTo(i + Math.cos(d) * n, r + Math.sin(d) * n)
                        }
                        e.fill(), e.stroke()
                    }
                },
                _isPointInArea: function(e, t) {
                    return e.x > t.left - 1e-6 && e.x < t.right + 1e-6 && e.y > t.top - 1e-6 && e.y < t.bottom + 1e-6
                },
                clipArea: function(e, t) {
                    e.save(), e.beginPath(), e.rect(t.left, t.top, t.right - t.left, t.bottom - t.top), e.clip()
                },
                unclipArea: function(e) {
                    e.restore()
                },
                lineTo: function(e, t, n, i) {
                    var r = n.steppedLine;
                    if (r) {
                        if ("middle" === r) {
                            var o = (t.x + n.x) / 2;
                            e.lineTo(o, i ? n.y : t.y), e.lineTo(o, i ? t.y : n.y)
                        } else "after" === r && !i || "after" !== r && i ? e.lineTo(t.x, n.y) : e.lineTo(n.x, t.y);
                        e.lineTo(n.x, n.y)
                    } else n.tension ? e.bezierCurveTo(i ? t.controlPointPreviousX : t.controlPointNextX, i ? t.controlPointPreviousY : t.controlPointNextY, i ? n.controlPointNextX : n.controlPointPreviousX, i ? n.controlPointNextY : n.controlPointPreviousY, n.x, n.y) : e.lineTo(n.x, n.y)
                }
            },
            L = P;
        k.clear = P.clear, k.drawRoundedRectangle = function(e) {
            e.beginPath(), P.roundedRect.apply(P, arguments)
        };
        var F = {
            _set: function(e, t) {
                return k.merge(this[e] || (this[e] = {}), t)
            }
        };
        F._set("global", {
            defaultColor: "rgba(0,0,0,0.1)",
            defaultFontColor: "#666",
            defaultFontFamily: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",
            defaultFontSize: 12,
            defaultFontStyle: "normal",
            defaultLineHeight: 1.2,
            showLines: !0
        });
        var N = F,
            R = k.valueOrDefault,
            j = {
                toLineHeight: function(e, t) {
                    var n = ("" + e).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/);
                    if (!n || "normal" === n[1]) return 1.2 * t;
                    switch (e = +n[2], n[3]) {
                        case "px":
                            return e;
                        case "%":
                            e /= 100
                    }
                    return t * e
                },
                toPadding: function(e) {
                    var t, n, i, r;
                    return k.isObject(e) ? (t = +e.top || 0, n = +e.right || 0, i = +e.bottom || 0, r = +e.left || 0) : t = n = i = r = +e || 0, {
                        top: t,
                        right: n,
                        bottom: i,
                        left: r,
                        height: t + i,
                        width: r + n
                    }
                },
                _parseFont: function(e) {
                    var t = N.global,
                        n = R(e.fontSize, t.defaultFontSize),
                        i = {
                            family: R(e.fontFamily, t.defaultFontFamily),
                            lineHeight: k.options.toLineHeight(R(e.lineHeight, t.defaultLineHeight), n),
                            size: n,
                            style: R(e.fontStyle, t.defaultFontStyle),
                            weight: null,
                            string: ""
                        };
                    return i.string = function(e) {
                        return !e || k.isNullOrUndef(e.size) || k.isNullOrUndef(e.family) ? null : (e.style ? e.style + " " : "") + (e.weight ? e.weight + " " : "") + e.size + "px " + e.family
                    }(i), i
                },
                resolve: function(e, t, n, i) {
                    var r, o, a, s = !0;
                    for (r = 0, o = e.length; r < o; ++r)
                        if (void 0 !== (a = e[r]) && (void 0 !== t && "function" == typeof a && (a = a(t), s = !1), void 0 !== n && k.isArray(a) && (a = a[n], s = !1), void 0 !== a)) return i && !s && (i.cacheable = !1), a
                }
            },
            $ = {
                _factorize: function(e) {
                    var t, n = [],
                        i = Math.sqrt(e);
                    for (t = 1; t < i; t++) e % t == 0 && (n.push(t), n.push(e / t));
                    return i === (0 | i) && n.push(i), n.sort((function(e, t) {
                        return e - t
                    })).pop(), n
                },
                log10: Math.log10 || function(e) {
                    var t = Math.log(e) * Math.LOG10E,
                        n = Math.round(t);
                    return e === Math.pow(10, n) ? n : t
                }
            },
            z = $;
        k.log10 = $.log10;
        var H = k,
            B = T,
            q = L,
            W = j,
            U = z;
        H.easing = B, H.canvas = q, H.options = W, H.math = U, H.rtl = {
            getRtlAdapter: function(e, t, n) {
                return e ? function(e, t) {
                    return {
                        x: function(n) {
                            return e + e + t - n
                        },
                        setWidth: function(e) {
                            t = e
                        },
                        textAlign: function(e) {
                            return "center" === e ? e : "right" === e ? "left" : "right"
                        },
                        xPlus: function(e, t) {
                            return e - t
                        },
                        leftForLtr: function(e, t) {
                            return e - t
                        }
                    }
                }(t, n) : {
                    x: function(e) {
                        return e
                    },
                    setWidth: function(e) {},
                    textAlign: function(e) {
                        return e
                    },
                    xPlus: function(e, t) {
                        return e + t
                    },
                    leftForLtr: function(e, t) {
                        return e
                    }
                }
            },
            overrideTextDirection: function(e, t) {
                var n, i;
                "ltr" !== t && "rtl" !== t || (i = [(n = e.canvas.style).getPropertyValue("direction"), n.getPropertyPriority("direction")], n.setProperty("direction", t, "important"), e.prevTextDirection = i)
            },
            restoreTextDirection: function(e) {
                var t = e.prevTextDirection;
                void 0 !== t && (delete e.prevTextDirection, e.canvas.style.setProperty("direction", t[0], t[1]))
            }
        };
        var V = function(e) {
            H.extend(this, e), this.initialize.apply(this, arguments)
        };
        H.extend(V.prototype, {
            _type: void 0,
            initialize: function() {
                this.hidden = !1
            },
            pivot: function() {
                var e = this;
                return e._view || (e._view = H.extend({}, e._model)), e._start = {}, e
            },
            transition: function(e) {
                var t = this,
                    n = t._model,
                    i = t._start,
                    r = t._view;
                return n && 1 !== e ? (r || (r = t._view = {}), i || (i = t._start = {}), function(e, t, n, i) {
                    var r, o, a, s, l, c, u, d, h, f = Object.keys(n);
                    for (r = 0, o = f.length; r < o; ++r)
                        if (c = n[a = f[r]], t.hasOwnProperty(a) || (t[a] = c), (s = t[a]) !== c && "_" !== a[0]) {
                            if (e.hasOwnProperty(a) || (e[a] = s), (u = typeof c) == typeof(l = e[a]))
                                if ("string" === u) {
                                    if ((d = _(l)).valid && (h = _(c)).valid) {
                                        t[a] = h.mix(d, i).rgbString();
                                        continue
                                    }
                                } else if (H.isFinite(l) && H.isFinite(c)) {
                                t[a] = l + (c - l) * i;
                                continue
                            }
                            t[a] = c
                        }
                }(i, r, n, e), t) : (t._view = H.extend({}, n), t._start = null, t)
            },
            tooltipPosition: function() {
                return {
                    x: this._model.x,
                    y: this._model.y
                }
            },
            hasValue: function() {
                return H.isNumber(this._model.x) && H.isNumber(this._model.y)
            }
        }), V.extend = H.inherits;
        var Y = V,
            X = Y.extend({
                chart: null,
                currentStep: 0,
                numSteps: 60,
                easing: "",
                render: null,
                onAnimationProgress: null,
                onAnimationComplete: null
            }),
            G = X;
        Object.defineProperty(X.prototype, "animationObject", {
            get: function() {
                return this
            }
        }), Object.defineProperty(X.prototype, "chartInstance", {
            get: function() {
                return this.chart
            },
            set: function(e) {
                this.chart = e
            }
        }), N._set("global", {
            animation: {
                duration: 1e3,
                easing: "easeOutQuart",
                onProgress: H.noop,
                onComplete: H.noop
            }
        });
        var Q = {
                animations: [],
                request: null,
                addAnimation: function(e, t, n, i) {
                    var r, o, a = this.animations;
                    for (t.chart = e, t.startTime = Date.now(), t.duration = n, i || (e.animating = !0), r = 0, o = a.length; r < o; ++r)
                        if (a[r].chart === e) return void(a[r] = t);
                    a.push(t), 1 === a.length && this.requestAnimationFrame()
                },
                cancelAnimation: function(e) {
                    var t = H.findIndex(this.animations, (function(t) {
                        return t.chart === e
                    })); - 1 !== t && (this.animations.splice(t, 1), e.animating = !1)
                },
                requestAnimationFrame: function() {
                    var e = this;
                    null === e.request && (e.request = H.requestAnimFrame.call(window, (function() {
                        e.request = null, e.startDigest()
                    })))
                },
                startDigest: function() {
                    this.advance(), this.animations.length > 0 && this.requestAnimationFrame()
                },
                advance: function() {
                    for (var e, t, n, i, r = this.animations, o = 0; o < r.length;) t = (e = r[o]).chart, n = e.numSteps, i = Math.floor((Date.now() - e.startTime) / e.duration * n) + 1, e.currentStep = Math.min(i, n), H.callback(e.render, [t, e], t), H.callback(e.onAnimationProgress, [e], t), e.currentStep >= n ? (H.callback(e.onAnimationComplete, [e], t), t.animating = !1, r.splice(o, 1)) : ++o
                }
            },
            K = H.options.resolve,
            J = ["push", "pop", "shift", "splice", "unshift"];

        function Z(e, t) {
            var n = e._chartjs;
            if (n) {
                var i = n.listeners,
                    r = i.indexOf(t); - 1 !== r && i.splice(r, 1), i.length > 0 || (J.forEach((function(t) {
                    delete e[t]
                })), delete e._chartjs)
            }
        }
        var ee = function(e, t) {
            this.initialize(e, t)
        };
        H.extend(ee.prototype, {
            datasetElementType: null,
            dataElementType: null,
            _datasetElementOptions: ["backgroundColor", "borderCapStyle", "borderColor", "borderDash", "borderDashOffset", "borderJoinStyle", "borderWidth"],
            _dataElementOptions: ["backgroundColor", "borderColor", "borderWidth", "pointStyle"],
            initialize: function(e, t) {
                var n = this;
                n.chart = e, n.index = t, n.linkScales(), n.addElements(), n._type = n.getMeta().type
            },
            updateIndex: function(e) {
                this.index = e
            },
            linkScales: function() {
                var e = this.getMeta(),
                    t = this.chart,
                    n = t.scales,
                    i = this.getDataset(),
                    r = t.options.scales;
                null !== e.xAxisID && e.xAxisID in n && !i.xAxisID || (e.xAxisID = i.xAxisID || r.xAxes[0].id), null !== e.yAxisID && e.yAxisID in n && !i.yAxisID || (e.yAxisID = i.yAxisID || r.yAxes[0].id)
            },
            getDataset: function() {
                return this.chart.data.datasets[this.index]
            },
            getMeta: function() {
                return this.chart.getDatasetMeta(this.index)
            },
            getScaleForId: function(e) {
                return this.chart.scales[e]
            },
            _getValueScaleId: function() {
                return this.getMeta().yAxisID
            },
            _getIndexScaleId: function() {
                return this.getMeta().xAxisID
            },
            _getValueScale: function() {
                return this.getScaleForId(this._getValueScaleId())
            },
            _getIndexScale: function() {
                return this.getScaleForId(this._getIndexScaleId())
            },
            reset: function() {
                this._update(!0)
            },
            destroy: function() {
                this._data && Z(this._data, this)
            },
            createMetaDataset: function() {
                var e = this.datasetElementType;
                return e && new e({
                    _chart: this.chart,
                    _datasetIndex: this.index
                })
            },
            createMetaData: function(e) {
                var t = this.dataElementType;
                return t && new t({
                    _chart: this.chart,
                    _datasetIndex: this.index,
                    _index: e
                })
            },
            addElements: function() {
                var e, t, n = this.getMeta(),
                    i = this.getDataset().data || [],
                    r = n.data;
                for (e = 0, t = i.length; e < t; ++e) r[e] = r[e] || this.createMetaData(e);
                n.dataset = n.dataset || this.createMetaDataset()
            },
            addElementAndReset: function(e) {
                var t = this.createMetaData(e);
                this.getMeta().data.splice(e, 0, t), this.updateElement(t, e, !0)
            },
            buildOrUpdateElements: function() {
                var e, t, n = this,
                    i = n.getDataset(),
                    r = i.data || (i.data = []);
                n._data !== r && (n._data && Z(n._data, n), r && Object.isExtensible(r) && (t = n, (e = r)._chartjs ? e._chartjs.listeners.push(t) : (Object.defineProperty(e, "_chartjs", {
                    configurable: !0,
                    enumerable: !1,
                    value: {
                        listeners: [t]
                    }
                }), J.forEach((function(t) {
                    var n = "onData" + t.charAt(0).toUpperCase() + t.slice(1),
                        i = e[t];
                    Object.defineProperty(e, t, {
                        configurable: !0,
                        enumerable: !1,
                        value: function() {
                            var t = Array.prototype.slice.call(arguments),
                                r = i.apply(this, t);
                            return H.each(e._chartjs.listeners, (function(e) {
                                "function" == typeof e[n] && e[n].apply(e, t)
                            })), r
                        }
                    })
                })))), n._data = r), n.resyncElements()
            },
            _configure: function() {
                this._config = H.merge({}, [this.chart.options.datasets[this._type], this.getDataset()], {
                    merger: function(e, t, n) {
                        "_meta" !== e && "data" !== e && H._merger(e, t, n)
                    }
                })
            },
            _update: function(e) {
                this._configure(), this._cachedDataOpts = null, this.update(e)
            },
            update: H.noop,
            transition: function(e) {
                for (var t = this.getMeta(), n = t.data || [], i = n.length, r = 0; r < i; ++r) n[r].transition(e);
                t.dataset && t.dataset.transition(e)
            },
            draw: function() {
                var e = this.getMeta(),
                    t = e.data || [],
                    n = t.length,
                    i = 0;
                for (e.dataset && e.dataset.draw(); i < n; ++i) t[i].draw()
            },
            getStyle: function(e) {
                var t, n = this.getMeta(),
                    i = n.dataset;
                return this._configure(), i && void 0 === e ? t = this._resolveDatasetElementOptions(i || {}) : (e = e || 0, t = this._resolveDataElementOptions(n.data[e] || {}, e)), !1 !== t.fill && null !== t.fill || (t.backgroundColor = t.borderColor), t
            },
            _resolveDatasetElementOptions: function(e, t) {
                var n, i, r, o, a = this,
                    s = a.chart,
                    l = a._config,
                    c = e.custom || {},
                    u = s.options.elements[a.datasetElementType.prototype._type] || {},
                    d = a._datasetElementOptions,
                    h = {},
                    f = {
                        chart: s,
                        dataset: a.getDataset(),
                        datasetIndex: a.index,
                        hover: t
                    };
                for (n = 0, i = d.length; n < i; ++n) r = d[n], o = t ? "hover" + r.charAt(0).toUpperCase() + r.slice(1) : r, h[r] = K([c[o], l[o], u[o]], f);
                return h
            },
            _resolveDataElementOptions: function(e, t) {
                var n = this,
                    i = e && e.custom,
                    r = n._cachedDataOpts;
                if (r && !i) return r;
                var o, a, s, l, c = n.chart,
                    u = n._config,
                    d = c.options.elements[n.dataElementType.prototype._type] || {},
                    h = n._dataElementOptions,
                    f = {},
                    p = {
                        chart: c,
                        dataIndex: t,
                        dataset: n.getDataset(),
                        datasetIndex: n.index
                    },
                    g = {
                        cacheable: !i
                    };
                if (i = i || {}, H.isArray(h))
                    for (a = 0, s = h.length; a < s; ++a) f[l = h[a]] = K([i[l], u[l], d[l]], p, t, g);
                else
                    for (a = 0, s = (o = Object.keys(h)).length; a < s; ++a) f[l = o[a]] = K([i[l], u[h[l]], u[l], d[l]], p, t, g);
                return g.cacheable && (n._cachedDataOpts = Object.freeze(f)), f
            },
            removeHoverStyle: function(e) {
                H.merge(e._model, e.$previousStyle || {}), delete e.$previousStyle
            },
            setHoverStyle: function(e) {
                var t = this.chart.data.datasets[e._datasetIndex],
                    n = e._index,
                    i = e.custom || {},
                    r = e._model,
                    o = H.getHoverColor;
                e.$previousStyle = {
                    backgroundColor: r.backgroundColor,
                    borderColor: r.borderColor,
                    borderWidth: r.borderWidth
                }, r.backgroundColor = K([i.hoverBackgroundColor, t.hoverBackgroundColor, o(r.backgroundColor)], void 0, n), r.borderColor = K([i.hoverBorderColor, t.hoverBorderColor, o(r.borderColor)], void 0, n), r.borderWidth = K([i.hoverBorderWidth, t.hoverBorderWidth, r.borderWidth], void 0, n)
            },
            _removeDatasetHoverStyle: function() {
                var e = this.getMeta().dataset;
                e && this.removeHoverStyle(e)
            },
            _setDatasetHoverStyle: function() {
                var e, t, n, i, r, o, a = this.getMeta().dataset,
                    s = {};
                if (a) {
                    for (o = a._model, r = this._resolveDatasetElementOptions(a, !0), e = 0, t = (i = Object.keys(r)).length; e < t; ++e) s[n = i[e]] = o[n], o[n] = r[n];
                    a.$previousStyle = s
                }
            },
            resyncElements: function() {
                var e = this.getMeta(),
                    t = this.getDataset().data,
                    n = e.data.length,
                    i = t.length;
                i < n ? e.data.splice(i, n - i) : i > n && this.insertElements(n, i - n)
            },
            insertElements: function(e, t) {
                for (var n = 0; n < t; ++n) this.addElementAndReset(e + n)
            },
            onDataPush: function() {
                var e = arguments.length;
                this.insertElements(this.getDataset().data.length - e, e)
            },
            onDataPop: function() {
                this.getMeta().data.pop()
            },
            onDataShift: function() {
                this.getMeta().data.shift()
            },
            onDataSplice: function(e, t) {
                this.getMeta().data.splice(e, t), this.insertElements(e, arguments.length - 2)
            },
            onDataUnshift: function() {
                this.insertElements(0, arguments.length)
            }
        }), ee.extend = H.inherits;
        var te = ee,
            ne = 2 * Math.PI;

        function ie(e, t) {
            var n = t.startAngle,
                i = t.endAngle,
                r = t.pixelMargin,
                o = r / t.outerRadius,
                a = t.x,
                s = t.y;
            e.beginPath(), e.arc(a, s, t.outerRadius, n - o, i + o), t.innerRadius > r ? (o = r / t.innerRadius, e.arc(a, s, t.innerRadius - r, i + o, n - o, !0)) : e.arc(a, s, r, i + Math.PI / 2, n - Math.PI / 2), e.closePath(), e.clip()
        }
        N._set("global", {
            elements: {
                arc: {
                    backgroundColor: N.global.defaultColor,
                    borderColor: "#fff",
                    borderWidth: 2,
                    borderAlign: "center"
                }
            }
        });
        var re = Y.extend({
                _type: "arc",
                inLabelRange: function(e) {
                    var t = this._view;
                    return !!t && Math.pow(e - t.x, 2) < Math.pow(t.radius + t.hoverRadius, 2)
                },
                inRange: function(e, t) {
                    var n = this._view;
                    if (n) {
                        for (var i = H.getAngleFromPoint(n, {
                                x: e,
                                y: t
                            }), r = i.angle, o = i.distance, a = n.startAngle, s = n.endAngle; s < a;) s += ne;
                        for (; r > s;) r -= ne;
                        for (; r < a;) r += ne;
                        var l = r >= a && r <= s,
                            c = o >= n.innerRadius && o <= n.outerRadius;
                        return l && c
                    }
                    return !1
                },
                getCenterPoint: function() {
                    var e = this._view,
                        t = (e.startAngle + e.endAngle) / 2,
                        n = (e.innerRadius + e.outerRadius) / 2;
                    return {
                        x: e.x + Math.cos(t) * n,
                        y: e.y + Math.sin(t) * n
                    }
                },
                getArea: function() {
                    var e = this._view;
                    return Math.PI * ((e.endAngle - e.startAngle) / (2 * Math.PI)) * (Math.pow(e.outerRadius, 2) - Math.pow(e.innerRadius, 2))
                },
                tooltipPosition: function() {
                    var e = this._view,
                        t = e.startAngle + (e.endAngle - e.startAngle) / 2,
                        n = (e.outerRadius - e.innerRadius) / 2 + e.innerRadius;
                    return {
                        x: e.x + Math.cos(t) * n,
                        y: e.y + Math.sin(t) * n
                    }
                },
                draw: function() {
                    var e, t = this._chart.ctx,
                        n = this._view,
                        i = "inner" === n.borderAlign ? .33 : 0,
                        r = {
                            x: n.x,
                            y: n.y,
                            innerRadius: n.innerRadius,
                            outerRadius: Math.max(n.outerRadius - i, 0),
                            pixelMargin: i,
                            startAngle: n.startAngle,
                            endAngle: n.endAngle,
                            fullCircles: Math.floor(n.circumference / ne)
                        };
                    if (t.save(), t.fillStyle = n.backgroundColor, t.strokeStyle = n.borderColor, r.fullCircles) {
                        for (r.endAngle = r.startAngle + ne, t.beginPath(), t.arc(r.x, r.y, r.outerRadius, r.startAngle, r.endAngle), t.arc(r.x, r.y, r.innerRadius, r.endAngle, r.startAngle, !0), t.closePath(), e = 0; e < r.fullCircles; ++e) t.fill();
                        r.endAngle = r.startAngle + n.circumference % ne
                    }
                    t.beginPath(), t.arc(r.x, r.y, r.outerRadius, r.startAngle, r.endAngle), t.arc(r.x, r.y, r.innerRadius, r.endAngle, r.startAngle, !0), t.closePath(), t.fill(), n.borderWidth && function(e, t, n) {
                        var i = "inner" === t.borderAlign;
                        i ? (e.lineWidth = 2 * t.borderWidth, e.lineJoin = "round") : (e.lineWidth = t.borderWidth, e.lineJoin = "bevel"), n.fullCircles && function(e, t, n, i) {
                            var r, o = n.endAngle;
                            for (i && (n.endAngle = n.startAngle + ne, ie(e, n), n.endAngle = o, n.endAngle === n.startAngle && n.fullCircles && (n.endAngle += ne, n.fullCircles--)), e.beginPath(), e.arc(n.x, n.y, n.innerRadius, n.startAngle + ne, n.startAngle, !0), r = 0; r < n.fullCircles; ++r) e.stroke();
                            for (e.beginPath(), e.arc(n.x, n.y, t.outerRadius, n.startAngle, n.startAngle + ne), r = 0; r < n.fullCircles; ++r) e.stroke()
                        }(e, t, n, i), i && ie(e, n), e.beginPath(), e.arc(n.x, n.y, t.outerRadius, n.startAngle, n.endAngle), e.arc(n.x, n.y, n.innerRadius, n.endAngle, n.startAngle, !0), e.closePath(), e.stroke()
                    }(t, n, r), t.restore()
                }
            }),
            oe = H.valueOrDefault,
            ae = N.global.defaultColor;
        N._set("global", {
            elements: {
                line: {
                    tension: .4,
                    backgroundColor: ae,
                    borderWidth: 3,
                    borderColor: ae,
                    borderCapStyle: "butt",
                    borderDash: [],
                    borderDashOffset: 0,
                    borderJoinStyle: "miter",
                    capBezierPoints: !0,
                    fill: !0
                }
            }
        });
        var se = Y.extend({
                _type: "line",
                draw: function() {
                    var e, t, n, i = this,
                        r = i._view,
                        o = i._chart.ctx,
                        a = r.spanGaps,
                        s = i._children.slice(),
                        l = N.global,
                        c = l.elements.line,
                        u = -1,
                        d = i._loop;
                    if (s.length) {
                        if (i._loop) {
                            for (e = 0; e < s.length; ++e)
                                if (t = H.previousItem(s, e), !s[e]._view.skip && t._view.skip) {
                                    s = s.slice(e).concat(s.slice(0, e)), d = a;
                                    break
                                }
                            d && s.push(s[0])
                        }
                        for (o.save(), o.lineCap = r.borderCapStyle || c.borderCapStyle, o.setLineDash && o.setLineDash(r.borderDash || c.borderDash), o.lineDashOffset = oe(r.borderDashOffset, c.borderDashOffset), o.lineJoin = r.borderJoinStyle || c.borderJoinStyle, o.lineWidth = oe(r.borderWidth, c.borderWidth), o.strokeStyle = r.borderColor || l.defaultColor, o.beginPath(), (n = s[0]._view).skip || (o.moveTo(n.x, n.y), u = 0), e = 1; e < s.length; ++e) n = s[e]._view, t = -1 === u ? H.previousItem(s, e) : s[u], n.skip || (u !== e - 1 && !a || -1 === u ? o.moveTo(n.x, n.y) : H.canvas.lineTo(o, t._view, n), u = e);
                        d && o.closePath(), o.stroke(), o.restore()
                    }
                }
            }),
            le = H.valueOrDefault,
            ce = N.global.defaultColor;

        function ue(e) {
            var t = this._view;
            return !!t && Math.abs(e - t.x) < t.radius + t.hitRadius
        }
        N._set("global", {
            elements: {
                point: {
                    radius: 3,
                    pointStyle: "circle",
                    backgroundColor: ce,
                    borderColor: ce,
                    borderWidth: 1,
                    hitRadius: 1,
                    hoverRadius: 4,
                    hoverBorderWidth: 1
                }
            }
        });
        var de = Y.extend({
                _type: "point",
                inRange: function(e, t) {
                    var n = this._view;
                    return !!n && Math.pow(e - n.x, 2) + Math.pow(t - n.y, 2) < Math.pow(n.hitRadius + n.radius, 2)
                },
                inLabelRange: ue,
                inXRange: ue,
                inYRange: function(e) {
                    var t = this._view;
                    return !!t && Math.abs(e - t.y) < t.radius + t.hitRadius
                },
                getCenterPoint: function() {
                    var e = this._view;
                    return {
                        x: e.x,
                        y: e.y
                    }
                },
                getArea: function() {
                    return Math.PI * Math.pow(this._view.radius, 2)
                },
                tooltipPosition: function() {
                    var e = this._view;
                    return {
                        x: e.x,
                        y: e.y,
                        padding: e.radius + e.borderWidth
                    }
                },
                draw: function(e) {
                    var t = this._view,
                        n = this._chart.ctx,
                        i = t.pointStyle,
                        r = t.rotation,
                        o = t.radius,
                        a = t.x,
                        s = t.y,
                        l = N.global,
                        c = l.defaultColor;
                    t.skip || (void 0 === e || H.canvas._isPointInArea(t, e)) && (n.strokeStyle = t.borderColor || c, n.lineWidth = le(t.borderWidth, l.elements.point.borderWidth), n.fillStyle = t.backgroundColor || c, H.canvas.drawPoint(n, i, o, a, s, r))
                }
            }),
            he = N.global.defaultColor;

        function fe(e) {
            return e && void 0 !== e.width
        }

        function pe(e) {
            var t, n, i, r, o;
            return fe(e) ? (o = e.width / 2, t = e.x - o, n = e.x + o, i = Math.min(e.y, e.base), r = Math.max(e.y, e.base)) : (o = e.height / 2, t = Math.min(e.x, e.base), n = Math.max(e.x, e.base), i = e.y - o, r = e.y + o), {
                left: t,
                top: i,
                right: n,
                bottom: r
            }
        }

        function ge(e, t, n) {
            return e === t ? n : e === n ? t : e
        }

        function me(e, t, n) {
            var i = null === t,
                r = null === n,
                o = !(!e || i && r) && pe(e);
            return o && (i || t >= o.left && t <= o.right) && (r || n >= o.top && n <= o.bottom)
        }
        N._set("global", {
            elements: {
                rectangle: {
                    backgroundColor: he,
                    borderColor: he,
                    borderSkipped: "bottom",
                    borderWidth: 0
                }
            }
        });
        var ve = Y.extend({
                _type: "rectangle",
                draw: function() {
                    var e = this._chart.ctx,
                        t = this._view,
                        n = function(e) {
                            var t = pe(e),
                                n = t.right - t.left,
                                i = t.bottom - t.top,
                                r = function(e, t, n) {
                                    var i, r, o, a, s = e.borderWidth,
                                        l = function(e) {
                                            var t = e.borderSkipped,
                                                n = {};
                                            return t ? (e.horizontal ? e.base > e.x && (t = ge(t, "left", "right")) : e.base < e.y && (t = ge(t, "bottom", "top")), n[t] = !0, n) : n
                                        }(e);
                                    return H.isObject(s) ? (i = +s.top || 0, r = +s.right || 0, o = +s.bottom || 0, a = +s.left || 0) : i = r = o = a = +s || 0, {
                                        t: l.top || i < 0 ? 0 : i > n ? n : i,
                                        r: l.right || r < 0 ? 0 : r > t ? t : r,
                                        b: l.bottom || o < 0 ? 0 : o > n ? n : o,
                                        l: l.left || a < 0 ? 0 : a > t ? t : a
                                    }
                                }(e, n / 2, i / 2);
                            return {
                                outer: {
                                    x: t.left,
                                    y: t.top,
                                    w: n,
                                    h: i
                                },
                                inner: {
                                    x: t.left + r.l,
                                    y: t.top + r.t,
                                    w: n - r.l - r.r,
                                    h: i - r.t - r.b
                                }
                            }
                        }(t),
                        i = n.outer,
                        r = n.inner;
                    e.fillStyle = t.backgroundColor, e.fillRect(i.x, i.y, i.w, i.h), i.w === r.w && i.h === r.h || (e.save(), e.beginPath(), e.rect(i.x, i.y, i.w, i.h), e.clip(), e.fillStyle = t.borderColor, e.rect(r.x, r.y, r.w, r.h), e.fill("evenodd"), e.restore())
                },
                height: function() {
                    var e = this._view;
                    return e.base - e.y
                },
                inRange: function(e, t) {
                    return me(this._view, e, t)
                },
                inLabelRange: function(e, t) {
                    var n = this._view;
                    return fe(n) ? me(n, e, null) : me(n, null, t)
                },
                inXRange: function(e) {
                    return me(this._view, e, null)
                },
                inYRange: function(e) {
                    return me(this._view, null, e)
                },
                getCenterPoint: function() {
                    var e, t, n = this._view;
                    return fe(n) ? (e = n.x, t = (n.y + n.base) / 2) : (e = (n.x + n.base) / 2, t = n.y), {
                        x: e,
                        y: t
                    }
                },
                getArea: function() {
                    var e = this._view;
                    return fe(e) ? e.width * Math.abs(e.y - e.base) : e.height * Math.abs(e.x - e.base)
                },
                tooltipPosition: function() {
                    var e = this._view;
                    return {
                        x: e.x,
                        y: e.y
                    }
                }
            }),
            ye = {},
            be = re,
            we = se,
            xe = de,
            _e = ve;
        ye.Arc = be, ye.Line = we, ye.Point = xe, ye.Rectangle = _e;
        var Ce = H._deprecated,
            ke = H.valueOrDefault;
        N._set("bar", {
            hover: {
                mode: "label"
            },
            scales: {
                xAxes: [{
                    type: "category",
                    offset: !0,
                    gridLines: {
                        offsetGridLines: !0
                    }
                }],
                yAxes: [{
                    type: "linear"
                }]
            }
        }), N._set("global", {
            datasets: {
                bar: {
                    categoryPercentage: .8,
                    barPercentage: .9
                }
            }
        });
        var Se = te.extend({
                dataElementType: ye.Rectangle,
                _dataElementOptions: ["backgroundColor", "borderColor", "borderSkipped", "borderWidth", "barPercentage", "barThickness", "categoryPercentage", "maxBarThickness", "minBarLength"],
                initialize: function() {
                    var e, t, n = this;
                    te.prototype.initialize.apply(n, arguments), (e = n.getMeta()).stack = n.getDataset().stack, e.bar = !0, t = n._getIndexScale().options, Ce("bar chart", t.barPercentage, "scales.[x/y]Axes.barPercentage", "dataset.barPercentage"), Ce("bar chart", t.barThickness, "scales.[x/y]Axes.barThickness", "dataset.barThickness"), Ce("bar chart", t.categoryPercentage, "scales.[x/y]Axes.categoryPercentage", "dataset.categoryPercentage"), Ce("bar chart", n._getValueScale().options.minBarLength, "scales.[x/y]Axes.minBarLength", "dataset.minBarLength"), Ce("bar chart", t.maxBarThickness, "scales.[x/y]Axes.maxBarThickness", "dataset.maxBarThickness")
                },
                update: function(e) {
                    var t, n, i = this.getMeta().data;
                    for (this._ruler = this.getRuler(), t = 0, n = i.length; t < n; ++t) this.updateElement(i[t], t, e)
                },
                updateElement: function(e, t, n) {
                    var i = this,
                        r = i.getMeta(),
                        o = i.getDataset(),
                        a = i._resolveDataElementOptions(e, t);
                    e._xScale = i.getScaleForId(r.xAxisID), e._yScale = i.getScaleForId(r.yAxisID), e._datasetIndex = i.index, e._index = t, e._model = {
                        backgroundColor: a.backgroundColor,
                        borderColor: a.borderColor,
                        borderSkipped: a.borderSkipped,
                        borderWidth: a.borderWidth,
                        datasetLabel: o.label,
                        label: i.chart.data.labels[t]
                    }, H.isArray(o.data[t]) && (e._model.borderSkipped = null), i._updateElementGeometry(e, t, n, a), e.pivot()
                },
                _updateElementGeometry: function(e, t, n, i) {
                    var r = this,
                        o = e._model,
                        a = r._getValueScale(),
                        s = a.getBasePixel(),
                        l = a.isHorizontal(),
                        c = r._ruler || r.getRuler(),
                        u = r.calculateBarValuePixels(r.index, t, i),
                        d = r.calculateBarIndexPixels(r.index, t, c, i);
                    o.horizontal = l, o.base = n ? s : u.base, o.x = l ? n ? s : u.head : d.center, o.y = l ? d.center : n ? s : u.head, o.height = l ? d.size : void 0, o.width = l ? void 0 : d.size
                },
                _getStacks: function(e) {
                    var t, n, i = this._getIndexScale(),
                        r = i._getMatchingVisibleMetas(this._type),
                        o = i.options.stacked,
                        a = r.length,
                        s = [];
                    for (t = 0; t < a && (n = r[t], (!1 === o || -1 === s.indexOf(n.stack) || void 0 === o && void 0 === n.stack) && s.push(n.stack), n.index !== e); ++t);
                    return s
                },
                getStackCount: function() {
                    return this._getStacks().length
                },
                getStackIndex: function(e, t) {
                    var n = this._getStacks(e),
                        i = void 0 !== t ? n.indexOf(t) : -1;
                    return -1 === i ? n.length - 1 : i
                },
                getRuler: function() {
                    var e, t, n = this._getIndexScale(),
                        i = [];
                    for (e = 0, t = this.getMeta().data.length; e < t; ++e) i.push(n.getPixelForValue(null, e, this.index));
                    return {
                        pixels: i,
                        start: n._startPixel,
                        end: n._endPixel,
                        stackCount: this.getStackCount(),
                        scale: n
                    }
                },
                calculateBarValuePixels: function(e, t, n) {
                    var i, r, o, a, s, l, c, u = this.chart,
                        d = this._getValueScale(),
                        h = d.isHorizontal(),
                        f = u.data.datasets,
                        p = d._getMatchingVisibleMetas(this._type),
                        g = d._parseValue(f[e].data[t]),
                        m = n.minBarLength,
                        v = d.options.stacked,
                        y = this.getMeta().stack,
                        b = void 0 === g.start ? 0 : g.max >= 0 && g.min >= 0 ? g.min : g.max,
                        w = void 0 === g.start ? g.end : g.max >= 0 && g.min >= 0 ? g.max - g.min : g.min - g.max,
                        x = p.length;
                    if (v || void 0 === v && void 0 !== y)
                        for (i = 0; i < x && (r = p[i]).index !== e; ++i) r.stack === y && (o = void 0 === (c = d._parseValue(f[r.index].data[t])).start ? c.end : c.min >= 0 && c.max >= 0 ? c.max : c.min, (g.min < 0 && o < 0 || g.max >= 0 && o > 0) && (b += o));
                    return a = d.getPixelForValue(b), l = (s = d.getPixelForValue(b + w)) - a, void 0 !== m && Math.abs(l) < m && (l = m, s = w >= 0 && !h || w < 0 && h ? a - m : a + m), {
                        size: l,
                        base: a,
                        head: s,
                        center: s + l / 2
                    }
                },
                calculateBarIndexPixels: function(e, t, n, i) {
                    var r = "flex" === i.barThickness ? function(e, t, n) {
                            var i, r = t.pixels,
                                o = r[e],
                                a = e > 0 ? r[e - 1] : null,
                                s = e < r.length - 1 ? r[e + 1] : null,
                                l = n.categoryPercentage;
                            return null === a && (a = o - (null === s ? t.end - t.start : s - o)), null === s && (s = o + o - a), i = o - (o - Math.min(a, s)) / 2 * l, {
                                chunk: Math.abs(s - a) / 2 * l / t.stackCount,
                                ratio: n.barPercentage,
                                start: i
                            }
                        }(t, n, i) : function(e, t, n) {
                            var i, r, o = n.barThickness,
                                a = t.stackCount,
                                s = t.pixels[e],
                                l = H.isNullOrUndef(o) ? function(e, t) {
                                    var n, i, r, o, a = e._length;
                                    for (r = 1, o = t.length; r < o; ++r) a = Math.min(a, Math.abs(t[r] - t[r - 1]));
                                    for (r = 0, o = e.getTicks().length; r < o; ++r) i = e.getPixelForTick(r), a = r > 0 ? Math.min(a, Math.abs(i - n)) : a, n = i;
                                    return a
                                }(t.scale, t.pixels) : -1;
                            return H.isNullOrUndef(o) ? (i = l * n.categoryPercentage, r = n.barPercentage) : (i = o * a, r = 1), {
                                chunk: i / a,
                                ratio: r,
                                start: s - i / 2
                            }
                        }(t, n, i),
                        o = this.getStackIndex(e, this.getMeta().stack),
                        a = r.start + r.chunk * o + r.chunk / 2,
                        s = Math.min(ke(i.maxBarThickness, 1 / 0), r.chunk * r.ratio);
                    return {
                        base: a - s / 2,
                        head: a + s / 2,
                        center: a,
                        size: s
                    }
                },
                draw: function() {
                    var e = this.chart,
                        t = this._getValueScale(),
                        n = this.getMeta().data,
                        i = this.getDataset(),
                        r = n.length,
                        o = 0;
                    for (H.canvas.clipArea(e.ctx, e.chartArea); o < r; ++o) {
                        var a = t._parseValue(i.data[o]);
                        isNaN(a.min) || isNaN(a.max) || n[o].draw()
                    }
                    H.canvas.unclipArea(e.ctx)
                },
                _resolveDataElementOptions: function() {
                    var e = this,
                        t = H.extend({}, te.prototype._resolveDataElementOptions.apply(e, arguments)),
                        n = e._getIndexScale().options,
                        i = e._getValueScale().options;
                    return t.barPercentage = ke(n.barPercentage, t.barPercentage), t.barThickness = ke(n.barThickness, t.barThickness), t.categoryPercentage = ke(n.categoryPercentage, t.categoryPercentage), t.maxBarThickness = ke(n.maxBarThickness, t.maxBarThickness), t.minBarLength = ke(i.minBarLength, t.minBarLength), t
                }
            }),
            Te = H.valueOrDefault,
            De = H.options.resolve;
        N._set("bubble", {
            hover: {
                mode: "single"
            },
            scales: {
                xAxes: [{
                    type: "linear",
                    position: "bottom",
                    id: "x-axis-0"
                }],
                yAxes: [{
                    type: "linear",
                    position: "left",
                    id: "y-axis-0"
                }]
            },
            tooltips: {
                callbacks: {
                    title: function() {
                        return ""
                    },
                    label: function(e, t) {
                        var n = t.datasets[e.datasetIndex].label || "",
                            i = t.datasets[e.datasetIndex].data[e.index];
                        return n + ": (" + e.xLabel + ", " + e.yLabel + ", " + i.r + ")"
                    }
                }
            }
        });
        var Ee = te.extend({
                dataElementType: ye.Point,
                _dataElementOptions: ["backgroundColor", "borderColor", "borderWidth", "hoverBackgroundColor", "hoverBorderColor", "hoverBorderWidth", "hoverRadius", "hitRadius", "pointStyle", "rotation"],
                update: function(e) {
                    var t = this,
                        n = t.getMeta().data;
                    H.each(n, (function(n, i) {
                        t.updateElement(n, i, e)
                    }))
                },
                updateElement: function(e, t, n) {
                    var i = this,
                        r = i.getMeta(),
                        o = e.custom || {},
                        a = i.getScaleForId(r.xAxisID),
                        s = i.getScaleForId(r.yAxisID),
                        l = i._resolveDataElementOptions(e, t),
                        c = i.getDataset().data[t],
                        u = i.index,
                        d = n ? a.getPixelForDecimal(.5) : a.getPixelForValue("object" == typeof c ? c : NaN, t, u),
                        h = n ? s.getBasePixel() : s.getPixelForValue(c, t, u);
                    e._xScale = a, e._yScale = s, e._options = l, e._datasetIndex = u, e._index = t, e._model = {
                        backgroundColor: l.backgroundColor,
                        borderColor: l.borderColor,
                        borderWidth: l.borderWidth,
                        hitRadius: l.hitRadius,
                        pointStyle: l.pointStyle,
                        rotation: l.rotation,
                        radius: n ? 0 : l.radius,
                        skip: o.skip || isNaN(d) || isNaN(h),
                        x: d,
                        y: h
                    }, e.pivot()
                },
                setHoverStyle: function(e) {
                    var t = e._model,
                        n = e._options,
                        i = H.getHoverColor;
                    e.$previousStyle = {
                        backgroundColor: t.backgroundColor,
                        borderColor: t.borderColor,
                        borderWidth: t.borderWidth,
                        radius: t.radius
                    }, t.backgroundColor = Te(n.hoverBackgroundColor, i(n.backgroundColor)), t.borderColor = Te(n.hoverBorderColor, i(n.borderColor)), t.borderWidth = Te(n.hoverBorderWidth, n.borderWidth), t.radius = n.radius + n.hoverRadius
                },
                _resolveDataElementOptions: function(e, t) {
                    var n = this,
                        i = n.chart,
                        r = n.getDataset(),
                        o = e.custom || {},
                        a = r.data[t] || {},
                        s = te.prototype._resolveDataElementOptions.apply(n, arguments),
                        l = {
                            chart: i,
                            dataIndex: t,
                            dataset: r,
                            datasetIndex: n.index
                        };
                    return n._cachedDataOpts === s && (s = H.extend({}, s)), s.radius = De([o.radius, a.r, n._config.radius, i.options.elements.point.radius], l, t), s
                }
            }),
            Ae = H.valueOrDefault,
            Me = Math.PI,
            Oe = 2 * Me,
            Ie = Me / 2;
        N._set("doughnut", {
            animation: {
                animateRotate: !0,
                animateScale: !1
            },
            hover: {
                mode: "single"
            },
            legendCallback: function(e) {
                var t, n, i, r = document.createElement("ul"),
                    o = e.data,
                    a = o.datasets,
                    s = o.labels;
                if (r.setAttribute("class", e.id + "-legend"), a.length)
                    for (t = 0, n = a[0].data.length; t < n; ++t)(i = r.appendChild(document.createElement("li"))).appendChild(document.createElement("span")).style.backgroundColor = a[0].backgroundColor[t], s[t] && i.appendChild(document.createTextNode(s[t]));
                return r.outerHTML
            },
            legend: {
                labels: {
                    generateLabels: function(e) {
                        var t = e.data;
                        return t.labels.length && t.datasets.length ? t.labels.map((function(n, i) {
                            var r = e.getDatasetMeta(0),
                                o = r.controller.getStyle(i);
                            return {
                                text: n,
                                fillStyle: o.backgroundColor,
                                strokeStyle: o.borderColor,
                                lineWidth: o.borderWidth,
                                hidden: isNaN(t.datasets[0].data[i]) || r.data[i].hidden,
                                index: i
                            }
                        })) : []
                    }
                },
                onClick: function(e, t) {
                    var n, i, r, o = t.index,
                        a = this.chart;
                    for (n = 0, i = (a.data.datasets || []).length; n < i; ++n)(r = a.getDatasetMeta(n)).data[o] && (r.data[o].hidden = !r.data[o].hidden);
                    a.update()
                }
            },
            cutoutPercentage: 50,
            rotation: -Ie,
            circumference: Oe,
            tooltips: {
                callbacks: {
                    title: function() {
                        return ""
                    },
                    label: function(e, t) {
                        var n = t.labels[e.index],
                            i = ": " + t.datasets[e.datasetIndex].data[e.index];
                        return H.isArray(n) ? (n = n.slice())[0] += i : n += i, n
                    }
                }
            }
        });
        var Pe = te.extend({
            dataElementType: ye.Arc,
            linkScales: H.noop,
            _dataElementOptions: ["backgroundColor", "borderColor", "borderWidth", "borderAlign", "hoverBackgroundColor", "hoverBorderColor", "hoverBorderWidth"],
            getRingIndex: function(e) {
                for (var t = 0, n = 0; n < e; ++n) this.chart.isDatasetVisible(n) && ++t;
                return t
            },
            update: function(e) {
                var t, n, i, r, o = this,
                    a = o.chart,
                    s = a.chartArea,
                    l = a.options,
                    c = 1,
                    u = 1,
                    d = 0,
                    h = 0,
                    f = o.getMeta(),
                    p = f.data,
                    g = l.cutoutPercentage / 100 || 0,
                    m = l.circumference,
                    v = o._getRingWeight(o.index);
                if (m < Oe) {
                    var y = l.rotation % Oe,
                        b = (y += y >= Me ? -Oe : y < -Me ? Oe : 0) + m,
                        w = Math.cos(y),
                        x = Math.sin(y),
                        _ = Math.cos(b),
                        C = Math.sin(b),
                        k = y <= 0 && b >= 0 || b >= Oe,
                        S = y <= Ie && b >= Ie || b >= Oe + Ie,
                        T = y <= -Ie && b >= -Ie || b >= Me + Ie,
                        D = y === -Me || b >= Me ? -1 : Math.min(w, w * g, _, _ * g),
                        E = T ? -1 : Math.min(x, x * g, C, C * g),
                        A = k ? 1 : Math.max(w, w * g, _, _ * g),
                        M = S ? 1 : Math.max(x, x * g, C, C * g);
                    c = (A - D) / 2, u = (M - E) / 2, d = -(A + D) / 2, h = -(M + E) / 2
                }
                for (i = 0, r = p.length; i < r; ++i) p[i]._options = o._resolveDataElementOptions(p[i], i);
                for (a.borderWidth = o.getMaxBorderWidth(), t = (s.right - s.left - a.borderWidth) / c, n = (s.bottom - s.top - a.borderWidth) / u, a.outerRadius = Math.max(Math.min(t, n) / 2, 0), a.innerRadius = Math.max(a.outerRadius * g, 0), a.radiusLength = (a.outerRadius - a.innerRadius) / (o._getVisibleDatasetWeightTotal() || 1), a.offsetX = d * a.outerRadius, a.offsetY = h * a.outerRadius, f.total = o.calculateTotal(), o.outerRadius = a.outerRadius - a.radiusLength * o._getRingWeightOffset(o.index), o.innerRadius = Math.max(o.outerRadius - a.radiusLength * v, 0), i = 0, r = p.length; i < r; ++i) o.updateElement(p[i], i, e)
            },
            updateElement: function(e, t, n) {
                var i = this,
                    r = i.chart,
                    o = r.chartArea,
                    a = r.options,
                    s = a.animation,
                    l = (o.left + o.right) / 2,
                    c = (o.top + o.bottom) / 2,
                    u = a.rotation,
                    d = a.rotation,
                    h = i.getDataset(),
                    f = n && s.animateRotate || e.hidden ? 0 : i.calculateCircumference(h.data[t]) * (a.circumference / Oe),
                    p = n && s.animateScale ? 0 : i.innerRadius,
                    g = n && s.animateScale ? 0 : i.outerRadius,
                    m = e._options || {};
                H.extend(e, {
                    _datasetIndex: i.index,
                    _index: t,
                    _model: {
                        backgroundColor: m.backgroundColor,
                        borderColor: m.borderColor,
                        borderWidth: m.borderWidth,
                        borderAlign: m.borderAlign,
                        x: l + r.offsetX,
                        y: c + r.offsetY,
                        startAngle: u,
                        endAngle: d,
                        circumference: f,
                        outerRadius: g,
                        innerRadius: p,
                        label: H.valueAtIndexOrDefault(h.label, t, r.data.labels[t])
                    }
                });
                var v = e._model;
                n && s.animateRotate || (v.startAngle = 0 === t ? a.rotation : i.getMeta().data[t - 1]._model.endAngle, v.endAngle = v.startAngle + v.circumference), e.pivot()
            },
            calculateTotal: function() {
                var e, t = this.getDataset(),
                    n = this.getMeta(),
                    i = 0;
                return H.each(n.data, (function(n, r) {
                    e = t.data[r], isNaN(e) || n.hidden || (i += Math.abs(e))
                })), i
            },
            calculateCircumference: function(e) {
                var t = this.getMeta().total;
                return t > 0 && !isNaN(e) ? Oe * (Math.abs(e) / t) : 0
            },
            getMaxBorderWidth: function(e) {
                var t, n, i, r, o, a, s, l, c = 0,
                    u = this.chart;
                if (!e)
                    for (t = 0, n = u.data.datasets.length; t < n; ++t)
                        if (u.isDatasetVisible(t)) {
                            e = (i = u.getDatasetMeta(t)).data, t !== this.index && (o = i.controller);
                            break
                        }
                if (!e) return 0;
                for (t = 0, n = e.length; t < n; ++t) r = e[t], o ? (o._configure(), a = o._resolveDataElementOptions(r, t)) : a = r._options, "inner" !== a.borderAlign && (s = a.borderWidth, c = (l = a.hoverBorderWidth) > (c = s > c ? s : c) ? l : c);
                return c
            },
            setHoverStyle: function(e) {
                var t = e._model,
                    n = e._options,
                    i = H.getHoverColor;
                e.$previousStyle = {
                    backgroundColor: t.backgroundColor,
                    borderColor: t.borderColor,
                    borderWidth: t.borderWidth
                }, t.backgroundColor = Ae(n.hoverBackgroundColor, i(n.backgroundColor)), t.borderColor = Ae(n.hoverBorderColor, i(n.borderColor)), t.borderWidth = Ae(n.hoverBorderWidth, n.borderWidth)
            },
            _getRingWeightOffset: function(e) {
                for (var t = 0, n = 0; n < e; ++n) this.chart.isDatasetVisible(n) && (t += this._getRingWeight(n));
                return t
            },
            _getRingWeight: function(e) {
                return Math.max(Ae(this.chart.data.datasets[e].weight, 1), 0)
            },
            _getVisibleDatasetWeightTotal: function() {
                return this._getRingWeightOffset(this.chart.data.datasets.length)
            }
        });
        N._set("horizontalBar", {
            hover: {
                mode: "index",
                axis: "y"
            },
            scales: {
                xAxes: [{
                    type: "linear",
                    position: "bottom"
                }],
                yAxes: [{
                    type: "category",
                    position: "left",
                    offset: !0,
                    gridLines: {
                        offsetGridLines: !0
                    }
                }]
            },
            elements: {
                rectangle: {
                    borderSkipped: "left"
                }
            },
            tooltips: {
                mode: "index",
                axis: "y"
            }
        }), N._set("global", {
            datasets: {
                horizontalBar: {
                    categoryPercentage: .8,
                    barPercentage: .9
                }
            }
        });
        var Le = Se.extend({
                _getValueScaleId: function() {
                    return this.getMeta().xAxisID
                },
                _getIndexScaleId: function() {
                    return this.getMeta().yAxisID
                }
            }),
            Fe = H.valueOrDefault,
            Ne = H.options.resolve,
            Re = H.canvas._isPointInArea;

        function je(e, t) {
            var n = e && e.options.ticks || {},
                i = n.reverse,
                r = void 0 === n.min ? t : 0,
                o = void 0 === n.max ? t : 0;
            return {
                start: i ? o : r,
                end: i ? r : o
            }
        }

        function $e(e, t, n) {
            var i = n / 2,
                r = je(e, i),
                o = je(t, i);
            return {
                top: o.end,
                right: r.end,
                bottom: o.start,
                left: r.start
            }
        }

        function ze(e) {
            var t, n, i, r;
            return H.isObject(e) ? (t = e.top, n = e.right, i = e.bottom, r = e.left) : t = n = i = r = e, {
                top: t,
                right: n,
                bottom: i,
                left: r
            }
        }
        N._set("line", {
            showLines: !0,
            spanGaps: !1,
            hover: {
                mode: "label"
            },
            scales: {
                xAxes: [{
                    type: "category",
                    id: "x-axis-0"
                }],
                yAxes: [{
                    type: "linear",
                    id: "y-axis-0"
                }]
            }
        });
        var He = te.extend({
                datasetElementType: ye.Line,
                dataElementType: ye.Point,
                _datasetElementOptions: ["backgroundColor", "borderCapStyle", "borderColor", "borderDash", "borderDashOffset", "borderJoinStyle", "borderWidth", "cubicInterpolationMode", "fill"],
                _dataElementOptions: {
                    backgroundColor: "pointBackgroundColor",
                    borderColor: "pointBorderColor",
                    borderWidth: "pointBorderWidth",
                    hitRadius: "pointHitRadius",
                    hoverBackgroundColor: "pointHoverBackgroundColor",
                    hoverBorderColor: "pointHoverBorderColor",
                    hoverBorderWidth: "pointHoverBorderWidth",
                    hoverRadius: "pointHoverRadius",
                    pointStyle: "pointStyle",
                    radius: "pointRadius",
                    rotation: "pointRotation"
                },
                update: function(e) {
                    var t, n, i = this,
                        r = i.getMeta(),
                        o = r.dataset,
                        a = r.data || [],
                        s = i.chart.options,
                        l = i._config,
                        c = i._showLine = Fe(l.showLine, s.showLines);
                    for (i._xScale = i.getScaleForId(r.xAxisID), i._yScale = i.getScaleForId(r.yAxisID), c && (void 0 !== l.tension && void 0 === l.lineTension && (l.lineTension = l.tension), o._scale = i._yScale, o._datasetIndex = i.index, o._children = a, o._model = i._resolveDatasetElementOptions(o), o.pivot()), t = 0, n = a.length; t < n; ++t) i.updateElement(a[t], t, e);
                    for (c && 0 !== o._model.tension && i.updateBezierControlPoints(), t = 0, n = a.length; t < n; ++t) a[t].pivot()
                },
                updateElement: function(e, t, n) {
                    var i, r, o = this,
                        a = o.getMeta(),
                        s = e.custom || {},
                        l = o.getDataset(),
                        c = o.index,
                        u = l.data[t],
                        d = o._xScale,
                        h = o._yScale,
                        f = a.dataset._model,
                        p = o._resolveDataElementOptions(e, t);
                    i = d.getPixelForValue("object" == typeof u ? u : NaN, t, c), r = n ? h.getBasePixel() : o.calculatePointY(u, t, c), e._xScale = d, e._yScale = h, e._options = p, e._datasetIndex = c, e._index = t, e._model = {
                        x: i,
                        y: r,
                        skip: s.skip || isNaN(i) || isNaN(r),
                        radius: p.radius,
                        pointStyle: p.pointStyle,
                        rotation: p.rotation,
                        backgroundColor: p.backgroundColor,
                        borderColor: p.borderColor,
                        borderWidth: p.borderWidth,
                        tension: Fe(s.tension, f ? f.tension : 0),
                        steppedLine: !!f && f.steppedLine,
                        hitRadius: p.hitRadius
                    }
                },
                _resolveDatasetElementOptions: function(e) {
                    var t = this,
                        n = t._config,
                        i = e.custom || {},
                        r = t.chart.options,
                        o = r.elements.line,
                        a = te.prototype._resolveDatasetElementOptions.apply(t, arguments);
                    return a.spanGaps = Fe(n.spanGaps, r.spanGaps), a.tension = Fe(n.lineTension, o.tension), a.steppedLine = Ne([i.steppedLine, n.steppedLine, o.stepped]), a.clip = ze(Fe(n.clip, $e(t._xScale, t._yScale, a.borderWidth))), a
                },
                calculatePointY: function(e, t, n) {
                    var i, r, o, a, s, l, c, u = this.chart,
                        d = this._yScale,
                        h = 0,
                        f = 0;
                    if (d.options.stacked) {
                        for (s = +d.getRightValue(e), c = (l = u._getSortedVisibleDatasetMetas()).length, i = 0; i < c && (o = l[i]).index !== n; ++i) r = u.data.datasets[o.index], "line" === o.type && o.yAxisID === d.id && ((a = +d.getRightValue(r.data[t])) < 0 ? f += a || 0 : h += a || 0);
                        return s < 0 ? d.getPixelForValue(f + s) : d.getPixelForValue(h + s)
                    }
                    return d.getPixelForValue(e)
                },
                updateBezierControlPoints: function() {
                    var e, t, n, i, r = this.chart,
                        o = this.getMeta(),
                        a = o.dataset._model,
                        s = r.chartArea,
                        l = o.data || [];

                    function c(e, t, n) {
                        return Math.max(Math.min(e, n), t)
                    }
                    if (a.spanGaps && (l = l.filter((function(e) {
                            return !e._model.skip
                        }))), "monotone" === a.cubicInterpolationMode) H.splineCurveMonotone(l);
                    else
                        for (e = 0, t = l.length; e < t; ++e) n = l[e]._model, i = H.splineCurve(H.previousItem(l, e)._model, n, H.nextItem(l, e)._model, a.tension), n.controlPointPreviousX = i.previous.x, n.controlPointPreviousY = i.previous.y, n.controlPointNextX = i.next.x, n.controlPointNextY = i.next.y;
                    if (r.options.elements.line.capBezierPoints)
                        for (e = 0, t = l.length; e < t; ++e) n = l[e]._model, Re(n, s) && (e > 0 && Re(l[e - 1]._model, s) && (n.controlPointPreviousX = c(n.controlPointPreviousX, s.left, s.right), n.controlPointPreviousY = c(n.controlPointPreviousY, s.top, s.bottom)), e < l.length - 1 && Re(l[e + 1]._model, s) && (n.controlPointNextX = c(n.controlPointNextX, s.left, s.right), n.controlPointNextY = c(n.controlPointNextY, s.top, s.bottom)))
                },
                draw: function() {
                    var e, t = this.chart,
                        n = this.getMeta(),
                        i = n.data || [],
                        r = t.chartArea,
                        o = t.canvas,
                        a = 0,
                        s = i.length;
                    for (this._showLine && (e = n.dataset._model.clip, H.canvas.clipArea(t.ctx, {
                            left: !1 === e.left ? 0 : r.left - e.left,
                            right: !1 === e.right ? o.width : r.right + e.right,
                            top: !1 === e.top ? 0 : r.top - e.top,
                            bottom: !1 === e.bottom ? o.height : r.bottom + e.bottom
                        }), n.dataset.draw(), H.canvas.unclipArea(t.ctx)); a < s; ++a) i[a].draw(r)
                },
                setHoverStyle: function(e) {
                    var t = e._model,
                        n = e._options,
                        i = H.getHoverColor;
                    e.$previousStyle = {
                        backgroundColor: t.backgroundColor,
                        borderColor: t.borderColor,
                        borderWidth: t.borderWidth,
                        radius: t.radius
                    }, t.backgroundColor = Fe(n.hoverBackgroundColor, i(n.backgroundColor)), t.borderColor = Fe(n.hoverBorderColor, i(n.borderColor)), t.borderWidth = Fe(n.hoverBorderWidth, n.borderWidth), t.radius = Fe(n.hoverRadius, n.radius)
                }
            }),
            Be = H.options.resolve;
        N._set("polarArea", {
            scale: {
                type: "radialLinear",
                angleLines: {
                    display: !1
                },
                gridLines: {
                    circular: !0
                },
                pointLabels: {
                    display: !1
                },
                ticks: {
                    beginAtZero: !0
                }
            },
            animation: {
                animateRotate: !0,
                animateScale: !0
            },
            startAngle: -.5 * Math.PI,
            legendCallback: function(e) {
                var t, n, i, r = document.createElement("ul"),
                    o = e.data,
                    a = o.datasets,
                    s = o.labels;
                if (r.setAttribute("class", e.id + "-legend"), a.length)
                    for (t = 0, n = a[0].data.length; t < n; ++t)(i = r.appendChild(document.createElement("li"))).appendChild(document.createElement("span")).style.backgroundColor = a[0].backgroundColor[t], s[t] && i.appendChild(document.createTextNode(s[t]));
                return r.outerHTML
            },
            legend: {
                labels: {
                    generateLabels: function(e) {
                        var t = e.data;
                        return t.labels.length && t.datasets.length ? t.labels.map((function(n, i) {
                            var r = e.getDatasetMeta(0),
                                o = r.controller.getStyle(i);
                            return {
                                text: n,
                                fillStyle: o.backgroundColor,
                                strokeStyle: o.borderColor,
                                lineWidth: o.borderWidth,
                                hidden: isNaN(t.datasets[0].data[i]) || r.data[i].hidden,
                                index: i
                            }
                        })) : []
                    }
                },
                onClick: function(e, t) {
                    var n, i, r, o = t.index,
                        a = this.chart;
                    for (n = 0, i = (a.data.datasets || []).length; n < i; ++n)(r = a.getDatasetMeta(n)).data[o].hidden = !r.data[o].hidden;
                    a.update()
                }
            },
            tooltips: {
                callbacks: {
                    title: function() {
                        return ""
                    },
                    label: function(e, t) {
                        return t.labels[e.index] + ": " + e.yLabel
                    }
                }
            }
        });
        var qe = te.extend({
            dataElementType: ye.Arc,
            linkScales: H.noop,
            _dataElementOptions: ["backgroundColor", "borderColor", "borderWidth", "borderAlign", "hoverBackgroundColor", "hoverBorderColor", "hoverBorderWidth"],
            _getIndexScaleId: function() {
                return this.chart.scale.id
            },
            _getValueScaleId: function() {
                return this.chart.scale.id
            },
            update: function(e) {
                var t, n, i, r = this,
                    o = r.getDataset(),
                    a = r.getMeta(),
                    s = r.chart.options.startAngle || 0,
                    l = r._starts = [],
                    c = r._angles = [],
                    u = a.data;
                for (r._updateRadius(), a.count = r.countVisibleElements(), t = 0, n = o.data.length; t < n; t++) l[t] = s, i = r._computeAngle(t), c[t] = i, s += i;
                for (t = 0, n = u.length; t < n; ++t) u[t]._options = r._resolveDataElementOptions(u[t], t), r.updateElement(u[t], t, e)
            },
            _updateRadius: function() {
                var e = this,
                    t = e.chart,
                    n = t.chartArea,
                    i = t.options,
                    r = Math.min(n.right - n.left, n.bottom - n.top);
                t.outerRadius = Math.max(r / 2, 0), t.innerRadius = Math.max(i.cutoutPercentage ? t.outerRadius / 100 * i.cutoutPercentage : 1, 0), t.radiusLength = (t.outerRadius - t.innerRadius) / t.getVisibleDatasetCount(), e.outerRadius = t.outerRadius - t.radiusLength * e.index, e.innerRadius = e.outerRadius - t.radiusLength
            },
            updateElement: function(e, t, n) {
                var i = this,
                    r = i.chart,
                    o = i.getDataset(),
                    a = r.options,
                    s = a.animation,
                    l = r.scale,
                    c = r.data.labels,
                    u = l.xCenter,
                    d = l.yCenter,
                    h = a.startAngle,
                    f = e.hidden ? 0 : l.getDistanceFromCenterForValue(o.data[t]),
                    p = i._starts[t],
                    g = p + (e.hidden ? 0 : i._angles[t]),
                    m = s.animateScale ? 0 : l.getDistanceFromCenterForValue(o.data[t]),
                    v = e._options || {};
                H.extend(e, {
                    _datasetIndex: i.index,
                    _index: t,
                    _scale: l,
                    _model: {
                        backgroundColor: v.backgroundColor,
                        borderColor: v.borderColor,
                        borderWidth: v.borderWidth,
                        borderAlign: v.borderAlign,
                        x: u,
                        y: d,
                        innerRadius: 0,
                        outerRadius: n ? m : f,
                        startAngle: n && s.animateRotate ? h : p,
                        endAngle: n && s.animateRotate ? h : g,
                        label: H.valueAtIndexOrDefault(c, t, c[t])
                    }
                }), e.pivot()
            },
            countVisibleElements: function() {
                var e = this.getDataset(),
                    t = this.getMeta(),
                    n = 0;
                return H.each(t.data, (function(t, i) {
                    isNaN(e.data[i]) || t.hidden || n++
                })), n
            },
            setHoverStyle: function(e) {
                var t = e._model,
                    n = e._options,
                    i = H.getHoverColor,
                    r = H.valueOrDefault;
                e.$previousStyle = {
                    backgroundColor: t.backgroundColor,
                    borderColor: t.borderColor,
                    borderWidth: t.borderWidth
                }, t.backgroundColor = r(n.hoverBackgroundColor, i(n.backgroundColor)), t.borderColor = r(n.hoverBorderColor, i(n.borderColor)), t.borderWidth = r(n.hoverBorderWidth, n.borderWidth)
            },
            _computeAngle: function(e) {
                var t = this,
                    n = this.getMeta().count,
                    i = t.getDataset(),
                    r = t.getMeta();
                if (isNaN(i.data[e]) || r.data[e].hidden) return 0;
                var o = {
                    chart: t.chart,
                    dataIndex: e,
                    dataset: i,
                    datasetIndex: t.index
                };
                return Be([t.chart.options.elements.arc.angle, 2 * Math.PI / n], o, e)
            }
        });
        N._set("pie", H.clone(N.doughnut)), N._set("pie", {
            cutoutPercentage: 0
        });
        var We = Pe,
            Ue = H.valueOrDefault;
        N._set("radar", {
            spanGaps: !1,
            scale: {
                type: "radialLinear"
            },
            elements: {
                line: {
                    fill: "start",
                    tension: 0
                }
            }
        });
        var Ve = te.extend({
            datasetElementType: ye.Line,
            dataElementType: ye.Point,
            linkScales: H.noop,
            _datasetElementOptions: ["backgroundColor", "borderWidth", "borderColor", "borderCapStyle", "borderDash", "borderDashOffset", "borderJoinStyle", "fill"],
            _dataElementOptions: {
                backgroundColor: "pointBackgroundColor",
                borderColor: "pointBorderColor",
                borderWidth: "pointBorderWidth",
                hitRadius: "pointHitRadius",
                hoverBackgroundColor: "pointHoverBackgroundColor",
                hoverBorderColor: "pointHoverBorderColor",
                hoverBorderWidth: "pointHoverBorderWidth",
                hoverRadius: "pointHoverRadius",
                pointStyle: "pointStyle",
                radius: "pointRadius",
                rotation: "pointRotation"
            },
            _getIndexScaleId: function() {
                return this.chart.scale.id
            },
            _getValueScaleId: function() {
                return this.chart.scale.id
            },
            update: function(e) {
                var t, n, i = this,
                    r = i.getMeta(),
                    o = r.dataset,
                    a = r.data || [],
                    s = i.chart.scale,
                    l = i._config;
                for (void 0 !== l.tension && void 0 === l.lineTension && (l.lineTension = l.tension), o._scale = s, o._datasetIndex = i.index, o._children = a, o._loop = !0, o._model = i._resolveDatasetElementOptions(o), o.pivot(), t = 0, n = a.length; t < n; ++t) i.updateElement(a[t], t, e);
                for (i.updateBezierControlPoints(), t = 0, n = a.length; t < n; ++t) a[t].pivot()
            },
            updateElement: function(e, t, n) {
                var i = this,
                    r = e.custom || {},
                    o = i.getDataset(),
                    a = i.chart.scale,
                    s = a.getPointPositionForValue(t, o.data[t]),
                    l = i._resolveDataElementOptions(e, t),
                    c = i.getMeta().dataset._model,
                    u = n ? a.xCenter : s.x,
                    d = n ? a.yCenter : s.y;
                e._scale = a, e._options = l, e._datasetIndex = i.index, e._index = t, e._model = {
                    x: u,
                    y: d,
                    skip: r.skip || isNaN(u) || isNaN(d),
                    radius: l.radius,
                    pointStyle: l.pointStyle,
                    rotation: l.rotation,
                    backgroundColor: l.backgroundColor,
                    borderColor: l.borderColor,
                    borderWidth: l.borderWidth,
                    tension: Ue(r.tension, c ? c.tension : 0),
                    hitRadius: l.hitRadius
                }
            },
            _resolveDatasetElementOptions: function() {
                var e = this,
                    t = e._config,
                    n = e.chart.options,
                    i = te.prototype._resolveDatasetElementOptions.apply(e, arguments);
                return i.spanGaps = Ue(t.spanGaps, n.spanGaps), i.tension = Ue(t.lineTension, n.elements.line.tension), i
            },
            updateBezierControlPoints: function() {
                var e, t, n, i, r = this.getMeta(),
                    o = this.chart.chartArea,
                    a = r.data || [];

                function s(e, t, n) {
                    return Math.max(Math.min(e, n), t)
                }
                for (r.dataset._model.spanGaps && (a = a.filter((function(e) {
                        return !e._model.skip
                    }))), e = 0, t = a.length; e < t; ++e) n = a[e]._model, i = H.splineCurve(H.previousItem(a, e, !0)._model, n, H.nextItem(a, e, !0)._model, n.tension), n.controlPointPreviousX = s(i.previous.x, o.left, o.right), n.controlPointPreviousY = s(i.previous.y, o.top, o.bottom), n.controlPointNextX = s(i.next.x, o.left, o.right), n.controlPointNextY = s(i.next.y, o.top, o.bottom)
            },
            setHoverStyle: function(e) {
                var t = e._model,
                    n = e._options,
                    i = H.getHoverColor;
                e.$previousStyle = {
                    backgroundColor: t.backgroundColor,
                    borderColor: t.borderColor,
                    borderWidth: t.borderWidth,
                    radius: t.radius
                }, t.backgroundColor = Ue(n.hoverBackgroundColor, i(n.backgroundColor)), t.borderColor = Ue(n.hoverBorderColor, i(n.borderColor)), t.borderWidth = Ue(n.hoverBorderWidth, n.borderWidth), t.radius = Ue(n.hoverRadius, n.radius)
            }
        });
        N._set("scatter", {
            hover: {
                mode: "single"
            },
            scales: {
                xAxes: [{
                    id: "x-axis-1",
                    type: "linear",
                    position: "bottom"
                }],
                yAxes: [{
                    id: "y-axis-1",
                    type: "linear",
                    position: "left"
                }]
            },
            tooltips: {
                callbacks: {
                    title: function() {
                        return ""
                    },
                    label: function(e) {
                        return "(" + e.xLabel + ", " + e.yLabel + ")"
                    }
                }
            }
        }), N._set("global", {
            datasets: {
                scatter: {
                    showLine: !1
                }
            }
        });
        var Ye = {
            bar: Se,
            bubble: Ee,
            doughnut: Pe,
            horizontalBar: Le,
            line: He,
            polarArea: qe,
            pie: We,
            radar: Ve,
            scatter: He
        };

        function Xe(e, t) {
            return e.native ? {
                x: e.x,
                y: e.y
            } : H.getRelativePosition(e, t)
        }

        function Ge(e, t) {
            var n, i, r, o, a, s, l = e._getSortedVisibleDatasetMetas();
            for (i = 0, o = l.length; i < o; ++i)
                for (r = 0, a = (n = l[i].data).length; r < a; ++r)(s = n[r])._view.skip || t(s)
        }

        function Qe(e, t) {
            var n = [];
            return Ge(e, (function(e) {
                e.inRange(t.x, t.y) && n.push(e)
            })), n
        }

        function Ke(e, t, n, i) {
            var r = Number.POSITIVE_INFINITY,
                o = [];
            return Ge(e, (function(e) {
                if (!n || e.inRange(t.x, t.y)) {
                    var a = e.getCenterPoint(),
                        s = i(t, a);
                    s < r ? (o = [e], r = s) : s === r && o.push(e)
                }
            })), o
        }

        function Je(e) {
            var t = -1 !== e.indexOf("x"),
                n = -1 !== e.indexOf("y");
            return function(e, i) {
                var r = t ? Math.abs(e.x - i.x) : 0,
                    o = n ? Math.abs(e.y - i.y) : 0;
                return Math.sqrt(Math.pow(r, 2) + Math.pow(o, 2))
            }
        }

        function Ze(e, t, n) {
            var i = Xe(t, e);
            n.axis = n.axis || "x";
            var r = Je(n.axis),
                o = n.intersect ? Qe(e, i) : Ke(e, i, !1, r),
                a = [];
            return o.length ? (e._getSortedVisibleDatasetMetas().forEach((function(e) {
                var t = e.data[o[0]._index];
                t && !t._view.skip && a.push(t)
            })), a) : []
        }
        var et = {
                modes: {
                    single: function(e, t) {
                        var n = Xe(t, e),
                            i = [];
                        return Ge(e, (function(e) {
                            if (e.inRange(n.x, n.y)) return i.push(e), i
                        })), i.slice(0, 1)
                    },
                    label: Ze,
                    index: Ze,
                    dataset: function(e, t, n) {
                        var i = Xe(t, e);
                        n.axis = n.axis || "xy";
                        var r = Je(n.axis),
                            o = n.intersect ? Qe(e, i) : Ke(e, i, !1, r);
                        return o.length > 0 && (o = e.getDatasetMeta(o[0]._datasetIndex).data), o
                    },
                    "x-axis": function(e, t) {
                        return Ze(e, t, {
                            intersect: !1
                        })
                    },
                    point: function(e, t) {
                        return Qe(e, Xe(t, e))
                    },
                    nearest: function(e, t, n) {
                        var i = Xe(t, e);
                        n.axis = n.axis || "xy";
                        var r = Je(n.axis);
                        return Ke(e, i, n.intersect, r)
                    },
                    x: function(e, t, n) {
                        var i = Xe(t, e),
                            r = [],
                            o = !1;
                        return Ge(e, (function(e) {
                            e.inXRange(i.x) && r.push(e), e.inRange(i.x, i.y) && (o = !0)
                        })), n.intersect && !o && (r = []), r
                    },
                    y: function(e, t, n) {
                        var i = Xe(t, e),
                            r = [],
                            o = !1;
                        return Ge(e, (function(e) {
                            e.inYRange(i.y) && r.push(e), e.inRange(i.x, i.y) && (o = !0)
                        })), n.intersect && !o && (r = []), r
                    }
                }
            },
            tt = H.extend;

        function nt(e, t) {
            return H.where(e, (function(e) {
                return e.pos === t
            }))
        }

        function it(e, t) {
            return e.sort((function(e, n) {
                var i = t ? n : e,
                    r = t ? e : n;
                return i.weight === r.weight ? i.index - r.index : i.weight - r.weight
            }))
        }

        function rt(e, t, n, i) {
            return Math.max(e[n], t[n]) + Math.max(e[i], t[i])
        }

        function ot(e, t, n) {
            var i, r, o = n.box,
                a = e.maxPadding;
            if (n.size && (e[n.pos] -= n.size), n.size = n.horizontal ? o.height : o.width, e[n.pos] += n.size, o.getPadding) {
                var s = o.getPadding();
                a.top = Math.max(a.top, s.top), a.left = Math.max(a.left, s.left), a.bottom = Math.max(a.bottom, s.bottom), a.right = Math.max(a.right, s.right)
            }
            if (i = t.outerWidth - rt(a, e, "left", "right"), r = t.outerHeight - rt(a, e, "top", "bottom"), i !== e.w || r !== e.h) return e.w = i, e.h = r, n.horizontal ? i !== e.w : r !== e.h
        }

        function at(e, t) {
            var n = t.maxPadding;
            return function(e) {
                var i = {
                    left: 0,
                    top: 0,
                    right: 0,
                    bottom: 0
                };
                return e.forEach((function(e) {
                    i[e] = Math.max(t[e], n[e])
                })), i
            }(e ? ["left", "right"] : ["top", "bottom"])
        }

        function st(e, t, n) {
            var i, r, o, a, s, l, c = [];
            for (i = 0, r = e.length; i < r; ++i)(a = (o = e[i]).box).update(o.width || t.w, o.height || t.h, at(o.horizontal, t)), ot(t, n, o) && (l = !0, c.length && (s = !0)), a.fullWidth || c.push(o);
            return s && st(c, t, n) || l
        }

        function lt(e, t, n) {
            var i, r, o, a, s = n.padding,
                l = t.x,
                c = t.y;
            for (i = 0, r = e.length; i < r; ++i) a = (o = e[i]).box, o.horizontal ? (a.left = a.fullWidth ? s.left : t.left, a.right = a.fullWidth ? n.outerWidth - s.right : t.left + t.w, a.top = c, a.bottom = c + a.height, a.width = a.right - a.left, c = a.bottom) : (a.left = l, a.right = l + a.width, a.top = t.top, a.bottom = t.top + t.h, a.height = a.bottom - a.top, l = a.right);
            t.x = l, t.y = c
        }
        N._set("global", {
            layout: {
                padding: {
                    top: 0,
                    right: 0,
                    bottom: 0,
                    left: 0
                }
            }
        });
        var ct, ut = {
                defaults: {},
                addBox: function(e, t) {
                    e.boxes || (e.boxes = []), t.fullWidth = t.fullWidth || !1, t.position = t.position || "top", t.weight = t.weight || 0, t._layers = t._layers || function() {
                        return [{
                            z: 0,
                            draw: function() {
                                t.draw.apply(t, arguments)
                            }
                        }]
                    }, e.boxes.push(t)
                },
                removeBox: function(e, t) {
                    var n = e.boxes ? e.boxes.indexOf(t) : -1; - 1 !== n && e.boxes.splice(n, 1)
                },
                configure: function(e, t, n) {
                    for (var i, r = ["fullWidth", "position", "weight"], o = r.length, a = 0; a < o; ++a) i = r[a], n.hasOwnProperty(i) && (t[i] = n[i])
                },
                update: function(e, t, n) {
                    if (e) {
                        var i = e.options.layout || {},
                            r = H.options.toPadding(i.padding),
                            o = t - r.width,
                            a = n - r.height,
                            s = function(e) {
                                var t = function(e) {
                                        var t, n, i, r = [];
                                        for (t = 0, n = (e || []).length; t < n; ++t) i = e[t], r.push({
                                            index: t,
                                            box: i,
                                            pos: i.position,
                                            horizontal: i.isHorizontal(),
                                            weight: i.weight
                                        });
                                        return r
                                    }(e),
                                    n = it(nt(t, "left"), !0),
                                    i = it(nt(t, "right")),
                                    r = it(nt(t, "top"), !0),
                                    o = it(nt(t, "bottom"));
                                return {
                                    leftAndTop: n.concat(r),
                                    rightAndBottom: i.concat(o),
                                    chartArea: nt(t, "chartArea"),
                                    vertical: n.concat(i),
                                    horizontal: r.concat(o)
                                }
                            }(e.boxes),
                            l = s.vertical,
                            c = s.horizontal,
                            u = Object.freeze({
                                outerWidth: t,
                                outerHeight: n,
                                padding: r,
                                availableWidth: o,
                                vBoxMaxWidth: o / 2 / l.length,
                                hBoxMaxHeight: a / 2
                            }),
                            d = tt({
                                maxPadding: tt({}, r),
                                w: o,
                                h: a,
                                x: r.left,
                                y: r.top
                            }, r);
                        ! function(e, t) {
                            var n, i, r;
                            for (n = 0, i = e.length; n < i; ++n)(r = e[n]).width = r.horizontal ? r.box.fullWidth && t.availableWidth : t.vBoxMaxWidth, r.height = r.horizontal && t.hBoxMaxHeight
                        }(l.concat(c), u), st(l, d, u), st(c, d, u) && st(l, d, u),
                            function(e) {
                                var t = e.maxPadding;

                                function n(n) {
                                    var i = Math.max(t[n] - e[n], 0);
                                    return e[n] += i, i
                                }
                                e.y += n("top"), e.x += n("left"), n("right"), n("bottom")
                            }(d), lt(s.leftAndTop, d, u), d.x += d.w, d.y += d.h, lt(s.rightAndBottom, d, u), e.chartArea = {
                                left: d.left,
                                top: d.top,
                                right: d.left + d.w,
                                bottom: d.top + d.h
                            }, H.each(s.chartArea, (function(t) {
                                var n = t.box;
                                tt(n, e.chartArea), n.update(d.w, d.h)
                            }))
                    }
                }
            },
            dt = (ct = Object.freeze({
                __proto__: null,
                default: "@keyframes chartjs-render-animation{from{opacity:.99}to{opacity:1}}.chartjs-render-monitor{animation:chartjs-render-animation 1ms}.chartjs-size-monitor,.chartjs-size-monitor-expand,.chartjs-size-monitor-shrink{position:absolute;direction:ltr;left:0;top:0;right:0;bottom:0;overflow:hidden;pointer-events:none;visibility:hidden;z-index:-1}.chartjs-size-monitor-expand>div{position:absolute;width:1000000px;height:1000000px;left:0;top:0}.chartjs-size-monitor-shrink>div{position:absolute;width:200%;height:200%;left:0;top:0}"
            })) && ct.default || ct,
            ht = "$chartjs",
            ft = "chartjs-size-monitor",
            pt = "chartjs-render-monitor",
            gt = ["animationstart", "webkitAnimationStart"],
            mt = {
                touchstart: "mousedown",
                touchmove: "mousemove",
                touchend: "mouseup",
                pointerenter: "mouseenter",
                pointerdown: "mousedown",
                pointermove: "mousemove",
                pointerup: "mouseup",
                pointerleave: "mouseout",
                pointerout: "mouseout"
            };

        function vt(e, t) {
            var n = H.getStyle(e, t),
                i = n && n.match(/^(\d+)(\.\d+)?px$/);
            return i ? Number(i[1]) : void 0
        }
        var yt = !! function() {
            var e = !1;
            try {
                var t = Object.defineProperty({}, "passive", {
                    get: function() {
                        e = !0
                    }
                });
                window.addEventListener("e", null, t)
            } catch (e) {}
            return e
        }() && {
            passive: !0
        };

        function bt(e, t, n) {
            e.addEventListener(t, n, yt)
        }

        function wt(e, t, n) {
            e.removeEventListener(t, n, yt)
        }

        function xt(e, t, n, i, r) {
            return {
                type: e,
                chart: t,
                native: r || null,
                x: void 0 !== n ? n : null,
                y: void 0 !== i ? i : null
            }
        }

        function _t(e) {
            var t = document.createElement("div");
            return t.className = e || "", t
        }
        var Ct = {
            disableCSSInjection: !1,
            _enabled: "undefined" != typeof window && "undefined" != typeof document,
            _ensureLoaded: function(e) {
                if (!this.disableCSSInjection) {
                    var t = e.getRootNode ? e.getRootNode() : document;
                    ! function(e, t) {
                        var n = e[ht] || (e[ht] = {});
                        if (!n.containsStyles) {
                            n.containsStyles = !0, t = "/* Chart.js */\n" + t;
                            var i = document.createElement("style");
                            i.setAttribute("type", "text/css"), i.appendChild(document.createTextNode(t)), e.appendChild(i)
                        }
                    }(t.host ? t : document.head, dt)
                }
            },
            acquireContext: function(e, t) {
                "string" == typeof e ? e = document.getElementById(e) : e.length && (e = e[0]), e && e.canvas && (e = e.canvas);
                var n = e && e.getContext && e.getContext("2d");
                return n && n.canvas === e ? (this._ensureLoaded(e), function(e, t) {
                    var n = e.style,
                        i = e.getAttribute("height"),
                        r = e.getAttribute("width");
                    if (e[ht] = {
                            initial: {
                                height: i,
                                width: r,
                                style: {
                                    display: n.display,
                                    height: n.height,
                                    width: n.width
                                }
                            }
                        }, n.display = n.display || "block", null === r || "" === r) {
                        var o = vt(e, "width");
                        void 0 !== o && (e.width = o)
                    }
                    if (null === i || "" === i)
                        if ("" === e.style.height) e.height = e.width / (t.options.aspectRatio || 2);
                        else {
                            var a = vt(e, "height");
                            void 0 !== o && (e.height = a)
                        }
                }(e, t), n) : null
            },
            releaseContext: function(e) {
                var t = e.canvas;
                if (t[ht]) {
                    var n = t[ht].initial;
                    ["height", "width"].forEach((function(e) {
                        var i = n[e];
                        H.isNullOrUndef(i) ? t.removeAttribute(e) : t.setAttribute(e, i)
                    })), H.each(n.style || {}, (function(e, n) {
                        t.style[n] = e
                    })), t.width = t.width, delete t[ht]
                }
            },
            addEventListener: function(e, t, n) {
                var i = e.canvas;
                if ("resize" !== t) {
                    var r = n[ht] || (n[ht] = {});
                    bt(i, t, (r.proxies || (r.proxies = {}))[e.id + "_" + t] = function(t) {
                        n(function(e, t) {
                            var n = mt[e.type] || e.type,
                                i = H.getRelativePosition(e, t);
                            return xt(n, t, i.x, i.y, e)
                        }(t, e))
                    })
                } else ! function(e, t, n) {
                    var i, r, o, a, s = e[ht] || (e[ht] = {}),
                        l = s.resizer = function(e) {
                            var t = _t(ft),
                                n = _t(ft + "-expand"),
                                i = _t(ft + "-shrink");
                            n.appendChild(_t()), i.appendChild(_t()), t.appendChild(n), t.appendChild(i), t._reset = function() {
                                n.scrollLeft = 1e6, n.scrollTop = 1e6, i.scrollLeft = 1e6, i.scrollTop = 1e6
                            };
                            var r = function() {
                                t._reset(), e()
                            };
                            return bt(n, "scroll", r.bind(n, "expand")), bt(i, "scroll", r.bind(i, "shrink")), t
                        }((i = function() {
                            if (s.resizer) {
                                var i = n.options.maintainAspectRatio && e.parentNode,
                                    r = i ? i.clientWidth : 0;
                                t(xt("resize", n)), i && i.clientWidth < r && n.canvas && t(xt("resize", n))
                            }
                        }, o = !1, a = [], function() {
                            a = Array.prototype.slice.call(arguments), r = r || this, o || (o = !0, H.requestAnimFrame.call(window, (function() {
                                o = !1, i.apply(r, a)
                            })))
                        }));
                    ! function(e, t) {
                        var n = e[ht] || (e[ht] = {}),
                            i = n.renderProxy = function(e) {
                                "chartjs-render-animation" === e.animationName && t()
                            };
                        H.each(gt, (function(t) {
                            bt(e, t, i)
                        })), n.reflow = !!e.offsetParent, e.classList.add(pt)
                    }(e, (function() {
                        if (s.resizer) {
                            var t = e.parentNode;
                            t && t !== l.parentNode && t.insertBefore(l, t.firstChild), l._reset()
                        }
                    }))
                }(i, n, e)
            },
            removeEventListener: function(e, t, n) {
                var i = e.canvas;
                if ("resize" !== t) {
                    var r = ((n[ht] || {}).proxies || {})[e.id + "_" + t];
                    r && wt(i, t, r)
                } else ! function(e) {
                    var t = e[ht] || {},
                        n = t.resizer;
                    delete t.resizer,
                        function(e) {
                            var t = e[ht] || {},
                                n = t.renderProxy;
                            n && (H.each(gt, (function(t) {
                                wt(e, t, n)
                            })), delete t.renderProxy), e.classList.remove(pt)
                        }(e), n && n.parentNode && n.parentNode.removeChild(n)
                }(i)
            }
        };
        H.addEvent = bt, H.removeEvent = wt;
        var kt = Ct._enabled ? Ct : {
                acquireContext: function(e) {
                    return e && e.canvas && (e = e.canvas), e && e.getContext("2d") || null
                }
            },
            St = H.extend({
                initialize: function() {},
                acquireContext: function() {},
                releaseContext: function() {},
                addEventListener: function() {},
                removeEventListener: function() {}
            }, kt);
        N._set("global", {
            plugins: {}
        });
        var Tt = {
                _plugins: [],
                _cacheId: 0,
                register: function(e) {
                    var t = this._plugins;
                    [].concat(e).forEach((function(e) {
                        -1 === t.indexOf(e) && t.push(e)
                    })), this._cacheId++
                },
                unregister: function(e) {
                    var t = this._plugins;
                    [].concat(e).forEach((function(e) {
                        var n = t.indexOf(e); - 1 !== n && t.splice(n, 1)
                    })), this._cacheId++
                },
                clear: function() {
                    this._plugins = [], this._cacheId++
                },
                count: function() {
                    return this._plugins.length
                },
                getAll: function() {
                    return this._plugins
                },
                notify: function(e, t, n) {
                    var i, r, o, a, s, l = this.descriptors(e),
                        c = l.length;
                    for (i = 0; i < c; ++i)
                        if ("function" == typeof(s = (o = (r = l[i]).plugin)[t]) && ((a = [e].concat(n || [])).push(r.options), !1 === s.apply(o, a))) return !1;
                    return !0
                },
                descriptors: function(e) {
                    var t = e.$plugins || (e.$plugins = {});
                    if (t.id === this._cacheId) return t.descriptors;
                    var n = [],
                        i = [],
                        r = e && e.config || {},
                        o = r.options && r.options.plugins || {};
                    return this._plugins.concat(r.plugins || []).forEach((function(e) {
                        if (-1 === n.indexOf(e)) {
                            var t = e.id,
                                r = o[t];
                            !1 !== r && (!0 === r && (r = H.clone(N.global.plugins[t])), n.push(e), i.push({
                                plugin: e,
                                options: r || {}
                            }))
                        }
                    })), t.descriptors = i, t.id = this._cacheId, i
                },
                _invalidate: function(e) {
                    delete e.$plugins
                }
            },
            Dt = {
                constructors: {},
                defaults: {},
                registerScaleType: function(e, t, n) {
                    this.constructors[e] = t, this.defaults[e] = H.clone(n)
                },
                getScaleConstructor: function(e) {
                    return this.constructors.hasOwnProperty(e) ? this.constructors[e] : void 0
                },
                getScaleDefaults: function(e) {
                    return this.defaults.hasOwnProperty(e) ? H.merge({}, [N.scale, this.defaults[e]]) : {}
                },
                updateScaleDefaults: function(e, t) {
                    this.defaults.hasOwnProperty(e) && (this.defaults[e] = H.extend(this.defaults[e], t))
                },
                addScalesToLayout: function(e) {
                    H.each(e.scales, (function(t) {
                        t.fullWidth = t.options.fullWidth, t.position = t.options.position, t.weight = t.options.weight, ut.addBox(e, t)
                    }))
                }
            },
            Et = H.valueOrDefault,
            At = H.rtl.getRtlAdapter;
        N._set("global", {
            tooltips: {
                enabled: !0,
                custom: null,
                mode: "nearest",
                position: "average",
                intersect: !0,
                backgroundColor: "rgba(0,0,0,0.8)",
                titleFontStyle: "bold",
                titleSpacing: 2,
                titleMarginBottom: 6,
                titleFontColor: "#fff",
                titleAlign: "left",
                bodySpacing: 2,
                bodyFontColor: "#fff",
                bodyAlign: "left",
                footerFontStyle: "bold",
                footerSpacing: 2,
                footerMarginTop: 6,
                footerFontColor: "#fff",
                footerAlign: "left",
                yPadding: 6,
                xPadding: 6,
                caretPadding: 2,
                caretSize: 5,
                cornerRadius: 6,
                multiKeyBackground: "#fff",
                displayColors: !0,
                borderColor: "rgba(0,0,0,0)",
                borderWidth: 0,
                callbacks: {
                    beforeTitle: H.noop,
                    title: function(e, t) {
                        var n = "",
                            i = t.labels,
                            r = i ? i.length : 0;
                        if (e.length > 0) {
                            var o = e[0];
                            o.label ? n = o.label : o.xLabel ? n = o.xLabel : r > 0 && o.index < r && (n = i[o.index])
                        }
                        return n
                    },
                    afterTitle: H.noop,
                    beforeBody: H.noop,
                    beforeLabel: H.noop,
                    label: function(e, t) {
                        var n = t.datasets[e.datasetIndex].label || "";
                        return n && (n += ": "), H.isNullOrUndef(e.value) ? n += e.yLabel : n += e.value, n
                    },
                    labelColor: function(e, t) {
                        var n = t.getDatasetMeta(e.datasetIndex).data[e.index]._view;
                        return {
                            borderColor: n.borderColor,
                            backgroundColor: n.backgroundColor
                        }
                    },
                    labelTextColor: function() {
                        return this._options.bodyFontColor
                    },
                    afterLabel: H.noop,
                    afterBody: H.noop,
                    beforeFooter: H.noop,
                    footer: H.noop,
                    afterFooter: H.noop
                }
            }
        });
        var Mt = {
            average: function(e) {
                if (!e.length) return !1;
                var t, n, i = 0,
                    r = 0,
                    o = 0;
                for (t = 0, n = e.length; t < n; ++t) {
                    var a = e[t];
                    if (a && a.hasValue()) {
                        var s = a.tooltipPosition();
                        i += s.x, r += s.y, ++o
                    }
                }
                return {
                    x: i / o,
                    y: r / o
                }
            },
            nearest: function(e, t) {
                var n, i, r, o = t.x,
                    a = t.y,
                    s = Number.POSITIVE_INFINITY;
                for (n = 0, i = e.length; n < i; ++n) {
                    var l = e[n];
                    if (l && l.hasValue()) {
                        var c = l.getCenterPoint(),
                            u = H.distanceBetweenPoints(t, c);
                        u < s && (s = u, r = l)
                    }
                }
                if (r) {
                    var d = r.tooltipPosition();
                    o = d.x, a = d.y
                }
                return {
                    x: o,
                    y: a
                }
            }
        };

        function Ot(e, t) {
            return t && (H.isArray(t) ? Array.prototype.push.apply(e, t) : e.push(t)), e
        }

        function It(e) {
            return ("string" == typeof e || e instanceof String) && e.indexOf("\n") > -1 ? e.split("\n") : e
        }

        function Pt(e) {
            var t = N.global;
            return {
                xPadding: e.xPadding,
                yPadding: e.yPadding,
                xAlign: e.xAlign,
                yAlign: e.yAlign,
                rtl: e.rtl,
                textDirection: e.textDirection,
                bodyFontColor: e.bodyFontColor,
                _bodyFontFamily: Et(e.bodyFontFamily, t.defaultFontFamily),
                _bodyFontStyle: Et(e.bodyFontStyle, t.defaultFontStyle),
                _bodyAlign: e.bodyAlign,
                bodyFontSize: Et(e.bodyFontSize, t.defaultFontSize),
                bodySpacing: e.bodySpacing,
                titleFontColor: e.titleFontColor,
                _titleFontFamily: Et(e.titleFontFamily, t.defaultFontFamily),
                _titleFontStyle: Et(e.titleFontStyle, t.defaultFontStyle),
                titleFontSize: Et(e.titleFontSize, t.defaultFontSize),
                _titleAlign: e.titleAlign,
                titleSpacing: e.titleSpacing,
                titleMarginBottom: e.titleMarginBottom,
                footerFontColor: e.footerFontColor,
                _footerFontFamily: Et(e.footerFontFamily, t.defaultFontFamily),
                _footerFontStyle: Et(e.footerFontStyle, t.defaultFontStyle),
                footerFontSize: Et(e.footerFontSize, t.defaultFontSize),
                _footerAlign: e.footerAlign,
                footerSpacing: e.footerSpacing,
                footerMarginTop: e.footerMarginTop,
                caretSize: e.caretSize,
                cornerRadius: e.cornerRadius,
                backgroundColor: e.backgroundColor,
                opacity: 0,
                legendColorBackground: e.multiKeyBackground,
                displayColors: e.displayColors,
                borderColor: e.borderColor,
                borderWidth: e.borderWidth
            }
        }

        function Lt(e, t) {
            return "center" === t ? e.x + e.width / 2 : "right" === t ? e.x + e.width - e.xPadding : e.x + e.xPadding
        }

        function Ft(e) {
            return Ot([], It(e))
        }
        var Nt = Y.extend({
                initialize: function() {
                    this._model = Pt(this._options), this._lastActive = []
                },
                getTitle: function() {
                    var e = this,
                        t = e._options,
                        n = t.callbacks,
                        i = n.beforeTitle.apply(e, arguments),
                        r = n.title.apply(e, arguments),
                        o = n.afterTitle.apply(e, arguments),
                        a = [];
                    return a = Ot(a, It(i)), a = Ot(a, It(r)), Ot(a, It(o))
                },
                getBeforeBody: function() {
                    return Ft(this._options.callbacks.beforeBody.apply(this, arguments))
                },
                getBody: function(e, t) {
                    var n = this,
                        i = n._options.callbacks,
                        r = [];
                    return H.each(e, (function(e) {
                        var o = {
                            before: [],
                            lines: [],
                            after: []
                        };
                        Ot(o.before, It(i.beforeLabel.call(n, e, t))), Ot(o.lines, i.label.call(n, e, t)), Ot(o.after, It(i.afterLabel.call(n, e, t))), r.push(o)
                    })), r
                },
                getAfterBody: function() {
                    return Ft(this._options.callbacks.afterBody.apply(this, arguments))
                },
                getFooter: function() {
                    var e = this,
                        t = e._options.callbacks,
                        n = t.beforeFooter.apply(e, arguments),
                        i = t.footer.apply(e, arguments),
                        r = t.afterFooter.apply(e, arguments),
                        o = [];
                    return o = Ot(o, It(n)), o = Ot(o, It(i)), Ot(o, It(r))
                },
                update: function(e) {
                    var t, n, i, r, o, a, s, l, c, u, d = this,
                        h = d._options,
                        f = d._model,
                        p = d._model = Pt(h),
                        g = d._active,
                        m = d._data,
                        v = {
                            xAlign: f.xAlign,
                            yAlign: f.yAlign
                        },
                        y = {
                            x: f.x,
                            y: f.y
                        },
                        b = {
                            width: f.width,
                            height: f.height
                        },
                        w = {
                            x: f.caretX,
                            y: f.caretY
                        };
                    if (g.length) {
                        p.opacity = 1;
                        var x = [],
                            _ = [];
                        w = Mt[h.position].call(d, g, d._eventPosition);
                        var C = [];
                        for (t = 0, n = g.length; t < n; ++t) C.push((r = void 0, o = void 0, void 0, void 0, l = void 0, c = void 0, u = void 0, r = (i = g[t])._xScale, o = i._yScale || i._scale, a = i._index, s = i._datasetIndex, c = (l = i._chart.getDatasetMeta(s).controller)._getIndexScale(), u = l._getValueScale(), {
                            xLabel: r ? r.getLabelForIndex(a, s) : "",
                            yLabel: o ? o.getLabelForIndex(a, s) : "",
                            label: c ? "" + c.getLabelForIndex(a, s) : "",
                            value: u ? "" + u.getLabelForIndex(a, s) : "",
                            index: a,
                            datasetIndex: s,
                            x: i._model.x,
                            y: i._model.y
                        }));
                        h.filter && (C = C.filter((function(e) {
                            return h.filter(e, m)
                        }))), h.itemSort && (C = C.sort((function(e, t) {
                            return h.itemSort(e, t, m)
                        }))), H.each(C, (function(e) {
                            x.push(h.callbacks.labelColor.call(d, e, d._chart)), _.push(h.callbacks.labelTextColor.call(d, e, d._chart))
                        })), p.title = d.getTitle(C, m), p.beforeBody = d.getBeforeBody(C, m), p.body = d.getBody(C, m), p.afterBody = d.getAfterBody(C, m), p.footer = d.getFooter(C, m), p.x = w.x, p.y = w.y, p.caretPadding = h.caretPadding, p.labelColors = x, p.labelTextColors = _, p.dataPoints = C, y = function(e, t, n, i) {
                            var r = e.x,
                                o = e.y,
                                a = e.caretSize,
                                s = e.caretPadding,
                                l = e.cornerRadius,
                                c = n.xAlign,
                                u = n.yAlign,
                                d = a + s,
                                h = l + s;
                            return "right" === c ? r -= t.width : "center" === c && ((r -= t.width / 2) + t.width > i.width && (r = i.width - t.width), r < 0 && (r = 0)), "top" === u ? o += d : o -= "bottom" === u ? t.height + d : t.height / 2, "center" === u ? "left" === c ? r += d : "right" === c && (r -= d) : "left" === c ? r -= h : "right" === c && (r += h), {
                                x: r,
                                y: o
                            }
                        }(p, b = function(e, t) {
                            var n = e._chart.ctx,
                                i = 2 * t.yPadding,
                                r = 0,
                                o = t.body,
                                a = o.reduce((function(e, t) {
                                    return e + t.before.length + t.lines.length + t.after.length
                                }), 0);
                            a += t.beforeBody.length + t.afterBody.length;
                            var s = t.title.length,
                                l = t.footer.length,
                                c = t.titleFontSize,
                                u = t.bodyFontSize,
                                d = t.footerFontSize;
                            i += s * c, i += s ? (s - 1) * t.titleSpacing : 0, i += s ? t.titleMarginBottom : 0, i += a * u, i += a ? (a - 1) * t.bodySpacing : 0, i += l ? t.footerMarginTop : 0, i += l * d, i += l ? (l - 1) * t.footerSpacing : 0;
                            var h = 0,
                                f = function(e) {
                                    r = Math.max(r, n.measureText(e).width + h)
                                };
                            return n.font = H.fontString(c, t._titleFontStyle, t._titleFontFamily), H.each(t.title, f), n.font = H.fontString(u, t._bodyFontStyle, t._bodyFontFamily), H.each(t.beforeBody.concat(t.afterBody), f), h = t.displayColors ? u + 2 : 0, H.each(o, (function(e) {
                                H.each(e.before, f), H.each(e.lines, f), H.each(e.after, f)
                            })), h = 0, n.font = H.fontString(d, t._footerFontStyle, t._footerFontFamily), H.each(t.footer, f), {
                                width: r += 2 * t.xPadding,
                                height: i
                            }
                        }(this, p), v = function(e, t) {
                            var n, i, r, o, a, s = e._model,
                                l = e._chart,
                                c = e._chart.chartArea,
                                u = "center",
                                d = "center";
                            s.y < t.height ? d = "top" : s.y > l.height - t.height && (d = "bottom");
                            var h = (c.left + c.right) / 2,
                                f = (c.top + c.bottom) / 2;
                            "center" === d ? (n = function(e) {
                                return e <= h
                            }, i = function(e) {
                                return e > h
                            }) : (n = function(e) {
                                return e <= t.width / 2
                            }, i = function(e) {
                                return e >= l.width - t.width / 2
                            }), r = function(e) {
                                return e + t.width + s.caretSize + s.caretPadding > l.width
                            }, o = function(e) {
                                return e - t.width - s.caretSize - s.caretPadding < 0
                            }, a = function(e) {
                                return e <= f ? "top" : "bottom"
                            }, n(s.x) ? (u = "left", r(s.x) && (u = "center", d = a(s.y))) : i(s.x) && (u = "right", o(s.x) && (u = "center", d = a(s.y)));
                            var p = e._options;
                            return {
                                xAlign: p.xAlign ? p.xAlign : u,
                                yAlign: p.yAlign ? p.yAlign : d
                            }
                        }(this, b), d._chart)
                    } else p.opacity = 0;
                    return p.xAlign = v.xAlign, p.yAlign = v.yAlign, p.x = y.x, p.y = y.y, p.width = b.width, p.height = b.height, p.caretX = w.x, p.caretY = w.y, d._model = p, e && h.custom && h.custom.call(d, p), d
                },
                drawCaret: function(e, t) {
                    var n = this._chart.ctx,
                        i = this._view,
                        r = this.getCaretPosition(e, t, i);
                    n.lineTo(r.x1, r.y1), n.lineTo(r.x2, r.y2), n.lineTo(r.x3, r.y3)
                },
                getCaretPosition: function(e, t, n) {
                    var i, r, o, a, s, l, c = n.caretSize,
                        u = n.cornerRadius,
                        d = n.xAlign,
                        h = n.yAlign,
                        f = e.x,
                        p = e.y,
                        g = t.width,
                        m = t.height;
                    if ("center" === h) s = p + m / 2, "left" === d ? (r = (i = f) - c, o = i, a = s + c, l = s - c) : (r = (i = f + g) + c, o = i, a = s - c, l = s + c);
                    else if ("left" === d ? (i = (r = f + u + c) - c, o = r + c) : "right" === d ? (i = (r = f + g - u - c) - c, o = r + c) : (i = (r = n.caretX) - c, o = r + c), "top" === h) s = (a = p) - c, l = a;
                    else {
                        s = (a = p + m) + c, l = a;
                        var v = o;
                        o = i, i = v
                    }
                    return {
                        x1: i,
                        x2: r,
                        x3: o,
                        y1: a,
                        y2: s,
                        y3: l
                    }
                },
                drawTitle: function(e, t, n) {
                    var i, r, o, a = t.title,
                        s = a.length;
                    if (s) {
                        var l = At(t.rtl, t.x, t.width);
                        for (e.x = Lt(t, t._titleAlign), n.textAlign = l.textAlign(t._titleAlign), n.textBaseline = "middle", i = t.titleFontSize, r = t.titleSpacing, n.fillStyle = t.titleFontColor, n.font = H.fontString(i, t._titleFontStyle, t._titleFontFamily), o = 0; o < s; ++o) n.fillText(a[o], l.x(e.x), e.y + i / 2), e.y += i + r, o + 1 === s && (e.y += t.titleMarginBottom - r)
                    }
                },
                drawBody: function(e, t, n) {
                    var i, r, o, a, s, l, c, u, d = t.bodyFontSize,
                        h = t.bodySpacing,
                        f = t._bodyAlign,
                        p = t.body,
                        g = t.displayColors,
                        m = 0,
                        v = g ? Lt(t, "left") : 0,
                        y = At(t.rtl, t.x, t.width),
                        b = function(t) {
                            n.fillText(t, y.x(e.x + m), e.y + d / 2), e.y += d + h
                        },
                        w = y.textAlign(f);
                    for (n.textAlign = f, n.textBaseline = "middle", n.font = H.fontString(d, t._bodyFontStyle, t._bodyFontFamily), e.x = Lt(t, w), n.fillStyle = t.bodyFontColor, H.each(t.beforeBody, b), m = g && "right" !== w ? "center" === f ? d / 2 + 1 : d + 2 : 0, s = 0, c = p.length; s < c; ++s) {
                        for (i = p[s], r = t.labelTextColors[s], o = t.labelColors[s], n.fillStyle = r, H.each(i.before, b), l = 0, u = (a = i.lines).length; l < u; ++l) {
                            if (g) {
                                var x = y.x(v);
                                n.fillStyle = t.legendColorBackground, n.fillRect(y.leftForLtr(x, d), e.y, d, d), n.lineWidth = 1, n.strokeStyle = o.borderColor, n.strokeRect(y.leftForLtr(x, d), e.y, d, d), n.fillStyle = o.backgroundColor, n.fillRect(y.leftForLtr(y.xPlus(x, 1), d - 2), e.y + 1, d - 2, d - 2), n.fillStyle = r
                            }
                            b(a[l])
                        }
                        H.each(i.after, b)
                    }
                    m = 0, H.each(t.afterBody, b), e.y -= h
                },
                drawFooter: function(e, t, n) {
                    var i, r, o = t.footer,
                        a = o.length;
                    if (a) {
                        var s = At(t.rtl, t.x, t.width);
                        for (e.x = Lt(t, t._footerAlign), e.y += t.footerMarginTop, n.textAlign = s.textAlign(t._footerAlign), n.textBaseline = "middle", i = t.footerFontSize, n.fillStyle = t.footerFontColor, n.font = H.fontString(i, t._footerFontStyle, t._footerFontFamily), r = 0; r < a; ++r) n.fillText(o[r], s.x(e.x), e.y + i / 2), e.y += i + t.footerSpacing
                    }
                },
                drawBackground: function(e, t, n, i) {
                    n.fillStyle = t.backgroundColor, n.strokeStyle = t.borderColor, n.lineWidth = t.borderWidth;
                    var r = t.xAlign,
                        o = t.yAlign,
                        a = e.x,
                        s = e.y,
                        l = i.width,
                        c = i.height,
                        u = t.cornerRadius;
                    n.beginPath(), n.moveTo(a + u, s), "top" === o && this.drawCaret(e, i), n.lineTo(a + l - u, s), n.quadraticCurveTo(a + l, s, a + l, s + u), "center" === o && "right" === r && this.drawCaret(e, i), n.lineTo(a + l, s + c - u), n.quadraticCurveTo(a + l, s + c, a + l - u, s + c), "bottom" === o && this.drawCaret(e, i), n.lineTo(a + u, s + c), n.quadraticCurveTo(a, s + c, a, s + c - u), "center" === o && "left" === r && this.drawCaret(e, i), n.lineTo(a, s + u), n.quadraticCurveTo(a, s, a + u, s), n.closePath(), n.fill(), t.borderWidth > 0 && n.stroke()
                },
                draw: function() {
                    var e = this._chart.ctx,
                        t = this._view;
                    if (0 !== t.opacity) {
                        var n = {
                                width: t.width,
                                height: t.height
                            },
                            i = {
                                x: t.x,
                                y: t.y
                            },
                            r = Math.abs(t.opacity < .001) ? 0 : t.opacity,
                            o = t.title.length || t.beforeBody.length || t.body.length || t.afterBody.length || t.footer.length;
                        this._options.enabled && o && (e.save(), e.globalAlpha = r, this.drawBackground(i, t, e, n), i.y += t.yPadding, H.rtl.overrideTextDirection(e, t.textDirection), this.drawTitle(i, t, e), this.drawBody(i, t, e), this.drawFooter(i, t, e), H.rtl.restoreTextDirection(e, t.textDirection), e.restore())
                    }
                },
                handleEvent: function(e) {
                    var t, n = this,
                        i = n._options;
                    return n._lastActive = n._lastActive || [], "mouseout" === e.type ? n._active = [] : (n._active = n._chart.getElementsAtEventForMode(e, i.mode, i), i.reverse && n._active.reverse()), (t = !H.arrayEquals(n._active, n._lastActive)) && (n._lastActive = n._active, (i.enabled || i.custom) && (n._eventPosition = {
                        x: e.x,
                        y: e.y
                    }, n.update(!0), n.pivot())), t
                }
            }),
            Rt = Mt,
            jt = Nt;
        jt.positioners = Rt;
        var $t = H.valueOrDefault;

        function zt() {
            return H.merge({}, [].slice.call(arguments), {
                merger: function(e, t, n, i) {
                    if ("xAxes" === e || "yAxes" === e) {
                        var r, o, a, s = n[e].length;
                        for (t[e] || (t[e] = []), r = 0; r < s; ++r) a = n[e][r], o = $t(a.type, "xAxes" === e ? "category" : "linear"), r >= t[e].length && t[e].push({}), !t[e][r].type || a.type && a.type !== t[e][r].type ? H.merge(t[e][r], [Dt.getScaleDefaults(o), a]) : H.merge(t[e][r], a)
                    } else H._merger(e, t, n, i)
                }
            })
        }

        function Ht() {
            return H.merge({}, [].slice.call(arguments), {
                merger: function(e, t, n, i) {
                    var r = t[e] || {},
                        o = n[e];
                    "scales" === e ? t[e] = zt(r, o) : "scale" === e ? t[e] = H.merge(r, [Dt.getScaleDefaults(o.type), o]) : H._merger(e, t, n, i)
                }
            })
        }

        function Bt(e) {
            var t = e.options;
            H.each(e.scales, (function(t) {
                ut.removeBox(e, t)
            })), t = Ht(N.global, N[e.config.type], t), e.options = e.config.options = t, e.ensureScalesHaveIDs(), e.buildOrUpdateScales(), e.tooltip._options = t.tooltips, e.tooltip.initialize()
        }

        function qt(e, t, n) {
            var i, r = function(e) {
                return e.id === i
            };
            do {
                i = t + n++
            } while (H.findIndex(e, r) >= 0);
            return i
        }

        function Wt(e) {
            return "top" === e || "bottom" === e
        }

        function Ut(e, t) {
            return function(n, i) {
                return n[e] === i[e] ? n[t] - i[t] : n[e] - i[e]
            }
        }
        N._set("global", {
            elements: {},
            events: ["mousemove", "mouseout", "click", "touchstart", "touchmove"],
            hover: {
                onHover: null,
                mode: "nearest",
                intersect: !0,
                animationDuration: 400
            },
            onClick: null,
            maintainAspectRatio: !0,
            responsive: !0,
            responsiveAnimationDuration: 0
        });
        var Vt = function(e, t) {
            return this.construct(e, t), this
        };
        H.extend(Vt.prototype, {
            construct: function(e, t) {
                var n = this;
                t = function(e) {
                    var t = (e = e || {}).data = e.data || {};
                    return t.datasets = t.datasets || [], t.labels = t.labels || [], e.options = Ht(N.global, N[e.type], e.options || {}), e
                }(t);
                var i = St.acquireContext(e, t),
                    r = i && i.canvas,
                    o = r && r.height,
                    a = r && r.width;
                n.id = H.uid(), n.ctx = i, n.canvas = r, n.config = t, n.width = a, n.height = o, n.aspectRatio = o ? a / o : null, n.options = t.options, n._bufferedRender = !1, n._layers = [], n.chart = n, n.controller = n, Vt.instances[n.id] = n, Object.defineProperty(n, "data", {
                    get: function() {
                        return n.config.data
                    },
                    set: function(e) {
                        n.config.data = e
                    }
                }), i && r ? (n.initialize(), n.update()) : console.error("Failed to create chart: can't acquire context from the given item")
            },
            initialize: function() {
                var e = this;
                return Tt.notify(e, "beforeInit"), H.retinaScale(e, e.options.devicePixelRatio), e.bindEvents(), e.options.responsive && e.resize(!0), e.initToolTip(), Tt.notify(e, "afterInit"), e
            },
            clear: function() {
                return H.canvas.clear(this), this
            },
            stop: function() {
                return Q.cancelAnimation(this), this
            },
            resize: function(e) {
                var t = this,
                    n = t.options,
                    i = t.canvas,
                    r = n.maintainAspectRatio && t.aspectRatio || null,
                    o = Math.max(0, Math.floor(H.getMaximumWidth(i))),
                    a = Math.max(0, Math.floor(r ? o / r : H.getMaximumHeight(i)));
                if ((t.width !== o || t.height !== a) && (i.width = t.width = o, i.height = t.height = a, i.style.width = o + "px", i.style.height = a + "px", H.retinaScale(t, n.devicePixelRatio), !e)) {
                    var s = {
                        width: o,
                        height: a
                    };
                    Tt.notify(t, "resize", [s]), n.onResize && n.onResize(t, s), t.stop(), t.update({
                        duration: n.responsiveAnimationDuration
                    })
                }
            },
            ensureScalesHaveIDs: function() {
                var e = this.options,
                    t = e.scales || {},
                    n = e.scale;
                H.each(t.xAxes, (function(e, n) {
                    e.id || (e.id = qt(t.xAxes, "x-axis-", n))
                })), H.each(t.yAxes, (function(e, n) {
                    e.id || (e.id = qt(t.yAxes, "y-axis-", n))
                })), n && (n.id = n.id || "scale")
            },
            buildOrUpdateScales: function() {
                var e = this,
                    t = e.options,
                    n = e.scales || {},
                    i = [],
                    r = Object.keys(n).reduce((function(e, t) {
                        return e[t] = !1, e
                    }), {});
                t.scales && (i = i.concat((t.scales.xAxes || []).map((function(e) {
                    return {
                        options: e,
                        dtype: "category",
                        dposition: "bottom"
                    }
                })), (t.scales.yAxes || []).map((function(e) {
                    return {
                        options: e,
                        dtype: "linear",
                        dposition: "left"
                    }
                })))), t.scale && i.push({
                    options: t.scale,
                    dtype: "radialLinear",
                    isDefault: !0,
                    dposition: "chartArea"
                }), H.each(i, (function(t) {
                    var i = t.options,
                        o = i.id,
                        a = $t(i.type, t.dtype);
                    Wt(i.position) !== Wt(t.dposition) && (i.position = t.dposition), r[o] = !0;
                    var s = null;
                    if (o in n && n[o].type === a)(s = n[o]).options = i, s.ctx = e.ctx, s.chart = e;
                    else {
                        var l = Dt.getScaleConstructor(a);
                        if (!l) return;
                        s = new l({
                            id: o,
                            type: a,
                            options: i,
                            ctx: e.ctx,
                            chart: e
                        }), n[s.id] = s
                    }
                    s.mergeTicksOptions(), t.isDefault && (e.scale = s)
                })), H.each(r, (function(e, t) {
                    e || delete n[t]
                })), e.scales = n, Dt.addScalesToLayout(this)
            },
            buildOrUpdateControllers: function() {
                var e, t, n = this,
                    i = [],
                    r = n.data.datasets;
                for (e = 0, t = r.length; e < t; e++) {
                    var o = r[e],
                        a = n.getDatasetMeta(e),
                        s = o.type || n.config.type;
                    if (a.type && a.type !== s && (n.destroyDatasetMeta(e), a = n.getDatasetMeta(e)), a.type = s, a.order = o.order || 0, a.index = e, a.controller) a.controller.updateIndex(e), a.controller.linkScales();
                    else {
                        var l = Ye[a.type];
                        if (void 0 === l) throw new Error('"' + a.type + '" is not a chart type.');
                        a.controller = new l(n, e), i.push(a.controller)
                    }
                }
                return i
            },
            resetElements: function() {
                var e = this;
                H.each(e.data.datasets, (function(t, n) {
                    e.getDatasetMeta(n).controller.reset()
                }), e)
            },
            reset: function() {
                this.resetElements(), this.tooltip.initialize()
            },
            update: function(e) {
                var t, n, i = this;
                if (e && "object" == typeof e || (e = {
                        duration: e,
                        lazy: arguments[1]
                    }), Bt(i), Tt._invalidate(i), !1 !== Tt.notify(i, "beforeUpdate")) {
                    i.tooltip._data = i.data;
                    var r = i.buildOrUpdateControllers();
                    for (t = 0, n = i.data.datasets.length; t < n; t++) i.getDatasetMeta(t).controller.buildOrUpdateElements();
                    i.updateLayout(), i.options.animation && i.options.animation.duration && H.each(r, (function(e) {
                        e.reset()
                    })), i.updateDatasets(), i.tooltip.initialize(), i.lastActive = [], Tt.notify(i, "afterUpdate"), i._layers.sort(Ut("z", "_idx")), i._bufferedRender ? i._bufferedRequest = {
                        duration: e.duration,
                        easing: e.easing,
                        lazy: e.lazy
                    } : i.render(e)
                }
            },
            updateLayout: function() {
                var e = this;
                !1 !== Tt.notify(e, "beforeLayout") && (ut.update(this, this.width, this.height), e._layers = [], H.each(e.boxes, (function(t) {
                    t._configure && t._configure(), e._layers.push.apply(e._layers, t._layers())
                }), e), e._layers.forEach((function(e, t) {
                    e._idx = t
                })), Tt.notify(e, "afterScaleUpdate"), Tt.notify(e, "afterLayout"))
            },
            updateDatasets: function() {
                if (!1 !== Tt.notify(this, "beforeDatasetsUpdate")) {
                    for (var e = 0, t = this.data.datasets.length; e < t; ++e) this.updateDataset(e);
                    Tt.notify(this, "afterDatasetsUpdate")
                }
            },
            updateDataset: function(e) {
                var t = this.getDatasetMeta(e),
                    n = {
                        meta: t,
                        index: e
                    };
                !1 !== Tt.notify(this, "beforeDatasetUpdate", [n]) && (t.controller._update(), Tt.notify(this, "afterDatasetUpdate", [n]))
            },
            render: function(e) {
                var t = this;
                e && "object" == typeof e || (e = {
                    duration: e,
                    lazy: arguments[1]
                });
                var n = t.options.animation,
                    i = $t(e.duration, n && n.duration),
                    r = e.lazy;
                if (!1 !== Tt.notify(t, "beforeRender")) {
                    var o = function(e) {
                        Tt.notify(t, "afterRender"), H.callback(n && n.onComplete, [e], t)
                    };
                    if (n && i) {
                        var a = new G({
                            numSteps: i / 16.66,
                            easing: e.easing || n.easing,
                            render: function(e, t) {
                                var n = H.easing.effects[t.easing],
                                    i = t.currentStep,
                                    r = i / t.numSteps;
                                e.draw(n(r), r, i)
                            },
                            onAnimationProgress: n.onProgress,
                            onAnimationComplete: o
                        });
                        Q.addAnimation(t, a, i, r)
                    } else t.draw(), o(new G({
                        numSteps: 0,
                        chart: t
                    }));
                    return t
                }
            },
            draw: function(e) {
                var t, n, i = this;
                if (i.clear(), H.isNullOrUndef(e) && (e = 1), i.transition(e), !(i.width <= 0 || i.height <= 0) && !1 !== Tt.notify(i, "beforeDraw", [e])) {
                    for (n = i._layers, t = 0; t < n.length && n[t].z <= 0; ++t) n[t].draw(i.chartArea);
                    for (i.drawDatasets(e); t < n.length; ++t) n[t].draw(i.chartArea);
                    i._drawTooltip(e), Tt.notify(i, "afterDraw", [e])
                }
            },
            transition: function(e) {
                for (var t = 0, n = (this.data.datasets || []).length; t < n; ++t) this.isDatasetVisible(t) && this.getDatasetMeta(t).controller.transition(e);
                this.tooltip.transition(e)
            },
            _getSortedDatasetMetas: function(e) {
                var t, n, i = [];
                for (t = 0, n = (this.data.datasets || []).length; t < n; ++t) e && !this.isDatasetVisible(t) || i.push(this.getDatasetMeta(t));
                return i.sort(Ut("order", "index")), i
            },
            _getSortedVisibleDatasetMetas: function() {
                return this._getSortedDatasetMetas(!0)
            },
            drawDatasets: function(e) {
                var t, n;
                if (!1 !== Tt.notify(this, "beforeDatasetsDraw", [e])) {
                    for (n = (t = this._getSortedVisibleDatasetMetas()).length - 1; n >= 0; --n) this.drawDataset(t[n], e);
                    Tt.notify(this, "afterDatasetsDraw", [e])
                }
            },
            drawDataset: function(e, t) {
                var n = {
                    meta: e,
                    index: e.index,
                    easingValue: t
                };
                !1 !== Tt.notify(this, "beforeDatasetDraw", [n]) && (e.controller.draw(t), Tt.notify(this, "afterDatasetDraw", [n]))
            },
            _drawTooltip: function(e) {
                var t = this.tooltip,
                    n = {
                        tooltip: t,
                        easingValue: e
                    };
                !1 !== Tt.notify(this, "beforeTooltipDraw", [n]) && (t.draw(), Tt.notify(this, "afterTooltipDraw", [n]))
            },
            getElementAtEvent: function(e) {
                return et.modes.single(this, e)
            },
            getElementsAtEvent: function(e) {
                return et.modes.label(this, e, {
                    intersect: !0
                })
            },
            getElementsAtXAxis: function(e) {
                return et.modes["x-axis"](this, e, {
                    intersect: !0
                })
            },
            getElementsAtEventForMode: function(e, t, n) {
                var i = et.modes[t];
                return "function" == typeof i ? i(this, e, n) : []
            },
            getDatasetAtEvent: function(e) {
                return et.modes.dataset(this, e, {
                    intersect: !0
                })
            },
            getDatasetMeta: function(e) {
                var t = this.data.datasets[e];
                t._meta || (t._meta = {});
                var n = t._meta[this.id];
                return n || (n = t._meta[this.id] = {
                    type: null,
                    data: [],
                    dataset: null,
                    controller: null,
                    hidden: null,
                    xAxisID: null,
                    yAxisID: null,
                    order: t.order || 0,
                    index: e
                }), n
            },
            getVisibleDatasetCount: function() {
                for (var e = 0, t = 0, n = this.data.datasets.length; t < n; ++t) this.isDatasetVisible(t) && e++;
                return e
            },
            isDatasetVisible: function(e) {
                var t = this.getDatasetMeta(e);
                return "boolean" == typeof t.hidden ? !t.hidden : !this.data.datasets[e].hidden
            },
            generateLegend: function() {
                return this.options.legendCallback(this)
            },
            destroyDatasetMeta: function(e) {
                var t = this.id,
                    n = this.data.datasets[e],
                    i = n._meta && n._meta[t];
                i && (i.controller.destroy(), delete n._meta[t])
            },
            destroy: function() {
                var e, t, n = this,
                    i = n.canvas;
                for (n.stop(), e = 0, t = n.data.datasets.length; e < t; ++e) n.destroyDatasetMeta(e);
                i && (n.unbindEvents(), H.canvas.clear(n), St.releaseContext(n.ctx), n.canvas = null, n.ctx = null), Tt.notify(n, "destroy"), delete Vt.instances[n.id]
            },
            toBase64Image: function() {
                return this.canvas.toDataURL.apply(this.canvas, arguments)
            },
            initToolTip: function() {
                var e = this;
                e.tooltip = new jt({
                    _chart: e,
                    _chartInstance: e,
                    _data: e.data,
                    _options: e.options.tooltips
                }, e)
            },
            bindEvents: function() {
                var e = this,
                    t = e._listeners = {},
                    n = function() {
                        e.eventHandler.apply(e, arguments)
                    };
                H.each(e.options.events, (function(i) {
                    St.addEventListener(e, i, n), t[i] = n
                })), e.options.responsive && (n = function() {
                    e.resize()
                }, St.addEventListener(e, "resize", n), t.resize = n)
            },
            unbindEvents: function() {
                var e = this,
                    t = e._listeners;
                t && (delete e._listeners, H.each(t, (function(t, n) {
                    St.removeEventListener(e, n, t)
                })))
            },
            updateHoverStyle: function(e, t, n) {
                var i, r, o, a = n ? "set" : "remove";
                for (r = 0, o = e.length; r < o; ++r)(i = e[r]) && this.getDatasetMeta(i._datasetIndex).controller[a + "HoverStyle"](i);
                "dataset" === t && this.getDatasetMeta(e[0]._datasetIndex).controller["_" + a + "DatasetHoverStyle"]()
            },
            eventHandler: function(e) {
                var t = this,
                    n = t.tooltip;
                if (!1 !== Tt.notify(t, "beforeEvent", [e])) {
                    t._bufferedRender = !0, t._bufferedRequest = null;
                    var i = t.handleEvent(e);
                    n && (i = n._start ? n.handleEvent(e) : i | n.handleEvent(e)), Tt.notify(t, "afterEvent", [e]);
                    var r = t._bufferedRequest;
                    return r ? t.render(r) : i && !t.animating && (t.stop(), t.render({
                        duration: t.options.hover.animationDuration,
                        lazy: !0
                    })), t._bufferedRender = !1, t._bufferedRequest = null, t
                }
            },
            handleEvent: function(e) {
                var t, n = this,
                    i = n.options || {},
                    r = i.hover;
                return n.lastActive = n.lastActive || [], "mouseout" === e.type ? n.active = [] : n.active = n.getElementsAtEventForMode(e, r.mode, r), H.callback(i.onHover || i.hover.onHover, [e.native, n.active], n), "mouseup" !== e.type && "click" !== e.type || i.onClick && i.onClick.call(n, e.native, n.active), n.lastActive.length && n.updateHoverStyle(n.lastActive, r.mode, !1), n.active.length && r.mode && n.updateHoverStyle(n.active, r.mode, !0), t = !H.arrayEquals(n.active, n.lastActive), n.lastActive = n.active, t
            }
        }), Vt.instances = {};
        var Yt = Vt;

        function Xt() {
            throw new Error("This method is not implemented: either no adapter can be found or an incomplete integration was provided.")
        }

        function Gt(e) {
            this.options = e || {}
        }
        Vt.Controller = Vt, Vt.types = {}, H.configMerge = Ht, H.scaleMerge = zt, H.extend(Gt.prototype, {
            formats: Xt,
            parse: Xt,
            format: Xt,
            add: Xt,
            diff: Xt,
            startOf: Xt,
            endOf: Xt,
            _create: function(e) {
                return e
            }
        }), Gt.override = function(e) {
            H.extend(Gt.prototype, e)
        };
        var Qt = {
                _date: Gt
            },
            Kt = {
                formatters: {
                    values: function(e) {
                        return H.isArray(e) ? e : "" + e
                    },
                    linear: function(e, t, n) {
                        var i = n.length > 3 ? n[2] - n[1] : n[1] - n[0];
                        Math.abs(i) > 1 && e !== Math.floor(e) && (i = e - Math.floor(e));
                        var r = H.log10(Math.abs(i)),
                            o = "";
                        if (0 !== e)
                            if (Math.max(Math.abs(n[0]), Math.abs(n[n.length - 1])) < 1e-4) {
                                var a = H.log10(Math.abs(e)),
                                    s = Math.floor(a) - Math.floor(r);
                                s = Math.max(Math.min(s, 20), 0), o = e.toExponential(s)
                            } else {
                                var l = -1 * Math.floor(r);
                                l = Math.max(Math.min(l, 20), 0), o = e.toFixed(l)
                            }
                        else o = "0";
                        return o
                    },
                    logarithmic: function(e, t, n) {
                        var i = e / Math.pow(10, Math.floor(H.log10(e)));
                        return 0 === e ? "0" : 1 === i || 2 === i || 5 === i || 0 === t || t === n.length - 1 ? e.toExponential() : ""
                    }
                }
            },
            Jt = H.isArray,
            Zt = H.isNullOrUndef,
            en = H.valueOrDefault,
            tn = H.valueAtIndexOrDefault;

        function nn(e, t, n) {
            var i, r = e.getTicks().length,
                o = Math.min(t, r - 1),
                a = e.getPixelForTick(o),
                s = e._startPixel,
                l = e._endPixel;
            if (!(n && (i = 1 === r ? Math.max(a - s, l - a) : 0 === t ? (e.getPixelForTick(1) - a) / 2 : (a - e.getPixelForTick(o - 1)) / 2, (a += o < t ? i : -i) < s - 1e-6 || a > l + 1e-6))) return a
        }

        function rn(e) {
            return e.drawTicks ? e.tickMarkLength : 0
        }

        function on(e) {
            var t, n;
            return e.display ? (t = H.options._parseFont(e), n = H.options.toPadding(e.padding), t.lineHeight + n.height) : 0
        }

        function an(e, t) {
            return H.extend(H.options._parseFont({
                fontFamily: en(t.fontFamily, e.fontFamily),
                fontSize: en(t.fontSize, e.fontSize),
                fontStyle: en(t.fontStyle, e.fontStyle),
                lineHeight: en(t.lineHeight, e.lineHeight)
            }), {
                color: H.options.resolve([t.fontColor, e.fontColor, N.global.defaultFontColor])
            })
        }

        function sn(e) {
            var t = an(e, e.minor);
            return {
                minor: t,
                major: e.major.enabled ? an(e, e.major) : t
            }
        }

        function ln(e) {
            var t, n, i, r = [];
            for (n = 0, i = e.length; n < i; ++n) void 0 !== (t = e[n])._index && r.push(t);
            return r
        }

        function cn(e, t, n, i) {
            var r, o, a, s, l = en(n, 0),
                c = Math.min(en(i, e.length), e.length),
                u = 0;
            for (t = Math.ceil(t), i && (t = (r = i - n) / Math.floor(r / t)), s = l; s < 0;) u++, s = Math.round(l + u * t);
            for (o = Math.max(l, 0); o < c; o++) a = e[o], o === s ? (a._index = o, u++, s = Math.round(l + u * t)) : delete a.label
        }
        N._set("scale", {
            display: !0,
            position: "left",
            offset: !1,
            gridLines: {
                display: !0,
                color: "rgba(0,0,0,0.1)",
                lineWidth: 1,
                drawBorder: !0,
                drawOnChartArea: !0,
                drawTicks: !0,
                tickMarkLength: 10,
                zeroLineWidth: 1,
                zeroLineColor: "rgba(0,0,0,0.25)",
                zeroLineBorderDash: [],
                zeroLineBorderDashOffset: 0,
                offsetGridLines: !1,
                borderDash: [],
                borderDashOffset: 0
            },
            scaleLabel: {
                display: !1,
                labelString: "",
                padding: {
                    top: 4,
                    bottom: 4
                }
            },
            ticks: {
                beginAtZero: !1,
                minRotation: 0,
                maxRotation: 50,
                mirror: !1,
                padding: 0,
                reverse: !1,
                display: !0,
                autoSkip: !0,
                autoSkipPadding: 0,
                labelOffset: 0,
                callback: Kt.formatters.values,
                minor: {},
                major: {}
            }
        });
        var un = Y.extend({
            zeroLineIndex: 0,
            getPadding: function() {
                return {
                    left: this.paddingLeft || 0,
                    top: this.paddingTop || 0,
                    right: this.paddingRight || 0,
                    bottom: this.paddingBottom || 0
                }
            },
            getTicks: function() {
                return this._ticks
            },
            _getLabels: function() {
                var e = this.chart.data;
                return this.options.labels || (this.isHorizontal() ? e.xLabels : e.yLabels) || e.labels || []
            },
            mergeTicksOptions: function() {},
            beforeUpdate: function() {
                H.callback(this.options.beforeUpdate, [this])
            },
            update: function(e, t, n) {
                var i, r, o, a, s, l = this,
                    c = l.options.ticks,
                    u = c.sampleSize;
                if (l.beforeUpdate(), l.maxWidth = e, l.maxHeight = t, l.margins = H.extend({
                        left: 0,
                        right: 0,
                        top: 0,
                        bottom: 0
                    }, n), l._ticks = null, l.ticks = null, l._labelSizes = null, l._maxLabelLines = 0, l.longestLabelWidth = 0, l.longestTextCache = l.longestTextCache || {}, l._gridLineItems = null, l._labelItems = null, l.beforeSetDimensions(), l.setDimensions(), l.afterSetDimensions(), l.beforeDataLimits(), l.determineDataLimits(), l.afterDataLimits(), l.beforeBuildTicks(), a = l.buildTicks() || [], (!(a = l.afterBuildTicks(a) || a) || !a.length) && l.ticks)
                    for (a = [], i = 0, r = l.ticks.length; i < r; ++i) a.push({
                        value: l.ticks[i],
                        major: !1
                    });
                return l._ticks = a, s = u < a.length, o = l._convertTicksToLabels(s ? function(e, t) {
                    for (var n = [], i = e.length / t, r = 0, o = e.length; r < o; r += i) n.push(e[Math.floor(r)]);
                    return n
                }(a, u) : a), l._configure(), l.beforeCalculateTickRotation(), l.calculateTickRotation(), l.afterCalculateTickRotation(), l.beforeFit(), l.fit(), l.afterFit(), l._ticksToDraw = c.display && (c.autoSkip || "auto" === c.source) ? l._autoSkip(a) : a, s && (o = l._convertTicksToLabels(l._ticksToDraw)), l.ticks = o, l.afterUpdate(), l.minSize
            },
            _configure: function() {
                var e, t, n = this,
                    i = n.options.ticks.reverse;
                n.isHorizontal() ? (e = n.left, t = n.right) : (e = n.top, t = n.bottom, i = !i), n._startPixel = e, n._endPixel = t, n._reversePixels = i, n._length = t - e
            },
            afterUpdate: function() {
                H.callback(this.options.afterUpdate, [this])
            },
            beforeSetDimensions: function() {
                H.callback(this.options.beforeSetDimensions, [this])
            },
            setDimensions: function() {
                var e = this;
                e.isHorizontal() ? (e.width = e.maxWidth, e.left = 0, e.right = e.width) : (e.height = e.maxHeight, e.top = 0, e.bottom = e.height), e.paddingLeft = 0, e.paddingTop = 0, e.paddingRight = 0, e.paddingBottom = 0
            },
            afterSetDimensions: function() {
                H.callback(this.options.afterSetDimensions, [this])
            },
            beforeDataLimits: function() {
                H.callback(this.options.beforeDataLimits, [this])
            },
            determineDataLimits: H.noop,
            afterDataLimits: function() {
                H.callback(this.options.afterDataLimits, [this])
            },
            beforeBuildTicks: function() {
                H.callback(this.options.beforeBuildTicks, [this])
            },
            buildTicks: H.noop,
            afterBuildTicks: function(e) {
                var t = this;
                return Jt(e) && e.length ? H.callback(t.options.afterBuildTicks, [t, e]) : (t.ticks = H.callback(t.options.afterBuildTicks, [t, t.ticks]) || t.ticks, e)
            },
            beforeTickToLabelConversion: function() {
                H.callback(this.options.beforeTickToLabelConversion, [this])
            },
            convertTicksToLabels: function() {
                var e = this.options.ticks;
                this.ticks = this.ticks.map(e.userCallback || e.callback, this)
            },
            afterTickToLabelConversion: function() {
                H.callback(this.options.afterTickToLabelConversion, [this])
            },
            beforeCalculateTickRotation: function() {
                H.callback(this.options.beforeCalculateTickRotation, [this])
            },
            calculateTickRotation: function() {
                var e, t, n, i, r, o, a, s = this,
                    l = s.options,
                    c = l.ticks,
                    u = s.getTicks().length,
                    d = c.minRotation || 0,
                    h = c.maxRotation,
                    f = d;
                !s._isVisible() || !c.display || d >= h || u <= 1 || !s.isHorizontal() ? s.labelRotation = d : (t = (e = s._getLabelSizes()).widest.width, n = e.highest.height - e.highest.offset, i = Math.min(s.maxWidth, s.chart.width - t), t + 6 > (r = l.offset ? s.maxWidth / u : i / (u - 1)) && (r = i / (u - (l.offset ? .5 : 1)), o = s.maxHeight - rn(l.gridLines) - c.padding - on(l.scaleLabel), a = Math.sqrt(t * t + n * n), f = H.toDegrees(Math.min(Math.asin(Math.min((e.highest.height + 6) / r, 1)), Math.asin(Math.min(o / a, 1)) - Math.asin(n / a))), f = Math.max(d, Math.min(h, f))), s.labelRotation = f)
            },
            afterCalculateTickRotation: function() {
                H.callback(this.options.afterCalculateTickRotation, [this])
            },
            beforeFit: function() {
                H.callback(this.options.beforeFit, [this])
            },
            fit: function() {
                var e = this,
                    t = e.minSize = {
                        width: 0,
                        height: 0
                    },
                    n = e.chart,
                    i = e.options,
                    r = i.ticks,
                    o = i.scaleLabel,
                    a = i.gridLines,
                    s = e._isVisible(),
                    l = "bottom" === i.position,
                    c = e.isHorizontal();
                if (c ? t.width = e.maxWidth : s && (t.width = rn(a) + on(o)), c ? s && (t.height = rn(a) + on(o)) : t.height = e.maxHeight, r.display && s) {
                    var u = sn(r),
                        d = e._getLabelSizes(),
                        h = d.first,
                        f = d.last,
                        p = d.widest,
                        g = d.highest,
                        m = .4 * u.minor.lineHeight,
                        v = r.padding;
                    if (c) {
                        var y = 0 !== e.labelRotation,
                            b = H.toRadians(e.labelRotation),
                            w = Math.cos(b),
                            x = Math.sin(b),
                            _ = x * p.width + w * (g.height - (y ? g.offset : 0)) + (y ? 0 : m);
                        t.height = Math.min(e.maxHeight, t.height + _ + v);
                        var C, k, S = e.getPixelForTick(0) - e.left,
                            T = e.right - e.getPixelForTick(e.getTicks().length - 1);
                        y ? (C = l ? w * h.width + x * h.offset : x * (h.height - h.offset), k = l ? x * (f.height - f.offset) : w * f.width + x * f.offset) : (C = h.width / 2, k = f.width / 2), e.paddingLeft = Math.max((C - S) * e.width / (e.width - S), 0) + 3, e.paddingRight = Math.max((k - T) * e.width / (e.width - T), 0) + 3
                    } else {
                        var D = r.mirror ? 0 : p.width + v + m;
                        t.width = Math.min(e.maxWidth, t.width + D), e.paddingTop = h.height / 2, e.paddingBottom = f.height / 2
                    }
                }
                e.handleMargins(), c ? (e.width = e._length = n.width - e.margins.left - e.margins.right, e.height = t.height) : (e.width = t.width, e.height = e._length = n.height - e.margins.top - e.margins.bottom)
            },
            handleMargins: function() {
                var e = this;
                e.margins && (e.margins.left = Math.max(e.paddingLeft, e.margins.left), e.margins.top = Math.max(e.paddingTop, e.margins.top), e.margins.right = Math.max(e.paddingRight, e.margins.right), e.margins.bottom = Math.max(e.paddingBottom, e.margins.bottom))
            },
            afterFit: function() {
                H.callback(this.options.afterFit, [this])
            },
            isHorizontal: function() {
                var e = this.options.position;
                return "top" === e || "bottom" === e
            },
            isFullWidth: function() {
                return this.options.fullWidth
            },
            getRightValue: function(e) {
                if (Zt(e)) return NaN;
                if (("number" == typeof e || e instanceof Number) && !isFinite(e)) return NaN;
                if (e)
                    if (this.isHorizontal()) {
                        if (void 0 !== e.x) return this.getRightValue(e.x)
                    } else if (void 0 !== e.y) return this.getRightValue(e.y);
                return e
            },
            _convertTicksToLabels: function(e) {
                var t, n, i, r = this;
                for (r.ticks = e.map((function(e) {
                        return e.value
                    })), r.beforeTickToLabelConversion(), t = r.convertTicksToLabels(e) || r.ticks, r.afterTickToLabelConversion(), n = 0, i = e.length; n < i; ++n) e[n].label = t[n];
                return t
            },
            _getLabelSizes: function() {
                var e = this,
                    t = e._labelSizes;
                return t || (e._labelSizes = t = function(e, t, n, i) {
                    var r, o, a, s, l, c, u, d, h, f, p, g, m, v = n.length,
                        y = [],
                        b = [],
                        w = [];
                    for (r = 0; r < v; ++r) {
                        if (s = n[r].label, l = n[r].major ? t.major : t.minor, e.font = c = l.string, u = i[c] = i[c] || {
                                data: {},
                                gc: []
                            }, d = l.lineHeight, h = f = 0, Zt(s) || Jt(s)) {
                            if (Jt(s))
                                for (o = 0, a = s.length; o < a; ++o) p = s[o], Zt(p) || Jt(p) || (h = H.measureText(e, u.data, u.gc, h, p), f += d)
                        } else h = H.measureText(e, u.data, u.gc, h, s), f = d;
                        y.push(h), b.push(f), w.push(d / 2)
                    }

                    function x(e) {
                        return {
                            width: y[e] || 0,
                            height: b[e] || 0,
                            offset: w[e] || 0
                        }
                    }
                    return function(e, t) {
                        H.each(e, (function(e) {
                            var n, i = e.gc,
                                r = i.length / 2;
                            if (r > t) {
                                for (n = 0; n < r; ++n) delete e.data[i[n]];
                                i.splice(0, r)
                            }
                        }))
                    }(i, v), g = y.indexOf(Math.max.apply(null, y)), m = b.indexOf(Math.max.apply(null, b)), {
                        first: x(0),
                        last: x(v - 1),
                        widest: x(g),
                        highest: x(m)
                    }
                }(e.ctx, sn(e.options.ticks), e.getTicks(), e.longestTextCache), e.longestLabelWidth = t.widest.width), t
            },
            _parseValue: function(e) {
                var t, n, i, r;
                return Jt(e) ? (t = +this.getRightValue(e[0]), n = +this.getRightValue(e[1]), i = Math.min(t, n), r = Math.max(t, n)) : (t = void 0, n = e = +this.getRightValue(e), i = e, r = e), {
                    min: i,
                    max: r,
                    start: t,
                    end: n
                }
            },
            _getScaleLabel: function(e) {
                var t = this._parseValue(e);
                return void 0 !== t.start ? "[" + t.start + ", " + t.end + "]" : +this.getRightValue(e)
            },
            getLabelForIndex: H.noop,
            getPixelForValue: H.noop,
            getValueForPixel: H.noop,
            getPixelForTick: function(e) {
                var t = this.options.offset,
                    n = this._ticks.length,
                    i = 1 / Math.max(n - (t ? 0 : 1), 1);
                return e < 0 || e > n - 1 ? null : this.getPixelForDecimal(e * i + (t ? i / 2 : 0))
            },
            getPixelForDecimal: function(e) {
                return this._reversePixels && (e = 1 - e), this._startPixel + e * this._length
            },
            getDecimalForPixel: function(e) {
                var t = (e - this._startPixel) / this._length;
                return this._reversePixels ? 1 - t : t
            },
            getBasePixel: function() {
                return this.getPixelForValue(this.getBaseValue())
            },
            getBaseValue: function() {
                var e = this.min,
                    t = this.max;
                return this.beginAtZero ? 0 : e < 0 && t < 0 ? t : e > 0 && t > 0 ? e : 0
            },
            _autoSkip: function(e) {
                var t, n, i, r, o = this.options.ticks,
                    a = this._length,
                    s = o.maxTicksLimit || a / this._tickSize() + 1,
                    l = o.major.enabled ? function(e) {
                        var t, n, i = [];
                        for (t = 0, n = e.length; t < n; t++) e[t].major && i.push(t);
                        return i
                    }(e) : [],
                    c = l.length,
                    u = l[0],
                    d = l[c - 1];
                if (c > s) return function(e, t, n) {
                    var i, r, o = 0,
                        a = t[0];
                    for (n = Math.ceil(n), i = 0; i < e.length; i++) r = e[i], i === a ? (r._index = i, a = t[++o * n]) : delete r.label
                }(e, l, c / s), ln(e);
                if (i = function(e, t, n, i) {
                        var r, o, a, s, l = function(e) {
                                var t, n, i = e.length;
                                if (i < 2) return !1;
                                for (n = e[0], t = 1; t < i; ++t)
                                    if (e[t] - e[t - 1] !== n) return !1;
                                return n
                            }(e),
                            c = (t.length - 1) / i;
                        if (!l) return Math.max(c, 1);
                        for (a = 0, s = (r = H.math._factorize(l)).length - 1; a < s; a++)
                            if ((o = r[a]) > c) return o;
                        return Math.max(c, 1)
                    }(l, e, 0, s), c > 0) {
                    for (t = 0, n = c - 1; t < n; t++) cn(e, i, l[t], l[t + 1]);
                    return r = c > 1 ? (d - u) / (c - 1) : null, cn(e, i, H.isNullOrUndef(r) ? 0 : u - r, u), cn(e, i, d, H.isNullOrUndef(r) ? e.length : d + r), ln(e)
                }
                return cn(e, i), ln(e)
            },
            _tickSize: function() {
                var e = this.options.ticks,
                    t = H.toRadians(this.labelRotation),
                    n = Math.abs(Math.cos(t)),
                    i = Math.abs(Math.sin(t)),
                    r = this._getLabelSizes(),
                    o = e.autoSkipPadding || 0,
                    a = r ? r.widest.width + o : 0,
                    s = r ? r.highest.height + o : 0;
                return this.isHorizontal() ? s * n > a * i ? a / n : s / i : s * i < a * n ? s / n : a / i
            },
            _isVisible: function() {
                var e, t, n, i = this.chart,
                    r = this.options.display;
                if ("auto" !== r) return !!r;
                for (e = 0, t = i.data.datasets.length; e < t; ++e)
                    if (i.isDatasetVisible(e) && ((n = i.getDatasetMeta(e)).xAxisID === this.id || n.yAxisID === this.id)) return !0;
                return !1
            },
            _computeGridLineItems: function(e) {
                var t, n, i, r, o, a, s, l, c, u, d, h, f, p, g, m, v, y = this,
                    b = y.chart,
                    w = y.options,
                    x = w.gridLines,
                    _ = w.position,
                    C = x.offsetGridLines,
                    k = y.isHorizontal(),
                    S = y._ticksToDraw,
                    T = S.length + (C ? 1 : 0),
                    D = rn(x),
                    E = [],
                    A = x.drawBorder ? tn(x.lineWidth, 0, 0) : 0,
                    M = A / 2,
                    O = H._alignPixel,
                    I = function(e) {
                        return O(b, e, A)
                    };
                for ("top" === _ ? (t = I(y.bottom), s = y.bottom - D, c = t - M, d = I(e.top) + M, f = e.bottom) : "bottom" === _ ? (t = I(y.top), d = e.top, f = I(e.bottom) - M, s = t + M, c = y.top + D) : "left" === _ ? (t = I(y.right), a = y.right - D, l = t - M, u = I(e.left) + M, h = e.right) : (t = I(y.left), u = e.left, h = I(e.right) - M, a = t + M, l = y.left + D), n = 0; n < T; ++n) i = S[n] || {}, Zt(i.label) && n < S.length || (n === y.zeroLineIndex && w.offset === C ? (p = x.zeroLineWidth, g = x.zeroLineColor, m = x.zeroLineBorderDash || [], v = x.zeroLineBorderDashOffset || 0) : (p = tn(x.lineWidth, n, 1), g = tn(x.color, n, "rgba(0,0,0,0.1)"), m = x.borderDash || [], v = x.borderDashOffset || 0), void 0 !== (r = nn(y, i._index || n, C)) && (o = O(b, r, p), k ? a = l = u = h = o : s = c = d = f = o, E.push({
                    tx1: a,
                    ty1: s,
                    tx2: l,
                    ty2: c,
                    x1: u,
                    y1: d,
                    x2: h,
                    y2: f,
                    width: p,
                    color: g,
                    borderDash: m,
                    borderDashOffset: v
                })));
                return E.ticksLength = T, E.borderValue = t, E
            },
            _computeLabelItems: function() {
                var e, t, n, i, r, o, a, s, l, c, u, d, h = this,
                    f = h.options,
                    p = f.ticks,
                    g = f.position,
                    m = p.mirror,
                    v = h.isHorizontal(),
                    y = h._ticksToDraw,
                    b = sn(p),
                    w = p.padding,
                    x = rn(f.gridLines),
                    _ = -H.toRadians(h.labelRotation),
                    C = [];
                for ("top" === g ? (o = h.bottom - x - w, a = _ ? "left" : "center") : "bottom" === g ? (o = h.top + x + w, a = _ ? "right" : "center") : "left" === g ? (r = h.right - (m ? 0 : x) - w, a = m ? "left" : "right") : (r = h.left + (m ? 0 : x) + w, a = m ? "right" : "left"), e = 0, t = y.length; e < t; ++e) i = (n = y[e]).label, Zt(i) || (s = h.getPixelForTick(n._index || e) + p.labelOffset, c = (l = n.major ? b.major : b.minor).lineHeight, u = Jt(i) ? i.length : 1, v ? (r = s, d = "top" === g ? ((_ ? 1 : .5) - u) * c : (_ ? 0 : .5) * c) : (o = s, d = (1 - u) * c / 2), C.push({
                    x: r,
                    y: o,
                    rotation: _,
                    label: i,
                    font: l,
                    textOffset: d,
                    textAlign: a
                }));
                return C
            },
            _drawGrid: function(e) {
                var t = this,
                    n = t.options.gridLines;
                if (n.display) {
                    var i, r, o, a, s, l = t.ctx,
                        c = t.chart,
                        u = H._alignPixel,
                        d = n.drawBorder ? tn(n.lineWidth, 0, 0) : 0,
                        h = t._gridLineItems || (t._gridLineItems = t._computeGridLineItems(e));
                    for (o = 0, a = h.length; o < a; ++o) i = (s = h[o]).width, r = s.color, i && r && (l.save(), l.lineWidth = i, l.strokeStyle = r, l.setLineDash && (l.setLineDash(s.borderDash), l.lineDashOffset = s.borderDashOffset), l.beginPath(), n.drawTicks && (l.moveTo(s.tx1, s.ty1), l.lineTo(s.tx2, s.ty2)), n.drawOnChartArea && (l.moveTo(s.x1, s.y1), l.lineTo(s.x2, s.y2)), l.stroke(), l.restore());
                    if (d) {
                        var f, p, g, m, v = d,
                            y = tn(n.lineWidth, h.ticksLength - 1, 1),
                            b = h.borderValue;
                        t.isHorizontal() ? (f = u(c, t.left, v) - v / 2, p = u(c, t.right, y) + y / 2, g = m = b) : (g = u(c, t.top, v) - v / 2, m = u(c, t.bottom, y) + y / 2, f = p = b), l.lineWidth = d, l.strokeStyle = tn(n.color, 0), l.beginPath(), l.moveTo(f, g), l.lineTo(p, m), l.stroke()
                    }
                }
            },
            _drawLabels: function() {
                var e = this;
                if (e.options.ticks.display) {
                    var t, n, i, r, o, a, s, l, c = e.ctx,
                        u = e._labelItems || (e._labelItems = e._computeLabelItems());
                    for (t = 0, i = u.length; t < i; ++t) {
                        if (a = (o = u[t]).font, c.save(), c.translate(o.x, o.y), c.rotate(o.rotation), c.font = a.string, c.fillStyle = a.color, c.textBaseline = "middle", c.textAlign = o.textAlign, s = o.label, l = o.textOffset, Jt(s))
                            for (n = 0, r = s.length; n < r; ++n) c.fillText("" + s[n], 0, l), l += a.lineHeight;
                        else c.fillText(s, 0, l);
                        c.restore()
                    }
                }
            },
            _drawTitle: function() {
                var e = this,
                    t = e.ctx,
                    n = e.options,
                    i = n.scaleLabel;
                if (i.display) {
                    var r, o, a = en(i.fontColor, N.global.defaultFontColor),
                        s = H.options._parseFont(i),
                        l = H.options.toPadding(i.padding),
                        c = s.lineHeight / 2,
                        u = n.position,
                        d = 0;
                    if (e.isHorizontal()) r = e.left + e.width / 2, o = "bottom" === u ? e.bottom - c - l.bottom : e.top + c + l.top;
                    else {
                        var h = "left" === u;
                        r = h ? e.left + c + l.top : e.right - c - l.top, o = e.top + e.height / 2, d = h ? -.5 * Math.PI : .5 * Math.PI
                    }
                    t.save(), t.translate(r, o), t.rotate(d), t.textAlign = "center", t.textBaseline = "middle", t.fillStyle = a, t.font = s.string, t.fillText(i.labelString, 0, 0), t.restore()
                }
            },
            draw: function(e) {
                this._isVisible() && (this._drawGrid(e), this._drawTitle(), this._drawLabels())
            },
            _layers: function() {
                var e = this,
                    t = e.options,
                    n = t.ticks && t.ticks.z || 0,
                    i = t.gridLines && t.gridLines.z || 0;
                return e._isVisible() && n !== i && e.draw === e._draw ? [{
                    z: i,
                    draw: function() {
                        e._drawGrid.apply(e, arguments), e._drawTitle.apply(e, arguments)
                    }
                }, {
                    z: n,
                    draw: function() {
                        e._drawLabels.apply(e, arguments)
                    }
                }] : [{
                    z: n,
                    draw: function() {
                        e.draw.apply(e, arguments)
                    }
                }]
            },
            _getMatchingVisibleMetas: function(e) {
                var t = this,
                    n = t.isHorizontal();
                return t.chart._getSortedVisibleDatasetMetas().filter((function(i) {
                    return (!e || i.type === e) && (n ? i.xAxisID === t.id : i.yAxisID === t.id)
                }))
            }
        });
        un.prototype._draw = un.prototype.draw;
        var dn = un,
            hn = H.isNullOrUndef,
            fn = dn.extend({
                determineDataLimits: function() {
                    var e, t = this,
                        n = t._getLabels(),
                        i = t.options.ticks,
                        r = i.min,
                        o = i.max,
                        a = 0,
                        s = n.length - 1;
                    void 0 !== r && (e = n.indexOf(r)) >= 0 && (a = e), void 0 !== o && (e = n.indexOf(o)) >= 0 && (s = e), t.minIndex = a, t.maxIndex = s, t.min = n[a], t.max = n[s]
                },
                buildTicks: function() {
                    var e = this._getLabels(),
                        t = this.minIndex,
                        n = this.maxIndex;
                    this.ticks = 0 === t && n === e.length - 1 ? e : e.slice(t, n + 1)
                },
                getLabelForIndex: function(e, t) {
                    var n = this.chart;
                    return n.getDatasetMeta(t).controller._getValueScaleId() === this.id ? this.getRightValue(n.data.datasets[t].data[e]) : this._getLabels()[e]
                },
                _configure: function() {
                    var e = this,
                        t = e.options.offset,
                        n = e.ticks;
                    dn.prototype._configure.call(e), e.isHorizontal() || (e._reversePixels = !e._reversePixels), n && (e._startValue = e.minIndex - (t ? .5 : 0), e._valueRange = Math.max(n.length - (t ? 0 : 1), 1))
                },
                getPixelForValue: function(e, t, n) {
                    var i, r, o, a = this;
                    return hn(t) || hn(n) || (e = a.chart.data.datasets[n].data[t]), hn(e) || (i = a.isHorizontal() ? e.x : e.y), (void 0 !== i || void 0 !== e && isNaN(t)) && (r = a._getLabels(), e = H.valueOrDefault(i, e), t = -1 !== (o = r.indexOf(e)) ? o : t, isNaN(t) && (t = e)), a.getPixelForDecimal((t - a._startValue) / a._valueRange)
                },
                getPixelForTick: function(e) {
                    var t = this.ticks;
                    return e < 0 || e > t.length - 1 ? null : this.getPixelForValue(t[e], e + this.minIndex)
                },
                getValueForPixel: function(e) {
                    var t = Math.round(this._startValue + this.getDecimalForPixel(e) * this._valueRange);
                    return Math.min(Math.max(t, 0), this.ticks.length - 1)
                },
                getBasePixel: function() {
                    return this.bottom
                }
            });
        fn._defaults = {
            position: "bottom"
        };
        var pn = H.noop,
            gn = H.isNullOrUndef,
            mn = dn.extend({
                getRightValue: function(e) {
                    return "string" == typeof e ? +e : dn.prototype.getRightValue.call(this, e)
                },
                handleTickRangeOptions: function() {
                    var e = this,
                        t = e.options.ticks;
                    if (t.beginAtZero) {
                        var n = H.sign(e.min),
                            i = H.sign(e.max);
                        n < 0 && i < 0 ? e.max = 0 : n > 0 && i > 0 && (e.min = 0)
                    }
                    var r = void 0 !== t.min || void 0 !== t.suggestedMin,
                        o = void 0 !== t.max || void 0 !== t.suggestedMax;
                    void 0 !== t.min ? e.min = t.min : void 0 !== t.suggestedMin && (null === e.min ? e.min = t.suggestedMin : e.min = Math.min(e.min, t.suggestedMin)), void 0 !== t.max ? e.max = t.max : void 0 !== t.suggestedMax && (null === e.max ? e.max = t.suggestedMax : e.max = Math.max(e.max, t.suggestedMax)), r !== o && e.min >= e.max && (r ? e.max = e.min + 1 : e.min = e.max - 1), e.min === e.max && (e.max++, t.beginAtZero || e.min--)
                },
                getTickLimit: function() {
                    var e, t = this.options.ticks,
                        n = t.stepSize,
                        i = t.maxTicksLimit;
                    return n ? e = Math.ceil(this.max / n) - Math.floor(this.min / n) + 1 : (e = this._computeTickLimit(), i = i || 11), i && (e = Math.min(i, e)), e
                },
                _computeTickLimit: function() {
                    return Number.POSITIVE_INFINITY
                },
                handleDirectionalChanges: pn,
                buildTicks: function() {
                    var e = this,
                        t = e.options.ticks,
                        n = e.getTickLimit(),
                        i = {
                            maxTicks: n = Math.max(2, n),
                            min: t.min,
                            max: t.max,
                            precision: t.precision,
                            stepSize: H.valueOrDefault(t.fixedStepSize, t.stepSize)
                        },
                        r = e.ticks = function(e, t) {
                            var n, i, r, o, a = [],
                                s = e.stepSize,
                                l = s || 1,
                                c = e.maxTicks - 1,
                                u = e.min,
                                d = e.max,
                                h = e.precision,
                                f = t.min,
                                p = t.max,
                                g = H.niceNum((p - f) / c / l) * l;
                            if (g < 1e-14 && gn(u) && gn(d)) return [f, p];
                            (o = Math.ceil(p / g) - Math.floor(f / g)) > c && (g = H.niceNum(o * g / c / l) * l), s || gn(h) ? n = Math.pow(10, H._decimalPlaces(g)) : (n = Math.pow(10, h), g = Math.ceil(g * n) / n), i = Math.floor(f / g) * g, r = Math.ceil(p / g) * g, s && (!gn(u) && H.almostWhole(u / g, g / 1e3) && (i = u), !gn(d) && H.almostWhole(d / g, g / 1e3) && (r = d)), o = (r - i) / g, o = H.almostEquals(o, Math.round(o), g / 1e3) ? Math.round(o) : Math.ceil(o), i = Math.round(i * n) / n, r = Math.round(r * n) / n, a.push(gn(u) ? i : u);
                            for (var m = 1; m < o; ++m) a.push(Math.round((i + m * g) * n) / n);
                            return a.push(gn(d) ? r : d), a
                        }(i, e);
                    e.handleDirectionalChanges(), e.max = H.max(r), e.min = H.min(r), t.reverse ? (r.reverse(), e.start = e.max, e.end = e.min) : (e.start = e.min, e.end = e.max)
                },
                convertTicksToLabels: function() {
                    var e = this;
                    e.ticksAsNumbers = e.ticks.slice(), e.zeroLineIndex = e.ticks.indexOf(0), dn.prototype.convertTicksToLabels.call(e)
                },
                _configure: function() {
                    var e, t = this,
                        n = t.getTicks(),
                        i = t.min,
                        r = t.max;
                    dn.prototype._configure.call(t), t.options.offset && n.length && (i -= e = (r - i) / Math.max(n.length - 1, 1) / 2, r += e), t._startValue = i, t._endValue = r, t._valueRange = r - i
                }
            }),
            vn = {
                position: "left",
                ticks: {
                    callback: Kt.formatters.linear
                }
            };

        function yn(e, t, n, i) {
            var r, o, a = e.options,
                s = function(e, t, n) {
                    var i = [n.type, void 0 === t && void 0 === n.stack ? n.index : "", n.stack].join(".");
                    return void 0 === e[i] && (e[i] = {
                        pos: [],
                        neg: []
                    }), e[i]
                }(t, a.stacked, n),
                l = s.pos,
                c = s.neg,
                u = i.length;
            for (r = 0; r < u; ++r) o = e._parseValue(i[r]), isNaN(o.min) || isNaN(o.max) || n.data[r].hidden || (l[r] = l[r] || 0, c[r] = c[r] || 0, a.relativePoints ? l[r] = 100 : o.min < 0 || o.max < 0 ? c[r] += o.min : l[r] += o.max)
        }

        function bn(e, t, n) {
            var i, r, o = n.length;
            for (i = 0; i < o; ++i) r = e._parseValue(n[i]), isNaN(r.min) || isNaN(r.max) || t.data[i].hidden || (e.min = Math.min(e.min, r.min), e.max = Math.max(e.max, r.max))
        }
        var wn = mn.extend({
                determineDataLimits: function() {
                    var e, t, n, i, r = this,
                        o = r.options,
                        a = r.chart.data.datasets,
                        s = r._getMatchingVisibleMetas(),
                        l = o.stacked,
                        c = {},
                        u = s.length;
                    if (r.min = Number.POSITIVE_INFINITY, r.max = Number.NEGATIVE_INFINITY, void 0 === l)
                        for (e = 0; !l && e < u; ++e) l = void 0 !== (t = s[e]).stack;
                    for (e = 0; e < u; ++e) n = a[(t = s[e]).index].data, l ? yn(r, c, t, n) : bn(r, t, n);
                    H.each(c, (function(e) {
                        i = e.pos.concat(e.neg), r.min = Math.min(r.min, H.min(i)), r.max = Math.max(r.max, H.max(i))
                    })), r.min = H.isFinite(r.min) && !isNaN(r.min) ? r.min : 0, r.max = H.isFinite(r.max) && !isNaN(r.max) ? r.max : 1, r.handleTickRangeOptions()
                },
                _computeTickLimit: function() {
                    var e;
                    return this.isHorizontal() ? Math.ceil(this.width / 40) : (e = H.options._parseFont(this.options.ticks), Math.ceil(this.height / e.lineHeight))
                },
                handleDirectionalChanges: function() {
                    this.isHorizontal() || this.ticks.reverse()
                },
                getLabelForIndex: function(e, t) {
                    return this._getScaleLabel(this.chart.data.datasets[t].data[e])
                },
                getPixelForValue: function(e) {
                    return this.getPixelForDecimal((+this.getRightValue(e) - this._startValue) / this._valueRange)
                },
                getValueForPixel: function(e) {
                    return this._startValue + this.getDecimalForPixel(e) * this._valueRange
                },
                getPixelForTick: function(e) {
                    var t = this.ticksAsNumbers;
                    return e < 0 || e > t.length - 1 ? null : this.getPixelForValue(t[e])
                }
            }),
            xn = vn;
        wn._defaults = xn;
        var _n = H.valueOrDefault,
            Cn = H.math.log10,
            kn = {
                position: "left",
                ticks: {
                    callback: Kt.formatters.logarithmic
                }
            };

        function Sn(e, t) {
            return H.isFinite(e) && e >= 0 ? e : t
        }
        var Tn = dn.extend({
                determineDataLimits: function() {
                    var e, t, n, i, r, o, a = this,
                        s = a.options,
                        l = a.chart,
                        c = l.data.datasets,
                        u = a.isHorizontal();

                    function d(e) {
                        return u ? e.xAxisID === a.id : e.yAxisID === a.id
                    }
                    a.min = Number.POSITIVE_INFINITY, a.max = Number.NEGATIVE_INFINITY, a.minNotZero = Number.POSITIVE_INFINITY;
                    var h = s.stacked;
                    if (void 0 === h)
                        for (e = 0; e < c.length; e++)
                            if (t = l.getDatasetMeta(e), l.isDatasetVisible(e) && d(t) && void 0 !== t.stack) {
                                h = !0;
                                break
                            }
                    if (s.stacked || h) {
                        var f = {};
                        for (e = 0; e < c.length; e++) {
                            var p = [(t = l.getDatasetMeta(e)).type, void 0 === s.stacked && void 0 === t.stack ? e : "", t.stack].join(".");
                            if (l.isDatasetVisible(e) && d(t))
                                for (void 0 === f[p] && (f[p] = []), r = 0, o = (i = c[e].data).length; r < o; r++) {
                                    var g = f[p];
                                    n = a._parseValue(i[r]), isNaN(n.min) || isNaN(n.max) || t.data[r].hidden || n.min < 0 || n.max < 0 || (g[r] = g[r] || 0, g[r] += n.max)
                                }
                        }
                        H.each(f, (function(e) {
                            if (e.length > 0) {
                                var t = H.min(e),
                                    n = H.max(e);
                                a.min = Math.min(a.min, t), a.max = Math.max(a.max, n)
                            }
                        }))
                    } else
                        for (e = 0; e < c.length; e++)
                            if (t = l.getDatasetMeta(e), l.isDatasetVisible(e) && d(t))
                                for (r = 0, o = (i = c[e].data).length; r < o; r++) n = a._parseValue(i[r]), isNaN(n.min) || isNaN(n.max) || t.data[r].hidden || n.min < 0 || n.max < 0 || (a.min = Math.min(n.min, a.min), a.max = Math.max(n.max, a.max), 0 !== n.min && (a.minNotZero = Math.min(n.min, a.minNotZero)));
                    a.min = H.isFinite(a.min) ? a.min : null, a.max = H.isFinite(a.max) ? a.max : null, a.minNotZero = H.isFinite(a.minNotZero) ? a.minNotZero : null, this.handleTickRangeOptions()
                },
                handleTickRangeOptions: function() {
                    var e = this,
                        t = e.options.ticks;
                    e.min = Sn(t.min, e.min), e.max = Sn(t.max, e.max), e.min === e.max && (0 !== e.min && null !== e.min ? (e.min = Math.pow(10, Math.floor(Cn(e.min)) - 1), e.max = Math.pow(10, Math.floor(Cn(e.max)) + 1)) : (e.min = 1, e.max = 10)), null === e.min && (e.min = Math.pow(10, Math.floor(Cn(e.max)) - 1)), null === e.max && (e.max = 0 !== e.min ? Math.pow(10, Math.floor(Cn(e.min)) + 1) : 10), null === e.minNotZero && (e.min > 0 ? e.minNotZero = e.min : e.max < 1 ? e.minNotZero = Math.pow(10, Math.floor(Cn(e.max))) : e.minNotZero = 1)
                },
                buildTicks: function() {
                    var e = this,
                        t = e.options.ticks,
                        n = !e.isHorizontal(),
                        i = {
                            min: Sn(t.min),
                            max: Sn(t.max)
                        },
                        r = e.ticks = function(e, t) {
                            var n, i, r = [],
                                o = _n(e.min, Math.pow(10, Math.floor(Cn(t.min)))),
                                a = Math.floor(Cn(t.max)),
                                s = Math.ceil(t.max / Math.pow(10, a));
                            0 === o ? (n = Math.floor(Cn(t.minNotZero)), i = Math.floor(t.minNotZero / Math.pow(10, n)), r.push(o), o = i * Math.pow(10, n)) : (n = Math.floor(Cn(o)), i = Math.floor(o / Math.pow(10, n)));
                            var l = n < 0 ? Math.pow(10, Math.abs(n)) : 1;
                            do {
                                r.push(o), 10 == ++i && (i = 1, l = ++n >= 0 ? 1 : l), o = Math.round(i * Math.pow(10, n) * l) / l
                            } while (n < a || n === a && i < s);
                            var c = _n(e.max, o);
                            return r.push(c), r
                        }(i, e);
                    e.max = H.max(r), e.min = H.min(r), t.reverse ? (n = !n, e.start = e.max, e.end = e.min) : (e.start = e.min, e.end = e.max), n && r.reverse()
                },
                convertTicksToLabels: function() {
                    this.tickValues = this.ticks.slice(), dn.prototype.convertTicksToLabels.call(this)
                },
                getLabelForIndex: function(e, t) {
                    return this._getScaleLabel(this.chart.data.datasets[t].data[e])
                },
                getPixelForTick: function(e) {
                    var t = this.tickValues;
                    return e < 0 || e > t.length - 1 ? null : this.getPixelForValue(t[e])
                },
                _getFirstTickValue: function(e) {
                    var t = Math.floor(Cn(e));
                    return Math.floor(e / Math.pow(10, t)) * Math.pow(10, t)
                },
                _configure: function() {
                    var e = this,
                        t = e.min,
                        n = 0;
                    dn.prototype._configure.call(e), 0 === t && (t = e._getFirstTickValue(e.minNotZero), n = _n(e.options.ticks.fontSize, N.global.defaultFontSize) / e._length), e._startValue = Cn(t), e._valueOffset = n, e._valueRange = (Cn(e.max) - Cn(t)) / (1 - n)
                },
                getPixelForValue: function(e) {
                    var t = this,
                        n = 0;
                    return (e = +t.getRightValue(e)) > t.min && e > 0 && (n = (Cn(e) - t._startValue) / t._valueRange + t._valueOffset), t.getPixelForDecimal(n)
                },
                getValueForPixel: function(e) {
                    var t = this,
                        n = t.getDecimalForPixel(e);
                    return 0 === n && 0 === t.min ? 0 : Math.pow(10, t._startValue + (n - t._valueOffset) * t._valueRange)
                }
            }),
            Dn = kn;
        Tn._defaults = Dn;
        var En = H.valueOrDefault,
            An = H.valueAtIndexOrDefault,
            Mn = H.options.resolve,
            On = {
                display: !0,
                animate: !0,
                position: "chartArea",
                angleLines: {
                    display: !0,
                    color: "rgba(0,0,0,0.1)",
                    lineWidth: 1,
                    borderDash: [],
                    borderDashOffset: 0
                },
                gridLines: {
                    circular: !1
                },
                ticks: {
                    showLabelBackdrop: !0,
                    backdropColor: "rgba(255,255,255,0.75)",
                    backdropPaddingY: 2,
                    backdropPaddingX: 2,
                    callback: Kt.formatters.linear
                },
                pointLabels: {
                    display: !0,
                    fontSize: 10,
                    callback: function(e) {
                        return e
                    }
                }
            };

        function In(e) {
            var t = e.ticks;
            return t.display && e.display ? En(t.fontSize, N.global.defaultFontSize) + 2 * t.backdropPaddingY : 0
        }

        function Pn(e, t, n, i, r) {
            return e === i || e === r ? {
                start: t - n / 2,
                end: t + n / 2
            } : e < i || e > r ? {
                start: t - n,
                end: t
            } : {
                start: t,
                end: t + n
            }
        }

        function Ln(e) {
            return 0 === e || 180 === e ? "center" : e < 180 ? "left" : "right"
        }

        function Fn(e, t, n, i) {
            var r, o, a = n.y + i / 2;
            if (H.isArray(t))
                for (r = 0, o = t.length; r < o; ++r) e.fillText(t[r], n.x, a), a += i;
            else e.fillText(t, n.x, a)
        }

        function Nn(e, t, n) {
            90 === e || 270 === e ? n.y -= t.h / 2 : (e > 270 || e < 90) && (n.y -= t.h)
        }

        function Rn(e) {
            return H.isNumber(e) ? e : 0
        }
        var jn = mn.extend({
                setDimensions: function() {
                    var e = this;
                    e.width = e.maxWidth, e.height = e.maxHeight, e.paddingTop = In(e.options) / 2, e.xCenter = Math.floor(e.width / 2), e.yCenter = Math.floor((e.height - e.paddingTop) / 2), e.drawingArea = Math.min(e.height - e.paddingTop, e.width) / 2
                },
                determineDataLimits: function() {
                    var e = this,
                        t = e.chart,
                        n = Number.POSITIVE_INFINITY,
                        i = Number.NEGATIVE_INFINITY;
                    H.each(t.data.datasets, (function(r, o) {
                        if (t.isDatasetVisible(o)) {
                            var a = t.getDatasetMeta(o);
                            H.each(r.data, (function(t, r) {
                                var o = +e.getRightValue(t);
                                isNaN(o) || a.data[r].hidden || (n = Math.min(o, n), i = Math.max(o, i))
                            }))
                        }
                    })), e.min = n === Number.POSITIVE_INFINITY ? 0 : n, e.max = i === Number.NEGATIVE_INFINITY ? 0 : i, e.handleTickRangeOptions()
                },
                _computeTickLimit: function() {
                    return Math.ceil(this.drawingArea / In(this.options))
                },
                convertTicksToLabels: function() {
                    var e = this;
                    mn.prototype.convertTicksToLabels.call(e), e.pointLabels = e.chart.data.labels.map((function() {
                        var t = H.callback(e.options.pointLabels.callback, arguments, e);
                        return t || 0 === t ? t : ""
                    }))
                },
                getLabelForIndex: function(e, t) {
                    return +this.getRightValue(this.chart.data.datasets[t].data[e])
                },
                fit: function() {
                    var e = this.options;
                    e.display && e.pointLabels.display ? function(e) {
                        var t, n, i, r = H.options._parseFont(e.options.pointLabels),
                            o = {
                                l: 0,
                                r: e.width,
                                t: 0,
                                b: e.height - e.paddingTop
                            },
                            a = {};
                        e.ctx.font = r.string, e._pointLabelSizes = [];
                        var s, l, c, u = e.chart.data.labels.length;
                        for (t = 0; t < u; t++) {
                            i = e.getPointPosition(t, e.drawingArea + 5), s = e.ctx, l = r.lineHeight, c = e.pointLabels[t], n = H.isArray(c) ? {
                                w: H.longestText(s, s.font, c),
                                h: c.length * l
                            } : {
                                w: s.measureText(c).width,
                                h: l
                            }, e._pointLabelSizes[t] = n;
                            var d = e.getIndexAngle(t),
                                h = H.toDegrees(d) % 360,
                                f = Pn(h, i.x, n.w, 0, 180),
                                p = Pn(h, i.y, n.h, 90, 270);
                            f.start < o.l && (o.l = f.start, a.l = d), f.end > o.r && (o.r = f.end, a.r = d), p.start < o.t && (o.t = p.start, a.t = d), p.end > o.b && (o.b = p.end, a.b = d)
                        }
                        e.setReductions(e.drawingArea, o, a)
                    }(this) : this.setCenterPoint(0, 0, 0, 0)
                },
                setReductions: function(e, t, n) {
                    var i = this,
                        r = t.l / Math.sin(n.l),
                        o = Math.max(t.r - i.width, 0) / Math.sin(n.r),
                        a = -t.t / Math.cos(n.t),
                        s = -Math.max(t.b - (i.height - i.paddingTop), 0) / Math.cos(n.b);
                    r = Rn(r), o = Rn(o), a = Rn(a), s = Rn(s), i.drawingArea = Math.min(Math.floor(e - (r + o) / 2), Math.floor(e - (a + s) / 2)), i.setCenterPoint(r, o, a, s)
                },
                setCenterPoint: function(e, t, n, i) {
                    var r = this,
                        o = r.width - t - r.drawingArea,
                        a = e + r.drawingArea,
                        s = n + r.drawingArea,
                        l = r.height - r.paddingTop - i - r.drawingArea;
                    r.xCenter = Math.floor((a + o) / 2 + r.left), r.yCenter = Math.floor((s + l) / 2 + r.top + r.paddingTop)
                },
                getIndexAngle: function(e) {
                    var t = this.chart,
                        n = (e * (360 / t.data.labels.length) + ((t.options || {}).startAngle || 0)) % 360;
                    return (n < 0 ? n + 360 : n) * Math.PI * 2 / 360
                },
                getDistanceFromCenterForValue: function(e) {
                    var t = this;
                    if (H.isNullOrUndef(e)) return NaN;
                    var n = t.drawingArea / (t.max - t.min);
                    return t.options.ticks.reverse ? (t.max - e) * n : (e - t.min) * n
                },
                getPointPosition: function(e, t) {
                    var n = this.getIndexAngle(e) - Math.PI / 2;
                    return {
                        x: Math.cos(n) * t + this.xCenter,
                        y: Math.sin(n) * t + this.yCenter
                    }
                },
                getPointPositionForValue: function(e, t) {
                    return this.getPointPosition(e, this.getDistanceFromCenterForValue(t))
                },
                getBasePosition: function(e) {
                    var t = this.min,
                        n = this.max;
                    return this.getPointPositionForValue(e || 0, this.beginAtZero ? 0 : t < 0 && n < 0 ? n : t > 0 && n > 0 ? t : 0)
                },
                _drawGrid: function() {
                    var e, t, n, i = this,
                        r = i.ctx,
                        o = i.options,
                        a = o.gridLines,
                        s = o.angleLines,
                        l = En(s.lineWidth, a.lineWidth),
                        c = En(s.color, a.color);
                    if (o.pointLabels.display && function(e) {
                            var t = e.ctx,
                                n = e.options,
                                i = n.pointLabels,
                                r = In(n),
                                o = e.getDistanceFromCenterForValue(n.ticks.reverse ? e.min : e.max),
                                a = H.options._parseFont(i);
                            t.save(), t.font = a.string, t.textBaseline = "middle";
                            for (var s = e.chart.data.labels.length - 1; s >= 0; s--) {
                                var l = 0 === s ? r / 2 : 0,
                                    c = e.getPointPosition(s, o + l + 5),
                                    u = An(i.fontColor, s, N.global.defaultFontColor);
                                t.fillStyle = u;
                                var d = e.getIndexAngle(s),
                                    h = H.toDegrees(d);
                                t.textAlign = Ln(h), Nn(h, e._pointLabelSizes[s], c), Fn(t, e.pointLabels[s], c, a.lineHeight)
                            }
                            t.restore()
                        }(i), a.display && H.each(i.ticks, (function(e, n) {
                            0 !== n && (t = i.getDistanceFromCenterForValue(i.ticksAsNumbers[n]), function(e, t, n, i) {
                                var r, o = e.ctx,
                                    a = t.circular,
                                    s = e.chart.data.labels.length,
                                    l = An(t.color, i - 1),
                                    c = An(t.lineWidth, i - 1);
                                if ((a || s) && l && c) {
                                    if (o.save(), o.strokeStyle = l, o.lineWidth = c, o.setLineDash && (o.setLineDash(t.borderDash || []), o.lineDashOffset = t.borderDashOffset || 0), o.beginPath(), a) o.arc(e.xCenter, e.yCenter, n, 0, 2 * Math.PI);
                                    else {
                                        r = e.getPointPosition(0, n), o.moveTo(r.x, r.y);
                                        for (var u = 1; u < s; u++) r = e.getPointPosition(u, n), o.lineTo(r.x, r.y)
                                    }
                                    o.closePath(), o.stroke(), o.restore()
                                }
                            }(i, a, t, n))
                        })), s.display && l && c) {
                        for (r.save(), r.lineWidth = l, r.strokeStyle = c, r.setLineDash && (r.setLineDash(Mn([s.borderDash, a.borderDash, []])), r.lineDashOffset = Mn([s.borderDashOffset, a.borderDashOffset, 0])), e = i.chart.data.labels.length - 1; e >= 0; e--) t = i.getDistanceFromCenterForValue(o.ticks.reverse ? i.min : i.max), n = i.getPointPosition(e, t), r.beginPath(), r.moveTo(i.xCenter, i.yCenter), r.lineTo(n.x, n.y), r.stroke();
                        r.restore()
                    }
                },
                _drawLabels: function() {
                    var e = this,
                        t = e.ctx,
                        n = e.options.ticks;
                    if (n.display) {
                        var i, r, o = e.getIndexAngle(0),
                            a = H.options._parseFont(n),
                            s = En(n.fontColor, N.global.defaultFontColor);
                        t.save(), t.font = a.string, t.translate(e.xCenter, e.yCenter), t.rotate(o), t.textAlign = "center", t.textBaseline = "middle", H.each(e.ticks, (function(o, l) {
                            (0 !== l || n.reverse) && (i = e.getDistanceFromCenterForValue(e.ticksAsNumbers[l]), n.showLabelBackdrop && (r = t.measureText(o).width, t.fillStyle = n.backdropColor, t.fillRect(-r / 2 - n.backdropPaddingX, -i - a.size / 2 - n.backdropPaddingY, r + 2 * n.backdropPaddingX, a.size + 2 * n.backdropPaddingY)), t.fillStyle = s, t.fillText(o, 0, -i))
                        })), t.restore()
                    }
                },
                _drawTitle: H.noop
            }),
            $n = On;
        jn._defaults = $n;
        var zn = H._deprecated,
            Hn = H.options.resolve,
            Bn = H.valueOrDefault,
            qn = Number.MIN_SAFE_INTEGER || -9007199254740991,
            Wn = Number.MAX_SAFE_INTEGER || 9007199254740991,
            Un = {
                millisecond: {
                    common: !0,
                    size: 1,
                    steps: 1e3
                },
                second: {
                    common: !0,
                    size: 1e3,
                    steps: 60
                },
                minute: {
                    common: !0,
                    size: 6e4,
                    steps: 60
                },
                hour: {
                    common: !0,
                    size: 36e5,
                    steps: 24
                },
                day: {
                    common: !0,
                    size: 864e5,
                    steps: 30
                },
                week: {
                    common: !1,
                    size: 6048e5,
                    steps: 4
                },
                month: {
                    common: !0,
                    size: 2628e6,
                    steps: 12
                },
                quarter: {
                    common: !1,
                    size: 7884e6,
                    steps: 4
                },
                year: {
                    common: !0,
                    size: 3154e7
                }
            },
            Vn = Object.keys(Un);

        function Yn(e, t) {
            return e - t
        }

        function Xn(e) {
            return H.valueOrDefault(e.time.min, e.ticks.min)
        }

        function Gn(e) {
            return H.valueOrDefault(e.time.max, e.ticks.max)
        }

        function Qn(e, t, n, i) {
            var r = function(e, t, n) {
                    for (var i, r, o, a = 0, s = e.length - 1; a >= 0 && a <= s;) {
                        if (r = e[(i = a + s >> 1) - 1] || null, o = e[i], !r) return {
                            lo: null,
                            hi: o
                        };
                        if (o[t] < n) a = i + 1;
                        else {
                            if (!(r[t] > n)) return {
                                lo: r,
                                hi: o
                            };
                            s = i - 1
                        }
                    }
                    return {
                        lo: o,
                        hi: null
                    }
                }(e, t, n),
                o = r.lo ? r.hi ? r.lo : e[e.length - 2] : e[0],
                a = r.lo ? r.hi ? r.hi : e[e.length - 1] : e[1],
                s = a[t] - o[t],
                l = s ? (n - o[t]) / s : 0,
                c = (a[i] - o[i]) * l;
            return o[i] + c
        }

        function Kn(e, t) {
            var n = e._adapter,
                i = e.options.time,
                r = i.parser,
                o = r || i.format,
                a = t;
            return "function" == typeof r && (a = r(a)), H.isFinite(a) || (a = "string" == typeof o ? n.parse(a, o) : n.parse(a)), null !== a ? +a : (r || "function" != typeof o || (a = o(t), H.isFinite(a) || (a = n.parse(a))), a)
        }

        function Jn(e, t) {
            if (H.isNullOrUndef(t)) return null;
            var n = e.options.time,
                i = Kn(e, e.getRightValue(t));
            return null === i || n.round && (i = +e._adapter.startOf(i, n.round)), i
        }

        function Zn(e, t, n, i) {
            var r, o, a, s = Vn.length;
            for (r = Vn.indexOf(e); r < s - 1; ++r)
                if (a = (o = Un[Vn[r]]).steps ? o.steps : Wn, o.common && Math.ceil((n - t) / (a * o.size)) <= i) return Vn[r];
            return Vn[s - 1]
        }

        function ei(e, t, n) {
            var i, r, o = [],
                a = {},
                s = t.length;
            for (i = 0; i < s; ++i) a[r = t[i]] = i, o.push({
                value: r,
                major: !1
            });
            return 0 !== s && n ? function(e, t, n, i) {
                var r, o, a = e._adapter,
                    s = +a.startOf(t[0].value, i),
                    l = t[t.length - 1].value;
                for (r = s; r <= l; r = +a.add(r, 1, i))(o = n[r]) >= 0 && (t[o].major = !0);
                return t
            }(e, o, a, n) : o
        }
        var ti = dn.extend({
            initialize: function() {
                this.mergeTicksOptions(), dn.prototype.initialize.call(this)
            },
            update: function() {
                var e = this,
                    t = e.options,
                    n = t.time || (t.time = {}),
                    i = e._adapter = new Qt._date(t.adapters.date);
                return zn("time scale", n.format, "time.format", "time.parser"), zn("time scale", n.min, "time.min", "ticks.min"), zn("time scale", n.max, "time.max", "ticks.max"), H.mergeIf(n.displayFormats, i.formats()), dn.prototype.update.apply(e, arguments)
            },
            getRightValue: function(e) {
                return e && void 0 !== e.t && (e = e.t), dn.prototype.getRightValue.call(this, e)
            },
            determineDataLimits: function() {
                var e, t, n, i, r, o, a, s = this,
                    l = s.chart,
                    c = s._adapter,
                    u = s.options,
                    d = u.time.unit || "day",
                    h = Wn,
                    f = qn,
                    p = [],
                    g = [],
                    m = [],
                    v = s._getLabels();
                for (e = 0, n = v.length; e < n; ++e) m.push(Jn(s, v[e]));
                for (e = 0, n = (l.data.datasets || []).length; e < n; ++e)
                    if (l.isDatasetVisible(e))
                        if (r = l.data.datasets[e].data, H.isObject(r[0]))
                            for (g[e] = [], t = 0, i = r.length; t < i; ++t) o = Jn(s, r[t]), p.push(o), g[e][t] = o;
                        else g[e] = m.slice(0), a || (p = p.concat(m), a = !0);
                else g[e] = [];
                m.length && (h = Math.min(h, m[0]), f = Math.max(f, m[m.length - 1])), p.length && (p = n > 1 ? function(e) {
                    var t, n, i, r = {},
                        o = [];
                    for (t = 0, n = e.length; t < n; ++t) r[i = e[t]] || (r[i] = !0, o.push(i));
                    return o
                }(p).sort(Yn) : p.sort(Yn), h = Math.min(h, p[0]), f = Math.max(f, p[p.length - 1])), h = Jn(s, Xn(u)) || h, f = Jn(s, Gn(u)) || f, h = h === Wn ? +c.startOf(Date.now(), d) : h, f = f === qn ? +c.endOf(Date.now(), d) + 1 : f, s.min = Math.min(h, f), s.max = Math.max(h + 1, f), s._table = [], s._timestamps = {
                    data: p,
                    datasets: g,
                    labels: m
                }
            },
            buildTicks: function() {
                var e, t, n, i = this,
                    r = i.min,
                    o = i.max,
                    a = i.options,
                    s = a.ticks,
                    l = a.time,
                    c = i._timestamps,
                    u = [],
                    d = i.getLabelCapacity(r),
                    h = s.source,
                    f = a.distribution;
                for (c = "data" === h || "auto" === h && "series" === f ? c.data : "labels" === h ? c.labels : function(e, t, n, i) {
                        var r, o = e._adapter,
                            a = e.options,
                            s = a.time,
                            l = s.unit || Zn(s.minUnit, t, n, i),
                            c = Hn([s.stepSize, s.unitStepSize, 1]),
                            u = "week" === l && s.isoWeekday,
                            d = t,
                            h = [];
                        if (u && (d = +o.startOf(d, "isoWeek", u)), d = +o.startOf(d, u ? "day" : l), o.diff(n, t, l) > 1e5 * c) throw t + " and " + n + " are too far apart with stepSize of " + c + " " + l;
                        for (r = d; r < n; r = +o.add(r, c, l)) h.push(r);
                        return r !== n && "ticks" !== a.bounds || h.push(r), h
                    }(i, r, o, d), "ticks" === a.bounds && c.length && (r = c[0], o = c[c.length - 1]), r = Jn(i, Xn(a)) || r, o = Jn(i, Gn(a)) || o, e = 0, t = c.length; e < t; ++e)(n = c[e]) >= r && n <= o && u.push(n);
                return i.min = r, i.max = o, i._unit = l.unit || (s.autoSkip ? Zn(l.minUnit, i.min, i.max, d) : function(e, t, n, i, r) {
                    var o, a;
                    for (o = Vn.length - 1; o >= Vn.indexOf(n); o--)
                        if (a = Vn[o], Un[a].common && e._adapter.diff(r, i, a) >= t - 1) return a;
                    return Vn[n ? Vn.indexOf(n) : 0]
                }(i, u.length, l.minUnit, i.min, i.max)), i._majorUnit = s.major.enabled && "year" !== i._unit ? function(e) {
                    for (var t = Vn.indexOf(e) + 1, n = Vn.length; t < n; ++t)
                        if (Un[Vn[t]].common) return Vn[t]
                }(i._unit) : void 0, i._table = function(e, t, n, i) {
                    if ("linear" === i || !e.length) return [{
                        time: t,
                        pos: 0
                    }, {
                        time: n,
                        pos: 1
                    }];
                    var r, o, a, s, l, c = [],
                        u = [t];
                    for (r = 0, o = e.length; r < o; ++r)(s = e[r]) > t && s < n && u.push(s);
                    for (u.push(n), r = 0, o = u.length; r < o; ++r) l = u[r + 1], a = u[r - 1], s = u[r], void 0 !== a && void 0 !== l && Math.round((l + a) / 2) === s || c.push({
                        time: s,
                        pos: r / (o - 1)
                    });
                    return c
                }(i._timestamps.data, r, o, f), i._offsets = function(e, t, n, i, r) {
                    var o, a, s = 0,
                        l = 0;
                    return r.offset && t.length && (o = Qn(e, "time", t[0], "pos"), s = 1 === t.length ? 1 - o : (Qn(e, "time", t[1], "pos") - o) / 2, a = Qn(e, "time", t[t.length - 1], "pos"), l = 1 === t.length ? a : (a - Qn(e, "time", t[t.length - 2], "pos")) / 2), {
                        start: s,
                        end: l,
                        factor: 1 / (s + 1 + l)
                    }
                }(i._table, u, 0, 0, a), s.reverse && u.reverse(), ei(i, u, i._majorUnit)
            },
            getLabelForIndex: function(e, t) {
                var n = this,
                    i = n._adapter,
                    r = n.chart.data,
                    o = n.options.time,
                    a = r.labels && e < r.labels.length ? r.labels[e] : "",
                    s = r.datasets[t].data[e];
                return H.isObject(s) && (a = n.getRightValue(s)), o.tooltipFormat ? i.format(Kn(n, a), o.tooltipFormat) : "string" == typeof a ? a : i.format(Kn(n, a), o.displayFormats.datetime)
            },
            tickFormatFunction: function(e, t, n, i) {
                var r = this._adapter,
                    o = this.options,
                    a = o.time.displayFormats,
                    s = a[this._unit],
                    l = this._majorUnit,
                    c = a[l],
                    u = n[t],
                    d = o.ticks,
                    h = l && c && u && u.major,
                    f = r.format(e, i || (h ? c : s)),
                    p = h ? d.major : d.minor,
                    g = Hn([p.callback, p.userCallback, d.callback, d.userCallback]);
                return g ? g(f, t, n) : f
            },
            convertTicksToLabels: function(e) {
                var t, n, i = [];
                for (t = 0, n = e.length; t < n; ++t) i.push(this.tickFormatFunction(e[t].value, t, e));
                return i
            },
            getPixelForOffset: function(e) {
                var t = this._offsets,
                    n = Qn(this._table, "time", e, "pos");
                return this.getPixelForDecimal((t.start + n) * t.factor)
            },
            getPixelForValue: function(e, t, n) {
                var i = null;
                if (void 0 !== t && void 0 !== n && (i = this._timestamps.datasets[n][t]), null === i && (i = Jn(this, e)), null !== i) return this.getPixelForOffset(i)
            },
            getPixelForTick: function(e) {
                var t = this.getTicks();
                return e >= 0 && e < t.length ? this.getPixelForOffset(t[e].value) : null
            },
            getValueForPixel: function(e) {
                var t = this._offsets,
                    n = this.getDecimalForPixel(e) / t.factor - t.end,
                    i = Qn(this._table, "pos", n, "time");
                return this._adapter._create(i)
            },
            _getLabelSize: function(e) {
                var t = this.options.ticks,
                    n = this.ctx.measureText(e).width,
                    i = H.toRadians(this.isHorizontal() ? t.maxRotation : t.minRotation),
                    r = Math.cos(i),
                    o = Math.sin(i),
                    a = Bn(t.fontSize, N.global.defaultFontSize);
                return {
                    w: n * r + a * o,
                    h: n * o + a * r
                }
            },
            getLabelWidth: function(e) {
                return this._getLabelSize(e).w
            },
            getLabelCapacity: function(e) {
                var t = this,
                    n = t.options.time,
                    i = n.displayFormats,
                    r = i[n.unit] || i.millisecond,
                    o = t.tickFormatFunction(e, 0, ei(t, [e], t._majorUnit), r),
                    a = t._getLabelSize(o),
                    s = Math.floor(t.isHorizontal() ? t.width / a.w : t.height / a.h);
                return t.options.offset && s--, s > 0 ? s : 1
            }
        });
        ti._defaults = {
            position: "bottom",
            distribution: "linear",
            bounds: "data",
            adapters: {},
            time: {
                parser: !1,
                unit: !1,
                round: !1,
                displayFormat: !1,
                isoWeekday: !1,
                minUnit: "millisecond",
                displayFormats: {}
            },
            ticks: {
                autoSkip: !1,
                source: "auto",
                major: {
                    enabled: !1
                }
            }
        };
        var ni = {
                category: fn,
                linear: wn,
                logarithmic: Tn,
                radialLinear: jn,
                time: ti
            },
            ii = {
                datetime: "MMM D, YYYY, h:mm:ss a",
                millisecond: "h:mm:ss.SSS a",
                second: "h:mm:ss a",
                minute: "h:mm a",
                hour: "hA",
                day: "MMM D",
                week: "ll",
                month: "MMM YYYY",
                quarter: "[Q]Q - YYYY",
                year: "YYYY"
            };
        Qt._date.override("function" == typeof e ? {
            _id: "moment",
            formats: function() {
                return ii
            },
            parse: function(t, n) {
                return "string" == typeof t && "string" == typeof n ? t = e(t, n) : t instanceof e || (t = e(t)), t.isValid() ? t.valueOf() : null
            },
            format: function(t, n) {
                return e(t).format(n)
            },
            add: function(t, n, i) {
                return e(t).add(n, i).valueOf()
            },
            diff: function(t, n, i) {
                return e(t).diff(e(n), i)
            },
            startOf: function(t, n, i) {
                return t = e(t), "isoWeek" === n ? t.isoWeekday(i).valueOf() : t.startOf(n).valueOf()
            },
            endOf: function(t, n) {
                return e(t).endOf(n).valueOf()
            },
            _create: function(t) {
                return e(t)
            }
        } : {}), N._set("global", {
            plugins: {
                filler: {
                    propagate: !0
                }
            }
        });
        var ri = {
            dataset: function(e) {
                var t = e.fill,
                    n = e.chart,
                    i = n.getDatasetMeta(t),
                    r = i && n.isDatasetVisible(t) && i.dataset._children || [],
                    o = r.length || 0;
                return o ? function(e, t) {
                    return t < o && r[t]._view || null
                } : null
            },
            boundary: function(e) {
                var t = e.boundary,
                    n = t ? t.x : null,
                    i = t ? t.y : null;
                return H.isArray(t) ? function(e, n) {
                    return t[n]
                } : function(e) {
                    return {
                        x: null === n ? e.x : n,
                        y: null === i ? e.y : i
                    }
                }
            }
        };

        function oi(e, t, n) {
            var i, r = e._model || {},
                o = r.fill;
            if (void 0 === o && (o = !!r.backgroundColor), !1 === o || null === o) return !1;
            if (!0 === o) return "origin";
            if (i = parseFloat(o, 10), isFinite(i) && Math.floor(i) === i) return "-" !== o[0] && "+" !== o[0] || (i = t + i), !(i === t || i < 0 || i >= n) && i;
            switch (o) {
                case "bottom":
                    return "start";
                case "top":
                    return "end";
                case "zero":
                    return "origin";
                case "origin":
                case "start":
                case "end":
                    return o;
                default:
                    return !1
            }
        }

        function ai(e) {
            return (e.el._scale || {}).getPointPositionForValue ? function(e) {
                var t, n, i, r, o, a = e.el._scale,
                    s = a.options,
                    l = a.chart.data.labels.length,
                    c = e.fill,
                    u = [];
                if (!l) return null;
                for (t = s.ticks.reverse ? a.max : a.min, n = s.ticks.reverse ? a.min : a.max, i = a.getPointPositionForValue(0, t), r = 0; r < l; ++r) o = "start" === c || "end" === c ? a.getPointPositionForValue(r, "start" === c ? t : n) : a.getBasePosition(r), s.gridLines.circular && (o.cx = i.x, o.cy = i.y, o.angle = a.getIndexAngle(r) - Math.PI / 2), u.push(o);
                return u
            }(e) : function(e) {
                var t, n = e.el._model || {},
                    i = e.el._scale || {},
                    r = e.fill,
                    o = null;
                if (isFinite(r)) return null;
                if ("start" === r ? o = void 0 === n.scaleBottom ? i.bottom : n.scaleBottom : "end" === r ? o = void 0 === n.scaleTop ? i.top : n.scaleTop : void 0 !== n.scaleZero ? o = n.scaleZero : i.getBasePixel && (o = i.getBasePixel()), null != o) {
                    if (void 0 !== o.x && void 0 !== o.y) return o;
                    if (H.isFinite(o)) return {
                        x: (t = i.isHorizontal()) ? o : null,
                        y: t ? null : o
                    }
                }
                return null
            }(e)
        }

        function si(e, t, n) {
            var i, r = e[t].fill,
                o = [t];
            if (!n) return r;
            for (; !1 !== r && -1 === o.indexOf(r);) {
                if (!isFinite(r)) return r;
                if (!(i = e[r])) return !1;
                if (i.visible) return r;
                o.push(r), r = i.fill
            }
            return !1
        }

        function li(e) {
            var t = e.fill,
                n = "dataset";
            return !1 === t ? null : (isFinite(t) || (n = "boundary"), ri[n](e))
        }

        function ci(e) {
            return e && !e.skip
        }

        function ui(e, t, n, i, r) {
            var o, a, s, l;
            if (i && r) {
                for (e.moveTo(t[0].x, t[0].y), o = 1; o < i; ++o) H.canvas.lineTo(e, t[o - 1], t[o]);
                if (void 0 === n[0].angle)
                    for (e.lineTo(n[r - 1].x, n[r - 1].y), o = r - 1; o > 0; --o) H.canvas.lineTo(e, n[o], n[o - 1], !0);
                else
                    for (a = n[0].cx, s = n[0].cy, l = Math.sqrt(Math.pow(n[0].x - a, 2) + Math.pow(n[0].y - s, 2)), o = r - 1; o > 0; --o) e.arc(a, s, l, n[o].angle, n[o - 1].angle, !0)
            }
        }

        function di(e, t, n, i, r, o) {
            var a, s, l, c, u, d, h, f, p = t.length,
                g = i.spanGaps,
                m = [],
                v = [],
                y = 0,
                b = 0;
            for (e.beginPath(), a = 0, s = p; a < s; ++a) u = n(c = t[l = a % p]._view, l, i), d = ci(c), h = ci(u), o && void 0 === f && d && (s = p + (f = a + 1)), d && h ? (y = m.push(c), b = v.push(u)) : y && b && (g ? (d && m.push(c), h && v.push(u)) : (ui(e, m, v, y, b), y = b = 0, m = [], v = []));
            ui(e, m, v, y, b), e.closePath(), e.fillStyle = r, e.fill()
        }
        var hi = {
                id: "filler",
                afterDatasetsUpdate: function(e, t) {
                    var n, i, r, o, a = (e.data.datasets || []).length,
                        s = t.propagate,
                        l = [];
                    for (i = 0; i < a; ++i) o = null, (r = (n = e.getDatasetMeta(i)).dataset) && r._model && r instanceof ye.Line && (o = {
                        visible: e.isDatasetVisible(i),
                        fill: oi(r, i, a),
                        chart: e,
                        el: r
                    }), n.$filler = o, l.push(o);
                    for (i = 0; i < a; ++i)(o = l[i]) && (o.fill = si(l, i, s), o.boundary = ai(o), o.mapper = li(o))
                },
                beforeDatasetsDraw: function(e) {
                    var t, n, i, r, o, a, s, l = e._getSortedVisibleDatasetMetas(),
                        c = e.ctx;
                    for (n = l.length - 1; n >= 0; --n)(t = l[n].$filler) && t.visible && (r = (i = t.el)._view, o = i._children || [], a = t.mapper, s = r.backgroundColor || N.global.defaultColor, a && s && o.length && (H.canvas.clipArea(c, e.chartArea), di(c, o, a, r, s, i._loop), H.canvas.unclipArea(c)))
                }
            },
            fi = H.rtl.getRtlAdapter,
            pi = H.noop,
            gi = H.valueOrDefault;

        function mi(e, t) {
            return e.usePointStyle && e.boxWidth > t ? t : e.boxWidth
        }
        N._set("global", {
            legend: {
                display: !0,
                position: "top",
                align: "center",
                fullWidth: !0,
                reverse: !1,
                weight: 1e3,
                onClick: function(e, t) {
                    var n = t.datasetIndex,
                        i = this.chart,
                        r = i.getDatasetMeta(n);
                    r.hidden = null === r.hidden ? !i.data.datasets[n].hidden : null, i.update()
                },
                onHover: null,
                onLeave: null,
                labels: {
                    boxWidth: 40,
                    padding: 10,
                    generateLabels: function(e) {
                        var t = e.data.datasets,
                            n = e.options.legend || {},
                            i = n.labels && n.labels.usePointStyle;
                        return e._getSortedDatasetMetas().map((function(n) {
                            var r = n.controller.getStyle(i ? 0 : void 0);
                            return {
                                text: t[n.index].label,
                                fillStyle: r.backgroundColor,
                                hidden: !e.isDatasetVisible(n.index),
                                lineCap: r.borderCapStyle,
                                lineDash: r.borderDash,
                                lineDashOffset: r.borderDashOffset,
                                lineJoin: r.borderJoinStyle,
                                lineWidth: r.borderWidth,
                                strokeStyle: r.borderColor,
                                pointStyle: r.pointStyle,
                                rotation: r.rotation,
                                datasetIndex: n.index
                            }
                        }), this)
                    }
                }
            },
            legendCallback: function(e) {
                var t, n, i, r = document.createElement("ul"),
                    o = e.data.datasets;
                for (r.setAttribute("class", e.id + "-legend"), t = 0, n = o.length; t < n; t++)(i = r.appendChild(document.createElement("li"))).appendChild(document.createElement("span")).style.backgroundColor = o[t].backgroundColor, o[t].label && i.appendChild(document.createTextNode(o[t].label));
                return r.outerHTML
            }
        });
        var vi = Y.extend({
            initialize: function(e) {
                H.extend(this, e), this.legendHitBoxes = [], this._hoveredItem = null, this.doughnutMode = !1
            },
            beforeUpdate: pi,
            update: function(e, t, n) {
                var i = this;
                return i.beforeUpdate(), i.maxWidth = e, i.maxHeight = t, i.margins = n, i.beforeSetDimensions(), i.setDimensions(), i.afterSetDimensions(), i.beforeBuildLabels(), i.buildLabels(), i.afterBuildLabels(), i.beforeFit(), i.fit(), i.afterFit(), i.afterUpdate(), i.minSize
            },
            afterUpdate: pi,
            beforeSetDimensions: pi,
            setDimensions: function() {
                var e = this;
                e.isHorizontal() ? (e.width = e.maxWidth, e.left = 0, e.right = e.width) : (e.height = e.maxHeight, e.top = 0, e.bottom = e.height), e.paddingLeft = 0, e.paddingTop = 0, e.paddingRight = 0, e.paddingBottom = 0, e.minSize = {
                    width: 0,
                    height: 0
                }
            },
            afterSetDimensions: pi,
            beforeBuildLabels: pi,
            buildLabels: function() {
                var e = this,
                    t = e.options.labels || {},
                    n = H.callback(t.generateLabels, [e.chart], e) || [];
                t.filter && (n = n.filter((function(n) {
                    return t.filter(n, e.chart.data)
                }))), e.options.reverse && n.reverse(), e.legendItems = n
            },
            afterBuildLabels: pi,
            beforeFit: pi,
            fit: function() {
                var e = this,
                    t = e.options,
                    n = t.labels,
                    i = t.display,
                    r = e.ctx,
                    o = H.options._parseFont(n),
                    a = o.size,
                    s = e.legendHitBoxes = [],
                    l = e.minSize,
                    c = e.isHorizontal();
                if (c ? (l.width = e.maxWidth, l.height = i ? 10 : 0) : (l.width = i ? 10 : 0, l.height = e.maxHeight), i) {
                    if (r.font = o.string, c) {
                        var u = e.lineWidths = [0],
                            d = 0;
                        r.textAlign = "left", r.textBaseline = "middle", H.each(e.legendItems, (function(e, t) {
                            var i = mi(n, a) + a / 2 + r.measureText(e.text).width;
                            (0 === t || u[u.length - 1] + i + 2 * n.padding > l.width) && (d += a + n.padding, u[u.length - (t > 0 ? 0 : 1)] = 0), s[t] = {
                                left: 0,
                                top: 0,
                                width: i,
                                height: a
                            }, u[u.length - 1] += i + n.padding
                        })), l.height += d
                    } else {
                        var h = n.padding,
                            f = e.columnWidths = [],
                            p = e.columnHeights = [],
                            g = n.padding,
                            m = 0,
                            v = 0;
                        H.each(e.legendItems, (function(e, t) {
                            var i = mi(n, a) + a / 2 + r.measureText(e.text).width;
                            t > 0 && v + a + 2 * h > l.height && (g += m + n.padding, f.push(m), p.push(v), m = 0, v = 0), m = Math.max(m, i), v += a + h, s[t] = {
                                left: 0,
                                top: 0,
                                width: i,
                                height: a
                            }
                        })), g += m, f.push(m), p.push(v), l.width += g
                    }
                    e.width = l.width, e.height = l.height
                } else e.width = l.width = e.height = l.height = 0
            },
            afterFit: pi,
            isHorizontal: function() {
                return "top" === this.options.position || "bottom" === this.options.position
            },
            draw: function() {
                var e = this,
                    t = e.options,
                    n = t.labels,
                    i = N.global,
                    r = i.defaultColor,
                    o = i.elements.line,
                    a = e.height,
                    s = e.columnHeights,
                    l = e.width,
                    c = e.lineWidths;
                if (t.display) {
                    var u, d = fi(t.rtl, e.left, e.minSize.width),
                        h = e.ctx,
                        f = gi(n.fontColor, i.defaultFontColor),
                        p = H.options._parseFont(n),
                        g = p.size;
                    h.textAlign = d.textAlign("left"), h.textBaseline = "middle", h.lineWidth = .5, h.strokeStyle = f, h.fillStyle = f, h.font = p.string;
                    var m = mi(n, g),
                        v = e.legendHitBoxes,
                        y = function(e, i) {
                            switch (t.align) {
                                case "start":
                                    return n.padding;
                                case "end":
                                    return e - i;
                                default:
                                    return (e - i + n.padding) / 2
                            }
                        },
                        b = e.isHorizontal();
                    u = b ? {
                        x: e.left + y(l, c[0]),
                        y: e.top + n.padding,
                        line: 0
                    } : {
                        x: e.left + n.padding,
                        y: e.top + y(a, s[0]),
                        line: 0
                    }, H.rtl.overrideTextDirection(e.ctx, t.textDirection);
                    var w = g + n.padding;
                    H.each(e.legendItems, (function(t, i) {
                        var f = h.measureText(t.text).width,
                            p = m + g / 2 + f,
                            x = u.x,
                            _ = u.y;
                        d.setWidth(e.minSize.width), b ? i > 0 && x + p + n.padding > e.left + e.minSize.width && (_ = u.y += w, u.line++, x = u.x = e.left + y(l, c[u.line])) : i > 0 && _ + w > e.top + e.minSize.height && (x = u.x = x + e.columnWidths[u.line] + n.padding, u.line++, _ = u.y = e.top + y(a, s[u.line]));
                        var C = d.x(x);
                        ! function(e, t, i) {
                            if (!(isNaN(m) || m <= 0)) {
                                h.save();
                                var a = gi(i.lineWidth, o.borderWidth);
                                if (h.fillStyle = gi(i.fillStyle, r), h.lineCap = gi(i.lineCap, o.borderCapStyle), h.lineDashOffset = gi(i.lineDashOffset, o.borderDashOffset), h.lineJoin = gi(i.lineJoin, o.borderJoinStyle), h.lineWidth = a, h.strokeStyle = gi(i.strokeStyle, r), h.setLineDash && h.setLineDash(gi(i.lineDash, o.borderDash)), n && n.usePointStyle) {
                                    var s = m * Math.SQRT2 / 2,
                                        l = d.xPlus(e, m / 2),
                                        c = t + g / 2;
                                    H.canvas.drawPoint(h, i.pointStyle, s, l, c, i.rotation)
                                } else h.fillRect(d.leftForLtr(e, m), t, m, g), 0 !== a && h.strokeRect(d.leftForLtr(e, m), t, m, g);
                                h.restore()
                            }
                        }(C, _, t), v[i].left = d.leftForLtr(C, v[i].width), v[i].top = _,
                            function(e, t, n, i) {
                                var r = g / 2,
                                    o = d.xPlus(e, m + r),
                                    a = t + r;
                                h.fillText(n.text, o, a), n.hidden && (h.beginPath(), h.lineWidth = 2, h.moveTo(o, a), h.lineTo(d.xPlus(o, i), a), h.stroke())
                            }(C, _, t, f), b ? u.x += p + n.padding : u.y += w
                    })), H.rtl.restoreTextDirection(e.ctx, t.textDirection)
                }
            },
            _getLegendItemAt: function(e, t) {
                var n, i, r, o = this;
                if (e >= o.left && e <= o.right && t >= o.top && t <= o.bottom)
                    for (r = o.legendHitBoxes, n = 0; n < r.length; ++n)
                        if (e >= (i = r[n]).left && e <= i.left + i.width && t >= i.top && t <= i.top + i.height) return o.legendItems[n];
                return null
            },
            handleEvent: function(e) {
                var t, n = this,
                    i = n.options,
                    r = "mouseup" === e.type ? "click" : e.type;
                if ("mousemove" === r) {
                    if (!i.onHover && !i.onLeave) return
                } else {
                    if ("click" !== r) return;
                    if (!i.onClick) return
                }
                t = n._getLegendItemAt(e.x, e.y), "click" === r ? t && i.onClick && i.onClick.call(n, e.native, t) : (i.onLeave && t !== n._hoveredItem && (n._hoveredItem && i.onLeave.call(n, e.native, n._hoveredItem), n._hoveredItem = t), i.onHover && t && i.onHover.call(n, e.native, t))
            }
        });

        function yi(e, t) {
            var n = new vi({
                ctx: e.ctx,
                options: t,
                chart: e
            });
            ut.configure(e, n, t), ut.addBox(e, n), e.legend = n
        }
        var bi = {
                id: "legend",
                _element: vi,
                beforeInit: function(e) {
                    var t = e.options.legend;
                    t && yi(e, t)
                },
                beforeUpdate: function(e) {
                    var t = e.options.legend,
                        n = e.legend;
                    t ? (H.mergeIf(t, N.global.legend), n ? (ut.configure(e, n, t), n.options = t) : yi(e, t)) : n && (ut.removeBox(e, n), delete e.legend)
                },
                afterEvent: function(e, t) {
                    var n = e.legend;
                    n && n.handleEvent(t)
                }
            },
            wi = H.noop;
        N._set("global", {
            title: {
                display: !1,
                fontStyle: "bold",
                fullWidth: !0,
                padding: 10,
                position: "top",
                text: "",
                weight: 2e3
            }
        });
        var xi = Y.extend({
            initialize: function(e) {
                H.extend(this, e), this.legendHitBoxes = []
            },
            beforeUpdate: wi,
            update: function(e, t, n) {
                var i = this;
                return i.beforeUpdate(), i.maxWidth = e, i.maxHeight = t, i.margins = n, i.beforeSetDimensions(), i.setDimensions(), i.afterSetDimensions(), i.beforeBuildLabels(), i.buildLabels(), i.afterBuildLabels(), i.beforeFit(), i.fit(), i.afterFit(), i.afterUpdate(), i.minSize
            },
            afterUpdate: wi,
            beforeSetDimensions: wi,
            setDimensions: function() {
                var e = this;
                e.isHorizontal() ? (e.width = e.maxWidth, e.left = 0, e.right = e.width) : (e.height = e.maxHeight, e.top = 0, e.bottom = e.height), e.paddingLeft = 0, e.paddingTop = 0, e.paddingRight = 0, e.paddingBottom = 0, e.minSize = {
                    width: 0,
                    height: 0
                }
            },
            afterSetDimensions: wi,
            beforeBuildLabels: wi,
            buildLabels: wi,
            afterBuildLabels: wi,
            beforeFit: wi,
            fit: function() {
                var e, t = this,
                    n = t.options,
                    i = t.minSize = {},
                    r = t.isHorizontal();
                n.display ? (e = (H.isArray(n.text) ? n.text.length : 1) * H.options._parseFont(n).lineHeight + 2 * n.padding, t.width = i.width = r ? t.maxWidth : e, t.height = i.height = r ? e : t.maxHeight) : t.width = i.width = t.height = i.height = 0
            },
            afterFit: wi,
            isHorizontal: function() {
                var e = this.options.position;
                return "top" === e || "bottom" === e
            },
            draw: function() {
                var e = this,
                    t = e.ctx,
                    n = e.options;
                if (n.display) {
                    var i, r, o, a = H.options._parseFont(n),
                        s = a.lineHeight,
                        l = s / 2 + n.padding,
                        c = 0,
                        u = e.top,
                        d = e.left,
                        h = e.bottom,
                        f = e.right;
                    t.fillStyle = H.valueOrDefault(n.fontColor, N.global.defaultFontColor), t.font = a.string, e.isHorizontal() ? (r = d + (f - d) / 2, o = u + l, i = f - d) : (r = "left" === n.position ? d + l : f - l, o = u + (h - u) / 2, i = h - u, c = Math.PI * ("left" === n.position ? -.5 : .5)), t.save(), t.translate(r, o), t.rotate(c), t.textAlign = "center", t.textBaseline = "middle";
                    var p = n.text;
                    if (H.isArray(p))
                        for (var g = 0, m = 0; m < p.length; ++m) t.fillText(p[m], 0, g, i), g += s;
                    else t.fillText(p, 0, 0, i);
                    t.restore()
                }
            }
        });

        function _i(e, t) {
            var n = new xi({
                ctx: e.ctx,
                options: t,
                chart: e
            });
            ut.configure(e, n, t), ut.addBox(e, n), e.titleBlock = n
        }
        var Ci = {},
            ki = hi,
            Si = bi,
            Ti = {
                id: "title",
                _element: xi,
                beforeInit: function(e) {
                    var t = e.options.title;
                    t && _i(e, t)
                },
                beforeUpdate: function(e) {
                    var t = e.options.title,
                        n = e.titleBlock;
                    t ? (H.mergeIf(t, N.global.title), n ? (ut.configure(e, n, t), n.options = t) : _i(e, t)) : n && (ut.removeBox(e, n), delete e.titleBlock)
                }
            };
        for (var Di in Ci.filler = ki, Ci.legend = Si, Ci.title = Ti, Yt.helpers = H,
                function() {
                    function e(e, t, n) {
                        var i;
                        return "string" == typeof e ? (i = parseInt(e, 10), -1 !== e.indexOf("%") && (i = i / 100 * t.parentNode[n])) : i = e, i
                    }

                    function t(e) {
                        return null != e && "none" !== e
                    }

                    function n(n, i, r) {
                        var o = document.defaultView,
                            a = H._getParentNode(n),
                            s = o.getComputedStyle(n)[i],
                            l = o.getComputedStyle(a)[i],
                            c = t(s),
                            u = t(l),
                            d = Number.POSITIVE_INFINITY;
                        return c || u ? Math.min(c ? e(s, n, r) : d, u ? e(l, a, r) : d) : "none"
                    }
                    H.where = function(e, t) {
                        if (H.isArray(e) && Array.prototype.filter) return e.filter(t);
                        var n = [];
                        return H.each(e, (function(e) {
                            t(e) && n.push(e)
                        })), n
                    }, H.findIndex = Array.prototype.findIndex ? function(e, t, n) {
                        return e.findIndex(t, n)
                    } : function(e, t, n) {
                        n = void 0 === n ? e : n;
                        for (var i = 0, r = e.length; i < r; ++i)
                            if (t.call(n, e[i], i, e)) return i;
                        return -1
                    }, H.findNextWhere = function(e, t, n) {
                        H.isNullOrUndef(n) && (n = -1);
                        for (var i = n + 1; i < e.length; i++) {
                            var r = e[i];
                            if (t(r)) return r
                        }
                    }, H.findPreviousWhere = function(e, t, n) {
                        H.isNullOrUndef(n) && (n = e.length);
                        for (var i = n - 1; i >= 0; i--) {
                            var r = e[i];
                            if (t(r)) return r
                        }
                    }, H.isNumber = function(e) {
                        return !isNaN(parseFloat(e)) && isFinite(e)
                    }, H.almostEquals = function(e, t, n) {
                        return Math.abs(e - t) < n
                    }, H.almostWhole = function(e, t) {
                        var n = Math.round(e);
                        return n - t <= e && n + t >= e
                    }, H.max = function(e) {
                        return e.reduce((function(e, t) {
                            return isNaN(t) ? e : Math.max(e, t)
                        }), Number.NEGATIVE_INFINITY)
                    }, H.min = function(e) {
                        return e.reduce((function(e, t) {
                            return isNaN(t) ? e : Math.min(e, t)
                        }), Number.POSITIVE_INFINITY)
                    }, H.sign = Math.sign ? function(e) {
                        return Math.sign(e)
                    } : function(e) {
                        return 0 == (e = +e) || isNaN(e) ? e : e > 0 ? 1 : -1
                    }, H.toRadians = function(e) {
                        return e * (Math.PI / 180)
                    }, H.toDegrees = function(e) {
                        return e * (180 / Math.PI)
                    }, H._decimalPlaces = function(e) {
                        if (H.isFinite(e)) {
                            for (var t = 1, n = 0; Math.round(e * t) / t !== e;) t *= 10, n++;
                            return n
                        }
                    }, H.getAngleFromPoint = function(e, t) {
                        var n = t.x - e.x,
                            i = t.y - e.y,
                            r = Math.sqrt(n * n + i * i),
                            o = Math.atan2(i, n);
                        return o < -.5 * Math.PI && (o += 2 * Math.PI), {
                            angle: o,
                            distance: r
                        }
                    }, H.distanceBetweenPoints = function(e, t) {
                        return Math.sqrt(Math.pow(t.x - e.x, 2) + Math.pow(t.y - e.y, 2))
                    }, H.aliasPixel = function(e) {
                        return e % 2 == 0 ? 0 : .5
                    }, H._alignPixel = function(e, t, n) {
                        var i = e.currentDevicePixelRatio,
                            r = n / 2;
                        return Math.round((t - r) * i) / i + r
                    }, H.splineCurve = function(e, t, n, i) {
                        var r = e.skip ? t : e,
                            o = t,
                            a = n.skip ? t : n,
                            s = Math.sqrt(Math.pow(o.x - r.x, 2) + Math.pow(o.y - r.y, 2)),
                            l = Math.sqrt(Math.pow(a.x - o.x, 2) + Math.pow(a.y - o.y, 2)),
                            c = s / (s + l),
                            u = l / (s + l),
                            d = i * (c = isNaN(c) ? 0 : c),
                            h = i * (u = isNaN(u) ? 0 : u);
                        return {
                            previous: {
                                x: o.x - d * (a.x - r.x),
                                y: o.y - d * (a.y - r.y)
                            },
                            next: {
                                x: o.x + h * (a.x - r.x),
                                y: o.y + h * (a.y - r.y)
                            }
                        }
                    }, H.EPSILON = Number.EPSILON || 1e-14, H.splineCurveMonotone = function(e) {
                        var t, n, i, r, o, a, s, l, c, u = (e || []).map((function(e) {
                                return {
                                    model: e._model,
                                    deltaK: 0,
                                    mK: 0
                                }
                            })),
                            d = u.length;
                        for (t = 0; t < d; ++t)
                            if (!(i = u[t]).model.skip) {
                                if (n = t > 0 ? u[t - 1] : null, (r = t < d - 1 ? u[t + 1] : null) && !r.model.skip) {
                                    var h = r.model.x - i.model.x;
                                    i.deltaK = 0 !== h ? (r.model.y - i.model.y) / h : 0
                                }!n || n.model.skip ? i.mK = i.deltaK : !r || r.model.skip ? i.mK = n.deltaK : this.sign(n.deltaK) !== this.sign(i.deltaK) ? i.mK = 0 : i.mK = (n.deltaK + i.deltaK) / 2
                            }
                        for (t = 0; t < d - 1; ++t) i = u[t], r = u[t + 1], i.model.skip || r.model.skip || (H.almostEquals(i.deltaK, 0, this.EPSILON) ? i.mK = r.mK = 0 : (o = i.mK / i.deltaK, a = r.mK / i.deltaK, (l = Math.pow(o, 2) + Math.pow(a, 2)) <= 9 || (s = 3 / Math.sqrt(l), i.mK = o * s * i.deltaK, r.mK = a * s * i.deltaK)));
                        for (t = 0; t < d; ++t)(i = u[t]).model.skip || (n = t > 0 ? u[t - 1] : null, r = t < d - 1 ? u[t + 1] : null, n && !n.model.skip && (c = (i.model.x - n.model.x) / 3, i.model.controlPointPreviousX = i.model.x - c, i.model.controlPointPreviousY = i.model.y - c * i.mK), r && !r.model.skip && (c = (r.model.x - i.model.x) / 3, i.model.controlPointNextX = i.model.x + c, i.model.controlPointNextY = i.model.y + c * i.mK))
                    }, H.nextItem = function(e, t, n) {
                        return n ? t >= e.length - 1 ? e[0] : e[t + 1] : t >= e.length - 1 ? e[e.length - 1] : e[t + 1]
                    }, H.previousItem = function(e, t, n) {
                        return n ? t <= 0 ? e[e.length - 1] : e[t - 1] : t <= 0 ? e[0] : e[t - 1]
                    }, H.niceNum = function(e, t) {
                        var n = Math.floor(H.log10(e)),
                            i = e / Math.pow(10, n);
                        return (t ? i < 1.5 ? 1 : i < 3 ? 2 : i < 7 ? 5 : 10 : i <= 1 ? 1 : i <= 2 ? 2 : i <= 5 ? 5 : 10) * Math.pow(10, n)
                    }, H.requestAnimFrame = "undefined" == typeof window ? function(e) {
                        e()
                    } : window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function(e) {
                        return window.setTimeout(e, 1e3 / 60)
                    }, H.getRelativePosition = function(e, t) {
                        var n, i, r = e.originalEvent || e,
                            o = e.target || e.srcElement,
                            a = o.getBoundingClientRect(),
                            s = r.touches;
                        s && s.length > 0 ? (n = s[0].clientX, i = s[0].clientY) : (n = r.clientX, i = r.clientY);
                        var l = parseFloat(H.getStyle(o, "padding-left")),
                            c = parseFloat(H.getStyle(o, "padding-top")),
                            u = parseFloat(H.getStyle(o, "padding-right")),
                            d = parseFloat(H.getStyle(o, "padding-bottom")),
                            h = a.right - a.left - l - u,
                            f = a.bottom - a.top - c - d;
                        return {
                            x: n = Math.round((n - a.left - l) / h * o.width / t.currentDevicePixelRatio),
                            y: i = Math.round((i - a.top - c) / f * o.height / t.currentDevicePixelRatio)
                        }
                    }, H.getConstraintWidth = function(e) {
                        return n(e, "max-width", "clientWidth")
                    }, H.getConstraintHeight = function(e) {
                        return n(e, "max-height", "clientHeight")
                    }, H._calculatePadding = function(e, t, n) {
                        return (t = H.getStyle(e, t)).indexOf("%") > -1 ? n * parseInt(t, 10) / 100 : parseInt(t, 10)
                    }, H._getParentNode = function(e) {
                        var t = e.parentNode;
                        return t && "[object ShadowRoot]" === t.toString() && (t = t.host), t
                    }, H.getMaximumWidth = function(e) {
                        var t = H._getParentNode(e);
                        if (!t) return e.clientWidth;
                        var n = t.clientWidth,
                            i = n - H._calculatePadding(t, "padding-left", n) - H._calculatePadding(t, "padding-right", n),
                            r = H.getConstraintWidth(e);
                        return isNaN(r) ? i : Math.min(i, r)
                    }, H.getMaximumHeight = function(e) {
                        var t = H._getParentNode(e);
                        if (!t) return e.clientHeight;
                        var n = t.clientHeight,
                            i = n - H._calculatePadding(t, "padding-top", n) - H._calculatePadding(t, "padding-bottom", n),
                            r = H.getConstraintHeight(e);
                        return isNaN(r) ? i : Math.min(i, r)
                    }, H.getStyle = function(e, t) {
                        return e.currentStyle ? e.currentStyle[t] : document.defaultView.getComputedStyle(e, null).getPropertyValue(t)
                    }, H.retinaScale = function(e, t) {
                        var n = e.currentDevicePixelRatio = t || "undefined" != typeof window && window.devicePixelRatio || 1;
                        if (1 !== n) {
                            var i = e.canvas,
                                r = e.height,
                                o = e.width;
                            i.height = r * n, i.width = o * n, e.ctx.scale(n, n), i.style.height || i.style.width || (i.style.height = r + "px", i.style.width = o + "px")
                        }
                    }, H.fontString = function(e, t, n) {
                        return t + " " + e + "px " + n
                    }, H.longestText = function(e, t, n, i) {
                        var r = (i = i || {}).data = i.data || {},
                            o = i.garbageCollect = i.garbageCollect || [];
                        i.font !== t && (r = i.data = {}, o = i.garbageCollect = [], i.font = t), e.font = t;
                        var a, s, l, c, u, d = 0,
                            h = n.length;
                        for (a = 0; a < h; a++)
                            if (null != (c = n[a]) && !0 !== H.isArray(c)) d = H.measureText(e, r, o, d, c);
                            else if (H.isArray(c))
                            for (s = 0, l = c.length; s < l; s++) null == (u = c[s]) || H.isArray(u) || (d = H.measureText(e, r, o, d, u));
                        var f = o.length / 2;
                        if (f > n.length) {
                            for (a = 0; a < f; a++) delete r[o[a]];
                            o.splice(0, f)
                        }
                        return d
                    }, H.measureText = function(e, t, n, i, r) {
                        var o = t[r];
                        return o || (o = t[r] = e.measureText(r).width, n.push(r)), o > i && (i = o), i
                    }, H.numberOfLabelLines = function(e) {
                        var t = 1;
                        return H.each(e, (function(e) {
                            H.isArray(e) && e.length > t && (t = e.length)
                        })), t
                    }, H.color = _ ? function(e) {
                        return e instanceof CanvasGradient && (e = N.global.defaultColor), _(e)
                    } : function(e) {
                        return console.error("Color.js not found!"), e
                    }, H.getHoverColor = function(e) {
                        return e instanceof CanvasPattern || e instanceof CanvasGradient ? e : H.color(e).saturate(.5).darken(.1).rgbString()
                    }
                }(), Yt._adapters = Qt, Yt.Animation = G, Yt.animationService = Q, Yt.controllers = Ye, Yt.DatasetController = te, Yt.defaults = N, Yt.Element = Y, Yt.elements = ye, Yt.Interaction = et, Yt.layouts = ut, Yt.platform = St, Yt.plugins = Tt, Yt.Scale = dn, Yt.scaleService = Dt, Yt.Ticks = Kt, Yt.Tooltip = jt, Yt.helpers.each(ni, (function(e, t) {
                    Yt.scaleService.registerScaleType(t, e, e._defaults)
                })), Ci) Ci.hasOwnProperty(Di) && Yt.plugins.register(Ci[Di]);
        Yt.platform.initialize();
        var Ei = Yt;
        return "undefined" != typeof window && (window.Chart = Yt), Yt.Chart = Yt, Yt.Legend = Ci.legend._element, Yt.Title = Ci.title._element, Yt.pluginService = Yt.plugins, Yt.PluginBase = Yt.Element.extend({}), Yt.canvasHelpers = Yt.helpers.canvas, Yt.layoutService = Yt.layouts, Yt.LinearScaleBase = mn, Yt.helpers.each(["Bar", "Bubble", "Doughnut", "Line", "PolarArea", "Radar", "Scatter"], (function(e) {
            Yt[e] = function(t, n) {
                return new Yt(t, Yt.helpers.merge(n || {}, {
                    type: e.charAt(0).toLowerCase() + e.slice(1)
                }))
            }
        })), Ei
    })),
    function(e) {
        "function" == typeof define && define.amd ? define([], e) : "object" == typeof exports ? module.exports = e() : window.noUiSlider = e()
    }((function() {
        "use strict";
        var e = "14.6.2";

        function t(e) {
            e.parentElement.removeChild(e)
        }

        function n(e) {
            return null != e
        }

        function i(e) {
            e.preventDefault()
        }

        function r(e) {
            return "number" == typeof e && !isNaN(e) && isFinite(e)
        }

        function o(e, t, n) {
            0 < n && (c(e, t), setTimeout((function() {
                u(e, t)
            }), n))
        }

        function a(e) {
            return Math.max(Math.min(e, 100), 0)
        }

        function s(e) {
            return Array.isArray(e) ? e : [e]
        }

        function l(e) {
            var t = (e = String(e)).split(".");
            return 1 < t.length ? t[1].length : 0
        }

        function c(e, t) {
            e.classList && !/\s/.test(t) ? e.classList.add(t) : e.className += " " + t
        }

        function u(e, t) {
            e.classList && !/\s/.test(t) ? e.classList.remove(t) : e.className = e.className.replace(new RegExp("(^|\\b)" + t.split(" ").join("|") + "(\\b|$)", "gi"), " ")
        }

        function d(e) {
            var t = void 0 !== window.pageXOffset,
                n = "CSS1Compat" === (e.compatMode || "");
            return {
                x: t ? window.pageXOffset : n ? e.documentElement.scrollLeft : e.body.scrollLeft,
                y: t ? window.pageYOffset : n ? e.documentElement.scrollTop : e.body.scrollTop
            }
        }

        function h(e, t) {
            return 100 / (t - e)
        }

        function f(e, t, n) {
            return 100 * t / (e[n + 1] - e[n])
        }

        function p(e, t) {
            for (var n = 1; e >= t[n];) n += 1;
            return n
        }

        function g(e, t, n) {
            var i;
            if ("number" == typeof t && (t = [t]), !Array.isArray(t)) throw new Error("noUiSlider (14.6.2): 'range' contains invalid value.");
            if (!r(i = "min" === e ? 0 : "max" === e ? 100 : parseFloat(e)) || !r(t[0])) throw new Error("noUiSlider (14.6.2): 'range' value isn't numeric.");
            n.xPct.push(i), n.xVal.push(t[0]), i ? n.xSteps.push(!isNaN(t[1]) && t[1]) : isNaN(t[1]) || (n.xSteps[0] = t[1]), n.xHighestCompleteStep.push(0)
        }

        function m(e, t, n) {
            if (t)
                if (n.xVal[e] !== n.xVal[e + 1]) {
                    n.xSteps[e] = f([n.xVal[e], n.xVal[e + 1]], t, 0) / h(n.xPct[e], n.xPct[e + 1]);
                    var i = (n.xVal[e + 1] - n.xVal[e]) / n.xNumSteps[e],
                        r = Math.ceil(Number(i.toFixed(3)) - 1),
                        o = n.xVal[e] + n.xNumSteps[e] * r;
                    n.xHighestCompleteStep[e] = o
                } else n.xSteps[e] = n.xHighestCompleteStep[e] = n.xVal[e]
        }

        function v(e, t, n) {
            var i;
            this.xPct = [], this.xVal = [], this.xSteps = [n || !1], this.xNumSteps = [!1], this.xHighestCompleteStep = [], this.snap = t;
            var r = [];
            for (i in e) e.hasOwnProperty(i) && r.push([e[i], i]);
            for (r.length && "object" == typeof r[0][0] ? r.sort((function(e, t) {
                    return e[0][0] - t[0][0]
                })) : r.sort((function(e, t) {
                    return e[0] - t[0]
                })), i = 0; i < r.length; i++) g(r[i][1], r[i][0], this);
            for (this.xNumSteps = this.xSteps.slice(0), i = 0; i < this.xNumSteps.length; i++) m(i, this.xNumSteps[i], this)
        }
        v.prototype.getDistance = function(e) {
            var t, n = [];
            for (t = 0; t < this.xNumSteps.length - 1; t++) {
                var i = this.xNumSteps[t];
                if (i && e / i % 1 != 0) throw new Error("noUiSlider (14.6.2): 'limit', 'margin' and 'padding' of " + this.xPct[t] + "% range must be divisible by step.");
                n[t] = f(this.xVal, e, t)
            }
            return n
        }, v.prototype.getAbsoluteDistance = function(e, t, n) {
            var i, r = 0;
            if (e < this.xPct[this.xPct.length - 1])
                for (; e > this.xPct[r + 1];) r++;
            else e === this.xPct[this.xPct.length - 1] && (r = this.xPct.length - 2);
            n || e !== this.xPct[r + 1] || r++;
            var o = 1,
                a = t[r],
                s = 0,
                l = 0,
                c = 0,
                u = 0;
            for (i = n ? (e - this.xPct[r]) / (this.xPct[r + 1] - this.xPct[r]) : (this.xPct[r + 1] - e) / (this.xPct[r + 1] - this.xPct[r]); 0 < a;) s = this.xPct[r + 1 + u] - this.xPct[r + u], 100 < t[r + u] * o + 100 - 100 * i ? (l = s * i, o = (a - 100 * i) / t[r + u], i = 1) : (l = t[r + u] * s / 100 * o, o = 0), n ? (c -= l, 1 <= this.xPct.length + u && u--) : (c += l, 1 <= this.xPct.length - u && u++), a = t[r + u] * o;
            return e + c
        }, v.prototype.toStepping = function(e) {
            return function(e, t, n) {
                if (n >= e.slice(-1)[0]) return 100;
                var i, r, o = p(n, e),
                    a = e[o - 1],
                    s = e[o],
                    l = t[o - 1],
                    c = t[o];
                return l + (r = n, f(i = [a, s], i[0] < 0 ? r + Math.abs(i[0]) : r - i[0], 0) / h(l, c))
            }(this.xVal, this.xPct, e)
        }, v.prototype.fromStepping = function(e) {
            return function(e, t, n) {
                if (100 <= n) return e.slice(-1)[0];
                var i, r = p(n, t),
                    o = e[r - 1],
                    a = e[r],
                    s = t[r - 1];
                return i = [o, a], (n - s) * h(s, t[r]) * (i[1] - i[0]) / 100 + i[0]
            }(this.xVal, this.xPct, e)
        }, v.prototype.getStep = function(e) {
            return function(e, t, n, i) {
                if (100 === i) return i;
                var r, o, a = p(i, e),
                    s = e[a - 1],
                    l = e[a];
                return n ? (l - s) / 2 < i - s ? l : s : t[a - 1] ? e[a - 1] + (r = i - e[a - 1], o = t[a - 1], Math.round(r / o) * o) : i
            }(this.xPct, this.xSteps, this.snap, e)
        }, v.prototype.getDefaultStep = function(e, t, n) {
            var i = p(e, this.xPct);
            return (100 === e || t && e === this.xPct[i - 1]) && (i = Math.max(i - 1, 1)), (this.xVal[i] - this.xVal[i - 1]) / n
        }, v.prototype.getNearbySteps = function(e) {
            var t = p(e, this.xPct);
            return {
                stepBefore: {
                    startValue: this.xVal[t - 2],
                    step: this.xNumSteps[t - 2],
                    highestStep: this.xHighestCompleteStep[t - 2]
                },
                thisStep: {
                    startValue: this.xVal[t - 1],
                    step: this.xNumSteps[t - 1],
                    highestStep: this.xHighestCompleteStep[t - 1]
                },
                stepAfter: {
                    startValue: this.xVal[t],
                    step: this.xNumSteps[t],
                    highestStep: this.xHighestCompleteStep[t]
                }
            }
        }, v.prototype.countStepDecimals = function() {
            var e = this.xNumSteps.map(l);
            return Math.max.apply(null, e)
        }, v.prototype.convert = function(e) {
            return this.getStep(this.toStepping(e))
        };
        var y = {
                to: function(e) {
                    return void 0 !== e && e.toFixed(2)
                },
                from: Number
            },
            b = {
                target: "target",
                base: "base",
                origin: "origin",
                handle: "handle",
                handleLower: "handle-lower",
                handleUpper: "handle-upper",
                touchArea: "touch-area",
                horizontal: "horizontal",
                vertical: "vertical",
                background: "background",
                connect: "connect",
                connects: "connects",
                ltr: "ltr",
                rtl: "rtl",
                textDirectionLtr: "txt-dir-ltr",
                textDirectionRtl: "txt-dir-rtl",
                draggable: "draggable",
                drag: "state-drag",
                tap: "state-tap",
                active: "active",
                tooltip: "tooltip",
                pips: "pips",
                pipsHorizontal: "pips-horizontal",
                pipsVertical: "pips-vertical",
                marker: "marker",
                markerHorizontal: "marker-horizontal",
                markerVertical: "marker-vertical",
                markerNormal: "marker-normal",
                markerLarge: "marker-large",
                markerSub: "marker-sub",
                value: "value",
                valueHorizontal: "value-horizontal",
                valueVertical: "value-vertical",
                valueNormal: "value-normal",
                valueLarge: "value-large",
                valueSub: "value-sub"
            };

        function w(e) {
            if ("object" == typeof(t = e) && "function" == typeof t.to && "function" == typeof t.from) return !0;
            var t;
            throw new Error("noUiSlider (14.6.2): 'format' requires 'to' and 'from' methods.")
        }

        function x(e, t) {
            if (!r(t)) throw new Error("noUiSlider (14.6.2): 'step' is not numeric.");
            e.singleStep = t
        }

        function _(e, t) {
            if (!r(t)) throw new Error("noUiSlider (14.6.2): 'keyboardPageMultiplier' is not numeric.");
            e.keyboardPageMultiplier = t
        }

        function C(e, t) {
            if (!r(t)) throw new Error("noUiSlider (14.6.2): 'keyboardDefaultStep' is not numeric.");
            e.keyboardDefaultStep = t
        }

        function k(e, t) {
            if ("object" != typeof t || Array.isArray(t)) throw new Error("noUiSlider (14.6.2): 'range' is not an object.");
            if (void 0 === t.min || void 0 === t.max) throw new Error("noUiSlider (14.6.2): Missing 'min' or 'max' in 'range'.");
            if (t.min === t.max) throw new Error("noUiSlider (14.6.2): 'range' 'min' and 'max' cannot be equal.");
            e.spectrum = new v(t, e.snap, e.singleStep)
        }

        function S(e, t) {
            if (t = s(t), !Array.isArray(t) || !t.length) throw new Error("noUiSlider (14.6.2): 'start' option is incorrect.");
            e.handles = t.length, e.start = t
        }

        function T(e, t) {
            if ("boolean" != typeof(e.snap = t)) throw new Error("noUiSlider (14.6.2): 'snap' option must be a boolean.")
        }

        function D(e, t) {
            if ("boolean" != typeof(e.animate = t)) throw new Error("noUiSlider (14.6.2): 'animate' option must be a boolean.")
        }

        function E(e, t) {
            if ("number" != typeof(e.animationDuration = t)) throw new Error("noUiSlider (14.6.2): 'animationDuration' option must be a number.")
        }

        function A(e, t) {
            var n, i = [!1];
            if ("lower" === t ? t = [!0, !1] : "upper" === t && (t = [!1, !0]), !0 === t || !1 === t) {
                for (n = 1; n < e.handles; n++) i.push(t);
                i.push(!1)
            } else {
                if (!Array.isArray(t) || !t.length || t.length !== e.handles + 1) throw new Error("noUiSlider (14.6.2): 'connect' option doesn't match handle count.");
                i = t
            }
            e.connect = i
        }

        function M(e, t) {
            switch (t) {
                case "horizontal":
                    e.ort = 0;
                    break;
                case "vertical":
                    e.ort = 1;
                    break;
                default:
                    throw new Error("noUiSlider (14.6.2): 'orientation' option is invalid.")
            }
        }

        function O(e, t) {
            if (!r(t)) throw new Error("noUiSlider (14.6.2): 'margin' option must be numeric.");
            0 !== t && (e.margin = e.spectrum.getDistance(t))
        }

        function I(e, t) {
            if (!r(t)) throw new Error("noUiSlider (14.6.2): 'limit' option must be numeric.");
            if (e.limit = e.spectrum.getDistance(t), !e.limit || e.handles < 2) throw new Error("noUiSlider (14.6.2): 'limit' option is only supported on linear sliders with 2 or more handles.")
        }

        function P(e, t) {
            var n;
            if (!r(t) && !Array.isArray(t)) throw new Error("noUiSlider (14.6.2): 'padding' option must be numeric or array of exactly 2 numbers.");
            if (Array.isArray(t) && 2 !== t.length && !r(t[0]) && !r(t[1])) throw new Error("noUiSlider (14.6.2): 'padding' option must be numeric or array of exactly 2 numbers.");
            if (0 !== t) {
                for (Array.isArray(t) || (t = [t, t]), e.padding = [e.spectrum.getDistance(t[0]), e.spectrum.getDistance(t[1])], n = 0; n < e.spectrum.xNumSteps.length - 1; n++)
                    if (e.padding[0][n] < 0 || e.padding[1][n] < 0) throw new Error("noUiSlider (14.6.2): 'padding' option must be a positive number(s).");
                var i = t[0] + t[1],
                    o = e.spectrum.xVal[0];
                if (1 < i / (e.spectrum.xVal[e.spectrum.xVal.length - 1] - o)) throw new Error("noUiSlider (14.6.2): 'padding' option must not exceed 100% of the range.")
            }
        }

        function L(e, t) {
            switch (t) {
                case "ltr":
                    e.dir = 0;
                    break;
                case "rtl":
                    e.dir = 1;
                    break;
                default:
                    throw new Error("noUiSlider (14.6.2): 'direction' option was not recognized.")
            }
        }

        function F(e, t) {
            if ("string" != typeof t) throw new Error("noUiSlider (14.6.2): 'behaviour' must be a string containing options.");
            var n = 0 <= t.indexOf("tap"),
                i = 0 <= t.indexOf("drag"),
                r = 0 <= t.indexOf("fixed"),
                o = 0 <= t.indexOf("snap"),
                a = 0 <= t.indexOf("hover"),
                s = 0 <= t.indexOf("unconstrained");
            if (r) {
                if (2 !== e.handles) throw new Error("noUiSlider (14.6.2): 'fixed' behaviour must be used with 2 handles");
                O(e, e.start[1] - e.start[0])
            }
            if (s && (e.margin || e.limit)) throw new Error("noUiSlider (14.6.2): 'unconstrained' behaviour cannot be used with margin or limit");
            e.events = {
                tap: n || o,
                drag: i,
                fixed: r,
                snap: o,
                hover: a,
                unconstrained: s
            }
        }

        function N(e, t) {
            if (!1 !== t)
                if (!0 === t) {
                    e.tooltips = [];
                    for (var n = 0; n < e.handles; n++) e.tooltips.push(!0)
                } else {
                    if (e.tooltips = s(t), e.tooltips.length !== e.handles) throw new Error("noUiSlider (14.6.2): must pass a formatter for all handles.");
                    e.tooltips.forEach((function(e) {
                        if ("boolean" != typeof e && ("object" != typeof e || "function" != typeof e.to)) throw new Error("noUiSlider (14.6.2): 'tooltips' must be passed a formatter or 'false'.")
                    }))
                }
        }

        function R(e, t) {
            w(e.ariaFormat = t)
        }

        function j(e, t) {
            w(e.format = t)
        }

        function $(e, t) {
            if ("boolean" != typeof(e.keyboardSupport = t)) throw new Error("noUiSlider (14.6.2): 'keyboardSupport' option must be a boolean.")
        }

        function z(e, t) {
            e.documentElement = t
        }

        function H(e, t) {
            if ("string" != typeof t && !1 !== t) throw new Error("noUiSlider (14.6.2): 'cssPrefix' must be a string or `false`.");
            e.cssPrefix = t
        }

        function B(e, t) {
            if ("object" != typeof t) throw new Error("noUiSlider (14.6.2): 'cssClasses' must be an object.");
            if ("string" == typeof e.cssPrefix)
                for (var n in e.cssClasses = {}, t) t.hasOwnProperty(n) && (e.cssClasses[n] = e.cssPrefix + t[n]);
            else e.cssClasses = t
        }

        function q(e) {
            var t = {
                    margin: 0,
                    limit: 0,
                    padding: 0,
                    animate: !0,
                    animationDuration: 300,
                    ariaFormat: y,
                    format: y
                },
                i = {
                    step: {
                        r: !1,
                        t: x
                    },
                    keyboardPageMultiplier: {
                        r: !1,
                        t: _
                    },
                    keyboardDefaultStep: {
                        r: !1,
                        t: C
                    },
                    start: {
                        r: !0,
                        t: S
                    },
                    connect: {
                        r: !0,
                        t: A
                    },
                    direction: {
                        r: !0,
                        t: L
                    },
                    snap: {
                        r: !1,
                        t: T
                    },
                    animate: {
                        r: !1,
                        t: D
                    },
                    animationDuration: {
                        r: !1,
                        t: E
                    },
                    range: {
                        r: !0,
                        t: k
                    },
                    orientation: {
                        r: !1,
                        t: M
                    },
                    margin: {
                        r: !1,
                        t: O
                    },
                    limit: {
                        r: !1,
                        t: I
                    },
                    padding: {
                        r: !1,
                        t: P
                    },
                    behaviour: {
                        r: !0,
                        t: F
                    },
                    ariaFormat: {
                        r: !1,
                        t: R
                    },
                    format: {
                        r: !1,
                        t: j
                    },
                    tooltips: {
                        r: !1,
                        t: N
                    },
                    keyboardSupport: {
                        r: !0,
                        t: $
                    },
                    documentElement: {
                        r: !1,
                        t: z
                    },
                    cssPrefix: {
                        r: !0,
                        t: H
                    },
                    cssClasses: {
                        r: !0,
                        t: B
                    }
                },
                r = {
                    connect: !1,
                    direction: "ltr",
                    behaviour: "tap",
                    orientation: "horizontal",
                    keyboardSupport: !0,
                    cssPrefix: "noUi-",
                    cssClasses: b,
                    keyboardPageMultiplier: 5,
                    keyboardDefaultStep: 10
                };
            e.format && !e.ariaFormat && (e.ariaFormat = e.format), Object.keys(i).forEach((function(o) {
                if (!n(e[o]) && void 0 === r[o]) {
                    if (i[o].r) throw new Error("noUiSlider (14.6.2): '" + o + "' is required.");
                    return !0
                }
                i[o].t(t, n(e[o]) ? e[o] : r[o])
            })), t.pips = e.pips;
            var o = document.createElement("div"),
                a = void 0 !== o.style.msTransform,
                s = void 0 !== o.style.transform;
            return t.transformRule = s ? "transform" : a ? "msTransform" : "webkitTransform", t.style = [
                ["left", "top"],
                ["right", "bottom"]
            ][t.dir][t.ort], t
        }
        return {
            __spectrum: v,
            version: e,
            cssClasses: b,
            create: function(e, n) {
                if (!e || !e.nodeName) throw new Error("noUiSlider (14.6.2): create requires a single element, got: " + e);
                if (e.noUiSlider) throw new Error("noUiSlider (14.6.2): Slider was already initialized.");
                var r = function(e, n, r) {
                    var l, h, f, p, g, m, v, y, b = window.navigator.pointerEnabled ? {
                            start: "pointerdown",
                            move: "pointermove",
                            end: "pointerup"
                        } : window.navigator.msPointerEnabled ? {
                            start: "MSPointerDown",
                            move: "MSPointerMove",
                            end: "MSPointerUp"
                        } : {
                            start: "mousedown touchstart",
                            move: "mousemove touchmove",
                            end: "mouseup touchend"
                        },
                        w = window.CSS && CSS.supports && CSS.supports("touch-action", "none") && function() {
                            var e = !1;
                            try {
                                var t = Object.defineProperty({}, "passive", {
                                    get: function() {
                                        e = !0
                                    }
                                });
                                window.addEventListener("test", null, t)
                            } catch (e) {}
                            return e
                        }(),
                        x = e,
                        _ = n.spectrum,
                        C = [],
                        k = [],
                        S = [],
                        T = 0,
                        D = {},
                        E = e.ownerDocument,
                        A = n.documentElement || E.documentElement,
                        M = E.body,
                        O = "rtl" === E.dir || 1 === n.ort ? 0 : 100;

                    function I(e, t) {
                        var n = E.createElement("div");
                        return t && c(n, t), e.appendChild(n), n
                    }

                    function P(e, t) {
                        var i = I(e, n.cssClasses.origin),
                            r = I(i, n.cssClasses.handle);
                        return I(r, n.cssClasses.touchArea), r.setAttribute("data-handle", t), n.keyboardSupport && (r.setAttribute("tabindex", "0"), r.addEventListener("keydown", (function(e) {
                            return function(e, t) {
                                if (N() || R(t)) return !1;
                                var i = ["Left", "Right"],
                                    r = ["Down", "Up"],
                                    o = ["PageDown", "PageUp"],
                                    a = ["Home", "End"];
                                n.dir && !n.ort ? i.reverse() : n.ort && !n.dir && (r.reverse(), o.reverse());
                                var s, l = e.key.replace("Arrow", ""),
                                    c = l === o[0],
                                    u = l === o[1],
                                    d = l === r[0] || l === i[0] || c,
                                    h = l === r[1] || l === i[1] || u,
                                    f = l === a[1];
                                if (!(d || h || l === a[0] || f)) return !0;
                                if (e.preventDefault(), h || d) {
                                    var p = n.keyboardPageMultiplier,
                                        g = d ? 0 : 1,
                                        m = ue(t)[g];
                                    if (null === m) return !1;
                                    !1 === m && (m = _.getDefaultStep(k[t], d, n.keyboardDefaultStep)), (u || c) && (m *= p), m = Math.max(m, 1e-7), m *= d ? -1 : 1, s = C[t] + m
                                } else s = f ? n.spectrum.xVal[n.spectrum.xVal.length - 1] : n.spectrum.xVal[0];
                                return oe(t, _.toStepping(s), !0, !0), Z("slide", t), Z("update", t), Z("change", t), Z("set", t), !1
                            }(e, t)
                        }))), r.setAttribute("role", "slider"), r.setAttribute("aria-orientation", n.ort ? "vertical" : "horizontal"), 0 === t ? c(r, n.cssClasses.handleLower) : t === n.handles - 1 && c(r, n.cssClasses.handleUpper), i
                    }

                    function L(e, t) {
                        return !!t && I(e, n.cssClasses.connect)
                    }

                    function F(e, t) {
                        return !!n.tooltips[t] && I(e.firstChild, n.cssClasses.tooltip)
                    }

                    function N() {
                        return x.hasAttribute("disabled")
                    }

                    function R(e) {
                        return h[e].hasAttribute("disabled")
                    }

                    function j() {
                        g && (J("update.tooltips"), g.forEach((function(e) {
                            e && t(e)
                        })), g = null)
                    }

                    function $() {
                        j(), g = h.map(F), K("update.tooltips", (function(e, t, i) {
                            if (g[t]) {
                                var r = e[t];
                                !0 !== n.tooltips[t] && (r = n.tooltips[t].to(i[t])), g[t].innerHTML = r
                            }
                        }))
                    }

                    function z(e, t, i) {
                        var r = E.createElement("div"),
                            o = [];
                        o[0] = n.cssClasses.valueNormal, o[1] = n.cssClasses.valueLarge, o[2] = n.cssClasses.valueSub;
                        var a = [];
                        a[0] = n.cssClasses.markerNormal, a[1] = n.cssClasses.markerLarge, a[2] = n.cssClasses.markerSub;
                        var s = [n.cssClasses.valueHorizontal, n.cssClasses.valueVertical],
                            l = [n.cssClasses.markerHorizontal, n.cssClasses.markerVertical];

                        function u(e, t) {
                            var i = t === n.cssClasses.value,
                                r = i ? o : a;
                            return t + " " + (i ? s : l)[n.ort] + " " + r[e]
                        }
                        return c(r, n.cssClasses.pips), c(r, 0 === n.ort ? n.cssClasses.pipsHorizontal : n.cssClasses.pipsVertical), Object.keys(e).forEach((function(o) {
                            ! function(e, o, a) {
                                if (-1 !== (a = t ? t(o, a) : a)) {
                                    var s = I(r, !1);
                                    s.className = u(a, n.cssClasses.marker), s.style[n.style] = e + "%", 0 < a && ((s = I(r, !1)).className = u(a, n.cssClasses.value), s.setAttribute("data-value", o), s.style[n.style] = e + "%", s.innerHTML = i.to(o))
                                }
                            }(o, e[o][0], e[o][1])
                        })), r
                    }

                    function H() {
                        p && (t(p), p = null)
                    }

                    function B(e) {
                        H();
                        var t, n, i, r, o, a, s, l, c, u = e.mode,
                            d = e.density || 1,
                            h = e.filter || !1,
                            f = function(e, t, n) {
                                if ("range" === e || "steps" === e) return _.xVal;
                                if ("count" === e) {
                                    if (t < 2) throw new Error("noUiSlider (14.6.2): 'values' (>= 2) required for mode 'count'.");
                                    var i = t - 1,
                                        r = 100 / i;
                                    for (t = []; i--;) t[i] = i * r;
                                    t.push(100), e = "positions"
                                }
                                return "positions" === e ? t.map((function(e) {
                                    return _.fromStepping(n ? _.getStep(e) : e)
                                })) : "values" === e ? n ? t.map((function(e) {
                                    return _.fromStepping(_.getStep(_.toStepping(e)))
                                })) : t : void 0
                            }(u, e.values || !1, e.stepped || !1),
                            g = (t = d, n = u, i = f, r = {}, o = _.xVal[0], a = _.xVal[_.xVal.length - 1], l = s = !1, c = 0, (i = i.slice().sort((function(e, t) {
                                return e - t
                            })).filter((function(e) {
                                return !this[e] && (this[e] = !0)
                            }), {}))[0] !== o && (i.unshift(o), s = !0), i[i.length - 1] !== a && (i.push(a), l = !0), i.forEach((function(e, o) {
                                var a, u, d, h, f, p, g, m, v, y, b = e,
                                    w = i[o + 1],
                                    x = "steps" === n;
                                if (x && (a = _.xNumSteps[o]), a || (a = w - b), !1 !== b)
                                    for (void 0 === w && (w = b), a = Math.max(a, 1e-7), u = b; u <= w; u = (u + a).toFixed(7) / 1) {
                                        for (m = (f = (h = _.toStepping(u)) - c) / t, y = f / (v = Math.round(m)), d = 1; d <= v; d += 1) r[(p = c + d * y).toFixed(5)] = [_.fromStepping(p), 0];
                                        g = -1 < i.indexOf(u) ? 1 : x ? 2 : 0, !o && s && u !== w && (g = 0), u === w && l || (r[h.toFixed(5)] = [u, g]), c = h
                                    }
                            })), r),
                            m = e.format || {
                                to: Math.round
                            };
                        return p = x.appendChild(z(g, h, m))
                    }

                    function W() {
                        var e = l.getBoundingClientRect(),
                            t = "offset" + ["Width", "Height"][n.ort];
                        return 0 === n.ort ? e.width || l[t] : e.height || l[t]
                    }

                    function U(e, t, i, r) {
                        var o = function(o) {
                                return !!(o = function(e, t, n) {
                                    var i, r, o = 0 === e.type.indexOf("touch"),
                                        a = 0 === e.type.indexOf("mouse"),
                                        s = 0 === e.type.indexOf("pointer");
                                    if (0 === e.type.indexOf("MSPointer") && (s = !0), "mousedown" === e.type && !e.buttons && !e.touches) return !1;
                                    if (o) {
                                        var l = function(e) {
                                            return e.target === n || n.contains(e.target) || e.target.shadowRoot && e.target.shadowRoot.contains(n)
                                        };
                                        if ("touchstart" === e.type) {
                                            var c = Array.prototype.filter.call(e.touches, l);
                                            if (1 < c.length) return !1;
                                            i = c[0].pageX, r = c[0].pageY
                                        } else {
                                            var u = Array.prototype.find.call(e.changedTouches, l);
                                            if (!u) return !1;
                                            i = u.pageX, r = u.pageY
                                        }
                                    }
                                    return t = t || d(E), (a || s) && (i = e.clientX + t.x, r = e.clientY + t.y), e.pageOffset = t, e.points = [i, r], e.cursor = a || s, e
                                }(o, r.pageOffset, r.target || t)) && !(N() && !r.doNotReject) && (a = x, s = n.cssClasses.tap, !((a.classList ? a.classList.contains(s) : new RegExp("\\b" + s + "\\b").test(a.className)) && !r.doNotReject) && !(e === b.start && void 0 !== o.buttons && 1 < o.buttons) && (!r.hover || !o.buttons) && (w || o.preventDefault(), o.calcPoint = o.points[n.ort], void i(o, r)));
                                var a, s
                            },
                            a = [];
                        return e.split(" ").forEach((function(e) {
                            t.addEventListener(e, o, !!w && {
                                passive: !0
                            }), a.push([e, o])
                        })), a
                    }

                    function V(e) {
                        var t, i, r, o, s, c, u = 100 * (e - (t = l, i = n.ort, r = t.getBoundingClientRect(), s = (o = t.ownerDocument).documentElement, c = d(o), /webkit.*Chrome.*Mobile/i.test(navigator.userAgent) && (c.x = 0), i ? r.top + c.y - s.clientTop : r.left + c.x - s.clientLeft)) / W();
                        return u = a(u), n.dir ? 100 - u : u
                    }

                    function Y(e, t) {
                        "mouseout" === e.type && "HTML" === e.target.nodeName && null === e.relatedTarget && G(e, t)
                    }

                    function X(e, t) {
                        if (-1 === navigator.appVersion.indexOf("MSIE 9") && 0 === e.buttons && 0 !== t.buttonsProperty) return G(e, t);
                        var i = (n.dir ? -1 : 1) * (e.calcPoint - t.startCalcPoint);
                        ne(0 < i, 100 * i / t.baseSize, t.locations, t.handleNumbers)
                    }

                    function G(e, t) {
                        t.handle && (u(t.handle, n.cssClasses.active), T -= 1), t.listeners.forEach((function(e) {
                            A.removeEventListener(e[0], e[1])
                        })), 0 === T && (u(x, n.cssClasses.drag), re(), e.cursor && (M.style.cursor = "", M.removeEventListener("selectstart", i))), t.handleNumbers.forEach((function(e) {
                            Z("change", e), Z("set", e), Z("end", e)
                        }))
                    }

                    function Q(e, t) {
                        if (t.handleNumbers.some(R)) return !1;
                        var r;
                        1 === t.handleNumbers.length && (r = h[t.handleNumbers[0]].children[0], T += 1, c(r, n.cssClasses.active)), e.stopPropagation();
                        var o = [],
                            a = U(b.move, A, X, {
                                target: e.target,
                                handle: r,
                                listeners: o,
                                startCalcPoint: e.calcPoint,
                                baseSize: W(),
                                pageOffset: e.pageOffset,
                                handleNumbers: t.handleNumbers,
                                buttonsProperty: e.buttons,
                                locations: k.slice()
                            }),
                            s = U(b.end, A, G, {
                                target: e.target,
                                handle: r,
                                listeners: o,
                                doNotReject: !0,
                                handleNumbers: t.handleNumbers
                            }),
                            l = U("mouseout", A, Y, {
                                target: e.target,
                                handle: r,
                                listeners: o,
                                doNotReject: !0,
                                handleNumbers: t.handleNumbers
                            });
                        o.push.apply(o, a.concat(s, l)), e.cursor && (M.style.cursor = getComputedStyle(e.target).cursor, 1 < h.length && c(x, n.cssClasses.drag), M.addEventListener("selectstart", i, !1)), t.handleNumbers.forEach((function(e) {
                            Z("start", e)
                        }))
                    }

                    function K(e, t) {
                        D[e] = D[e] || [], D[e].push(t), "update" === e.split(".")[0] && h.forEach((function(e, t) {
                            Z("update", t)
                        }))
                    }

                    function J(e) {
                        var t = e && e.split(".")[0],
                            n = t && e.substring(t.length);
                        Object.keys(D).forEach((function(e) {
                            var i = e.split(".")[0],
                                r = e.substring(i.length);
                            t && t !== i || n && n !== r || delete D[e]
                        }))
                    }

                    function Z(e, t, i) {
                        Object.keys(D).forEach((function(r) {
                            var o = r.split(".")[0];
                            e === o && D[r].forEach((function(e) {
                                e.call(m, C.map(n.format.to), t, C.slice(), i || !1, k.slice(), m)
                            }))
                        }))
                    }

                    function ee(e, t, i, r, o, s) {
                        var l;
                        return 1 < h.length && !n.events.unconstrained && (r && 0 < t && (l = _.getAbsoluteDistance(e[t - 1], n.margin, 0), i = Math.max(i, l)), o && t < h.length - 1 && (l = _.getAbsoluteDistance(e[t + 1], n.margin, 1), i = Math.min(i, l))), 1 < h.length && n.limit && (r && 0 < t && (l = _.getAbsoluteDistance(e[t - 1], n.limit, 0), i = Math.min(i, l)), o && t < h.length - 1 && (l = _.getAbsoluteDistance(e[t + 1], n.limit, 1), i = Math.max(i, l))), n.padding && (0 === t && (l = _.getAbsoluteDistance(0, n.padding[0], 0), i = Math.max(i, l)), t === h.length - 1 && (l = _.getAbsoluteDistance(100, n.padding[1], 1), i = Math.min(i, l))), !((i = a(i = _.getStep(i))) === e[t] && !s) && i
                    }

                    function te(e, t) {
                        var i = n.ort;
                        return (i ? t : e) + ", " + (i ? e : t)
                    }

                    function ne(e, t, n, i) {
                        var r = n.slice(),
                            o = [!e, e],
                            a = [e, !e];
                        i = i.slice(), e && i.reverse(), 1 < i.length ? i.forEach((function(e, n) {
                            var i = ee(r, e, r[e] + t, o[n], a[n], !1);
                            !1 === i ? t = 0 : (t = i - r[e], r[e] = i)
                        })) : o = a = [!0];
                        var s = !1;
                        i.forEach((function(e, i) {
                            s = oe(e, n[e] + t, o[i], a[i]) || s
                        })), s && i.forEach((function(e) {
                            Z("update", e), Z("slide", e)
                        }))
                    }

                    function ie(e, t) {
                        return n.dir ? 100 - e - t : e
                    }

                    function re() {
                        S.forEach((function(e) {
                            var t = 50 < k[e] ? -1 : 1,
                                n = 3 + (h.length + t * e);
                            h[e].style.zIndex = n
                        }))
                    }

                    function oe(e, t, i, r, o) {
                        return o || (t = ee(k, e, t, i, r, !1)), !1 !== t && (function(e, t) {
                            k[e] = t, C[e] = _.fromStepping(t);
                            var i = "translate(" + te(10 * (ie(t, 0) - O) + "%", "0") + ")";
                            h[e].style[n.transformRule] = i, ae(e), ae(e + 1)
                        }(e, t), !0)
                    }

                    function ae(e) {
                        if (f[e]) {
                            var t = 0,
                                i = 100;
                            0 !== e && (t = k[e - 1]), e !== f.length - 1 && (i = k[e]);
                            var r = i - t,
                                o = "translate(" + te(ie(t, r) + "%", "0") + ")",
                                a = "scale(" + te(r / 100, "1") + ")";
                            f[e].style[n.transformRule] = o + " " + a
                        }
                    }

                    function se(e, t) {
                        return null === e || !1 === e || void 0 === e ? k[t] : ("number" == typeof e && (e = String(e)), e = n.format.from(e), !1 === (e = _.toStepping(e)) || isNaN(e) ? k[t] : e)
                    }

                    function le(e, t, i) {
                        var r = s(e),
                            a = void 0 === k[0];
                        t = void 0 === t || !!t, n.animate && !a && o(x, n.cssClasses.tap, n.animationDuration), S.forEach((function(e) {
                            oe(e, se(r[e], e), !0, !1, i)
                        }));
                        for (var l = 1 === S.length ? 0 : 1; l < S.length; ++l) S.forEach((function(e) {
                            oe(e, k[e], !0, !0, i)
                        }));
                        re(), S.forEach((function(e) {
                            Z("update", e), null !== r[e] && t && Z("set", e)
                        }))
                    }

                    function ce() {
                        var e = C.map(n.format.to);
                        return 1 === e.length ? e[0] : e
                    }

                    function ue(e) {
                        var t = k[e],
                            i = _.getNearbySteps(t),
                            r = C[e],
                            o = i.thisStep.step,
                            a = null;
                        if (n.snap) return [r - i.stepBefore.startValue || null, i.stepAfter.startValue - r || null];
                        !1 !== o && r + o > i.stepAfter.startValue && (o = i.stepAfter.startValue - r), a = r > i.thisStep.startValue ? i.thisStep.step : !1 !== i.stepBefore.step && r - i.stepBefore.highestStep, 100 === t ? o = null : 0 === t && (a = null);
                        var s = _.countStepDecimals();
                        return null !== o && !1 !== o && (o = Number(o.toFixed(s))), null !== a && !1 !== a && (a = Number(a.toFixed(s))), [a, o]
                    }
                    return c(v = x, n.cssClasses.target), 0 === n.dir ? c(v, n.cssClasses.ltr) : c(v, n.cssClasses.rtl), 0 === n.ort ? c(v, n.cssClasses.horizontal) : c(v, n.cssClasses.vertical), c(v, "rtl" === getComputedStyle(v).direction ? n.cssClasses.textDirectionRtl : n.cssClasses.textDirectionLtr), l = I(v, n.cssClasses.base),
                        function(e, t) {
                            var i = I(t, n.cssClasses.connects);
                            h = [], (f = []).push(L(i, e[0]));
                            for (var r = 0; r < n.handles; r++) h.push(P(t, r)), S[r] = r, f.push(L(i, e[r + 1]))
                        }(n.connect, l), (y = n.events).fixed || h.forEach((function(e, t) {
                            U(b.start, e.children[0], Q, {
                                handleNumbers: [t]
                            })
                        })), y.tap && U(b.start, l, (function(e) {
                            e.stopPropagation();
                            var t, i, r, a = V(e.calcPoint),
                                s = (t = a, r = !(i = 100), h.forEach((function(e, n) {
                                    if (!R(n)) {
                                        var o = k[n],
                                            a = Math.abs(o - t);
                                        (a < i || a <= i && o < t || 100 === a && 100 === i) && (r = n, i = a)
                                    }
                                })), r);
                            if (!1 === s) return !1;
                            n.events.snap || o(x, n.cssClasses.tap, n.animationDuration), oe(s, a, !0, !0), re(), Z("slide", s, !0), Z("update", s, !0), Z("change", s, !0), Z("set", s, !0), n.events.snap && Q(e, {
                                handleNumbers: [s]
                            })
                        }), {}), y.hover && U(b.move, l, (function(e) {
                            var t = V(e.calcPoint),
                                n = _.getStep(t),
                                i = _.fromStepping(n);
                            Object.keys(D).forEach((function(e) {
                                "hover" === e.split(".")[0] && D[e].forEach((function(e) {
                                    e.call(m, i)
                                }))
                            }))
                        }), {
                            hover: !0
                        }), y.drag && f.forEach((function(e, t) {
                            if (!1 !== e && 0 !== t && t !== f.length - 1) {
                                var i = h[t - 1],
                                    r = h[t],
                                    o = [e];
                                c(e, n.cssClasses.draggable), y.fixed && (o.push(i.children[0]), o.push(r.children[0])), o.forEach((function(e) {
                                    U(b.start, e, Q, {
                                        handles: [i, r],
                                        handleNumbers: [t - 1, t]
                                    })
                                }))
                            }
                        })), le(n.start), n.pips && B(n.pips), n.tooltips && $(), K("update", (function(e, t, i, r, o) {
                            S.forEach((function(e) {
                                var t = h[e],
                                    r = ee(k, e, 0, !0, !0, !0),
                                    a = ee(k, e, 100, !0, !0, !0),
                                    s = o[e],
                                    l = n.ariaFormat.to(i[e]);
                                r = _.fromStepping(r).toFixed(1), a = _.fromStepping(a).toFixed(1), s = _.fromStepping(s).toFixed(1), t.children[0].setAttribute("aria-valuemin", r), t.children[0].setAttribute("aria-valuemax", a), t.children[0].setAttribute("aria-valuenow", s), t.children[0].setAttribute("aria-valuetext", l)
                            }))
                        })), m = {
                            destroy: function() {
                                for (var e in n.cssClasses) n.cssClasses.hasOwnProperty(e) && u(x, n.cssClasses[e]);
                                for (; x.firstChild;) x.removeChild(x.firstChild);
                                delete x.noUiSlider
                            },
                            steps: function() {
                                return S.map(ue)
                            },
                            on: K,
                            off: J,
                            get: ce,
                            set: le,
                            setHandle: function(e, t, n, i) {
                                if (!(0 <= (e = Number(e)) && e < S.length)) throw new Error("noUiSlider (14.6.2): invalid handle number, got: " + e);
                                oe(e, se(t, e), !0, !0, i), Z("update", e), n && Z("set", e)
                            },
                            reset: function(e) {
                                le(n.start, e)
                            },
                            __moveHandles: function(e, t, n) {
                                ne(e, t, k, n)
                            },
                            options: r,
                            updateOptions: function(e, t) {
                                var i = ce(),
                                    o = ["margin", "limit", "padding", "range", "animate", "snap", "step", "format", "pips", "tooltips"];
                                o.forEach((function(t) {
                                    void 0 !== e[t] && (r[t] = e[t])
                                }));
                                var a = q(r);
                                o.forEach((function(t) {
                                    void 0 !== e[t] && (n[t] = a[t])
                                })), _ = a.spectrum, n.margin = a.margin, n.limit = a.limit, n.padding = a.padding, n.pips ? B(n.pips) : H(), n.tooltips ? $() : j(), k = [], le(e.start || i, t)
                            },
                            target: x,
                            removePips: H,
                            removeTooltips: j,
                            getTooltips: function() {
                                return g
                            },
                            getOrigins: function() {
                                return h
                            },
                            pips: B
                        }
                }(e, q(n), n);
                return e.noUiSlider = r
            }
        }
    })),
    function(e) {
        "function" == typeof define && define.amd ? define(["jquery"], (function(t) {
            return e(t, window, document)
        })) : "object" == typeof exports ? module.exports = function(t, n) {
            return t || (t = window), n || (n = "undefined" != typeof window ? require("jquery") : require("jquery")(t)), e(n, t, t.document)
        } : e(jQuery, window, document)
    }((function(e, t, n, i) {
        function r(t) {
            var n, i, o = {};
            e.each(t, (function(e) {
                (n = e.match(/^([^A-Z]+?)([A-Z])/)) && -1 !== "a aa ai ao as b fn i m o s ".indexOf(n[1] + " ") && (i = e.replace(n[0], n[2].toLowerCase()), o[i] = e, "o" === n[1] && r(t[e]))
            })), t._hungarianMap = o
        }

        function o(t, n, a) {
            var s;
            t._hungarianMap || r(t), e.each(n, (function(r) {
                (s = t._hungarianMap[r]) === i || !a && n[s] !== i || ("o" === s.charAt(0) ? (n[s] || (n[s] = {}), e.extend(!0, n[s], n[r]), o(t[s], n[s], a)) : n[s] = n[r])
            }))
        }

        function a(e) {
            var t = Ve.defaults.oLanguage,
                n = t.sDecimal;
            if (n && ze(n), e) {
                var i = e.sZeroRecords;
                !e.sEmptyTable && i && "No data available in table" === t.sEmptyTable && Oe(e, e, "sZeroRecords", "sEmptyTable"), !e.sLoadingRecords && i && "Loading..." === t.sLoadingRecords && Oe(e, e, "sZeroRecords", "sLoadingRecords"), e.sInfoThousands && (e.sThousands = e.sInfoThousands), (e = e.sDecimal) && n !== e && ze(e)
            }
        }

        function s(e) {
            if (ct(e, "ordering", "bSort"), ct(e, "orderMulti", "bSortMulti"), ct(e, "orderClasses", "bSortClasses"), ct(e, "orderCellsTop", "bSortCellsTop"), ct(e, "order", "aaSorting"), ct(e, "orderFixed", "aaSortingFixed"), ct(e, "paging", "bPaginate"), ct(e, "pagingType", "sPaginationType"), ct(e, "pageLength", "iDisplayLength"), ct(e, "searching", "bFilter"), "boolean" == typeof e.sScrollX && (e.sScrollX = e.sScrollX ? "100%" : ""), "boolean" == typeof e.scrollX && (e.scrollX = e.scrollX ? "100%" : ""), e = e.aoSearchCols)
                for (var t = 0, n = e.length; t < n; t++) e[t] && o(Ve.models.oSearch, e[t])
        }

        function l(t) {
            ct(t, "orderable", "bSortable"), ct(t, "orderData", "aDataSort"), ct(t, "orderSequence", "asSorting"), ct(t, "orderDataType", "sortDataType");
            var n = t.aDataSort;
            "number" == typeof n && !e.isArray(n) && (t.aDataSort = [n])
        }

        function c(n) {
            if (!Ve.__browser) {
                var i = {};
                Ve.__browser = i;
                var r = e("<div/>").css({
                        position: "fixed",
                        top: 0,
                        left: -1 * e(t).scrollLeft(),
                        height: 1,
                        width: 1,
                        overflow: "hidden"
                    }).append(e("<div/>").css({
                        position: "absolute",
                        top: 1,
                        left: 1,
                        width: 100,
                        overflow: "scroll"
                    }).append(e("<div/>").css({
                        width: "100%",
                        height: 10
                    }))).appendTo("body"),
                    o = r.children(),
                    a = o.children();
                i.barWidth = o[0].offsetWidth - o[0].clientWidth, i.bScrollOversize = 100 === a[0].offsetWidth && 100 !== o[0].clientWidth, i.bScrollbarLeft = 1 !== Math.round(a.offset().left), i.bBounding = !!r[0].getBoundingClientRect().width, r.remove()
            }
            e.extend(n.oBrowser, Ve.__browser), n.oScroll.iBarWidth = Ve.__browser.barWidth
        }

        function u(e, t, n, r, o, a) {
            var s, l = !1;
            for (n !== i && (s = n, l = !0); r !== o;) e.hasOwnProperty(r) && (s = l ? t(s, e[r], r, e) : e[r], l = !0, r += a);
            return s
        }

        function d(t, i) {
            var r = Ve.defaults.column,
                o = t.aoColumns.length;
            r = e.extend({}, Ve.models.oColumn, r, {
                nTh: i || n.createElement("th"),
                sTitle: r.sTitle ? r.sTitle : i ? i.innerHTML : "",
                aDataSort: r.aDataSort ? r.aDataSort : [o],
                mData: r.mData ? r.mData : o,
                idx: o
            });
            t.aoColumns.push(r), (r = t.aoPreSearchCols)[o] = e.extend({}, Ve.models.oSearch, r[o]), h(t, o, e(i).data())
        }

        function h(t, n, r) {
            n = t.aoColumns[n];
            var a = t.oClasses,
                s = e(n.nTh);
            if (!n.sWidthOrig) {
                n.sWidthOrig = s.attr("width") || null;
                var c = (s.attr("style") || "").match(/width:\s*(\d+[pxem%]+)/);
                c && (n.sWidthOrig = c[1])
            }
            r !== i && null !== r && (l(r), o(Ve.defaults.column, r, !0), r.mDataProp !== i && !r.mData && (r.mData = r.mDataProp), r.sType && (n._sManualType = r.sType), r.className && !r.sClass && (r.sClass = r.className), r.sClass && s.addClass(r.sClass), e.extend(n, r), Oe(n, r, "sWidth", "sWidthOrig"), r.iDataSort !== i && (n.aDataSort = [r.iDataSort]), Oe(n, r, "aDataSort"));
            var u = n.mData,
                d = S(u),
                h = n.mRender ? S(n.mRender) : null;
            r = function(e) {
                return "string" == typeof e && -1 !== e.indexOf("@")
            };
            n._bAttrSrc = e.isPlainObject(u) && (r(u.sort) || r(u.type) || r(u.filter)), n._setter = null, n.fnGetData = function(e, t, n) {
                var r = d(e, t, i, n);
                return h && t ? h(r, t, e, n) : r
            }, n.fnSetData = function(e, t, n) {
                return T(u)(e, t, n)
            }, "number" != typeof u && (t._rowReadObject = !0), t.oFeatures.bSort || (n.bSortable = !1, s.addClass(a.sSortableNone)), t = -1 !== e.inArray("asc", n.asSorting), r = -1 !== e.inArray("desc", n.asSorting), n.bSortable && (t || r) ? t && !r ? (n.sSortingClass = a.sSortableAsc, n.sSortingClassJUI = a.sSortJUIAscAllowed) : !t && r ? (n.sSortingClass = a.sSortableDesc, n.sSortingClassJUI = a.sSortJUIDescAllowed) : (n.sSortingClass = a.sSortable, n.sSortingClassJUI = a.sSortJUI) : (n.sSortingClass = a.sSortableNone, n.sSortingClassJUI = "")
        }

        function f(e) {
            if (!1 !== e.oFeatures.bAutoWidth) {
                var t = e.aoColumns;
                ge(e);
                for (var n = 0, i = t.length; n < i; n++) t[n].nTh.style.width = t[n].sWidth
            }("" !== (t = e.oScroll).sY || "" !== t.sX) && fe(e), Fe(e, null, "column-sizing", [e])
        }

        function p(e, t) {
            var n = v(e, "bVisible");
            return "number" == typeof n[t] ? n[t] : null
        }

        function g(t, n) {
            var i = v(t, "bVisible");
            return -1 !== (i = e.inArray(n, i)) ? i : null
        }

        function m(t) {
            var n = 0;
            return e.each(t.aoColumns, (function(t, i) {
                i.bVisible && "none" !== e(i.nTh).css("display") && n++
            })), n
        }

        function v(t, n) {
            var i = [];
            return e.map(t.aoColumns, (function(e, t) {
                e[n] && i.push(t)
            })), i
        }

        function y(e) {
            var t, n, r, o, a, s, l, c, u, d = e.aoColumns,
                h = e.aoData,
                f = Ve.ext.type.detect;
            for (t = 0, n = d.length; t < n; t++)
                if (u = [], !(l = d[t]).sType && l._sManualType) l.sType = l._sManualType;
                else if (!l.sType) {
                for (r = 0, o = f.length; r < o; r++) {
                    for (a = 0, s = h.length; a < s && (u[a] === i && (u[a] = _(e, a, t, "type")), (c = f[r](u[a], e)) || r === f.length - 1) && "html" !== c; a++);
                    if (c) {
                        l.sType = c;
                        break
                    }
                }
                l.sType || (l.sType = "string")
            }
        }

        function b(t, n, r, o) {
            var a, s, l, c, u, h, f = t.aoColumns;
            if (n)
                for (a = n.length - 1; 0 <= a; a--) {
                    var p = (h = n[a]).targets !== i ? h.targets : h.aTargets;
                    for (e.isArray(p) || (p = [p]), s = 0, l = p.length; s < l; s++)
                        if ("number" == typeof p[s] && 0 <= p[s]) {
                            for (; f.length <= p[s];) d(t);
                            o(p[s], h)
                        } else if ("number" == typeof p[s] && 0 > p[s]) o(f.length + p[s], h);
                    else if ("string" == typeof p[s])
                        for (c = 0, u = f.length; c < u; c++)("_all" == p[s] || e(f[c].nTh).hasClass(p[s])) && o(c, h)
                }
            if (r)
                for (a = 0, t = r.length; a < t; a++) o(a, r[a])
        }

        function w(t, n, r, o) {
            var a = t.aoData.length,
                s = e.extend(!0, {}, Ve.models.oRow, {
                    src: r ? "dom" : "data",
                    idx: a
                });
            s._aData = n, t.aoData.push(s);
            for (var l = t.aoColumns, c = 0, u = l.length; c < u; c++) l[c].sType = null;
            return t.aiDisplayMaster.push(a), (n = t.rowIdFn(n)) !== i && (t.aIds[n] = s), (r || !t.oFeatures.bDeferRender) && I(t, a, r, o), a
        }

        function x(t, n) {
            var i;
            return n instanceof e || (n = e(n)), n.map((function(e, n) {
                return i = O(t, n), w(t, i.data, n, i.cells)
            }))
        }

        function _(e, t, n, r) {
            var o = e.iDraw,
                a = e.aoColumns[n],
                s = e.aoData[t]._aData,
                l = a.sDefaultContent,
                c = a.fnGetData(s, r, {
                    settings: e,
                    row: t,
                    col: n
                });
            if (c === i) return e.iDrawError != o && null === l && (Me(e, 0, "Requested unknown parameter " + ("function" == typeof a.mData ? "{function}" : "'" + a.mData + "'") + " for row " + t + ", column " + n, 4), e.iDrawError = o), l;
            if (c !== s && null !== c || null === l || r === i) {
                if ("function" == typeof c) return c.call(s)
            } else c = l;
            return null === c && "display" == r ? "" : c
        }

        function C(e, t, n, i) {
            e.aoColumns[n].fnSetData(e.aoData[t]._aData, i, {
                settings: e,
                row: t,
                col: n
            })
        }

        function k(t) {
            return e.map(t.match(/(\\.|[^\.])+/g) || [""], (function(e) {
                return e.replace(/\\\./g, ".")
            }))
        }

        function S(t) {
            if (e.isPlainObject(t)) {
                var n = {};
                return e.each(t, (function(e, t) {
                        t && (n[e] = S(t))
                    })),
                    function(e, t, r, o) {
                        var a = n[t] || n._;
                        return a !== i ? a(e, t, r, o) : e
                    }
            }
            if (null === t) return function(e) {
                return e
            };
            if ("function" == typeof t) return function(e, n, i, r) {
                return t(e, n, i, r)
            };
            if ("string" == typeof t && (-1 !== t.indexOf(".") || -1 !== t.indexOf("[") || -1 !== t.indexOf("("))) {
                var r = function(t, n, o) {
                    var a, s;
                    if ("" !== o)
                        for (var l = 0, c = (s = k(o)).length; l < c; l++) {
                            if (o = s[l].match(ut), a = s[l].match(dt), o) {
                                if (s[l] = s[l].replace(ut, ""), "" !== s[l] && (t = t[s[l]]), a = [], s.splice(0, l + 1), s = s.join("."), e.isArray(t))
                                    for (l = 0, c = t.length; l < c; l++) a.push(r(t[l], n, s));
                                t = "" === (t = o[0].substring(1, o[0].length - 1)) ? a : a.join(t);
                                break
                            }
                            if (a) s[l] = s[l].replace(dt, ""), t = t[s[l]]();
                            else {
                                if (null === t || t[s[l]] === i) return i;
                                t = t[s[l]]
                            }
                        }
                    return t
                };
                return function(e, n) {
                    return r(e, n, t)
                }
            }
            return function(e) {
                return e[t]
            }
        }

        function T(t) {
            if (e.isPlainObject(t)) return T(t._);
            if (null === t) return function() {};
            if ("function" == typeof t) return function(e, n, i) {
                t(e, "set", n, i)
            };
            if ("string" == typeof t && (-1 !== t.indexOf(".") || -1 !== t.indexOf("[") || -1 !== t.indexOf("("))) {
                var n = function(t, r, o) {
                    var a;
                    a = (o = k(o))[o.length - 1];
                    for (var s, l, c = 0, u = o.length - 1; c < u; c++) {
                        if (s = o[c].match(ut), l = o[c].match(dt), s) {
                            if (o[c] = o[c].replace(ut, ""), t[o[c]] = [], (a = o.slice()).splice(0, c + 1), s = a.join("."), e.isArray(r))
                                for (l = 0, u = r.length; l < u; l++) n(a = {}, r[l], s), t[o[c]].push(a);
                            else t[o[c]] = r;
                            return
                        }
                        l && (o[c] = o[c].replace(dt, ""), t = t[o[c]](r)), null !== t[o[c]] && t[o[c]] !== i || (t[o[c]] = {}), t = t[o[c]]
                    }
                    a.match(dt) ? t[a.replace(dt, "")](r) : t[a.replace(ut, "")] = r
                };
                return function(e, i) {
                    return n(e, i, t)
                }
            }
            return function(e, n) {
                e[t] = n
            }
        }

        function D(e) {
            return rt(e.aoData, "_aData")
        }

        function E(e) {
            e.aoData.length = 0, e.aiDisplayMaster.length = 0, e.aiDisplay.length = 0, e.aIds = {}
        }

        function A(e, t, n) {
            for (var r = -1, o = 0, a = e.length; o < a; o++) e[o] == t ? r = o : e[o] > t && e[o]--; - 1 != r && n === i && e.splice(r, 1)
        }

        function M(e, t, n, r) {
            var o, a = e.aoData[t],
                s = function(n, i) {
                    for (; n.childNodes.length;) n.removeChild(n.firstChild);
                    n.innerHTML = _(e, t, i, "display")
                };
            if ("dom" !== n && (n && "auto" !== n || "dom" !== a.src)) {
                var l = a.anCells;
                if (l)
                    if (r !== i) s(l[r], r);
                    else
                        for (n = 0, o = l.length; n < o; n++) s(l[n], n)
            } else a._aData = O(e, a, r, r === i ? i : a._aData).data;
            if (a._aSortData = null, a._aFilterData = null, s = e.aoColumns, r !== i) s[r].sType = null;
            else {
                for (n = 0, o = s.length; n < o; n++) s[n].sType = null;
                P(e, a)
            }
        }

        function O(t, n, r, o) {
            var a, s, l, c = [],
                u = n.firstChild,
                d = 0,
                h = t.aoColumns,
                f = t._rowReadObject,
                p = (o = o !== i ? o : f ? {} : [], function(e, t) {
                    if ("string" == typeof e) {
                        var n = e.indexOf("@"); - 1 !== n && (n = e.substring(n + 1), T(e)(o, t.getAttribute(n)))
                    }
                }),
                g = function(t) {
                    r !== i && r !== d || (s = h[d], l = e.trim(t.innerHTML), s && s._bAttrSrc ? (T(s.mData._)(o, l), p(s.mData.sort, t), p(s.mData.type, t), p(s.mData.filter, t)) : f ? (s._setter || (s._setter = T(s.mData)), s._setter(o, l)) : o[d] = l), d++
                };
            if (u)
                for (; u;) "TD" != (a = u.nodeName.toUpperCase()) && "TH" != a || (g(u), c.push(u)), u = u.nextSibling;
            else
                for (u = 0, a = (c = n.anCells).length; u < a; u++) g(c[u]);
            return (n = n.firstChild ? n : n.nTr) && (n = n.getAttribute("id")) && T(t.rowId)(o, n), {
                data: o,
                cells: c
            }
        }

        function I(t, i, r, o) {
            var a, s, l, c, u, d, h = t.aoData[i],
                f = h._aData,
                p = [];
            if (null === h.nTr) {
                for (a = r || n.createElement("tr"), h.nTr = a, h.anCells = p, a._DT_RowIndex = i, P(t, h), c = 0, u = t.aoColumns.length; c < u; c++) l = t.aoColumns[c], (s = (d = !r) ? n.createElement(l.sCellType) : o[c])._DT_CellIndex = {
                    row: i,
                    column: c
                }, p.push(s), !d && (r && !l.mRender && l.mData === c || e.isPlainObject(l.mData) && l.mData._ === c + ".display") || (s.innerHTML = _(t, i, c, "display")), l.sClass && (s.className += " " + l.sClass), l.bVisible && !r ? a.appendChild(s) : !l.bVisible && r && s.parentNode.removeChild(s), l.fnCreatedCell && l.fnCreatedCell.call(t.oInstance, s, _(t, i, c), f, i, c);
                Fe(t, "aoRowCreatedCallback", null, [a, f, i, p])
            }
            h.nTr.setAttribute("role", "row")
        }

        function P(t, n) {
            var i = n.nTr,
                r = n._aData;
            if (i) {
                var o = t.rowIdFn(r);
                o && (i.id = o), r.DT_RowClass && (o = r.DT_RowClass.split(" "), n.__rowc = n.__rowc ? lt(n.__rowc.concat(o)) : o, e(i).removeClass(n.__rowc.join(" ")).addClass(r.DT_RowClass)), r.DT_RowAttr && e(i).attr(r.DT_RowAttr), r.DT_RowData && e(i).data(r.DT_RowData)
            }
        }

        function L(t) {
            var n, i, r, o, a, s = t.nTHead,
                l = t.nTFoot,
                c = 0 === e("th, td", s).length,
                u = t.oClasses,
                d = t.aoColumns;
            for (c && (o = e("<tr/>").appendTo(s)), n = 0, i = d.length; n < i; n++) a = d[n], r = e(a.nTh).addClass(a.sClass), c && r.appendTo(o), t.oFeatures.bSort && (r.addClass(a.sSortingClass), !1 !== a.bSortable && (r.attr("tabindex", t.iTabIndex).attr("aria-controls", t.sTableId), ke(t, a.nTh, n))), a.sTitle != r[0].innerHTML && r.html(a.sTitle), Re(t, "header")(t, r, a, u);
            if (c && $(t.aoHeader, s), e(s).find(">tr").attr("role", "row"), e(s).find(">tr>th, >tr>td").addClass(u.sHeaderTH), e(l).find(">tr>th, >tr>td").addClass(u.sFooterTH), null !== l)
                for (n = 0, i = (t = t.aoFooter[0]).length; n < i; n++)(a = d[n]).nTf = t[n].cell, a.sClass && e(a.nTf).addClass(a.sClass)
        }

        function F(t, n, r) {
            var o, a, s, l, c = [],
                u = [],
                d = t.aoColumns.length;
            if (n) {
                for (r === i && (r = !1), o = 0, a = n.length; o < a; o++) {
                    for (c[o] = n[o].slice(), c[o].nTr = n[o].nTr, s = d - 1; 0 <= s; s--) !t.aoColumns[s].bVisible && !r && c[o].splice(s, 1);
                    u.push([])
                }
                for (o = 0, a = c.length; o < a; o++) {
                    if (t = c[o].nTr)
                        for (; s = t.firstChild;) t.removeChild(s);
                    for (s = 0, n = c[o].length; s < n; s++)
                        if (l = d = 1, u[o][s] === i) {
                            for (t.appendChild(c[o][s].cell), u[o][s] = 1; c[o + d] !== i && c[o][s].cell == c[o + d][s].cell;) u[o + d][s] = 1, d++;
                            for (; c[o][s + l] !== i && c[o][s].cell == c[o][s + l].cell;) {
                                for (r = 0; r < d; r++) u[o + r][s + l] = 1;
                                l++
                            }
                            e(c[o][s].cell).attr("rowspan", d).attr("colspan", l)
                        }
                }
            }
        }

        function N(t) {
            var n = Fe(t, "aoPreDrawCallback", "preDraw", [t]);
            if (-1 !== e.inArray(!1, n)) de(t, !1);
            else {
                n = [];
                var r = 0,
                    o = t.asStripeClasses,
                    a = o.length,
                    s = t.oLanguage,
                    l = t.iInitDisplayStart,
                    c = "ssp" == je(t),
                    u = t.aiDisplay;
                t.bDrawing = !0, l !== i && -1 !== l && (t._iDisplayStart = c ? l : l >= t.fnRecordsDisplay() ? 0 : l, t.iInitDisplayStart = -1);
                l = t._iDisplayStart;
                var d = t.fnDisplayEnd();
                if (t.bDeferLoading) t.bDeferLoading = !1, t.iDraw++, de(t, !1);
                else if (c) {
                    if (!t.bDestroying && !B(t)) return
                } else t.iDraw++;
                if (0 !== u.length)
                    for (s = c ? t.aoData.length : d, c = c ? 0 : l; c < s; c++) {
                        var h = u[c],
                            f = t.aoData[h];
                        null === f.nTr && I(t, h);
                        var p = f.nTr;
                        if (0 !== a) {
                            var g = o[r % a];
                            f._sRowStripe != g && (e(p).removeClass(f._sRowStripe).addClass(g), f._sRowStripe = g)
                        }
                        Fe(t, "aoRowCallback", null, [p, f._aData, r, c, h]), n.push(p), r++
                    } else r = s.sZeroRecords, 1 == t.iDraw && "ajax" == je(t) ? r = s.sLoadingRecords : s.sEmptyTable && 0 === t.fnRecordsTotal() && (r = s.sEmptyTable), n[0] = e("<tr/>", {
                        class: a ? o[0] : ""
                    }).append(e("<td />", {
                        valign: "top",
                        colSpan: m(t),
                        class: t.oClasses.sRowEmpty
                    }).html(r))[0];
                Fe(t, "aoHeaderCallback", "header", [e(t.nTHead).children("tr")[0], D(t), l, d, u]), Fe(t, "aoFooterCallback", "footer", [e(t.nTFoot).children("tr")[0], D(t), l, d, u]), (o = e(t.nTBody)).children().detach(), o.append(e(n)), Fe(t, "aoDrawCallback", "draw", [t]), t.bSorted = !1, t.bFiltered = !1, t.bDrawing = !1
            }
        }

        function R(e, t) {
            var n = e.oFeatures,
                i = n.bFilter;
            n.bSort && xe(e), i ? Y(e, e.oPreviousSearch) : e.aiDisplay = e.aiDisplayMaster.slice(), !0 !== t && (e._iDisplayStart = 0), e._drawHold = t, N(e), e._drawHold = !1
        }

        function j(t) {
            var n = t.oClasses,
                i = e(t.nTable),
                r = (i = e("<div/>").insertBefore(i), t.oFeatures),
                o = e("<div/>", {
                    id: t.sTableId + "_wrapper",
                    class: n.sWrapper + (t.nTFoot ? "" : " " + n.sNoFooter)
                });
            t.nHolding = i[0], t.nTableWrapper = o[0], t.nTableReinsertBefore = t.nTable.nextSibling;
            for (var a, s, l, c, u, d, h = t.sDom.split(""), f = 0; f < h.length; f++) {
                if (a = null, "<" == (s = h[f])) {
                    if (l = e("<div/>")[0], "'" == (c = h[f + 1]) || '"' == c) {
                        for (u = "", d = 2; h[f + d] != c;) u += h[f + d], d++;
                        "H" == u ? u = n.sJUIHeader : "F" == u && (u = n.sJUIFooter), -1 != u.indexOf(".") ? (c = u.split("."), l.id = c[0].substr(1, c[0].length - 1), l.className = c[1]) : "#" == u.charAt(0) ? l.id = u.substr(1, u.length - 1) : l.className = u, f += d
                    }
                    o.append(l), o = e(l)
                } else if (">" == s) o = o.parent();
                else if ("l" == s && r.bPaginate && r.bLengthChange) a = se(t);
                else if ("f" == s && r.bFilter) a = V(t);
                else if ("r" == s && r.bProcessing) a = ue(t);
                else if ("t" == s) a = he(t);
                else if ("i" == s && r.bInfo) a = te(t);
                else if ("p" == s && r.bPaginate) a = le(t);
                else if (0 !== Ve.ext.feature.length)
                    for (d = 0, c = (l = Ve.ext.feature).length; d < c; d++)
                        if (s == l[d].cFeature) {
                            a = l[d].fnInit(t);
                            break
                        }
                a && ((l = t.aanFeatures)[s] || (l[s] = []), l[s].push(a), o.append(a))
            }
            i.replaceWith(o), t.nHolding = null
        }

        function $(t, n) {
            var i, r, o, a, s, l, c, u, d, h, f = e(n).children("tr");
            for (t.splice(0, t.length), o = 0, l = f.length; o < l; o++) t.push([]);
            for (o = 0, l = f.length; o < l; o++)
                for (r = (i = f[o]).firstChild; r;) {
                    if ("TD" == r.nodeName.toUpperCase() || "TH" == r.nodeName.toUpperCase()) {
                        for (u = (u = 1 * r.getAttribute("colspan")) && 0 !== u && 1 !== u ? u : 1, d = (d = 1 * r.getAttribute("rowspan")) && 0 !== d && 1 !== d ? d : 1, a = 0, s = t[o]; s[a];) a++;
                        for (c = a, h = 1 === u, s = 0; s < u; s++)
                            for (a = 0; a < d; a++) t[o + a][c + s] = {
                                cell: r,
                                unique: h
                            }, t[o + a].nTr = i
                    }
                    r = r.nextSibling
                }
        }

        function z(e, t, n) {
            var i = [];
            n || (n = e.aoHeader, t && $(n = [], t));
            t = 0;
            for (var r = n.length; t < r; t++)
                for (var o = 0, a = n[t].length; o < a; o++) !n[t][o].unique || i[o] && e.bSortCellsTop || (i[o] = n[t][o].cell);
            return i
        }

        function H(t, n, i) {
            if (Fe(t, "aoServerParams", "serverParams", [n]), n && e.isArray(n)) {
                var r = {},
                    o = /(.*?)\[\]$/;
                e.each(n, (function(e, t) {
                    var n = t.name.match(o);
                    n ? (n = n[0], r[n] || (r[n] = []), r[n].push(t.value)) : r[t.name] = t.value
                })), n = r
            }
            var a, s = t.ajax,
                l = t.oInstance,
                c = function(e) {
                    Fe(t, null, "xhr", [t, e, t.jqXHR]), i(e)
                };
            if (e.isPlainObject(s) && s.data) {
                var u = "function" == typeof(a = s.data) ? a(n, t) : a;
                n = "function" == typeof a && u ? u : e.extend(!0, n, u);
                delete s.data
            }
            u = {
                data: n,
                success: function(e) {
                    var n = e.error || e.sError;
                    n && Me(t, 0, n), t.json = e, c(e)
                },
                dataType: "json",
                cache: !1,
                type: t.sServerMethod,
                error: function(n, i) {
                    var r = Fe(t, null, "xhr", [t, null, t.jqXHR]); - 1 === e.inArray(!0, r) && ("parsererror" == i ? Me(t, 0, "Invalid JSON response", 1) : 4 === n.readyState && Me(t, 0, "Ajax error", 7)), de(t, !1)
                }
            }, t.oAjaxData = n, Fe(t, null, "preXhr", [t, n]), t.fnServerData ? t.fnServerData.call(l, t.sAjaxSource, e.map(n, (function(e, t) {
                return {
                    name: t,
                    value: e
                }
            })), c, t) : t.sAjaxSource || "string" == typeof s ? t.jqXHR = e.ajax(e.extend(u, {
                url: s || t.sAjaxSource
            })) : "function" == typeof s ? t.jqXHR = s.call(l, n, c, t) : (t.jqXHR = e.ajax(e.extend(u, s)), s.data = a)
        }

        function B(e) {
            return !e.bAjaxDataGet || (e.iDraw++, de(e, !0), H(e, q(e), (function(t) {
                W(e, t)
            })), !1)
        }

        function q(t) {
            var n, i, r, o, a = t.aoColumns,
                s = a.length,
                l = t.oFeatures,
                c = t.oPreviousSearch,
                u = t.aoPreSearchCols,
                d = [],
                h = we(t);
            n = t._iDisplayStart, i = !1 !== l.bPaginate ? t._iDisplayLength : -1;
            var f = function(e, t) {
                d.push({
                    name: e,
                    value: t
                })
            };
            f("sEcho", t.iDraw), f("iColumns", s), f("sColumns", rt(a, "sName").join(",")), f("iDisplayStart", n), f("iDisplayLength", i);
            var p = {
                draw: t.iDraw,
                columns: [],
                order: [],
                start: n,
                length: i,
                search: {
                    value: c.sSearch,
                    regex: c.bRegex
                }
            };
            for (n = 0; n < s; n++) r = a[n], o = u[n], i = "function" == typeof r.mData ? "function" : r.mData, p.columns.push({
                data: i,
                name: r.sName,
                searchable: r.bSearchable,
                orderable: r.bSortable,
                search: {
                    value: o.sSearch,
                    regex: o.bRegex
                }
            }), f("mDataProp_" + n, i), l.bFilter && (f("sSearch_" + n, o.sSearch), f("bRegex_" + n, o.bRegex), f("bSearchable_" + n, r.bSearchable)), l.bSort && f("bSortable_" + n, r.bSortable);
            return l.bFilter && (f("sSearch", c.sSearch), f("bRegex", c.bRegex)), l.bSort && (e.each(h, (function(e, t) {
                p.order.push({
                    column: t.col,
                    dir: t.dir
                }), f("iSortCol_" + e, t.col), f("sSortDir_" + e, t.dir)
            })), f("iSortingCols", h.length)), null === (a = Ve.ext.legacy.ajax) ? t.sAjaxSource ? d : p : a ? d : p
        }

        function W(e, t) {
            var n = U(e, t),
                r = t.sEcho !== i ? t.sEcho : t.draw,
                o = t.iTotalRecords !== i ? t.iTotalRecords : t.recordsTotal,
                a = t.iTotalDisplayRecords !== i ? t.iTotalDisplayRecords : t.recordsFiltered;
            if (r !== i) {
                if (1 * r < e.iDraw) return;
                e.iDraw = 1 * r
            }
            for (E(e), e._iRecordsTotal = parseInt(o, 10), e._iRecordsDisplay = parseInt(a, 10), r = 0, o = n.length; r < o; r++) w(e, n[r]);
            e.aiDisplay = e.aiDisplayMaster.slice(), e.bAjaxDataGet = !1, N(e), e._bInitComplete || oe(e, t), e.bAjaxDataGet = !0, de(e, !1)
        }

        function U(t, n) {
            var r = e.isPlainObject(t.ajax) && t.ajax.dataSrc !== i ? t.ajax.dataSrc : t.sAjaxDataProp;
            return "data" === r ? n.aaData || n[r] : "" !== r ? S(r)(n) : n
        }

        function V(t) {
            var i = t.oClasses,
                r = t.sTableId,
                o = t.oLanguage,
                a = t.oPreviousSearch,
                s = t.aanFeatures,
                l = '<input type="search" class="' + i.sFilterInput + '"/>',
                c = (c = o.sSearch).match(/_INPUT_/) ? c.replace("_INPUT_", l) : c + l,
                u = (i = e("<div/>", {
                    id: s.f ? null : r + "_filter",
                    class: i.sFilter
                }).append(e("<label/>").append(c)), function() {
                    var e = this.value ? this.value : "";
                    e != a.sSearch && (Y(t, {
                        sSearch: e,
                        bRegex: a.bRegex,
                        bSmart: a.bSmart,
                        bCaseInsensitive: a.bCaseInsensitive
                    }), t._iDisplayStart = 0, N(t))
                }),
                d = (s = null !== t.searchDelay ? t.searchDelay : "ssp" === je(t) ? 400 : 0, e("input", i).val(a.sSearch).attr("placeholder", o.sSearchPlaceholder).on("keyup.DT search.DT input.DT paste.DT cut.DT", s ? mt(u, s) : u).on("mouseup", (function() {
                    setTimeout((function() {
                        u.call(d[0])
                    }), 10)
                })).on("keypress.DT", (function(e) {
                    if (13 == e.keyCode) return !1
                })).attr("aria-controls", r));
            return e(t.nTable).on("search.dt.DT", (function(e, i) {
                if (t === i) try {
                    d[0] !== n.activeElement && d.val(a.sSearch)
                } catch (e) {}
            })), i[0]
        }

        function Y(e, t, n) {
            var r = e.oPreviousSearch,
                o = e.aoPreSearchCols,
                a = function(e) {
                    r.sSearch = e.sSearch, r.bRegex = e.bRegex, r.bSmart = e.bSmart, r.bCaseInsensitive = e.bCaseInsensitive
                };
            if (y(e), "ssp" != je(e)) {
                for (Q(e, t.sSearch, n, t.bEscapeRegex !== i ? !t.bEscapeRegex : t.bRegex, t.bSmart, t.bCaseInsensitive), a(t), t = 0; t < o.length; t++) G(e, o[t].sSearch, t, o[t].bEscapeRegex !== i ? !o[t].bEscapeRegex : o[t].bRegex, o[t].bSmart, o[t].bCaseInsensitive);
                X(e)
            } else a(t);
            e.bFiltered = !0, Fe(e, null, "search", [e])
        }

        function X(t) {
            for (var n, i, r = Ve.ext.search, o = t.aiDisplay, a = 0, s = r.length; a < s; a++) {
                for (var l = [], c = 0, u = o.length; c < u; c++) i = o[c], n = t.aoData[i], r[a](t, n._aFilterData, i, n._aData, c) && l.push(i);
                o.length = 0, e.merge(o, l)
            }
        }

        function G(e, t, n, i, r, o) {
            if ("" !== t) {
                var a = [],
                    s = e.aiDisplay;
                for (i = K(t, i, r, o), r = 0; r < s.length; r++) t = e.aoData[s[r]]._aFilterData[n], i.test(t) && a.push(s[r]);
                e.aiDisplay = a
            }
        }

        function Q(e, t, n, i, r, o) {
            r = K(t, i, r, o);
            var a, s = e.oPreviousSearch.sSearch,
                l = e.aiDisplayMaster;
            o = [];
            if (0 !== Ve.ext.search.length && (n = !0), a = J(e), 0 >= t.length) e.aiDisplay = l.slice();
            else {
                for ((a || n || i || s.length > t.length || 0 !== t.indexOf(s) || e.bSorted) && (e.aiDisplay = l.slice()), t = e.aiDisplay, n = 0; n < t.length; n++) r.test(e.aoData[t[n]]._sFilterRow) && o.push(t[n]);
                e.aiDisplay = o
            }
        }

        function K(t, n, i, r) {
            return t = n ? t : ht(t), i && (t = "^(?=.*?" + e.map(t.match(/"[^"]+"|[^ ]+/g) || [""], (function(e) {
                if ('"' === e.charAt(0)) {
                    var t = e.match(/^"(.*)"$/);
                    e = t ? t[1] : e
                }
                return e.replace('"', "")
            })).join(")(?=.*?") + ").*$"), RegExp(t, r ? "i" : "")
        }

        function J(e) {
            var t, n, i, r, o, a, s, l, c = e.aoColumns,
                u = Ve.ext.type.search;
            for (t = !1, n = 0, r = e.aoData.length; n < r; n++)
                if (!(l = e.aoData[n])._aFilterData) {
                    for (a = [], i = 0, o = c.length; i < o; i++)(t = c[i]).bSearchable ? (s = _(e, n, i, "filter"), u[t.sType] && (s = u[t.sType](s)), null === s && (s = ""), "string" != typeof s && s.toString && (s = s.toString())) : s = "", s.indexOf && -1 !== s.indexOf("&") && (ft.innerHTML = s, s = pt ? ft.textContent : ft.innerText), s.replace && (s = s.replace(/[\r\n\u2028]/g, "")), a.push(s);
                    l._aFilterData = a, l._sFilterRow = a.join("  "), t = !0
                }
            return t
        }

        function Z(e) {
            return {
                search: e.sSearch,
                smart: e.bSmart,
                regex: e.bRegex,
                caseInsensitive: e.bCaseInsensitive
            }
        }

        function ee(e) {
            return {
                sSearch: e.search,
                bSmart: e.smart,
                bRegex: e.regex,
                bCaseInsensitive: e.caseInsensitive
            }
        }

        function te(t) {
            var n = t.sTableId,
                i = t.aanFeatures.i,
                r = e("<div/>", {
                    class: t.oClasses.sInfo,
                    id: i ? null : n + "_info"
                });
            return i || (t.aoDrawCallback.push({
                fn: ne,
                sName: "information"
            }), r.attr("role", "status").attr("aria-live", "polite"), e(t.nTable).attr("aria-describedby", n + "_info")), r[0]
        }

        function ne(t) {
            var n = t.aanFeatures.i;
            if (0 !== n.length) {
                var i = t.oLanguage,
                    r = t._iDisplayStart + 1,
                    o = t.fnDisplayEnd(),
                    a = t.fnRecordsTotal(),
                    s = t.fnRecordsDisplay(),
                    l = s ? i.sInfo : i.sInfoEmpty;
                s !== a && (l += " " + i.sInfoFiltered), l = ie(t, l += i.sInfoPostFix), null !== (i = i.fnInfoCallback) && (l = i.call(t.oInstance, t, r, o, a, s, l)), e(n).html(l)
            }
        }

        function ie(e, t) {
            var n = e.fnFormatNumber,
                i = e._iDisplayStart + 1,
                r = e._iDisplayLength,
                o = e.fnRecordsDisplay(),
                a = -1 === r;
            return t.replace(/_START_/g, n.call(e, i)).replace(/_END_/g, n.call(e, e.fnDisplayEnd())).replace(/_MAX_/g, n.call(e, e.fnRecordsTotal())).replace(/_TOTAL_/g, n.call(e, o)).replace(/_PAGE_/g, n.call(e, a ? 1 : Math.ceil(i / r))).replace(/_PAGES_/g, n.call(e, a ? 1 : Math.ceil(o / r)))
        }

        function re(e) {
            var t, n, i, r = e.iInitDisplayStart,
                o = e.aoColumns;
            n = e.oFeatures;
            var a = e.bDeferLoading;
            if (e.bInitialised) {
                for (j(e), L(e), F(e, e.aoHeader), F(e, e.aoFooter), de(e, !0), n.bAutoWidth && ge(e), t = 0, n = o.length; t < n; t++)(i = o[t]).sWidth && (i.nTh.style.width = be(i.sWidth));
                Fe(e, null, "preInit", [e]), R(e), ("ssp" != (o = je(e)) || a) && ("ajax" == o ? H(e, [], (function(n) {
                    var i = U(e, n);
                    for (t = 0; t < i.length; t++) w(e, i[t]);
                    e.iInitDisplayStart = r, R(e), de(e, !1), oe(e, n)
                })) : (de(e, !1), oe(e)))
            } else setTimeout((function() {
                re(e)
            }), 200)
        }

        function oe(e, t) {
            e._bInitComplete = !0, (t || e.oInit.aaData) && f(e), Fe(e, null, "plugin-init", [e, t]), Fe(e, "aoInitComplete", "init", [e, t])
        }

        function ae(e, t) {
            var n = parseInt(t, 10);
            e._iDisplayLength = n, Ne(e), Fe(e, null, "length", [e, n])
        }

        function se(t) {
            for (var n = t.oClasses, i = t.sTableId, r = t.aLengthMenu, o = (a = e.isArray(r[0])) ? r[0] : r, a = (r = a ? r[1] : r, e("<select/>", {
                    name: i + "_length",
                    "aria-controls": i,
                    class: n.sLengthSelect
                })), s = 0, l = o.length; s < l; s++) a[0][s] = new Option("number" == typeof r[s] ? t.fnFormatNumber(r[s]) : r[s], o[s]);
            var c = e("<div><label/></div>").addClass(n.sLength);
            return t.aanFeatures.l || (c[0].id = i + "_length"), c.children().append(t.oLanguage.sLengthMenu.replace("_MENU_", a[0].outerHTML)), e("select", c).val(t._iDisplayLength).on("change.DT", (function() {
                ae(t, e(this).val()), N(t)
            })), e(t.nTable).on("length.dt.DT", (function(n, i, r) {
                t === i && e("select", c).val(r)
            })), c[0]
        }

        function le(t) {
            var n = t.sPaginationType,
                i = Ve.ext.pager[n],
                r = "function" == typeof i,
                o = function(e) {
                    N(e)
                },
                a = (n = e("<div/>").addClass(t.oClasses.sPaging + n)[0], t.aanFeatures);
            return r || i.fnInit(t, n, o), a.p || (n.id = t.sTableId + "_paginate", t.aoDrawCallback.push({
                fn: function(e) {
                    if (r) {
                        var t, n = e._iDisplayStart,
                            s = e._iDisplayLength,
                            l = e.fnRecordsDisplay(),
                            c = (n = (c = -1 === s) ? 0 : Math.ceil(n / s), s = c ? 1 : Math.ceil(l / s), l = i(n, s), 0);
                        for (t = a.p.length; c < t; c++) Re(e, "pageButton")(e, a.p[c], c, l, n, s)
                    } else i.fnUpdate(e, o)
                },
                sName: "pagination"
            })), n
        }

        function ce(e, t, n) {
            var i = e._iDisplayStart,
                r = e._iDisplayLength,
                o = e.fnRecordsDisplay();
            return 0 === o || -1 === r ? i = 0 : "number" == typeof t ? (i = t * r) > o && (i = 0) : "first" == t ? i = 0 : "previous" == t ? 0 > (i = 0 <= r ? i - r : 0) && (i = 0) : "next" == t ? i + r < o && (i += r) : "last" == t ? i = Math.floor((o - 1) / r) * r : Me(e, 0, "Unknown paging action: " + t, 5), t = e._iDisplayStart !== i, e._iDisplayStart = i, t && (Fe(e, null, "page", [e]), n && N(e)), t
        }

        function ue(t) {
            return e("<div/>", {
                id: t.aanFeatures.r ? null : t.sTableId + "_processing",
                class: t.oClasses.sProcessing
            }).html(t.oLanguage.sProcessing).insertBefore(t.nTable)[0]
        }

        function de(t, n) {
            t.oFeatures.bProcessing && e(t.aanFeatures.r).css("display", n ? "block" : "none"), Fe(t, null, "processing", [t, n])
        }

        function he(t) {
            (d = e(t.nTable)).attr("role", "grid");
            var n = t.oScroll;
            if ("" === n.sX && "" === n.sY) return t.nTable;
            var i = n.sX,
                r = n.sY,
                o = t.oClasses,
                a = d.children("caption"),
                s = a.length ? a[0]._captionSide : null,
                l = e(d[0].cloneNode(!1)),
                c = e(d[0].cloneNode(!1)),
                u = d.children("tfoot");
            u.length || (u = null), l = e("<div/>", {
                class: o.sScrollWrapper
            }).append(e("<div/>", {
                class: o.sScrollHead
            }).css({
                overflow: "hidden",
                position: "relative",
                border: 0,
                width: i ? i ? be(i) : null : "100%"
            }).append(e("<div/>", {
                class: o.sScrollHeadInner
            }).css({
                "box-sizing": "content-box",
                width: n.sXInner || "100%"
            }).append(l.removeAttr("id").css("margin-left", 0).append("top" === s ? a : null).append(d.children("thead"))))).append(e("<div/>", {
                class: o.sScrollBody
            }).css({
                position: "relative",
                overflow: "auto",
                width: i ? be(i) : null
            }).append(d)), u && l.append(e("<div/>", {
                class: o.sScrollFoot
            }).css({
                overflow: "hidden",
                border: 0,
                width: i ? i ? be(i) : null : "100%"
            }).append(e("<div/>", {
                class: o.sScrollFootInner
            }).append(c.removeAttr("id").css("margin-left", 0).append("bottom" === s ? a : null).append(d.children("tfoot")))));
            var d, h = (d = l.children())[0],
                f = (o = d[1], u ? d[2] : null);
            return i && e(o).on("scroll.DT", (function() {
                var e = this.scrollLeft;
                h.scrollLeft = e, u && (f.scrollLeft = e)
            })), e(o).css("max-height", r), n.bCollapse || e(o).css("height", r), t.nScrollHead = h, t.nScrollBody = o, t.nScrollFoot = f, t.aoDrawCallback.push({
                fn: fe,
                sName: "scrolling"
            }), l[0]
        }

        function fe(t) {
            var n, r, o, a, s, l = (d = t.oScroll).sX,
                c = d.sXInner,
                u = d.sY,
                d = d.iBarWidth,
                h = e(t.nScrollHead),
                g = h[0].style,
                m = (y = h.children("div"))[0].style,
                v = y.children("table"),
                y = t.nScrollBody,
                b = e(y),
                w = y.style,
                x = e(t.nScrollFoot).children("div"),
                _ = x.children("table"),
                C = e(t.nTHead),
                k = e(t.nTable),
                S = k[0],
                T = S.style,
                D = t.nTFoot ? e(t.nTFoot) : null,
                E = t.oBrowser,
                A = E.bScrollOversize,
                M = rt(t.aoColumns, "nTh"),
                O = [],
                I = [],
                P = [],
                L = [],
                F = function(e) {
                    (e = e.style).paddingTop = "0", e.paddingBottom = "0", e.borderTopWidth = "0", e.borderBottomWidth = "0", e.height = 0
                };
            r = y.scrollHeight > y.clientHeight, t.scrollBarVis !== r && t.scrollBarVis !== i ? (t.scrollBarVis = r, f(t)) : (t.scrollBarVis = r, k.children("thead, tfoot").remove(), D && (o = D.clone().prependTo(k), n = D.find("tr"), o = o.find("tr")), a = C.clone().prependTo(k), C = C.find("tr"), r = a.find("tr"), a.find("th, td").removeAttr("tabindex"), l || (w.width = "100%", h[0].style.width = "100%"), e.each(z(t, a), (function(e, n) {
                s = p(t, e), n.style.width = t.aoColumns[s].sWidth
            })), D && pe((function(e) {
                e.style.width = ""
            }), o), h = k.outerWidth(), "" === l ? (T.width = "100%", A && (k.find("tbody").height() > y.offsetHeight || "scroll" == b.css("overflow-y")) && (T.width = be(k.outerWidth() - d)), h = k.outerWidth()) : "" !== c && (T.width = be(c), h = k.outerWidth()), pe(F, r), pe((function(t) {
                P.push(t.innerHTML), O.push(be(e(t).css("width")))
            }), r), pe((function(t, n) {
                -1 !== e.inArray(t, M) && (t.style.width = O[n])
            }), C), e(r).height(0), D && (pe(F, o), pe((function(t) {
                L.push(t.innerHTML), I.push(be(e(t).css("width")))
            }), o), pe((function(e, t) {
                e.style.width = I[t]
            }), n), e(o).height(0)), pe((function(e, t) {
                e.innerHTML = '<div class="dataTables_sizing">' + P[t] + "</div>", e.childNodes[0].style.height = "0", e.childNodes[0].style.overflow = "hidden", e.style.width = O[t]
            }), r), D && pe((function(e, t) {
                e.innerHTML = '<div class="dataTables_sizing">' + L[t] + "</div>", e.childNodes[0].style.height = "0", e.childNodes[0].style.overflow = "hidden", e.style.width = I[t]
            }), o), k.outerWidth() < h ? (n = y.scrollHeight > y.offsetHeight || "scroll" == b.css("overflow-y") ? h + d : h, A && (y.scrollHeight > y.offsetHeight || "scroll" == b.css("overflow-y")) && (T.width = be(n - d)), ("" === l || "" !== c) && Me(t, 1, "Possible column misalignment", 6)) : n = "100%", w.width = be(n), g.width = be(n), D && (t.nScrollFoot.style.width = be(n)), !u && A && (w.height = be(S.offsetHeight + d)), l = k.outerWidth(), v[0].style.width = be(l), m.width = be(l), c = k.height() > y.clientHeight || "scroll" == b.css("overflow-y"), m[u = "padding" + (E.bScrollbarLeft ? "Left" : "Right")] = c ? d + "px" : "0px", D && (_[0].style.width = be(l), x[0].style.width = be(l), x[0].style[u] = c ? d + "px" : "0px"), k.children("colgroup").insertBefore(k.children("thead")), b.trigger("scroll"), !t.bSorted && !t.bFiltered || t._drawHold || (y.scrollTop = 0))
        }

        function pe(e, t, n) {
            for (var i, r, o = 0, a = 0, s = t.length; a < s;) {
                for (i = t[a].firstChild, r = n ? n[a].firstChild : null; i;) 1 === i.nodeType && (n ? e(i, r, o) : e(i, o), o++), i = i.nextSibling, r = n ? r.nextSibling : null;
                a++
            }
        }

        function ge(n) {
            var i, r, o = n.nTable,
                a = n.aoColumns,
                s = (x = n.oScroll).sY,
                l = x.sX,
                c = x.sXInner,
                u = a.length,
                d = v(n, "bVisible"),
                h = e("th", n.nTHead),
                g = o.getAttribute("width"),
                y = o.parentNode,
                b = !1,
                w = n.oBrowser,
                x = w.bScrollOversize;
            for ((i = o.style.width) && -1 !== i.indexOf("%") && (g = i), i = 0; i < d.length; i++) null !== (r = a[d[i]]).sWidth && (r.sWidth = me(r.sWidthOrig, y), b = !0);
            if (x || !b && !l && !s && u == m(n) && u == h.length)
                for (i = 0; i < u; i++) null !== (d = p(n, i)) && (a[d].sWidth = be(h.eq(i).width()));
            else {
                (u = e(o).clone().css("visibility", "hidden").removeAttr("id")).find("tbody tr").remove();
                var _ = e("<tr/>").appendTo(u.find("tbody"));
                for (u.find("thead, tfoot").remove(), u.append(e(n.nTHead).clone()).append(e(n.nTFoot).clone()), u.find("tfoot th, tfoot td").css("width", ""), h = z(n, u.find("thead")[0]), i = 0; i < d.length; i++) r = a[d[i]], h[i].style.width = null !== r.sWidthOrig && "" !== r.sWidthOrig ? be(r.sWidthOrig) : "", r.sWidthOrig && l && e(h[i]).append(e("<div/>").css({
                    width: r.sWidthOrig,
                    margin: 0,
                    padding: 0,
                    border: 0,
                    height: 1
                }));
                if (n.aoData.length)
                    for (i = 0; i < d.length; i++) r = a[b = d[i]], e(ve(n, b)).clone(!1).append(r.sContentPadding).appendTo(_);
                for (e("[name]", u).removeAttr("name"), r = e("<div/>").css(l || s ? {
                        position: "absolute",
                        top: 0,
                        left: 0,
                        height: 1,
                        right: 0,
                        overflow: "hidden"
                    } : {}).append(u).appendTo(y), l && c ? u.width(c) : l ? (u.css("width", "auto"), u.removeAttr("width"), u.width() < y.clientWidth && g && u.width(y.clientWidth)) : s ? u.width(y.clientWidth) : g && u.width(g), i = s = 0; i < d.length; i++) c = (y = e(h[i])).outerWidth() - y.width(), s += y = w.bBounding ? Math.ceil(h[i].getBoundingClientRect().width) : y.outerWidth(), a[d[i]].sWidth = be(y - c);
                o.style.width = be(s), r.remove()
            }
            g && (o.style.width = be(g)), !g && !l || n._reszEvt || (o = function() {
                e(t).on("resize.DT-" + n.sInstance, mt((function() {
                    f(n)
                })))
            }, x ? setTimeout(o, 1e3) : o(), n._reszEvt = !0)
        }

        function me(t, i) {
            if (!t) return 0;
            var r = e("<div/>").css("width", be(t)).appendTo(i || n.body),
                o = r[0].offsetWidth;
            return r.remove(), o
        }

        function ve(t, n) {
            var i = ye(t, n);
            if (0 > i) return null;
            var r = t.aoData[i];
            return r.nTr ? r.anCells[n] : e("<td/>").html(_(t, i, n, "display"))[0]
        }

        function ye(e, t) {
            for (var n, i = -1, r = -1, o = 0, a = e.aoData.length; o < a; o++)(n = (n = (n = _(e, o, t, "display") + "").replace(gt, "")).replace(/&nbsp;/g, " ")).length > i && (i = n.length, r = o);
            return r
        }

        function be(e) {
            return null === e ? "0px" : "number" == typeof e ? 0 > e ? "0px" : e + "px" : e.match(/\d$/) ? e + "px" : e
        }

        function we(t) {
            var n, r, o, a, s, l, c = [],
                u = t.aoColumns;
            n = t.aaSortingFixed, r = e.isPlainObject(n);
            var d = [];
            for (o = function(t) {
                    t.length && !e.isArray(t[0]) ? d.push(t) : e.merge(d, t)
                }, e.isArray(n) && o(n), r && n.pre && o(n.pre), o(t.aaSorting), r && n.post && o(n.post), t = 0; t < d.length; t++)
                for (n = 0, r = (o = u[l = d[t][0]].aDataSort).length; n < r; n++) s = u[a = o[n]].sType || "string", d[t]._idx === i && (d[t]._idx = e.inArray(d[t][1], u[a].asSorting)), c.push({
                    src: l,
                    col: a,
                    dir: d[t][1],
                    index: d[t]._idx,
                    type: s,
                    formatter: Ve.ext.type.order[s + "-pre"]
                });
            return c
        }

        function xe(e) {
            var t, n, i, r, o = [],
                a = Ve.ext.type.order,
                s = e.aoData,
                l = 0,
                c = e.aiDisplayMaster;
            for (y(e), t = 0, n = (r = we(e)).length; t < n; t++)(i = r[t]).formatter && l++, Te(e, i.col);
            if ("ssp" != je(e) && 0 !== r.length) {
                for (t = 0, n = c.length; t < n; t++) o[c[t]] = t;
                l === r.length ? c.sort((function(e, t) {
                    var n, i, a, l, c = r.length,
                        u = s[e]._aSortData,
                        d = s[t]._aSortData;
                    for (a = 0; a < c; a++)
                        if (0 !== (n = (n = u[(l = r[a]).col]) < (i = d[l.col]) ? -1 : n > i ? 1 : 0)) return "asc" === l.dir ? n : -n;
                    return (n = o[e]) < (i = o[t]) ? -1 : n > i ? 1 : 0
                })) : c.sort((function(e, t) {
                    var n, i, l, c, u = r.length,
                        d = s[e]._aSortData,
                        h = s[t]._aSortData;
                    for (l = 0; l < u; l++)
                        if (n = d[(c = r[l]).col], i = h[c.col], 0 !== (n = (c = a[c.type + "-" + c.dir] || a["string-" + c.dir])(n, i))) return n;
                    return (n = o[e]) < (i = o[t]) ? -1 : n > i ? 1 : 0
                }))
            }
            e.bSorted = !0
        }

        function _e(e) {
            for (var t, n, i = e.aoColumns, r = we(e), o = (e = e.oLanguage.oAria, 0), a = i.length; o < a; o++) {
                var s = (n = i[o]).asSorting;
                t = n.sTitle.replace(/<.*?>/g, "");
                var l = n.nTh;
                l.removeAttribute("aria-sort"), n.bSortable && (0 < r.length && r[0].col == o ? (l.setAttribute("aria-sort", "asc" == r[0].dir ? "ascending" : "descending"), n = s[r[0].index + 1] || s[0]) : n = s[0], t += "asc" === n ? e.sSortAscending : e.sSortDescending), l.setAttribute("aria-label", t)
            }
        }

        function Ce(t, n, r, o) {
            var a = t.aaSorting,
                s = t.aoColumns[n].asSorting,
                l = function(t, n) {
                    var r = t._idx;
                    return r === i && (r = e.inArray(t[1], s)), r + 1 < s.length ? r + 1 : n ? null : 0
                };
            "number" == typeof a[0] && (a = t.aaSorting = [a]), r && t.oFeatures.bSortMulti ? -1 !== (r = e.inArray(n, rt(a, "0"))) ? (null === (n = l(a[r], !0)) && 1 === a.length && (n = 0), null === n ? a.splice(r, 1) : (a[r][1] = s[n], a[r]._idx = n)) : (a.push([n, s[0], 0]), a[a.length - 1]._idx = 0) : a.length && a[0][0] == n ? (n = l(a[0]), a.length = 1, a[0][1] = s[n], a[0]._idx = n) : (a.length = 0, a.push([n, s[0]]), a[0]._idx = 0), R(t), "function" == typeof o && o(t)
        }

        function ke(e, t, n, i) {
            var r = e.aoColumns[n];
            Pe(t, {}, (function(t) {
                !1 !== r.bSortable && (e.oFeatures.bProcessing ? (de(e, !0), setTimeout((function() {
                    Ce(e, n, t.shiftKey, i), "ssp" !== je(e) && de(e, !1)
                }), 0)) : Ce(e, n, t.shiftKey, i))
            }))
        }

        function Se(t) {
            var n, i, r = t.aLastSort,
                o = t.oClasses.sSortColumn,
                a = we(t),
                s = t.oFeatures;
            if (s.bSort && s.bSortClasses) {
                for (s = 0, n = r.length; s < n; s++) i = r[s].src, e(rt(t.aoData, "anCells", i)).removeClass(o + (2 > s ? s + 1 : 3));
                for (s = 0, n = a.length; s < n; s++) i = a[s].src, e(rt(t.aoData, "anCells", i)).addClass(o + (2 > s ? s + 1 : 3))
            }
            t.aLastSort = a
        }

        function Te(e, t) {
            var n, i = e.aoColumns[t],
                r = Ve.ext.order[i.sSortDataType];
            r && (n = r.call(e.oInstance, e, t, g(e, t)));
            for (var o, a = Ve.ext.type.order[i.sType + "-pre"], s = 0, l = e.aoData.length; s < l; s++)(i = e.aoData[s])._aSortData || (i._aSortData = []), (!i._aSortData[t] || r) && (o = r ? n[s] : _(e, s, t, "sort"), i._aSortData[t] = a ? a(o) : o)
        }

        function De(t) {
            if (t.oFeatures.bStateSave && !t.bDestroying) {
                var n = {
                    time: +new Date,
                    start: t._iDisplayStart,
                    length: t._iDisplayLength,
                    order: e.extend(!0, [], t.aaSorting),
                    search: Z(t.oPreviousSearch),
                    columns: e.map(t.aoColumns, (function(e, n) {
                        return {
                            visible: e.bVisible,
                            search: Z(t.aoPreSearchCols[n])
                        }
                    }))
                };
                Fe(t, "aoStateSaveParams", "stateSaveParams", [t, n]), t.oSavedState = n, t.fnStateSaveCallback.call(t.oInstance, t, n)
            }
        }

        function Ee(t, n, r) {
            var o, a, s = t.aoColumns;
            n = function(n) {
                if (n && n.time) {
                    var l = Fe(t, "aoStateLoadParams", "stateLoadParams", [t, n]);
                    if (-1 === e.inArray(!1, l) && !(0 < (l = t.iStateDuration) && n.time < +new Date - 1e3 * l || n.columns && s.length !== n.columns.length)) {
                        if (t.oLoadedState = e.extend(!0, {}, n), n.start !== i && (t._iDisplayStart = n.start, t.iInitDisplayStart = n.start), n.length !== i && (t._iDisplayLength = n.length), n.order !== i && (t.aaSorting = [], e.each(n.order, (function(e, n) {
                                t.aaSorting.push(n[0] >= s.length ? [0, n[1]] : n)
                            }))), n.search !== i && e.extend(t.oPreviousSearch, ee(n.search)), n.columns)
                            for (o = 0, a = n.columns.length; o < a; o++)(l = n.columns[o]).visible !== i && (s[o].bVisible = l.visible), l.search !== i && e.extend(t.aoPreSearchCols[o], ee(l.search));
                        Fe(t, "aoStateLoaded", "stateLoaded", [t, n])
                    }
                }
                r()
            };
            if (t.oFeatures.bStateSave) {
                var l = t.fnStateLoadCallback.call(t.oInstance, t, n);
                l !== i && n(l)
            } else r()
        }

        function Ae(t) {
            var n = Ve.settings;
            return -1 !== (t = e.inArray(t, rt(n, "nTable"))) ? n[t] : null
        }

        function Me(e, n, i, r) {
            if (i = "DataTables warning: " + (e ? "table id=" + e.sTableId + " - " : "") + i, r && (i += ". For more information about this error, please see http://datatables.net/tn/" + r), n) t.console && console.log && console.log(i);
            else if (n = (n = Ve.ext).sErrMode || n.errMode, e && Fe(e, null, "error", [e, r, i]), "alert" == n) alert(i);
            else {
                if ("throw" == n) throw Error(i);
                "function" == typeof n && n(e, r, i)
            }
        }

        function Oe(t, n, r, o) {
            e.isArray(r) ? e.each(r, (function(i, r) {
                e.isArray(r) ? Oe(t, n, r[0], r[1]) : Oe(t, n, r)
            })) : (o === i && (o = r), n[r] !== i && (t[o] = n[r]))
        }

        function Ie(t, n, i) {
            var r, o;
            for (o in n) n.hasOwnProperty(o) && (r = n[o], e.isPlainObject(r) ? (e.isPlainObject(t[o]) || (t[o] = {}), e.extend(!0, t[o], r)) : t[o] = i && "data" !== o && "aaData" !== o && e.isArray(r) ? r.slice() : r);
            return t
        }

        function Pe(t, n, i) {
            e(t).on("click.DT", n, (function(n) {
                e(t).trigger("blur"), i(n)
            })).on("keypress.DT", n, (function(e) {
                13 === e.which && (e.preventDefault(), i(e))
            })).on("selectstart.DT", (function() {
                return !1
            }))
        }

        function Le(e, t, n, i) {
            n && e[t].push({
                fn: n,
                sName: i
            })
        }

        function Fe(t, n, i, r) {
            var o = [];
            return n && (o = e.map(t[n].slice().reverse(), (function(e) {
                return e.fn.apply(t.oInstance, r)
            }))), null !== i && (n = e.Event(i + ".dt"), e(t.nTable).trigger(n, r), o.push(n.result)), o
        }

        function Ne(e) {
            var t = e._iDisplayStart,
                n = e.fnDisplayEnd(),
                i = e._iDisplayLength;
            t >= n && (t = n - i), t -= t % i, (-1 === i || 0 > t) && (t = 0), e._iDisplayStart = t
        }

        function Re(t, n) {
            var i = t.renderer,
                r = Ve.ext.renderer[n];
            return e.isPlainObject(i) && i[n] ? r[i[n]] || r._ : "string" == typeof i && r[i] || r._
        }

        function je(e) {
            return e.oFeatures.bServerSide ? "ssp" : e.ajax || e.sAjaxSource ? "ajax" : "dom"
        }

        function $e(e, t) {
            var n = [],
                i = (n = At.numbers_length, Math.floor(n / 2));
            return t <= n ? n = at(0, t) : e <= i ? ((n = at(0, n - 2)).push("ellipsis"), n.push(t - 1)) : (e >= t - 1 - i ? n = at(t - (n - 2), t) : ((n = at(e - i + 2, e + i - 1)).push("ellipsis"), n.push(t - 1)), n.splice(0, 0, "ellipsis"), n.splice(0, 0, 0)), n.DT_el = "span", n
        }

        function ze(t) {
            e.each({
                num: function(e) {
                    return Mt(e, t)
                },
                "num-fmt": function(e) {
                    return Mt(e, t, Je)
                },
                "html-num": function(e) {
                    return Mt(e, t, Ge)
                },
                "html-num-fmt": function(e) {
                    return Mt(e, t, Ge, Je)
                }
            }, (function(e, n) {
                Be.type.order[e + t + "-pre"] = n, e.match(/^html\-/) && (Be.type.search[e + t] = Be.type.search.html)
            }))
        }

        function He(e) {
            return function() {
                var t = [Ae(this[Ve.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));
                return Ve.ext.internal[e].apply(this, t)
            }
        }
        var Be, qe, We, Ue, Ve = function(t) {
                this.$ = function(e, t) {
                    return this.api(!0).$(e, t)
                }, this._ = function(e, t) {
                    return this.api(!0).rows(e, t).data()
                }, this.api = function(e) {
                    return new qe(e ? Ae(this[Be.iApiIndex]) : this)
                }, this.fnAddData = function(t, n) {
                    var r = this.api(!0),
                        o = e.isArray(t) && (e.isArray(t[0]) || e.isPlainObject(t[0])) ? r.rows.add(t) : r.row.add(t);
                    return (n === i || n) && r.draw(), o.flatten().toArray()
                }, this.fnAdjustColumnSizing = function(e) {
                    var t = this.api(!0).columns.adjust(),
                        n = t.settings()[0],
                        r = n.oScroll;
                    e === i || e ? t.draw(!1) : ("" !== r.sX || "" !== r.sY) && fe(n)
                }, this.fnClearTable = function(e) {
                    var t = this.api(!0).clear();
                    (e === i || e) && t.draw()
                }, this.fnClose = function(e) {
                    this.api(!0).row(e).child.hide()
                }, this.fnDeleteRow = function(e, t, n) {
                    var r = this.api(!0),
                        o = (e = r.rows(e)).settings()[0],
                        a = o.aoData[e[0][0]];
                    return e.remove(), t && t.call(this, o, a), (n === i || n) && r.draw(), a
                }, this.fnDestroy = function(e) {
                    this.api(!0).destroy(e)
                }, this.fnDraw = function(e) {
                    this.api(!0).draw(e)
                }, this.fnFilter = function(e, t, n, r, o, a) {
                    o = this.api(!0), null === t || t === i ? o.search(e, n, r, a) : o.column(t).search(e, n, r, a), o.draw()
                }, this.fnGetData = function(e, t) {
                    var n = this.api(!0);
                    if (e !== i) {
                        var r = e.nodeName ? e.nodeName.toLowerCase() : "";
                        return t !== i || "td" == r || "th" == r ? n.cell(e, t).data() : n.row(e).data() || null
                    }
                    return n.data().toArray()
                }, this.fnGetNodes = function(e) {
                    var t = this.api(!0);
                    return e !== i ? t.row(e).node() : t.rows().nodes().flatten().toArray()
                }, this.fnGetPosition = function(e) {
                    var t = this.api(!0),
                        n = e.nodeName.toUpperCase();
                    return "TR" == n ? t.row(e).index() : "TD" == n || "TH" == n ? [(e = t.cell(e).index()).row, e.columnVisible, e.column] : null
                }, this.fnIsOpen = function(e) {
                    return this.api(!0).row(e).child.isShown()
                }, this.fnOpen = function(e, t, n) {
                    return this.api(!0).row(e).child(t, n).show().child()[0]
                }, this.fnPageChange = function(e, t) {
                    var n = this.api(!0).page(e);
                    (t === i || t) && n.draw(!1)
                }, this.fnSetColumnVis = function(e, t, n) {
                    e = this.api(!0).column(e).visible(t), (n === i || n) && e.columns.adjust().draw()
                }, this.fnSettings = function() {
                    return Ae(this[Be.iApiIndex])
                }, this.fnSort = function(e) {
                    this.api(!0).order(e).draw()
                }, this.fnSortListener = function(e, t, n) {
                    this.api(!0).order.listener(e, t, n)
                }, this.fnUpdate = function(e, t, n, r, o) {
                    var a = this.api(!0);
                    return n === i || null === n ? a.row(t).data(e) : a.cell(t, n).data(e), (o === i || o) && a.columns.adjust(), (r === i || r) && a.draw(), 0
                }, this.fnVersionCheck = Be.fnVersionCheck;
                var n = this,
                    r = t === i,
                    u = this.length;
                for (var f in r && (t = {}), this.oApi = this.internal = Be.internal, Ve.ext.internal) f && (this[f] = He(f));
                return this.each((function() {
                    var f, p = {},
                        g = 1 < u ? Ie(p, t, !0) : t,
                        m = 0,
                        v = (p = this.getAttribute("id"), !1),
                        y = Ve.defaults,
                        _ = e(this);
                    if ("table" != this.nodeName.toLowerCase()) Me(null, 0, "Non-table node initialisation (" + this.nodeName + ")", 2);
                    else {
                        s(y), l(y.column), o(y, y, !0), o(y.column, y.column, !0), o(y, e.extend(g, _.data()), !0);
                        var C = Ve.settings;
                        m = 0;
                        for (f = C.length; m < f; m++) {
                            var k = C[m];
                            if (k.nTable == this || k.nTHead && k.nTHead.parentNode == this || k.nTFoot && k.nTFoot.parentNode == this) {
                                var T = g.bRetrieve !== i ? g.bRetrieve : y.bRetrieve;
                                if (r || T) return k.oInstance;
                                if (g.bDestroy !== i ? g.bDestroy : y.bDestroy) {
                                    k.oInstance.fnDestroy();
                                    break
                                }
                                return void Me(k, 0, "Cannot reinitialise DataTable", 3)
                            }
                            if (k.sTableId == this.id) {
                                C.splice(m, 1);
                                break
                            }
                        }
                        null !== p && "" !== p || (this.id = p = "DataTables_Table_" + Ve.ext._unique++);
                        var D = e.extend(!0, {}, Ve.models.oSettings, {
                            sDestroyWidth: _[0].style.width,
                            sInstance: p,
                            sTableId: p
                        });
                        D.nTable = this, D.oApi = n.internal, D.oInit = g, C.push(D), D.oInstance = 1 === n.length ? n : _.dataTable(), s(g), a(g.oLanguage), g.aLengthMenu && !g.iDisplayLength && (g.iDisplayLength = e.isArray(g.aLengthMenu[0]) ? g.aLengthMenu[0][0] : g.aLengthMenu[0]), g = Ie(e.extend(!0, {}, y), g), Oe(D.oFeatures, g, "bPaginate bLengthChange bFilter bSort bSortMulti bInfo bProcessing bAutoWidth bSortClasses bServerSide bDeferRender".split(" ")), Oe(D, g, ["asStripeClasses", "ajax", "fnServerData", "fnFormatNumber", "sServerMethod", "aaSorting", "aaSortingFixed", "aLengthMenu", "sPaginationType", "sAjaxSource", "sAjaxDataProp", "iStateDuration", "sDom", "bSortCellsTop", "iTabIndex", "fnStateLoadCallback", "fnStateSaveCallback", "renderer", "searchDelay", "rowId", ["iCookieDuration", "iStateDuration"],
                            ["oSearch", "oPreviousSearch"],
                            ["aoSearchCols", "aoPreSearchCols"],
                            ["iDisplayLength", "_iDisplayLength"]
                        ]), Oe(D.oScroll, g, [
                            ["sScrollX", "sX"],
                            ["sScrollXInner", "sXInner"],
                            ["sScrollY", "sY"],
                            ["bScrollCollapse", "bCollapse"]
                        ]), Oe(D.oLanguage, g, "fnInfoCallback"), Le(D, "aoDrawCallback", g.fnDrawCallback, "user"), Le(D, "aoServerParams", g.fnServerParams, "user"), Le(D, "aoStateSaveParams", g.fnStateSaveParams, "user"), Le(D, "aoStateLoadParams", g.fnStateLoadParams, "user"), Le(D, "aoStateLoaded", g.fnStateLoaded, "user"), Le(D, "aoRowCallback", g.fnRowCallback, "user"), Le(D, "aoRowCreatedCallback", g.fnCreatedRow, "user"), Le(D, "aoHeaderCallback", g.fnHeaderCallback, "user"), Le(D, "aoFooterCallback", g.fnFooterCallback, "user"), Le(D, "aoInitComplete", g.fnInitComplete, "user"), Le(D, "aoPreDrawCallback", g.fnPreDrawCallback, "user"), D.rowIdFn = S(g.rowId), c(D);
                        var E = D.oClasses;
                        e.extend(E, Ve.ext.classes, g.oClasses), _.addClass(E.sTable), D.iInitDisplayStart === i && (D.iInitDisplayStart = g.iDisplayStart, D._iDisplayStart = g.iDisplayStart), null !== g.iDeferLoading && (D.bDeferLoading = !0, p = e.isArray(g.iDeferLoading), D._iRecordsDisplay = p ? g.iDeferLoading[0] : g.iDeferLoading, D._iRecordsTotal = p ? g.iDeferLoading[1] : g.iDeferLoading);
                        var A = D.oLanguage;
                        e.extend(!0, A, g.oLanguage), A.sUrl && (e.ajax({
                            dataType: "json",
                            url: A.sUrl,
                            success: function(t) {
                                a(t), o(y.oLanguage, t), e.extend(!0, A, t), re(D)
                            },
                            error: function() {
                                re(D)
                            }
                        }), v = !0), null === g.asStripeClasses && (D.asStripeClasses = [E.sStripeOdd, E.sStripeEven]);
                        p = D.asStripeClasses;
                        var M = _.children("tbody").find("tr").eq(0);
                        if (-1 !== e.inArray(!0, e.map(p, (function(e) {
                                return M.hasClass(e)
                            }))) && (e("tbody tr", this).removeClass(p.join(" ")), D.asDestroyStripes = p.slice()), p = [], 0 !== (C = this.getElementsByTagName("thead")).length && ($(D.aoHeader, C[0]), p = z(D)), null === g.aoColumns)
                            for (C = [], m = 0, f = p.length; m < f; m++) C.push(null);
                        else C = g.aoColumns;
                        for (m = 0, f = C.length; m < f; m++) d(D, p ? p[m] : null);
                        if (b(D, g.aoColumnDefs, C, (function(e, t) {
                                h(D, e, t)
                            })), M.length) {
                            var O = function(e, t) {
                                return null !== e.getAttribute("data-" + t) ? t : null
                            };
                            e(M[0]).children("th, td").each((function(e, t) {
                                var n = D.aoColumns[e];
                                if (n.mData === e) {
                                    var r = O(t, "sort") || O(t, "order"),
                                        o = O(t, "filter") || O(t, "search");
                                    null === r && null === o || (n.mData = {
                                        _: e + ".display",
                                        sort: null !== r ? e + ".@data-" + r : i,
                                        type: null !== r ? e + ".@data-" + r : i,
                                        filter: null !== o ? e + ".@data-" + o : i
                                    }, h(D, e))
                                }
                            }))
                        }
                        var I = D.oFeatures;
                        p = function() {
                            if (g.aaSorting === i) {
                                var t = D.aaSorting;
                                for (m = 0, f = t.length; m < f; m++) t[m][1] = D.aoColumns[m].asSorting[0]
                            }
                            Se(D), I.bSort && Le(D, "aoDrawCallback", (function() {
                                if (D.bSorted) {
                                    var t = we(D),
                                        n = {};
                                    e.each(t, (function(e, t) {
                                        n[t.src] = t.dir
                                    })), Fe(D, null, "order", [D, t, n]), _e(D)
                                }
                            })), Le(D, "aoDrawCallback", (function() {
                                (D.bSorted || "ssp" === je(D) || I.bDeferRender) && Se(D)
                            }), "sc");
                            t = _.children("caption").each((function() {
                                this._captionSide = e(this).css("caption-side")
                            }));
                            var n = _.children("thead");
                            if (0 === n.length && (n = e("<thead/>").appendTo(_)), D.nTHead = n[0], 0 === (n = _.children("tbody")).length && (n = e("<tbody/>").appendTo(_)), D.nTBody = n[0], 0 === (n = _.children("tfoot")).length && t.length > 0 && ("" !== D.oScroll.sX || "" !== D.oScroll.sY) && (n = e("<tfoot/>").appendTo(_)), 0 === n.length || 0 === n.children().length ? _.addClass(E.sNoFooter) : n.length > 0 && (D.nTFoot = n[0], $(D.aoFooter, D.nTFoot)), g.aaData)
                                for (m = 0; m < g.aaData.length; m++) w(D, g.aaData[m]);
                            else(D.bDeferLoading || "dom" == je(D)) && x(D, e(D.nTBody).children("tr"));
                            D.aiDisplay = D.aiDisplayMaster.slice(), D.bInitialised = !0, !1 === v && re(D)
                        };
                        g.bStateSave ? (I.bStateSave = !0, Le(D, "aoDrawCallback", De, "state_save"), Ee(D, g, p)) : p()
                    }
                })), n = null, this
            },
            Ye = {},
            Xe = /[\r\n\u2028]/g,
            Ge = /<.*?>/g,
            Qe = /^\d{2,4}[\.\/\-]\d{1,2}[\.\/\-]\d{1,2}([T ]{1}\d{1,2}[:\.]\d{2}([\.:]\d{2})?)?$/,
            Ke = RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\$|\\^|\\-)", "g"),
            Je = /[',$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfkɃΞ]/gi,
            Ze = function(e) {
                return !e || !0 === e || "-" === e
            },
            et = function(e) {
                var t = parseInt(e, 10);
                return !isNaN(t) && isFinite(e) ? t : null
            },
            tt = function(e, t) {
                return Ye[t] || (Ye[t] = RegExp(ht(t), "g")), "string" == typeof e && "." !== t ? e.replace(/\./g, "").replace(Ye[t], ".") : e
            },
            nt = function(e, t, n) {
                var i = "string" == typeof e;
                return !!Ze(e) || (t && i && (e = tt(e, t)), n && i && (e = e.replace(Je, "")), !isNaN(parseFloat(e)) && isFinite(e))
            },
            it = function(e, t, n) {
                return !!Ze(e) || ((Ze(e) || "string" == typeof e) && !!nt(e.replace(Ge, ""), t, n) || null)
            },
            rt = function(e, t, n) {
                var r = [],
                    o = 0,
                    a = e.length;
                if (n !== i)
                    for (; o < a; o++) e[o] && e[o][t] && r.push(e[o][t][n]);
                else
                    for (; o < a; o++) e[o] && r.push(e[o][t]);
                return r
            },
            ot = function(e, t, n, r) {
                var o = [],
                    a = 0,
                    s = t.length;
                if (r !== i)
                    for (; a < s; a++) e[t[a]][n] && o.push(e[t[a]][n][r]);
                else
                    for (; a < s; a++) o.push(e[t[a]][n]);
                return o
            },
            at = function(e, t) {
                var n, r = [];
                t === i ? (t = 0, n = e) : (n = t, t = e);
                for (var o = t; o < n; o++) r.push(o);
                return r
            },
            st = function(e) {
                for (var t = [], n = 0, i = e.length; n < i; n++) e[n] && t.push(e[n]);
                return t
            },
            lt = function(e) {
                var t;
                e: {
                    if (!(2 > e.length))
                        for (var n = (t = e.slice().sort())[0], i = 1, r = t.length; i < r; i++) {
                            if (t[i] === n) {
                                t = !1;
                                break e
                            }
                            n = t[i]
                        }
                    t = !0
                }
                if (t) return e.slice();
                t = [];
                r = e.length;
                var o, a = 0;
                i = 0;
                e: for (; i < r; i++) {
                    for (n = e[i], o = 0; o < a; o++)
                        if (t[o] === n) continue e;
                    t.push(n), a++
                }
                return t
            };
        Ve.util = {
            throttle: function(e, t) {
                var n, r, o = t !== i ? t : 200;
                return function() {
                    var t = this,
                        a = +new Date,
                        s = arguments;
                    n && a < n + o ? (clearTimeout(r), r = setTimeout((function() {
                        n = i, e.apply(t, s)
                    }), o)) : (n = a, e.apply(t, s))
                }
            },
            escapeRegex: function(e) {
                return e.replace(Ke, "\\$1")
            }
        };
        var ct = function(e, t, n) {
                e[t] !== i && (e[n] = e[t])
            },
            ut = /\[.*?\]$/,
            dt = /\(\)$/,
            ht = Ve.util.escapeRegex,
            ft = e("<div>")[0],
            pt = ft.textContent !== i,
            gt = /<.*?>/g,
            mt = Ve.util.throttle,
            vt = [],
            yt = Array.prototype;
        qe = function(t, n) {
            if (!(this instanceof qe)) return new qe(t, n);
            var i = [],
                r = function(t) {
                    (t = function(t) {
                        var n, i, r = Ve.settings,
                            o = e.map(r, (function(e) {
                                return e.nTable
                            }));
                        return t ? t.nTable && t.oApi ? [t] : t.nodeName && "table" === t.nodeName.toLowerCase() ? -1 !== (n = e.inArray(t, o)) ? [r[n]] : null : t && "function" == typeof t.settings ? t.settings().toArray() : ("string" == typeof t ? i = e(t) : t instanceof e && (i = t), i ? i.map((function() {
                            return -1 !== (n = e.inArray(this, o)) ? r[n] : null
                        })).toArray() : void 0) : []
                    }(t)) && i.push.apply(i, t)
                };
            if (e.isArray(t))
                for (var o = 0, a = t.length; o < a; o++) r(t[o]);
            else r(t);
            this.context = lt(i), n && e.merge(this, n), this.selector = {
                rows: null,
                cols: null,
                opts: null
            }, qe.extend(this, this, vt)
        }, Ve.Api = qe, e.extend(qe.prototype, {
            any: function() {
                return 0 !== this.count()
            },
            concat: yt.concat,
            context: [],
            count: function() {
                return this.flatten().length
            },
            each: function(e) {
                for (var t = 0, n = this.length; t < n; t++) e.call(this, this[t], t, this);
                return this
            },
            eq: function(e) {
                var t = this.context;
                return t.length > e ? new qe(t[e], this[e]) : null
            },
            filter: function(e) {
                var t = [];
                if (yt.filter) t = yt.filter.call(this, e, this);
                else
                    for (var n = 0, i = this.length; n < i; n++) e.call(this, this[n], n, this) && t.push(this[n]);
                return new qe(this.context, t)
            },
            flatten: function() {
                var e = [];
                return new qe(this.context, e.concat.apply(e, this.toArray()))
            },
            join: yt.join,
            indexOf: yt.indexOf || function(e, t) {
                for (var n = t || 0, i = this.length; n < i; n++)
                    if (this[n] === e) return n;
                return -1
            },
            iterator: function(e, t, n, r) {
                var o, a, s, l, c, u, d, h = [],
                    f = this.context,
                    p = this.selector;
                for ("string" == typeof e && (r = n, n = t, t = e, e = !1), a = 0, s = f.length; a < s; a++) {
                    var g = new qe(f[a]);
                    if ("table" === t)(o = n.call(g, f[a], a)) !== i && h.push(o);
                    else if ("columns" === t || "rows" === t)(o = n.call(g, f[a], this[a], a)) !== i && h.push(o);
                    else if ("column" === t || "column-rows" === t || "row" === t || "cell" === t)
                        for (d = this[a], "column-rows" === t && (u = kt(f[a], p.opts)), l = 0, c = d.length; l < c; l++) o = d[l], (o = "cell" === t ? n.call(g, f[a], o.row, o.column, a, l) : n.call(g, f[a], o, a, l, u)) !== i && h.push(o)
                }
                return h.length || r ? ((t = (e = new qe(f, e ? h.concat.apply([], h) : h)).selector).rows = p.rows, t.cols = p.cols, t.opts = p.opts, e) : this
            },
            lastIndexOf: yt.lastIndexOf || function(e, t) {
                return this.indexOf.apply(this.toArray.reverse(), arguments)
            },
            length: 0,
            map: function(e) {
                var t = [];
                if (yt.map) t = yt.map.call(this, e, this);
                else
                    for (var n = 0, i = this.length; n < i; n++) t.push(e.call(this, this[n], n));
                return new qe(this.context, t)
            },
            pluck: function(e) {
                return this.map((function(t) {
                    return t[e]
                }))
            },
            pop: yt.pop,
            push: yt.push,
            reduce: yt.reduce || function(e, t) {
                return u(this, e, t, 0, this.length, 1)
            },
            reduceRight: yt.reduceRight || function(e, t) {
                return u(this, e, t, this.length - 1, -1, -1)
            },
            reverse: yt.reverse,
            selector: null,
            shift: yt.shift,
            slice: function() {
                return new qe(this.context, this)
            },
            sort: yt.sort,
            splice: yt.splice,
            toArray: function() {
                return yt.slice.call(this)
            },
            to$: function() {
                return e(this)
            },
            toJQuery: function() {
                return e(this)
            },
            unique: function() {
                return new qe(this.context, lt(this))
            },
            unshift: yt.unshift
        }), qe.extend = function(e, t, n) {
            if (n.length && t && (t instanceof qe || t.__dt_wrapper)) {
                var i, r, o, a = function(e, t, n) {
                    return function() {
                        var i = t.apply(e, arguments);
                        return qe.extend(i, i, n.methodExt), i
                    }
                };
                for (i = 0, r = n.length; i < r; i++) t[(o = n[i]).name] = "function" === o.type ? a(e, o.val, o) : "object" === o.type ? {} : o.val, t[o.name].__dt_wrapper = !0, qe.extend(e, t[o.name], o.propExt)
            }
        }, qe.register = We = function(t, n) {
            if (e.isArray(t))
                for (var i = 0, r = t.length; i < r; i++) qe.register(t[i], n);
            else {
                var o, a, s = t.split("."),
                    l = vt;
                for (i = 0, r = s.length; i < r; i++) {
                    var c;
                    o = (a = -1 !== s[i].indexOf("()")) ? s[i].replace("()", "") : s[i];
                    e: {
                        c = 0;
                        for (var u = l.length; c < u; c++)
                            if (l[c].name === o) {
                                c = l[c];
                                break e
                            }
                        c = null
                    }
                    c || (c = {
                        name: o,
                        val: {},
                        methodExt: [],
                        propExt: [],
                        type: "object"
                    }, l.push(c)), i === r - 1 ? (c.val = n, c.type = "function" == typeof n ? "function" : e.isPlainObject(n) ? "object" : "other") : l = a ? c.methodExt : c.propExt
                }
            }
        }, qe.registerPlural = Ue = function(t, n, r) {
            qe.register(t, r), qe.register(n, (function() {
                var t = r.apply(this, arguments);
                return t === this ? this : t instanceof qe ? t.length ? e.isArray(t[0]) ? new qe(t.context, t[0]) : t[0] : i : t
            }))
        };
        var bt = function(t, n) {
            if (e.isArray(t)) return e.map(t, (function(e) {
                return bt(e, n)
            }));
            if ("number" == typeof t) return [n[t]];
            var i = e.map(n, (function(e) {
                return e.nTable
            }));
            return e(i).filter(t).map((function() {
                var t = e.inArray(this, i);
                return n[t]
            })).toArray()
        };
        We("tables()", (function(e) {
            return e !== i && null !== e ? new qe(bt(e, this.context)) : this
        })), We("table()", (function(e) {
            var t = (e = this.tables(e)).context;
            return t.length ? new qe(t[0]) : e
        })), Ue("tables().nodes()", "table().node()", (function() {
            return this.iterator("table", (function(e) {
                return e.nTable
            }), 1)
        })), Ue("tables().body()", "table().body()", (function() {
            return this.iterator("table", (function(e) {
                return e.nTBody
            }), 1)
        })), Ue("tables().header()", "table().header()", (function() {
            return this.iterator("table", (function(e) {
                return e.nTHead
            }), 1)
        })), Ue("tables().footer()", "table().footer()", (function() {
            return this.iterator("table", (function(e) {
                return e.nTFoot
            }), 1)
        })), Ue("tables().containers()", "table().container()", (function() {
            return this.iterator("table", (function(e) {
                return e.nTableWrapper
            }), 1)
        })), We("draw()", (function(e) {
            return this.iterator("table", (function(t) {
                "page" === e ? N(t) : ("string" == typeof e && (e = "full-hold" !== e), R(t, !1 === e))
            }))
        })), We("page()", (function(e) {
            return e === i ? this.page.info().page : this.iterator("table", (function(t) {
                ce(t, e)
            }))
        })), We("page.info()", (function() {
            if (0 === this.context.length) return i;
            var e = this.context[0],
                t = e._iDisplayStart,
                n = e.oFeatures.bPaginate ? e._iDisplayLength : -1,
                r = e.fnRecordsDisplay(),
                o = -1 === n;
            return {
                page: o ? 0 : Math.floor(t / n),
                pages: o ? 1 : Math.ceil(r / n),
                start: t,
                end: e.fnDisplayEnd(),
                length: n,
                recordsTotal: e.fnRecordsTotal(),
                recordsDisplay: r,
                serverSide: "ssp" === je(e)
            }
        })), We("page.len()", (function(e) {
            return e === i ? 0 !== this.context.length ? this.context[0]._iDisplayLength : i : this.iterator("table", (function(t) {
                ae(t, e)
            }))
        }));
        var wt = function(e, t, n) {
            if (n) {
                var i = new qe(e);
                i.one("draw", (function() {
                    n(i.ajax.json())
                }))
            }
            if ("ssp" == je(e)) R(e, t);
            else {
                de(e, !0);
                var r = e.jqXHR;
                r && 4 !== r.readyState && r.abort(), H(e, [], (function(n) {
                    E(e);
                    for (var i = 0, r = (n = U(e, n)).length; i < r; i++) w(e, n[i]);
                    R(e, t), de(e, !1)
                }))
            }
        };
        We("ajax.json()", (function() {
            var e = this.context;
            if (0 < e.length) return e[0].json
        })), We("ajax.params()", (function() {
            var e = this.context;
            if (0 < e.length) return e[0].oAjaxData
        })), We("ajax.reload()", (function(e, t) {
            return this.iterator("table", (function(n) {
                wt(n, !1 === t, e)
            }))
        })), We("ajax.url()", (function(t) {
            var n = this.context;
            return t === i ? 0 === n.length ? i : (n = n[0]).ajax ? e.isPlainObject(n.ajax) ? n.ajax.url : n.ajax : n.sAjaxSource : this.iterator("table", (function(n) {
                e.isPlainObject(n.ajax) ? n.ajax.url = t : n.ajax = t
            }))
        })), We("ajax.url().load()", (function(e, t) {
            return this.iterator("table", (function(n) {
                wt(n, !1 === t, e)
            }))
        }));
        var xt = function(t, n, r, o, a) {
                var s, l, c, u, d, h, f = [];
                for (c = typeof n, n && "string" !== c && "function" !== c && n.length !== i || (n = [n]), c = 0, u = n.length; c < u; c++)
                    for (d = 0, h = (l = n[c] && n[c].split && !n[c].match(/[\[\(:]/) ? n[c].split(",") : [n[c]]).length; d < h; d++)(s = r("string" == typeof l[d] ? e.trim(l[d]) : l[d])) && s.length && (f = f.concat(s));
                if ((t = Be.selector[t]).length)
                    for (c = 0, u = t.length; c < u; c++) f = t[c](o, a, f);
                return lt(f)
            },
            _t = function(t) {
                return t || (t = {}), t.filter && t.search === i && (t.search = t.filter), e.extend({
                    search: "none",
                    order: "current",
                    page: "all"
                }, t)
            },
            Ct = function(e) {
                for (var t = 0, n = e.length; t < n; t++)
                    if (0 < e[t].length) return e[0] = e[t], e[0].length = 1, e.length = 1, e.context = [e.context[t]], e;
                return e.length = 0, e
            },
            kt = function(t, n) {
                var i, r, o, a = [],
                    s = t.aiDisplay;
                o = t.aiDisplayMaster;
                var l = n.search;
                if (i = n.order, r = n.page, "ssp" == je(t)) return "removed" === l ? [] : at(0, o.length);
                if ("current" == r)
                    for (i = t._iDisplayStart, r = t.fnDisplayEnd(); i < r; i++) a.push(s[i]);
                else if ("current" == i || "applied" == i) {
                    if ("none" == l) a = o.slice();
                    else if ("applied" == l) a = s.slice();
                    else if ("removed" == l) {
                        var c = {};
                        for (i = 0, r = s.length; i < r; i++) c[s[i]] = null;
                        a = e.map(o, (function(e) {
                            return c.hasOwnProperty(e) ? null : e
                        }))
                    }
                } else if ("index" == i || "original" == i)
                    for (i = 0, r = t.aoData.length; i < r; i++) "none" == l ? a.push(i) : (-1 === (o = e.inArray(i, s)) && "removed" == l || 0 <= o && "applied" == l) && a.push(i);
                return a
            };
        We("rows()", (function(t, n) {
            t === i ? t = "" : e.isPlainObject(t) && (n = t, t = "");
            n = _t(n);
            var r = this.iterator("table", (function(r) {
                var o, a = n;
                return xt("row", t, (function(t) {
                    var n = et(t),
                        s = r.aoData;
                    if (null !== n && !a) return [n];
                    if (o || (o = kt(r, a)), null !== n && -1 !== e.inArray(n, o)) return [n];
                    if (null === t || t === i || "" === t) return o;
                    if ("function" == typeof t) return e.map(o, (function(e) {
                        var n = s[e];
                        return t(e, n._aData, n.nTr) ? e : null
                    }));
                    if (t.nodeName) {
                        n = t._DT_RowIndex;
                        var l = t._DT_CellIndex;
                        return n !== i ? s[n] && s[n].nTr === t ? [n] : [] : l ? s[l.row] && s[l.row].nTr === t.parentNode ? [l.row] : [] : (n = e(t).closest("*[data-dt-row]")).length ? [n.data("dt-row")] : []
                    }
                    return "string" == typeof t && "#" === t.charAt(0) && (n = r.aIds[t.replace(/^#/, "")]) !== i ? [n.idx] : (n = st(ot(r.aoData, o, "nTr")), e(n).filter(t).map((function() {
                        return this._DT_RowIndex
                    })).toArray())
                }), r, a)
            }), 1);
            return r.selector.rows = t, r.selector.opts = n, r
        })), We("rows().nodes()", (function() {
            return this.iterator("row", (function(e, t) {
                return e.aoData[t].nTr || i
            }), 1)
        })), We("rows().data()", (function() {
            return this.iterator(!0, "rows", (function(e, t) {
                return ot(e.aoData, t, "_aData")
            }), 1)
        })), Ue("rows().cache()", "row().cache()", (function(e) {
            return this.iterator("row", (function(t, n) {
                var i = t.aoData[n];
                return "search" === e ? i._aFilterData : i._aSortData
            }), 1)
        })), Ue("rows().invalidate()", "row().invalidate()", (function(e) {
            return this.iterator("row", (function(t, n) {
                M(t, n, e)
            }))
        })), Ue("rows().indexes()", "row().index()", (function() {
            return this.iterator("row", (function(e, t) {
                return t
            }), 1)
        })), Ue("rows().ids()", "row().id()", (function(e) {
            for (var t = [], n = this.context, i = 0, r = n.length; i < r; i++)
                for (var o = 0, a = this[i].length; o < a; o++) {
                    var s = n[i].rowIdFn(n[i].aoData[this[i][o]]._aData);
                    t.push((!0 === e ? "#" : "") + s)
                }
            return new qe(n, t)
        })), Ue("rows().remove()", "row().remove()", (function() {
            var e = this;
            return this.iterator("row", (function(t, n, r) {
                var o, a, s, l, c, u = t.aoData,
                    d = u[n];
                for (u.splice(n, 1), o = 0, a = u.length; o < a; o++)
                    if (c = (s = u[o]).anCells, null !== s.nTr && (s.nTr._DT_RowIndex = o), null !== c)
                        for (s = 0, l = c.length; s < l; s++) c[s]._DT_CellIndex.row = o;
                A(t.aiDisplayMaster, n), A(t.aiDisplay, n), A(e[r], n, !1), 0 < t._iRecordsDisplay && t._iRecordsDisplay--, Ne(t), (n = t.rowIdFn(d._aData)) !== i && delete t.aIds[n]
            })), this.iterator("table", (function(e) {
                for (var t = 0, n = e.aoData.length; t < n; t++) e.aoData[t].idx = t
            })), this
        })), We("rows.add()", (function(t) {
            var n = this.iterator("table", (function(e) {
                    var n, i, r, o = [];
                    for (i = 0, r = t.length; i < r; i++)(n = t[i]).nodeName && "TR" === n.nodeName.toUpperCase() ? o.push(x(e, n)[0]) : o.push(w(e, n));
                    return o
                }), 1),
                i = this.rows(-1);
            return i.pop(), e.merge(i, n), i
        })), We("row()", (function(e, t) {
            return Ct(this.rows(e, t))
        })), We("row().data()", (function(t) {
            var n = this.context;
            if (t === i) return n.length && this.length ? n[0].aoData[this[0]]._aData : i;
            var r = n[0].aoData[this[0]];
            return r._aData = t, e.isArray(t) && r.nTr && r.nTr.id && T(n[0].rowId)(t, r.nTr.id), M(n[0], this[0], "data"), this
        })), We("row().node()", (function() {
            var e = this.context;
            return e.length && this.length && e[0].aoData[this[0]].nTr || null
        })), We("row.add()", (function(t) {
            t instanceof e && t.length && (t = t[0]);
            var n = this.iterator("table", (function(e) {
                return t.nodeName && "TR" === t.nodeName.toUpperCase() ? x(e, t)[0] : w(e, t)
            }));
            return this.row(n[0])
        }));
        var St = function(e, t) {
                var n = e.context;
                n.length && (n = n[0].aoData[t !== i ? t : e[0]]) && n._details && (n._details.remove(), n._detailsShow = i, n._details = i)
            },
            Tt = function(e, t) {
                var n = e.context;
                if (n.length && e.length) {
                    var i = n[0].aoData[e[0]];
                    if (i._details) {
                        (i._detailsShow = t) ? i._details.insertAfter(i.nTr): i._details.detach();
                        var r = n[0],
                            o = new qe(r),
                            a = r.aoData;
                        o.off("draw.dt.DT_details column-visibility.dt.DT_details destroy.dt.DT_details"), 0 < rt(a, "_details").length && (o.on("draw.dt.DT_details", (function(e, t) {
                            r === t && o.rows({
                                page: "current"
                            }).eq(0).each((function(e) {
                                (e = a[e])._detailsShow && e._details.insertAfter(e.nTr)
                            }))
                        })), o.on("column-visibility.dt.DT_details", (function(e, t) {
                            if (r === t)
                                for (var n, i = m(t), o = 0, s = a.length; o < s; o++)(n = a[o])._details && n._details.children("td[colspan]").attr("colspan", i)
                        })), o.on("destroy.dt.DT_details", (function(e, t) {
                            if (r === t)
                                for (var n = 0, i = a.length; n < i; n++) a[n]._details && St(o, n)
                        })))
                    }
                }
            };
        We("row().child()", (function(t, n) {
            var r = this.context;
            if (t === i) return r.length && this.length ? r[0].aoData[this[0]]._details : i;
            if (!0 === t) this.child.show();
            else if (!1 === t) St(this);
            else if (r.length && this.length) {
                var o = r[0],
                    a = (r = r[0].aoData[this[0]], []),
                    s = function(t, n) {
                        if (e.isArray(t) || t instanceof e)
                            for (var i = 0, r = t.length; i < r; i++) s(t[i], n);
                        else t.nodeName && "tr" === t.nodeName.toLowerCase() ? a.push(t) : (i = e("<tr><td/></tr>").addClass(n), e("td", i).addClass(n).html(t)[0].colSpan = m(o), a.push(i[0]))
                    };
                s(t, n), r._details && r._details.detach(), r._details = e(a), r._detailsShow && r._details.insertAfter(r.nTr)
            }
            return this
        })), We(["row().child.show()", "row().child().show()"], (function() {
            return Tt(this, !0), this
        })), We(["row().child.hide()", "row().child().hide()"], (function() {
            return Tt(this, !1), this
        })), We(["row().child.remove()", "row().child().remove()"], (function() {
            return St(this), this
        })), We("row().child.isShown()", (function() {
            var e = this.context;
            return e.length && this.length && e[0].aoData[this[0]]._detailsShow || !1
        }));
        var Dt = /^([^:]+):(name|visIdx|visible)$/,
            Et = function(e, t, n, i, r) {
                n = [], i = 0;
                for (var o = r.length; i < o; i++) n.push(_(e, r[i], t));
                return n
            };
        We("columns()", (function(t, n) {
            t === i ? t = "" : e.isPlainObject(t) && (n = t, t = "");
            n = _t(n);
            var r = this.iterator("table", (function(i) {
                var r = t,
                    o = n,
                    a = i.aoColumns,
                    s = rt(a, "sName"),
                    l = rt(a, "nTh");
                return xt("column", r, (function(t) {
                    var n = et(t);
                    if ("" === t) return at(a.length);
                    if (null !== n) return [n >= 0 ? n : a.length + n];
                    if ("function" == typeof t) {
                        var r = kt(i, o);
                        return e.map(a, (function(e, n) {
                            return t(n, Et(i, n, 0, 0, r), l[n]) ? n : null
                        }))
                    }
                    var c = "string" == typeof t ? t.match(Dt) : "";
                    if (c) switch (c[2]) {
                        case "visIdx":
                        case "visible":
                            if ((n = parseInt(c[1], 10)) < 0) {
                                var u = e.map(a, (function(e, t) {
                                    return e.bVisible ? t : null
                                }));
                                return [u[u.length + n]]
                            }
                            return [p(i, n)];
                        case "name":
                            return e.map(s, (function(e, t) {
                                return e === c[1] ? t : null
                            }));
                        default:
                            return []
                    }
                    return t.nodeName && t._DT_CellIndex ? [t._DT_CellIndex.column] : (n = e(l).filter(t).map((function() {
                        return e.inArray(this, l)
                    })).toArray()).length || !t.nodeName ? n : (n = e(t).closest("*[data-dt-column]")).length ? [n.data("dt-column")] : []
                }), i, o)
            }), 1);
            return r.selector.cols = t, r.selector.opts = n, r
        })), Ue("columns().header()", "column().header()", (function() {
            return this.iterator("column", (function(e, t) {
                return e.aoColumns[t].nTh
            }), 1)
        })), Ue("columns().footer()", "column().footer()", (function() {
            return this.iterator("column", (function(e, t) {
                return e.aoColumns[t].nTf
            }), 1)
        })), Ue("columns().data()", "column().data()", (function() {
            return this.iterator("column-rows", Et, 1)
        })), Ue("columns().dataSrc()", "column().dataSrc()", (function() {
            return this.iterator("column", (function(e, t) {
                return e.aoColumns[t].mData
            }), 1)
        })), Ue("columns().cache()", "column().cache()", (function(e) {
            return this.iterator("column-rows", (function(t, n, i, r, o) {
                return ot(t.aoData, o, "search" === e ? "_aFilterData" : "_aSortData", n)
            }), 1)
        })), Ue("columns().nodes()", "column().nodes()", (function() {
            return this.iterator("column-rows", (function(e, t, n, i, r) {
                return ot(e.aoData, r, "anCells", t)
            }), 1)
        })), Ue("columns().visible()", "column().visible()", (function(t, n) {
            var r = this,
                o = this.iterator("column", (function(n, r) {
                    if (t === i) return n.aoColumns[r].bVisible;
                    var o, a, s, l = n.aoColumns,
                        c = l[r],
                        u = n.aoData;
                    if (t !== i && c.bVisible !== t) {
                        if (t) {
                            var d = e.inArray(!0, rt(l, "bVisible"), r + 1);
                            for (o = 0, a = u.length; o < a; o++) s = u[o].nTr, l = u[o].anCells, s && s.insertBefore(l[r], l[d] || null)
                        } else e(rt(n.aoData, "anCells", r)).detach();
                        c.bVisible = t
                    }
                }));
            return t !== i && this.iterator("table", (function(o) {
                F(o, o.aoHeader), F(o, o.aoFooter), o.aiDisplay.length || e(o.nTBody).find("td[colspan]").attr("colspan", m(o)), De(o), r.iterator("column", (function(e, i) {
                    Fe(e, null, "column-visibility", [e, i, t, n])
                })), (n === i || n) && r.columns.adjust()
            })), o
        })), Ue("columns().indexes()", "column().index()", (function(e) {
            return this.iterator("column", (function(t, n) {
                return "visible" === e ? g(t, n) : n
            }), 1)
        })), We("columns.adjust()", (function() {
            return this.iterator("table", (function(e) {
                f(e)
            }), 1)
        })), We("column.index()", (function(e, t) {
            if (0 !== this.context.length) {
                var n = this.context[0];
                if ("fromVisible" === e || "toData" === e) return p(n, t);
                if ("fromData" === e || "toVisible" === e) return g(n, t)
            }
        })), We("column()", (function(e, t) {
            return Ct(this.columns(e, t))
        })), We("cells()", (function(t, n, r) {
            if (e.isPlainObject(t) && (t.row === i ? (r = t, t = null) : (r = n, n = null)), e.isPlainObject(n) && (r = n, n = null), null === n || n === i) return this.iterator("table", (function(n) {
                var o, a, s, l, c, u, d, h = t,
                    f = _t(r),
                    p = n.aoData,
                    g = kt(n, f),
                    m = st(ot(p, g, "anCells")),
                    v = e([].concat.apply([], m)),
                    y = n.aoColumns.length;
                return xt("cell", h, (function(t) {
                    var r = "function" == typeof t;
                    if (null === t || t === i || r) {
                        for (a = [], s = 0, l = g.length; s < l; s++)
                            for (o = g[s], c = 0; c < y; c++) u = {
                                row: o,
                                column: c
                            }, r ? (d = p[o], t(u, _(n, o, c), d.anCells ? d.anCells[c] : null) && a.push(u)) : a.push(u);
                        return a
                    }
                    return e.isPlainObject(t) ? t.column !== i && t.row !== i && -1 !== e.inArray(t.row, g) ? [t] : [] : (r = v.filter(t).map((function(e, t) {
                        return {
                            row: t._DT_CellIndex.row,
                            column: t._DT_CellIndex.column
                        }
                    })).toArray()).length || !t.nodeName ? r : (d = e(t).closest("*[data-dt-row]")).length ? [{
                        row: d.data("dt-row"),
                        column: d.data("dt-column")
                    }] : []
                }), n, f)
            }));
            var o, a, s, l, c = r ? {
                    page: r.page,
                    order: r.order,
                    search: r.search
                } : {},
                u = this.columns(n, c),
                d = this.rows(t, c);
            c = this.iterator("table", (function(e, t) {
                var n = [];
                for (o = 0, a = d[t].length; o < a; o++)
                    for (s = 0, l = u[t].length; s < l; s++) n.push({
                        row: d[t][o],
                        column: u[t][s]
                    });
                return n
            }), 1), c = r && r.selected ? this.cells(c, r) : c;
            return e.extend(c.selector, {
                cols: n,
                rows: t,
                opts: r
            }), c
        })), Ue("cells().nodes()", "cell().node()", (function() {
            return this.iterator("cell", (function(e, t, n) {
                return (e = e.aoData[t]) && e.anCells ? e.anCells[n] : i
            }), 1)
        })), We("cells().data()", (function() {
            return this.iterator("cell", (function(e, t, n) {
                return _(e, t, n)
            }), 1)
        })), Ue("cells().cache()", "cell().cache()", (function(e) {
            return e = "search" === e ? "_aFilterData" : "_aSortData", this.iterator("cell", (function(t, n, i) {
                return t.aoData[n][e][i]
            }), 1)
        })), Ue("cells().render()", "cell().render()", (function(e) {
            return this.iterator("cell", (function(t, n, i) {
                return _(t, n, i, e)
            }), 1)
        })), Ue("cells().indexes()", "cell().index()", (function() {
            return this.iterator("cell", (function(e, t, n) {
                return {
                    row: t,
                    column: n,
                    columnVisible: g(e, n)
                }
            }), 1)
        })), Ue("cells().invalidate()", "cell().invalidate()", (function(e) {
            return this.iterator("cell", (function(t, n, i) {
                M(t, n, e, i)
            }))
        })), We("cell()", (function(e, t, n) {
            return Ct(this.cells(e, t, n))
        })), We("cell().data()", (function(e) {
            var t = this.context,
                n = this[0];
            return e === i ? t.length && n.length ? _(t[0], n[0].row, n[0].column) : i : (C(t[0], n[0].row, n[0].column, e), M(t[0], n[0].row, "data", n[0].column), this)
        })), We("order()", (function(t, n) {
            var r = this.context;
            return t === i ? 0 !== r.length ? r[0].aaSorting : i : ("number" == typeof t ? t = [
                [t, n]
            ] : t.length && !e.isArray(t[0]) && (t = Array.prototype.slice.call(arguments)), this.iterator("table", (function(e) {
                e.aaSorting = t.slice()
            })))
        })), We("order.listener()", (function(e, t, n) {
            return this.iterator("table", (function(i) {
                ke(i, e, t, n)
            }))
        })), We("order.fixed()", (function(t) {
            if (!t) {
                var n = (n = this.context).length ? n[0].aaSortingFixed : i;
                return e.isArray(n) ? {
                    pre: n
                } : n
            }
            return this.iterator("table", (function(n) {
                n.aaSortingFixed = e.extend(!0, {}, t)
            }))
        })), We(["columns().order()", "column().order()"], (function(t) {
            var n = this;
            return this.iterator("table", (function(i, r) {
                var o = [];
                e.each(n[r], (function(e, n) {
                    o.push([n, t])
                })), i.aaSorting = o
            }))
        })), We("search()", (function(t, n, r, o) {
            var a = this.context;
            return t === i ? 0 !== a.length ? a[0].oPreviousSearch.sSearch : i : this.iterator("table", (function(i) {
                i.oFeatures.bFilter && Y(i, e.extend({}, i.oPreviousSearch, {
                    sSearch: t + "",
                    bRegex: null !== n && n,
                    bSmart: null === r || r,
                    bCaseInsensitive: null === o || o
                }), 1)
            }))
        })), Ue("columns().search()", "column().search()", (function(t, n, r, o) {
            return this.iterator("column", (function(a, s) {
                var l = a.aoPreSearchCols;
                if (t === i) return l[s].sSearch;
                a.oFeatures.bFilter && (e.extend(l[s], {
                    sSearch: t + "",
                    bRegex: null !== n && n,
                    bSmart: null === r || r,
                    bCaseInsensitive: null === o || o
                }), Y(a, a.oPreviousSearch, 1))
            }))
        })), We("state()", (function() {
            return this.context.length ? this.context[0].oSavedState : null
        })), We("state.clear()", (function() {
            return this.iterator("table", (function(e) {
                e.fnStateSaveCallback.call(e.oInstance, e, {})
            }))
        })), We("state.loaded()", (function() {
            return this.context.length ? this.context[0].oLoadedState : null
        })), We("state.save()", (function() {
            return this.iterator("table", (function(e) {
                De(e)
            }))
        })), Ve.versionCheck = Ve.fnVersionCheck = function(e) {
            for (var t, n, i = Ve.version.split("."), r = 0, o = (e = e.split(".")).length; r < o; r++)
                if ((t = parseInt(i[r], 10) || 0) !== (n = parseInt(e[r], 10) || 0)) return t > n;
            return !0
        }, Ve.isDataTable = Ve.fnIsDataTable = function(t) {
            var n = e(t).get(0),
                i = !1;
            return t instanceof Ve.Api || (e.each(Ve.settings, (function(t, r) {
                var o = r.nScrollHead ? e("table", r.nScrollHead)[0] : null,
                    a = r.nScrollFoot ? e("table", r.nScrollFoot)[0] : null;
                r.nTable !== n && o !== n && a !== n || (i = !0)
            })), i)
        }, Ve.tables = Ve.fnTables = function(t) {
            var n = !1;
            e.isPlainObject(t) && (n = t.api, t = t.visible);
            var i = e.map(Ve.settings, (function(n) {
                if (!t || t && e(n.nTable).is(":visible")) return n.nTable
            }));
            return n ? new qe(i) : i
        }, Ve.camelToHungarian = o, We("$()", (function(t, n) {
            var i = this.rows(n).nodes();
            i = e(i);
            return e([].concat(i.filter(t).toArray(), i.find(t).toArray()))
        })), e.each(["on", "one", "off"], (function(t, n) {
            We(n + "()", (function() {
                var t = Array.prototype.slice.call(arguments);
                t[0] = e.map(t[0].split(/\s/), (function(e) {
                    return e.match(/\.dt\b/) ? e : e + ".dt"
                })).join(" ");
                var i = e(this.tables().nodes());
                return i[n].apply(i, t), this
            }))
        })), We("clear()", (function() {
            return this.iterator("table", (function(e) {
                E(e)
            }))
        })), We("settings()", (function() {
            return new qe(this.context, this.context)
        })), We("init()", (function() {
            var e = this.context;
            return e.length ? e[0].oInit : null
        })), We("data()", (function() {
            return this.iterator("table", (function(e) {
                return rt(e.aoData, "_aData")
            })).flatten()
        })), We("destroy()", (function(n) {
            return n = n || !1, this.iterator("table", (function(i) {
                var r, o = i.nTableWrapper.parentNode,
                    a = i.oClasses,
                    s = i.nTable,
                    l = i.nTBody,
                    c = i.nTHead,
                    u = i.nTFoot,
                    d = e(s),
                    h = (l = e(l), e(i.nTableWrapper)),
                    f = e.map(i.aoData, (function(e) {
                        return e.nTr
                    }));
                i.bDestroying = !0, Fe(i, "aoDestroyCallback", "destroy", [i]), n || new qe(i).columns().visible(!0), h.off(".DT").find(":not(tbody *)").off(".DT"), e(t).off(".DT-" + i.sInstance), s != c.parentNode && (d.children("thead").detach(), d.append(c)), u && s != u.parentNode && (d.children("tfoot").detach(), d.append(u)), i.aaSorting = [], i.aaSortingFixed = [], Se(i), e(f).removeClass(i.asStripeClasses.join(" ")), e("th, td", c).removeClass(a.sSortable + " " + a.sSortableAsc + " " + a.sSortableDesc + " " + a.sSortableNone), l.children().detach(), l.append(f), d[c = n ? "remove" : "detach"](), h[c](), !n && o && (o.insertBefore(s, i.nTableReinsertBefore), d.css("width", i.sDestroyWidth).removeClass(a.sTable), (r = i.asDestroyStripes.length) && l.children().each((function(t) {
                    e(this).addClass(i.asDestroyStripes[t % r])
                }))), -1 !== (o = e.inArray(i, Ve.settings)) && Ve.settings.splice(o, 1)
            }))
        })), e.each(["column", "row", "cell"], (function(e, t) {
            We(t + "s().every()", (function(e) {
                var n = this.selector.opts,
                    r = this;
                return this.iterator(t, (function(o, a, s, l, c) {
                    e.call(r[t](a, "cell" === t ? s : n, "cell" === t ? n : i), a, s, l, c)
                }))
            }))
        })), We("i18n()", (function(t, n, r) {
            var o = this.context[0];
            return (t = S(t)(o.oLanguage)) === i && (t = n), r !== i && e.isPlainObject(t) && (t = t[r] !== i ? t[r] : t._), t.replace("%d", r)
        })), Ve.version = "1.10.21", Ve.settings = [], Ve.models = {}, Ve.models.oSearch = {
            bCaseInsensitive: !0,
            sSearch: "",
            bRegex: !1,
            bSmart: !0
        }, Ve.models.oRow = {
            nTr: null,
            anCells: null,
            _aData: [],
            _aSortData: null,
            _aFilterData: null,
            _sFilterRow: null,
            _sRowStripe: "",
            src: null,
            idx: -1
        }, Ve.models.oColumn = {
            idx: null,
            aDataSort: null,
            asSorting: null,
            bSearchable: null,
            bSortable: null,
            bVisible: null,
            _sManualType: null,
            _bAttrSrc: !1,
            fnCreatedCell: null,
            fnGetData: null,
            fnSetData: null,
            mData: null,
            mRender: null,
            nTh: null,
            nTf: null,
            sClass: null,
            sContentPadding: null,
            sDefaultContent: null,
            sName: null,
            sSortDataType: "std",
            sSortingClass: null,
            sSortingClassJUI: null,
            sTitle: null,
            sType: null,
            sWidth: null,
            sWidthOrig: null
        }, Ve.defaults = {
            aaData: null,
            aaSorting: [
                [0, "asc"]
            ],
            aaSortingFixed: [],
            ajax: null,
            aLengthMenu: [10, 25, 50, 100],
            aoColumns: null,
            aoColumnDefs: null,
            aoSearchCols: [],
            asStripeClasses: null,
            bAutoWidth: !0,
            bDeferRender: !1,
            bDestroy: !1,
            bFilter: !0,
            bInfo: !0,
            bLengthChange: !0,
            bPaginate: !0,
            bProcessing: !1,
            bRetrieve: !1,
            bScrollCollapse: !1,
            bServerSide: !1,
            bSort: !0,
            bSortMulti: !0,
            bSortCellsTop: !1,
            bSortClasses: !0,
            bStateSave: !1,
            fnCreatedRow: null,
            fnDrawCallback: null,
            fnFooterCallback: null,
            fnFormatNumber: function(e) {
                return e.toString().replace(/\B(?=(\d{3})+(?!\d))/g, this.oLanguage.sThousands)
            },
            fnHeaderCallback: null,
            fnInfoCallback: null,
            fnInitComplete: null,
            fnPreDrawCallback: null,
            fnRowCallback: null,
            fnServerData: null,
            fnServerParams: null,
            fnStateLoadCallback: function(e) {
                try {
                    return JSON.parse((-1 === e.iStateDuration ? sessionStorage : localStorage).getItem("DataTables_" + e.sInstance + "_" + location.pathname))
                } catch (e) {
                    return {}
                }
            },
            fnStateLoadParams: null,
            fnStateLoaded: null,
            fnStateSaveCallback: function(e, t) {
                try {
                    (-1 === e.iStateDuration ? sessionStorage : localStorage).setItem("DataTables_" + e.sInstance + "_" + location.pathname, JSON.stringify(t))
                } catch (e) {}
            },
            fnStateSaveParams: null,
            iStateDuration: 7200,
            iDeferLoading: null,
            iDisplayLength: 10,
            iDisplayStart: 0,
            iTabIndex: 0,
            oClasses: {},
            oLanguage: {
                oAria: {
                    sSortAscending: ": activate to sort column ascending",
                    sSortDescending: ": activate to sort column descending"
                },
                oPaginate: {
                    sFirst: "First",
                    sLast: "Last",
                    sNext: "Next",
                    sPrevious: "Previous"
                },
                sEmptyTable: "No data available in table",
                sInfo: "Showing _START_ to _END_ of _TOTAL_ entries",
                sInfoEmpty: "Showing 0 to 0 of 0 entries",
                sInfoFiltered: "(filtered from _MAX_ total entries)",
                sInfoPostFix: "",
                sDecimal: "",
                sThousands: ",",
                sLengthMenu: "Show _MENU_ entries",
                sLoadingRecords: "Loading...",
                sProcessing: "Processing...",
                sSearch: "Search:",
                sSearchPlaceholder: "",
                sUrl: "",
                sZeroRecords: "No matching records found"
            },
            oSearch: e.extend({}, Ve.models.oSearch),
            sAjaxDataProp: "data",
            sAjaxSource: null,
            sDom: "lfrtip",
            searchDelay: null,
            sPaginationType: "simple_numbers",
            sScrollX: "",
            sScrollXInner: "",
            sScrollY: "",
            sServerMethod: "GET",
            renderer: null,
            rowId: "DT_RowId"
        }, r(Ve.defaults), Ve.defaults.column = {
            aDataSort: null,
            iDataSort: -1,
            asSorting: ["asc", "desc"],
            bSearchable: !0,
            bSortable: !0,
            bVisible: !0,
            fnCreatedCell: null,
            mData: null,
            mRender: null,
            sCellType: "td",
            sClass: "",
            sContentPadding: "",
            sDefaultContent: null,
            sName: "",
            sSortDataType: "std",
            sTitle: null,
            sType: null,
            sWidth: null
        }, r(Ve.defaults.column), Ve.models.oSettings = {
            oFeatures: {
                bAutoWidth: null,
                bDeferRender: null,
                bFilter: null,
                bInfo: null,
                bLengthChange: null,
                bPaginate: null,
                bProcessing: null,
                bServerSide: null,
                bSort: null,
                bSortMulti: null,
                bSortClasses: null,
                bStateSave: null
            },
            oScroll: {
                bCollapse: null,
                iBarWidth: 0,
                sX: null,
                sXInner: null,
                sY: null
            },
            oLanguage: {
                fnInfoCallback: null
            },
            oBrowser: {
                bScrollOversize: !1,
                bScrollbarLeft: !1,
                bBounding: !1,
                barWidth: 0
            },
            ajax: null,
            aanFeatures: [],
            aoData: [],
            aiDisplay: [],
            aiDisplayMaster: [],
            aIds: {},
            aoColumns: [],
            aoHeader: [],
            aoFooter: [],
            oPreviousSearch: {},
            aoPreSearchCols: [],
            aaSorting: null,
            aaSortingFixed: [],
            asStripeClasses: null,
            asDestroyStripes: [],
            sDestroyWidth: 0,
            aoRowCallback: [],
            aoHeaderCallback: [],
            aoFooterCallback: [],
            aoDrawCallback: [],
            aoRowCreatedCallback: [],
            aoPreDrawCallback: [],
            aoInitComplete: [],
            aoStateSaveParams: [],
            aoStateLoadParams: [],
            aoStateLoaded: [],
            sTableId: "",
            nTable: null,
            nTHead: null,
            nTFoot: null,
            nTBody: null,
            nTableWrapper: null,
            bDeferLoading: !1,
            bInitialised: !1,
            aoOpenRows: [],
            sDom: null,
            searchDelay: null,
            sPaginationType: "two_button",
            iStateDuration: 0,
            aoStateSave: [],
            aoStateLoad: [],
            oSavedState: null,
            oLoadedState: null,
            sAjaxSource: null,
            sAjaxDataProp: null,
            bAjaxDataGet: !0,
            jqXHR: null,
            json: i,
            oAjaxData: i,
            fnServerData: null,
            aoServerParams: [],
            sServerMethod: null,
            fnFormatNumber: null,
            aLengthMenu: null,
            iDraw: 0,
            bDrawing: !1,
            iDrawError: -1,
            _iDisplayLength: 10,
            _iDisplayStart: 0,
            _iRecordsTotal: 0,
            _iRecordsDisplay: 0,
            oClasses: {},
            bFiltered: !1,
            bSorted: !1,
            bSortCellsTop: null,
            oInit: null,
            aoDestroyCallback: [],
            fnRecordsTotal: function() {
                return "ssp" == je(this) ? 1 * this._iRecordsTotal : this.aiDisplayMaster.length
            },
            fnRecordsDisplay: function() {
                return "ssp" == je(this) ? 1 * this._iRecordsDisplay : this.aiDisplay.length
            },
            fnDisplayEnd: function() {
                var e = this._iDisplayLength,
                    t = this._iDisplayStart,
                    n = t + e,
                    i = this.aiDisplay.length,
                    r = this.oFeatures,
                    o = r.bPaginate;
                return r.bServerSide ? !1 === o || -1 === e ? t + i : Math.min(t + e, this._iRecordsDisplay) : !o || n > i || -1 === e ? i : n
            },
            oInstance: null,
            sInstance: null,
            iTabIndex: 0,
            nScrollHead: null,
            nScrollFoot: null,
            aLastSort: [],
            oPlugins: {},
            rowIdFn: null,
            rowId: null
        }, Ve.ext = Be = {
            buttons: {},
            classes: {},
            builder: "-source-",
            errMode: "alert",
            feature: [],
            search: [],
            selector: {
                cell: [],
                column: [],
                row: []
            },
            internal: {},
            legacy: {
                ajax: null
            },
            pager: {},
            renderer: {
                pageButton: {},
                header: {}
            },
            order: {},
            type: {
                detect: [],
                search: {},
                order: {}
            },
            _unique: 0,
            fnVersionCheck: Ve.fnVersionCheck,
            iApiIndex: 0,
            oJUIClasses: {},
            sVersion: Ve.version
        }, e.extend(Be, {
            afnFiltering: Be.search,
            aTypes: Be.type.detect,
            ofnSearch: Be.type.search,
            oSort: Be.type.order,
            afnSortData: Be.order,
            aoFeatures: Be.feature,
            oApi: Be.internal,
            oStdClasses: Be.classes,
            oPagination: Be.pager
        }), e.extend(Ve.ext.classes, {
            sTable: "dataTable",
            sNoFooter: "no-footer",
            sPageButton: "paginate_button",
            sPageButtonActive: "current",
            sPageButtonDisabled: "disabled",
            sStripeOdd: "odd",
            sStripeEven: "even",
            sRowEmpty: "dataTables_empty",
            sWrapper: "dataTables_wrapper",
            sFilter: "dataTables_filter",
            sInfo: "dataTables_info",
            sPaging: "dataTables_paginate paging_",
            sLength: "dataTables_length",
            sProcessing: "dataTables_processing",
            sSortAsc: "sorting_asc",
            sSortDesc: "sorting_desc",
            sSortable: "sorting",
            sSortableAsc: "sorting_asc_disabled",
            sSortableDesc: "sorting_desc_disabled",
            sSortableNone: "sorting_disabled",
            sSortColumn: "sorting_",
            sFilterInput: "",
            sLengthSelect: "",
            sScrollWrapper: "dataTables_scroll",
            sScrollHead: "dataTables_scrollHead",
            sScrollHeadInner: "dataTables_scrollHeadInner",
            sScrollBody: "dataTables_scrollBody",
            sScrollFoot: "dataTables_scrollFoot",
            sScrollFootInner: "dataTables_scrollFootInner",
            sHeaderTH: "",
            sFooterTH: "",
            sSortJUIAsc: "",
            sSortJUIDesc: "",
            sSortJUI: "",
            sSortJUIAscAllowed: "",
            sSortJUIDescAllowed: "",
            sSortJUIWrapper: "",
            sSortIcon: "",
            sJUIHeader: "",
            sJUIFooter: ""
        });
        var At = Ve.ext.pager;
        e.extend(At, {
            simple: function() {
                return ["previous", "next"]
            },
            full: function() {
                return ["first", "previous", "next", "last"]
            },
            numbers: function(e, t) {
                return [$e(e, t)]
            },
            simple_numbers: function(e, t) {
                return ["previous", $e(e, t), "next"]
            },
            full_numbers: function(e, t) {
                return ["first", "previous", $e(e, t), "next", "last"]
            },
            first_last_numbers: function(e, t) {
                return ["first", $e(e, t), "last"]
            },
            _numbers: $e,
            numbers_length: 7
        }), e.extend(!0, Ve.ext.renderer, {
            pageButton: {
                _: function(t, r, o, a, s, l) {
                    var c, u, d, h = t.oClasses,
                        f = t.oLanguage.oPaginate,
                        p = t.oLanguage.oAria.paginate || {},
                        g = 0,
                        m = function(n, i) {
                            var r, a, d, v, y = h.sPageButtonDisabled,
                                b = function(e) {
                                    ce(t, e.data.action, !0)
                                };
                            for (r = 0, a = i.length; r < a; r++)
                                if (v = i[r], e.isArray(v)) d = e("<" + (v.DT_el || "div") + "/>").appendTo(n), m(d, v);
                                else {
                                    switch (c = null, u = v, d = t.iTabIndex, v) {
                                        case "ellipsis":
                                            n.append('<span class="ellipsis">&#x2026;</span>');
                                            break;
                                        case "first":
                                            c = f.sFirst, 0 === s && (d = -1, u = u + " " + y);
                                            break;
                                        case "previous":
                                            c = f.sPrevious, 0 === s && (d = -1, u = u + " " + y);
                                            break;
                                        case "next":
                                            c = f.sNext, 0 !== l && s !== l - 1 || (d = -1, u = u + " " + y);
                                            break;
                                        case "last":
                                            c = f.sLast, s === l - 1 && (d = -1, u = u + " " + y);
                                            break;
                                        default:
                                            c = v + 1, u = s === v ? h.sPageButtonActive : ""
                                    }
                                    null !== c && (Pe(d = e("<a>", {
                                        class: h.sPageButton + " " + u,
                                        "aria-controls": t.sTableId,
                                        "aria-label": p[v],
                                        "data-dt-idx": g,
                                        tabindex: d,
                                        id: 0 === o && "string" == typeof v ? t.sTableId + "_" + v : null
                                    }).html(c).appendTo(n), {
                                        action: v
                                    }, b), g++)
                                }
                        };
                    try {
                        d = e(r).find(n.activeElement).data("dt-idx")
                    } catch (e) {}
                    m(e(r).empty(), a), d !== i && e(r).find("[data-dt-idx=" + d + "]").trigger("focus")
                }
            }
        }), e.extend(Ve.ext.type.detect, [function(e, t) {
            var n = t.oLanguage.sDecimal;
            return nt(e, n) ? "num" + n : null
        }, function(e) {
            if (e && !(e instanceof Date) && !Qe.test(e)) return null;
            var t = Date.parse(e);
            return null !== t && !isNaN(t) || Ze(e) ? "date" : null
        }, function(e, t) {
            var n = t.oLanguage.sDecimal;
            return nt(e, n, !0) ? "num-fmt" + n : null
        }, function(e, t) {
            var n = t.oLanguage.sDecimal;
            return it(e, n) ? "html-num" + n : null
        }, function(e, t) {
            var n = t.oLanguage.sDecimal;
            return it(e, n, !0) ? "html-num-fmt" + n : null
        }, function(e) {
            return Ze(e) || "string" == typeof e && -1 !== e.indexOf("<") ? "html" : null
        }]), e.extend(Ve.ext.type.search, {
            html: function(e) {
                return Ze(e) ? e : "string" == typeof e ? e.replace(Xe, " ").replace(Ge, "") : ""
            },
            string: function(e) {
                return Ze(e) ? e : "string" == typeof e ? e.replace(Xe, " ") : e
            }
        });
        var Mt = function(e, t, n, i) {
            return 0 === e || e && "-" !== e ? (t && (e = tt(e, t)), e.replace && (n && (e = e.replace(n, "")), i && (e = e.replace(i, ""))), 1 * e) : -1 / 0
        };
        e.extend(Be.type.order, {
            "date-pre": function(e) {
                return e = Date.parse(e), isNaN(e) ? -1 / 0 : e
            },
            "html-pre": function(e) {
                return Ze(e) ? "" : e.replace ? e.replace(/<.*?>/g, "").toLowerCase() : e + ""
            },
            "string-pre": function(e) {
                return Ze(e) ? "" : "string" == typeof e ? e.toLowerCase() : e.toString ? e.toString() : ""
            },
            "string-asc": function(e, t) {
                return e < t ? -1 : e > t ? 1 : 0
            },
            "string-desc": function(e, t) {
                return e < t ? 1 : e > t ? -1 : 0
            }
        }), ze(""), e.extend(!0, Ve.ext.renderer, {
            header: {
                _: function(t, n, i, r) {
                    e(t.nTable).on("order.dt.DT", (function(e, o, a, s) {
                        t === o && (e = i.idx, n.removeClass(i.sSortingClass + " " + r.sSortAsc + " " + r.sSortDesc).addClass("asc" == s[e] ? r.sSortAsc : "desc" == s[e] ? r.sSortDesc : i.sSortingClass))
                    }))
                },
                jqueryui: function(t, n, i, r) {
                    e("<div/>").addClass(r.sSortJUIWrapper).append(n.contents()).append(e("<span/>").addClass(r.sSortIcon + " " + i.sSortingClassJUI)).appendTo(n), e(t.nTable).on("order.dt.DT", (function(e, o, a, s) {
                        t === o && (e = i.idx, n.removeClass(r.sSortAsc + " " + r.sSortDesc).addClass("asc" == s[e] ? r.sSortAsc : "desc" == s[e] ? r.sSortDesc : i.sSortingClass), n.find("span." + r.sSortIcon).removeClass(r.sSortJUIAsc + " " + r.sSortJUIDesc + " " + r.sSortJUI + " " + r.sSortJUIAscAllowed + " " + r.sSortJUIDescAllowed).addClass("asc" == s[e] ? r.sSortJUIAsc : "desc" == s[e] ? r.sSortJUIDesc : i.sSortingClassJUI))
                    }))
                }
            }
        });
        var Ot = function(e) {
            return "string" == typeof e ? e.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;") : e
        };
        return Ve.render = {
            number: function(e, t, n, i, r) {
                return {
                    display: function(o) {
                        if ("number" != typeof o && "string" != typeof o) return o;
                        var a = 0 > o ? "-" : "",
                            s = parseFloat(o);
                        return isNaN(s) ? Ot(o) : (s = s.toFixed(n), o = Math.abs(s), s = parseInt(o, 10), o = n ? t + (o - s).toFixed(n).substring(2) : "", a + (i || "") + s.toString().replace(/\B(?=(\d{3})+(?!\d))/g, e) + o + (r || ""))
                    }
                }
            },
            text: function() {
                return {
                    display: Ot,
                    filter: Ot
                }
            }
        }, e.extend(Ve.ext.internal, {
            _fnExternApiFunc: He,
            _fnBuildAjax: H,
            _fnAjaxUpdate: B,
            _fnAjaxParameters: q,
            _fnAjaxUpdateDraw: W,
            _fnAjaxDataSrc: U,
            _fnAddColumn: d,
            _fnColumnOptions: h,
            _fnAdjustColumnSizing: f,
            _fnVisibleToColumnIndex: p,
            _fnColumnIndexToVisible: g,
            _fnVisbleColumns: m,
            _fnGetColumns: v,
            _fnColumnTypes: y,
            _fnApplyColumnDefs: b,
            _fnHungarianMap: r,
            _fnCamelToHungarian: o,
            _fnLanguageCompat: a,
            _fnBrowserDetect: c,
            _fnAddData: w,
            _fnAddTr: x,
            _fnNodeToDataIndex: function(e, t) {
                return t._DT_RowIndex !== i ? t._DT_RowIndex : null
            },
            _fnNodeToColumnIndex: function(t, n, i) {
                return e.inArray(i, t.aoData[n].anCells)
            },
            _fnGetCellData: _,
            _fnSetCellData: C,
            _fnSplitObjNotation: k,
            _fnGetObjectDataFn: S,
            _fnSetObjectDataFn: T,
            _fnGetDataMaster: D,
            _fnClearTable: E,
            _fnDeleteIndex: A,
            _fnInvalidate: M,
            _fnGetRowElements: O,
            _fnCreateTr: I,
            _fnBuildHead: L,
            _fnDrawHead: F,
            _fnDraw: N,
            _fnReDraw: R,
            _fnAddOptionsHtml: j,
            _fnDetectHeader: $,
            _fnGetUniqueThs: z,
            _fnFeatureHtmlFilter: V,
            _fnFilterComplete: Y,
            _fnFilterCustom: X,
            _fnFilterColumn: G,
            _fnFilter: Q,
            _fnFilterCreateSearch: K,
            _fnEscapeRegex: ht,
            _fnFilterData: J,
            _fnFeatureHtmlInfo: te,
            _fnUpdateInfo: ne,
            _fnInfoMacros: ie,
            _fnInitialise: re,
            _fnInitComplete: oe,
            _fnLengthChange: ae,
            _fnFeatureHtmlLength: se,
            _fnFeatureHtmlPaginate: le,
            _fnPageChange: ce,
            _fnFeatureHtmlProcessing: ue,
            _fnProcessingDisplay: de,
            _fnFeatureHtmlTable: he,
            _fnScrollDraw: fe,
            _fnApplyToChildren: pe,
            _fnCalculateColumnWidths: ge,
            _fnThrottle: mt,
            _fnConvertToWidth: me,
            _fnGetWidestNode: ve,
            _fnGetMaxLenString: ye,
            _fnStringToCss: be,
            _fnSortFlatten: we,
            _fnSort: xe,
            _fnSortAria: _e,
            _fnSortListener: Ce,
            _fnSortAttachListener: ke,
            _fnSortingClasses: Se,
            _fnSortData: Te,
            _fnSaveState: De,
            _fnLoadState: Ee,
            _fnSettingsFromNode: Ae,
            _fnLog: Me,
            _fnMap: Oe,
            _fnBindAction: Pe,
            _fnCallbackReg: Le,
            _fnCallbackFire: Fe,
            _fnLengthOverflow: Ne,
            _fnRenderer: Re,
            _fnDataSource: je,
            _fnRowAttributes: P,
            _fnExtend: Ie,
            _fnCalculateEnd: function() {}
        }), e.fn.dataTable = Ve, Ve.$ = e, e.fn.dataTableSettings = Ve.settings, e.fn.dataTableExt = Ve.ext, e.fn.DataTable = function(t) {
            return e(this).dataTable(t).api()
        }, e.each(Ve, (function(t, n) {
            e.fn.DataTable[t] = n
        })), e.fn.dataTable
    })),
    function(e) {
        "function" == typeof define && define.amd ? define(["jquery", "datatables.net"], (function(t) {
            return e(t, window, document)
        })) : "object" == typeof exports ? module.exports = function(t, n) {
            return t || (t = window), n && n.fn.dataTable || (n = require("datatables.net")(t, n).$), e(n, t, t.document)
        } : e(jQuery, window, document)
    }((function(e, t, n, i) {
        function r(e, t, n) {
            var r = t + "-" + n;
            if (s[r]) {
                e = e.cell(t, n).node(), t = [];
                for (var o = 0, a = (n = s[r][0].parentNode.childNodes).length; o < a; o++) t.push(n[o]);
                for (n = 0, o = t.length; n < o; n++) e.appendChild(t[n]);
                s[r] = i
            }
        }
        var o = e.fn.dataTable,
            a = function(t, n) {
                if (!o.versionCheck || !o.versionCheck("1.10.10")) throw "DataTables Responsive requires DataTables 1.10.10 or newer";
                this.s = {
                    dt: new o.Api(t),
                    columns: [],
                    current: []
                }, this.s.dt.settings()[0].responsive || (n && "string" == typeof n.details ? n.details = {
                    type: n.details
                } : n && !1 === n.details ? n.details = {
                    type: !1
                } : n && !0 === n.details && (n.details = {
                    type: "inline"
                }), this.c = e.extend(!0, {}, a.defaults, o.defaults.responsive, n), t.responsive = this, this._constructor())
            };
        e.extend(a.prototype, {
            _constructor: function() {
                var n = this,
                    i = this.s.dt,
                    r = i.settings()[0],
                    a = e(t).innerWidth();
                i.settings()[0]._responsive = this, e(t).on("resize.dtr orientationchange.dtr", o.util.throttle((function() {
                    var i = e(t).innerWidth();
                    i !== a && (n._resize(), a = i)
                }))), r.oApi._fnCallbackReg(r, "aoRowCreatedCallback", (function(t) {
                    -1 !== e.inArray(!1, n.s.current) && e(">td, >th", t).each((function(t) {
                        t = i.column.index("toData", t), !1 === n.s.current[t] && e(this).css("display", "none")
                    }))
                })), i.on("destroy.dtr", (function() {
                    i.off(".dtr"), e(i.table().body()).off(".dtr"), e(t).off("resize.dtr orientationchange.dtr"), i.cells(".dtr-control").nodes().to$().removeClass("dtr-control"), e.each(n.s.current, (function(e, t) {
                        !1 === t && n._setColumnVis(e, !0)
                    }))
                })), this.c.breakpoints.sort((function(e, t) {
                    return e.width < t.width ? 1 : e.width > t.width ? -1 : 0
                })), this._classLogic(), this._resizeAuto(), !1 !== (r = this.c.details).type && (n._detailsInit(), i.on("column-visibility.dtr", (function() {
                    n._timer && clearTimeout(n._timer), n._timer = setTimeout((function() {
                        n._timer = null, n._classLogic(), n._resizeAuto(), n._resize(), n._redrawChildren()
                    }), 100)
                })), i.on("draw.dtr", (function() {
                    n._redrawChildren()
                })), e(i.table().node()).addClass("dtr-" + r.type)), i.on("column-reorder.dtr", (function() {
                    n._classLogic(), n._resizeAuto(), n._resize(!0)
                })), i.on("column-sizing.dtr", (function() {
                    n._resizeAuto(), n._resize()
                })), i.on("preXhr.dtr", (function() {
                    var e = [];
                    i.rows().every((function() {
                        this.child.isShown() && e.push(this.id(!0))
                    })), i.one("draw.dtr", (function() {
                        n._resizeAuto(), n._resize(), i.rows(e).every((function() {
                            n._detailsDisplay(this, !1)
                        }))
                    }))
                })), i.on("draw.dtr", (function() {
                    n._controlClass()
                })).on("init.dtr", (function(t) {
                    "dt" === t.namespace && (n._resizeAuto(), n._resize(), e.inArray(!1, n.s.current) && i.columns.adjust())
                })), this._resize()
            },
            _columnsVisiblity: function(t) {
                var n, i, r = this.s.dt,
                    o = this.s.columns,
                    a = o.map((function(e, t) {
                        return {
                            columnIdx: t,
                            priority: e.priority
                        }
                    })).sort((function(e, t) {
                        return e.priority !== t.priority ? e.priority - t.priority : e.columnIdx - t.columnIdx
                    })),
                    s = e.map(o, (function(n, i) {
                        return !1 === r.column(i).visible() ? "not-visible" : (!n.auto || null !== n.minWidth) && (!0 === n.auto ? "-" : -1 !== e.inArray(t, n.includeIn))
                    })),
                    l = 0;
                for (n = 0, i = s.length; n < i; n++) !0 === s[n] && (l += o[n].minWidth);
                for (n = (n = r.settings()[0].oScroll).sY || n.sX ? n.iBarWidth : 0, l = r.table().container().offsetWidth - n - l, n = 0, i = s.length; n < i; n++) o[n].control && (l -= o[n].minWidth);
                var c = !1;
                for (n = 0, i = a.length; n < i; n++) {
                    var u = a[n].columnIdx;
                    "-" === s[u] && !o[u].control && o[u].minWidth && (c || 0 > l - o[u].minWidth ? (c = !0, s[u] = !1) : s[u] = !0, l -= o[u].minWidth)
                }
                for (a = !1, n = 0, i = o.length; n < i; n++)
                    if (!o[n].control && !o[n].never && !1 === s[n]) {
                        a = !0;
                        break
                    }
                for (n = 0, i = o.length; n < i; n++) o[n].control && (s[n] = a), "not-visible" === s[n] && (s[n] = !1);
                return -1 === e.inArray(!0, s) && (s[0] = !0), s
            },
            _classLogic: function() {
                var t = this,
                    n = this.c.breakpoints,
                    r = this.s.dt,
                    o = r.columns().eq(0).map((function(e) {
                        var t = (n = this.column(e)).header().className,
                            n = (e = r.settings()[0].aoColumns[e].responsivePriority, n.header().getAttribute("data-priority"));
                        return e === i && (e = n === i || null === n ? 1e4 : 1 * n), {
                            className: t,
                            includeIn: [],
                            auto: !1,
                            control: !1,
                            never: !!t.match(/\bnever\b/),
                            priority: e
                        }
                    })),
                    a = function(t, n) {
                        var i = o[t].includeIn; - 1 === e.inArray(n, i) && i.push(n)
                    },
                    s = function(e, i, r, s) {
                        if (r) {
                            if ("max-" === r)
                                for (s = t._find(i).width, i = 0, r = n.length; i < r; i++) n[i].width <= s && a(e, n[i].name);
                            else if ("min-" === r)
                                for (s = t._find(i).width, i = 0, r = n.length; i < r; i++) n[i].width >= s && a(e, n[i].name);
                            else if ("not-" === r)
                                for (i = 0, r = n.length; i < r; i++) - 1 === n[i].name.indexOf(s) && a(e, n[i].name)
                        } else o[e].includeIn.push(i)
                    };
                o.each((function(t, i) {
                    for (var r = t.className.split(" "), o = !1, a = 0, l = r.length; a < l; a++) {
                        var c = e.trim(r[a]);
                        if ("all" === c) return o = !0, void(t.includeIn = e.map(n, (function(e) {
                            return e.name
                        })));
                        if ("none" === c || t.never) return void(o = !0);
                        if ("control" === c) return o = !0, void(t.control = !0);
                        e.each(n, (function(e, t) {
                            var n = t.name.split("-"),
                                r = c.match(RegExp("(min\\-|max\\-|not\\-)?(" + n[0] + ")(\\-[_a-zA-Z0-9])?"));
                            r && (o = !0, r[2] === n[0] && r[3] === "-" + n[1] ? s(i, t.name, r[1], r[2] + r[3]) : r[2] === n[0] && !r[3] && s(i, t.name, r[1], r[2]))
                        }))
                    }
                    o || (t.auto = !0)
                })), this.s.columns = o
            },
            _controlClass: function() {
                if ("inline" === this.c.details.type) {
                    var t = this.s.dt,
                        n = e.inArray(!0, this.s.current);
                    t.cells(null, (function(e) {
                        return e !== n
                    }), {
                        page: "current"
                    }).nodes().to$().filter(".dtr-control").removeClass("dtr-control"), t.cells(null, n, {
                        page: "current"
                    }).nodes().to$().addClass("dtr-control")
                }
            },
            _detailsDisplay: function(t, n) {
                var i = this,
                    r = this.s.dt,
                    o = this.c.details;
                if (o && !1 !== o.type) {
                    var a = o.display(t, n, (function() {
                        return o.renderer(r, t[0], i._detailsObj(t[0]))
                    }));
                    (!0 === a || !1 === a) && e(r.table().node()).triggerHandler("responsive-display.dt", [r, t, a, n])
                }
            },
            _detailsInit: function() {
                var t = this,
                    n = this.s.dt,
                    r = this.c.details;
                "inline" === r.type && (r.target = "td.dtr-control, th.dtr-control"), n.on("draw.dtr", (function() {
                    t._tabIndexes()
                })), t._tabIndexes(), e(n.table().body()).on("keyup.dtr", "td, th", (function(t) {
                    13 === t.keyCode && e(this).data("dtr-keyboard") && e(this).click()
                }));
                var o = r.target;
                o === i && null === o || e(n.table().body()).on("click.dtr mousedown.dtr mouseup.dtr", "string" == typeof o ? o : "td, th", (function(i) {
                    if (e(n.table().node()).hasClass("collapsed") && -1 !== e.inArray(e(this).closest("tr").get(0), n.rows().nodes().toArray())) {
                        if ("number" == typeof o) {
                            var r = o < 0 ? n.columns().eq(0).length + o : o;
                            if (n.cell(this).index().column !== r) return
                        }
                        r = n.row(e(this).closest("tr")), "click" === i.type ? t._detailsDisplay(r, !1) : "mousedown" === i.type ? e(this).css("outline", "none") : "mouseup" === i.type && e(this).trigger("blur").css("outline", "")
                    }
                }))
            },
            _detailsObj: function(t) {
                var n = this,
                    i = this.s.dt;
                return e.map(this.s.columns, (function(r, o) {
                    if (!r.never && !r.control) {
                        var a = i.settings()[0].aoColumns[o];
                        return {
                            className: a.sClass,
                            columnIndex: o,
                            data: i.cell(t, o).render(n.c.orthogonal),
                            hidden: i.column(o).visible() && !n.s.current[o],
                            rowIndex: t,
                            title: null !== a.sTitle ? a.sTitle : e(i.column(o).header()).text()
                        }
                    }
                }))
            },
            _find: function(e) {
                for (var t = this.c.breakpoints, n = 0, i = t.length; n < i; n++)
                    if (t[n].name === e) return t[n]
            },
            _redrawChildren: function() {
                var e = this,
                    t = this.s.dt;
                t.rows({
                    page: "current"
                }).iterator("row", (function(n, i) {
                    t.row(i), e._detailsDisplay(t.row(i), !0)
                }))
            },
            _resize: function(n) {
                var i, r = this,
                    o = this.s.dt,
                    a = e(t).innerWidth(),
                    s = this.c.breakpoints,
                    l = s[0].name,
                    c = this.s.columns,
                    u = this.s.current.slice();
                for (i = s.length - 1; 0 <= i; i--)
                    if (a <= s[i].width) {
                        l = s[i].name;
                        break
                    }
                var d = this._columnsVisiblity(l);
                for (this.s.current = d, s = !1, i = 0, a = c.length; i < a; i++)
                    if (!1 === d[i] && !c[i].never && !c[i].control && !1 == !o.column(i).visible()) {
                        s = !0;
                        break
                    }
                e(o.table().node()).toggleClass("collapsed", s);
                var h = !1,
                    f = 0;
                o.columns().eq(0).each((function(e, t) {
                    !0 === d[t] && f++, (n || d[t] !== u[t]) && (h = !0, r._setColumnVis(e, d[t]))
                })), h && (this._redrawChildren(), e(o.table().node()).trigger("responsive-resize.dt", [o, this.s.current]), 0 === o.page.info().recordsDisplay && e("td", o.table().body()).eq(0).attr("colspan", f))
            },
            _resizeAuto: function() {
                var t = this.s.dt,
                    n = this.s.columns;
                if (this.c.auto && -1 !== e.inArray(!0, e.map(n, (function(e) {
                        return e.auto
                    })))) {
                    e.isEmptyObject(s) || e.each(s, (function(e) {
                        e = e.split("-"), r(t, 1 * e[0], 1 * e[1])
                    })), t.table().node();
                    var i = t.table().node().cloneNode(!1),
                        o = e(t.table().header().cloneNode(!1)).appendTo(i),
                        a = e(t.table().body()).clone(!1, !1).empty().appendTo(i);
                    i.style.width = "auto";
                    var l = t.columns().header().filter((function(e) {
                        return t.column(e).visible()
                    })).to$().clone(!1).css("display", "table-cell").css("width", "auto").css("min-width", 0);
                    if (e(a).append(e(t.rows({
                            page: "current"
                        }).nodes()).clone(!1)).find("th, td").css("display", ""), a = t.table().footer()) {
                        a = e(a.cloneNode(!1)).appendTo(i);
                        var c = t.columns().footer().filter((function(e) {
                            return t.column(e).visible()
                        })).to$().clone(!1).css("display", "table-cell");
                        e("<tr/>").append(c).appendTo(a)
                    }
                    e("<tr/>").append(l).appendTo(o), "inline" === this.c.details.type && e(i).addClass("dtr-inline collapsed"), e(i).find("[name]").removeAttr("name"), e(i).css("position", "relative"), (i = e("<div/>").css({
                        width: 1,
                        height: 1,
                        overflow: "hidden",
                        clear: "both"
                    }).append(i)).insertBefore(t.table().node()), l.each((function(e) {
                        e = t.column.index("fromVisible", e), n[e].minWidth = this.offsetWidth || 0
                    })), i.remove()
                }
            },
            _responsiveOnlyHidden: function() {
                var t = this.s.dt;
                return e.map(this.s.current, (function(e, n) {
                    return !1 === t.column(n).visible() || e
                }))
            },
            _setColumnVis: function(t, n) {
                var i = this.s.dt,
                    o = n ? "" : "none";
                e(i.column(t).header()).css("display", o), e(i.column(t).footer()).css("display", o), i.column(t).nodes().to$().css("display", o), e.isEmptyObject(s) || i.cells(null, t).indexes().each((function(e) {
                    r(i, e.row, e.column)
                }))
            },
            _tabIndexes: function() {
                var t = this.s.dt,
                    n = t.cells({
                        page: "current"
                    }).nodes().to$(),
                    i = t.settings()[0],
                    r = this.c.details.target;
                n.filter("[data-dtr-keyboard]").removeData("[data-dtr-keyboard]"), "number" == typeof r ? t.cells(null, r, {
                    page: "current"
                }).nodes().to$().attr("tabIndex", i.iTabIndex).data("dtr-keyboard", 1) : ("td:first-child, th:first-child" === r && (r = ">td:first-child, >th:first-child"), e(r, t.rows({
                    page: "current"
                }).nodes()).attr("tabIndex", i.iTabIndex).data("dtr-keyboard", 1))
            }
        }), a.breakpoints = [{
            name: "desktop",
            width: 1 / 0
        }, {
            name: "tablet-l",
            width: 1024
        }, {
            name: "tablet-p",
            width: 768
        }, {
            name: "mobile-l",
            width: 480
        }, {
            name: "mobile-p",
            width: 320
        }], a.display = {
            childRow: function(t, n, i) {
                return n ? e(t.node()).hasClass("parent") ? (t.child(i(), "child").show(), !0) : void 0 : t.child.isShown() ? (t.child(!1), e(t.node()).removeClass("parent"), !1) : (t.child(i(), "child").show(), e(t.node()).addClass("parent"), !0)
            },
            childRowImmediate: function(t, n, i) {
                return !n && t.child.isShown() || !t.responsive.hasHidden() ? (t.child(!1), e(t.node()).removeClass("parent"), !1) : (t.child(i(), "child").show(), e(t.node()).addClass("parent"), !0)
            },
            modal: function(t) {
                return function(i, r, o) {
                    if (r) e("div.dtr-modal-content").empty().append(o());
                    else {
                        var a = function() {
                                s.remove(), e(n).off("keypress.dtr")
                            },
                            s = e('<div class="dtr-modal"/>').append(e('<div class="dtr-modal-display"/>').append(e('<div class="dtr-modal-content"/>').append(o())).append(e('<div class="dtr-modal-close">&times;</div>').click((function() {
                                a()
                            })))).append(e('<div class="dtr-modal-background"/>').click((function() {
                                a()
                            }))).appendTo("body");
                        e(n).on("keyup.dtr", (function(e) {
                            27 === e.keyCode && (e.stopPropagation(), a())
                        }))
                    }
                    t && t.header && e("div.dtr-modal-content").prepend("<h2>" + t.header(i) + "</h2>")
                }
            }
        };
        var s = {};
        a.renderer = {
            listHiddenNodes: function() {
                return function(t, n, i) {
                    var r = e('<ul data-dtr-index="' + n + '" class="dtr-details"/>'),
                        o = !1;
                    return e.each(i, (function(n, i) {
                        i.hidden && (e("<li " + (i.className ? 'class="' + i.className + '"' : "") + ' data-dtr-index="' + i.columnIndex + '" data-dt-row="' + i.rowIndex + '" data-dt-column="' + i.columnIndex + '"><span class="dtr-title">' + i.title + "</span> </li>").append(e('<span class="dtr-data"/>').append(function(e, t, n) {
                            var i = t + "-" + n;
                            if (s[i]) return s[i];
                            var r = [];
                            for (e = e.cell(t, n).node().childNodes, t = 0, n = e.length; t < n; t++) r.push(e[t]);
                            return s[i] = r
                        }(t, i.rowIndex, i.columnIndex))).appendTo(r), o = !0)
                    })), !!o && r
                }
            },
            listHidden: function() {
                return function(t, n, i) {
                    return !!(t = e.map(i, (function(e) {
                        var t = e.className ? 'class="' + e.className + '"' : "";
                        return e.hidden ? "<li " + t + ' data-dtr-index="' + e.columnIndex + '" data-dt-row="' + e.rowIndex + '" data-dt-column="' + e.columnIndex + '"><span class="dtr-title">' + e.title + '</span> <span class="dtr-data">' + e.data + "</span></li>" : ""
                    })).join("")) && e('<ul data-dtr-index="' + n + '" class="dtr-details"/>').append(t)
                }
            },
            tableAll: function(t) {
                return t = e.extend({
                        tableClass: ""
                    }, t),
                    function(n, i, r) {
                        return n = e.map(r, (function(e) {
                            return "<tr " + (e.className ? 'class="' + e.className + '"' : "") + ' data-dt-row="' + e.rowIndex + '" data-dt-column="' + e.columnIndex + '"><td>' + e.title + ":</td> <td>" + e.data + "</td></tr>"
                        })).join(""), e('<table class="' + t.tableClass + ' dtr-details" width="100%"/>').append(n)
                    }
            }
        }, a.defaults = {
            breakpoints: a.breakpoints,
            auto: !0,
            details: {
                display: a.display.childRow,
                renderer: a.renderer.listHidden(),
                target: 0,
                type: "inline"
            },
            orthogonal: "display"
        };
        var l = e.fn.dataTable.Api;
        return l.register("responsive()", (function() {
            return this
        })), l.register("responsive.index()", (function(t) {
            return {
                column: (t = e(t)).data("dtr-index"),
                row: t.parent().data("dtr-index")
            }
        })), l.register("responsive.rebuild()", (function() {
            return this.iterator("table", (function(e) {
                e._responsive && e._responsive._classLogic()
            }))
        })), l.register("responsive.recalc()", (function() {
            return this.iterator("table", (function(e) {
                e._responsive && (e._responsive._resizeAuto(), e._responsive._resize())
            }))
        })), l.register("responsive.hasHidden()", (function() {
            var t = this.context[0];
            return !!t._responsive && -1 !== e.inArray(!1, t._responsive._responsiveOnlyHidden())
        })), l.registerPlural("columns().responsiveHidden()", "column().responsiveHidden()", (function() {
            return this.iterator("column", (function(e, t) {
                return !!e._responsive && e._responsive._responsiveOnlyHidden()[t]
            }), 1)
        })), a.version = "2.2.5", e.fn.dataTable.Responsive = a, e.fn.DataTable.Responsive = a, e(n).on("preInit.dt.dtr", (function(t, n) {
            if ("dt" === t.namespace && (e(n.nTable).hasClass("responsive") || e(n.nTable).hasClass("dt-responsive") || n.oInit.responsive || o.defaults.responsive)) {
                var i = n.oInit.responsive;
                !1 !== i && new a(n, e.isPlainObject(i) ? i : {})
            }
        })), a
    })),
    function(e) {
        "function" == typeof define && define.amd ? define(["jquery", "datatables.net"], (function(t) {
            return e(t, window, document)
        })) : "object" == typeof exports ? module.exports = function(t, n) {
            return t || (t = window), n && n.fn.dataTable || (n = require("datatables.net")(t, n).$), e(n, t, t.document)
        } : e(jQuery, window, document)
    }((function(e, t, n, i) {
        var r = e.fn.dataTable;
        return e.extend(!0, r.defaults, {
            dom: "<'row'<'col-sm-12 col-md-6'l><'col-sm-12 col-md-6'f>><'row'<'col-sm-12'tr>><'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
            renderer: "bootstrap"
        }), e.extend(r.ext.classes, {
            sWrapper: "dataTables_wrapper dt-bootstrap4",
            sFilterInput: "form-control form-control-sm",
            sLengthSelect: "custom-select custom-select-sm form-control form-control-sm",
            sProcessing: "dataTables_processing card",
            sPageButton: "paginate_button page-item"
        }), r.ext.renderer.pageButton.bootstrap = function(t, o, a, s, l, c) {
            var u, d, h, f = new r.Api(t),
                p = t.oClasses,
                g = t.oLanguage.oPaginate,
                m = t.oLanguage.oAria.paginate || {},
                v = 0,
                y = function(n, i) {
                    var r, o, s, h, b = function(t) {
                        t.preventDefault(), !e(t.currentTarget).hasClass("disabled") && f.page() != t.data.action && f.page(t.data.action).draw("page")
                    };
                    for (r = 0, o = i.length; r < o; r++)
                        if (h = i[r], e.isArray(h)) y(n, h);
                        else {
                            switch (d = u = "", h) {
                                case "ellipsis":
                                    u = "&#x2026;", d = "disabled";
                                    break;
                                case "first":
                                    u = g.sFirst, d = h + (0 < l ? "" : " disabled");
                                    break;
                                case "previous":
                                    u = g.sPrevious, d = h + (0 < l ? "" : " disabled");
                                    break;
                                case "next":
                                    u = g.sNext, d = h + (l < c - 1 ? "" : " disabled");
                                    break;
                                case "last":
                                    u = g.sLast, d = h + (l < c - 1 ? "" : " disabled");
                                    break;
                                default:
                                    u = h + 1, d = l === h ? "active" : ""
                            }
                            u && (s = e("<li>", {
                                class: p.sPageButton + " " + d,
                                id: 0 === a && "string" == typeof h ? t.sTableId + "_" + h : null
                            }).append(e("<a>", {
                                href: "#",
                                "aria-controls": t.sTableId,
                                "aria-label": m[h],
                                "data-dt-idx": v,
                                tabindex: t.iTabIndex,
                                class: "page-link"
                            }).html(u)).appendTo(n), t.oApi._fnBindAction(s, {
                                action: h
                            }, b), v++)
                        }
                };
            try {
                h = e(o).find(n.activeElement).data("dt-idx")
            } catch (e) {}
            y(e(o).empty().html('<ul class="pagination"/>').children("ul"), s), h !== i && e(o).find("[data-dt-idx=" + h + "]").trigger("focus")
        }, r
    })),
    function(e) {
        "function" == typeof define && define.amd ? define(["jquery", "datatables.net-bs4", "datatables.net-responsive"], (function(t) {
            return e(t, window, document)
        })) : "object" == typeof exports ? module.exports = function(t, n) {
            return t || (t = window), n && n.fn.dataTable || (n = require("datatables.net-bs4")(t, n).$), n.fn.dataTable.Responsive || require("datatables.net-responsive")(t, n), e(n, t.document)
        } : e(jQuery, window, document)
    }((function(e) {
        var t = e.fn.dataTable,
            n = t.Responsive.display,
            i = n.modal,
            r = e('<div class="modal fade dtr-bs-modal" role="dialog"><div class="modal-dialog" role="document"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button></div><div class="modal-body"/></div></div></div>');
        return n.modal = function(t) {
            return function(n, o, a) {
                if (e.fn.modal) {
                    if (!o) {
                        if (t && t.header) {
                            var s = (o = r.find("div.modal-header")).find("button").detach();
                            o.empty().append('<h4 class="modal-title">' + t.header(n) + "</h4>").append(s)
                        }
                        r.find("div.modal-body").empty().append(a()), r.appendTo("body").modal()
                    }
                } else i(n, o, a)
            }
        }, t.Responsive
    }));
var Emitter = function() {
        function e() {
            _classCallCheck(this, e)
        }
        return _createClass(e, [{
            key: "on",
            value: function(e, t) {
                return this._callbacks = this._callbacks || {}, this._callbacks[e] || (this._callbacks[e] = []), this._callbacks[e].push(t), this
            }
        }, {
            key: "emit",
            value: function(e) {
                this._callbacks = this._callbacks || {};
                var t = this._callbacks[e];
                if (t) {
                    for (var n = arguments.length, i = new Array(1 < n ? n - 1 : 0), r = 1; r < n; r++) i[r - 1] = arguments[r];
                    var o, a = _createForOfIteratorHelper(t);
                    try {
                        for (a.s(); !(o = a.n()).done;) o.value.apply(this, i)
                    } catch (e) {
                        a.e(e)
                    } finally {
                        a.f()
                    }
                }
                return this
            }
        }, {
            key: "off",
            value: function(e, t) {
                if (!this._callbacks || 0 === arguments.length) return this._callbacks = {}, this;
                var n = this._callbacks[e];
                if (!n) return this;
                if (1 === arguments.length) return delete this._callbacks[e], this;
                for (var i = 0; i < n.length; i++)
                    if (n[i] === t) {
                        n.splice(i, 1);
                        break
                    }
                return this
            }
        }]), e
    }(),
    Dropzone = function() {
        _inherits(t, Emitter);
        var e = _createSuper(t);

        function t(n, i) {
            var r, o, a;
            if (_classCallCheck(this, t), (r = e.call(this)).element = n, r.version = t.version, r.defaultOptions.previewTemplate = r.defaultOptions.previewTemplate.replace(/\n*/g, ""), r.clickableElements = [], r.listeners = [], r.files = [], "string" == typeof r.element && (r.element = document.querySelector(r.element)), !r.element || null == r.element.nodeType) throw new Error("Invalid dropzone element.");
            if (r.element.dropzone) throw new Error("Dropzone already attached.");
            t.instances.push(_assertThisInitialized(r)), r.element.dropzone = _assertThisInitialized(r);
            var s = null != (a = t.optionsForElement(r.element)) ? a : {};
            if (r.options = t.extend({}, r.defaultOptions, s, null != i ? i : {}), r.options.forceFallback || !t.isBrowserSupported()) return _possibleConstructorReturn(r, r.options.fallback.call(_assertThisInitialized(r)));
            if (null == r.options.url && (r.options.url = r.element.getAttribute("action")), !r.options.url) throw new Error("No URL provided.");
            if (r.options.acceptedFiles && r.options.acceptedMimeTypes) throw new Error("You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.");
            if (r.options.uploadMultiple && r.options.chunking) throw new Error("You cannot set both: uploadMultiple and chunking.");
            return r.options.acceptedMimeTypes && (r.options.acceptedFiles = r.options.acceptedMimeTypes, delete r.options.acceptedMimeTypes), null != r.options.renameFilename && (r.options.renameFile = function(e) {
                return r.options.renameFilename.call(_assertThisInitialized(r), e.name, e)
            }), "string" == typeof r.options.method && (r.options.method = r.options.method.toUpperCase()), (o = r.getExistingFallback()) && o.parentNode && o.parentNode.removeChild(o), !1 !== r.options.previewsContainer && (r.options.previewsContainer ? r.previewsContainer = t.getElement(r.options.previewsContainer, "previewsContainer") : r.previewsContainer = r.element), r.options.clickable && (!0 === r.options.clickable ? r.clickableElements = [r.element] : r.clickableElements = t.getElements(r.options.clickable, "clickable")), r.init(), r
        }
        return _createClass(t, null, [{
            key: "initClass",
            value: function() {
                this.prototype.Emitter = Emitter, this.prototype.events = ["drop", "dragstart", "dragend", "dragenter", "dragover", "dragleave", "addedfile", "addedfiles", "removedfile", "thumbnail", "error", "errormultiple", "processing", "processingmultiple", "uploadprogress", "totaluploadprogress", "sending", "sendingmultiple", "success", "successmultiple", "canceled", "canceledmultiple", "complete", "completemultiple", "reset", "maxfilesexceeded", "maxfilesreached", "queuecomplete"], this.prototype.defaultOptions = {
                    url: null,
                    method: "post",
                    withCredentials: !1,
                    timeout: 3e4,
                    parallelUploads: 2,
                    uploadMultiple: !1,
                    chunking: !1,
                    forceChunking: !1,
                    chunkSize: 2e6,
                    parallelChunkUploads: !1,
                    retryChunks: !1,
                    retryChunksLimit: 3,
                    maxFilesize: 256,
                    paramName: "file",
                    createImageThumbnails: !0,
                    maxThumbnailFilesize: 10,
                    thumbnailWidth: 120,
                    thumbnailHeight: 120,
                    thumbnailMethod: "crop",
                    resizeWidth: null,
                    resizeHeight: null,
                    resizeMimeType: null,
                    resizeQuality: .8,
                    resizeMethod: "contain",
                    filesizeBase: 1e3,
                    maxFiles: null,
                    headers: null,
                    clickable: !0,
                    ignoreHiddenFiles: !0,
                    acceptedFiles: null,
                    acceptedMimeTypes: null,
                    autoProcessQueue: !0,
                    autoQueue: !0,
                    addRemoveLinks: !1,
                    previewsContainer: null,
                    hiddenInputContainer: "body",
                    capture: null,
                    renameFilename: null,
                    renameFile: null,
                    forceFallback: !1,
                    dictDefaultMessage: "Drop files here to upload",
                    dictFallbackMessage: "Your browser does not support drag'n'drop file uploads.",
                    dictFallbackText: "Please use the fallback form below to upload your files like in the olden days.",
                    dictFileTooBig: "File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.",
                    dictInvalidFileType: "You can't upload files of this type.",
                    dictResponseError: "Server responded with {{statusCode}} code.",
                    dictCancelUpload: "Cancel upload",
                    dictUploadCanceled: "Upload canceled.",
                    dictCancelUploadConfirmation: "Are you sure you want to cancel this upload?",
                    dictRemoveFile: "Remove file",
                    dictRemoveFileConfirmation: null,
                    dictMaxFilesExceeded: "You can not upload any more files.",
                    dictFileSizeUnits: {
                        tb: "TB",
                        gb: "GB",
                        mb: "MB",
                        kb: "KB",
                        b: "b"
                    },
                    init: function() {},
                    params: function(e, t, n) {
                        if (n) return {
                            dzuuid: n.file.upload.uuid,
                            dzchunkindex: n.index,
                            dztotalfilesize: n.file.size,
                            dzchunksize: this.options.chunkSize,
                            dztotalchunkcount: n.file.upload.totalChunkCount,
                            dzchunkbyteoffset: n.index * this.options.chunkSize
                        }
                    },
                    accept: function(e, t) {
                        return t()
                    },
                    chunksUploaded: function(e, t) {
                        t()
                    },
                    fallback: function() {
                        var e;
                        this.element.className = "".concat(this.element.className, " dz-browser-not-supported");
                        var n, i = _createForOfIteratorHelper(this.element.getElementsByTagName("div"));
                        try {
                            for (i.s(); !(n = i.n()).done;) {
                                var r = n.value;
                                if (/(^| )dz-message($| )/.test(r.className)) {
                                    (e = r).className = "dz-message";
                                    break
                                }
                            }
                        } catch (e) {
                            i.e(e)
                        } finally {
                            i.f()
                        }
                        e || (e = t.createElement('<div class="dz-message"><span></span></div>'), this.element.appendChild(e));
                        var o = e.getElementsByTagName("span")[0];
                        return o && (null != o.textContent ? o.textContent = this.options.dictFallbackMessage : null != o.innerText && (o.innerText = this.options.dictFallbackMessage)), this.element.appendChild(this.getFallbackForm())
                    },
                    resize: function(e, t, n, i) {
                        var r = {
                                srcX: 0,
                                srcY: 0,
                                srcWidth: e.width,
                                srcHeight: e.height
                            },
                            o = e.width / e.height;
                        null == t && null == n ? (t = r.srcWidth, n = r.srcHeight) : null == t ? t = n * o : null == n && (n = t / o);
                        var a = (t = Math.min(t, r.srcWidth)) / (n = Math.min(n, r.srcHeight));
                        if (r.srcWidth > t || r.srcHeight > n)
                            if ("crop" === i) a < o ? (r.srcHeight = e.height, r.srcWidth = r.srcHeight * a) : (r.srcWidth = e.width, r.srcHeight = r.srcWidth / a);
                            else {
                                if ("contain" !== i) throw new Error("Unknown resizeMethod '".concat(i, "'"));
                                a < o ? n = t / o : t = n * o
                            }
                        return r.srcX = (e.width - r.srcWidth) / 2, r.srcY = (e.height - r.srcHeight) / 2, r.trgWidth = t, r.trgHeight = n, r
                    },
                    transformFile: function(e, t) {
                        return (this.options.resizeWidth || this.options.resizeHeight) && e.type.match(/image.*/) ? this.resizeImage(e, this.options.resizeWidth, this.options.resizeHeight, this.options.resizeMethod, t) : t(e)
                    },
                    previewTemplate: '<div class="dz-preview dz-file-preview">\n  <div class="dz-image"><img data-dz-thumbnail /></div>\n  <div class="dz-details">\n    <div class="dz-size"><span data-dz-size></span></div>\n    <div class="dz-filename"><span data-dz-name></span></div>\n  </div>\n  <div class="dz-progress"><span class="dz-upload" data-dz-uploadprogress></span></div>\n  <div class="dz-error-message"><span data-dz-errormessage></span></div>\n  <div class="dz-success-mark">\n    <svg width="54px" height="54px" viewBox="0 0 54 54" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">\n      <title>Check</title>\n      <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">\n        <path d="M23.5,31.8431458 L17.5852419,25.9283877 C16.0248253,24.3679711 13.4910294,24.366835 11.9289322,25.9289322 C10.3700136,27.4878508 10.3665912,30.0234455 11.9283877,31.5852419 L20.4147581,40.0716123 C20.5133999,40.1702541 20.6159315,40.2626649 20.7218615,40.3488435 C22.2835669,41.8725651 24.794234,41.8626202 26.3461564,40.3106978 L43.3106978,23.3461564 C44.8771021,21.7797521 44.8758057,19.2483887 43.3137085,17.6862915 C41.7547899,16.1273729 39.2176035,16.1255422 37.6538436,17.6893022 L23.5,31.8431458 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z" stroke-opacity="0.198794158" stroke="#747474" fill-opacity="0.816519475" fill="#FFFFFF"></path>\n      </g>\n    </svg>\n  </div>\n  <div class="dz-error-mark">\n    <svg width="54px" height="54px" viewBox="0 0 54 54" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">\n      <title>Error</title>\n      <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">\n        <g stroke="#747474" stroke-opacity="0.198794158" fill="#FFFFFF" fill-opacity="0.816519475">\n          <path d="M32.6568542,29 L38.3106978,23.3461564 C39.8771021,21.7797521 39.8758057,19.2483887 38.3137085,17.6862915 C36.7547899,16.1273729 34.2176035,16.1255422 32.6538436,17.6893022 L27,23.3431458 L21.3461564,17.6893022 C19.7823965,16.1255422 17.2452101,16.1273729 15.6862915,17.6862915 C14.1241943,19.2483887 14.1228979,21.7797521 15.6893022,23.3461564 L21.3431458,29 L15.6893022,34.6538436 C14.1228979,36.2202479 14.1241943,38.7516113 15.6862915,40.3137085 C17.2452101,41.8726271 19.7823965,41.8744578 21.3461564,40.3106978 L27,34.6568542 L32.6538436,40.3106978 C34.2176035,41.8744578 36.7547899,41.8726271 38.3137085,40.3137085 C39.8758057,38.7516113 39.8771021,36.2202479 38.3106978,34.6538436 L32.6568542,29 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z"></path>\n        </g>\n      </g>\n    </svg>\n  </div>\n</div>',
                    drop: function() {
                        return this.element.classList.remove("dz-drag-hover")
                    },
                    dragstart: function() {},
                    dragend: function() {
                        return this.element.classList.remove("dz-drag-hover")
                    },
                    dragenter: function() {
                        return this.element.classList.add("dz-drag-hover")
                    },
                    dragover: function() {
                        return this.element.classList.add("dz-drag-hover")
                    },
                    dragleave: function() {
                        return this.element.classList.remove("dz-drag-hover")
                    },
                    paste: function() {},
                    reset: function() {
                        return this.element.classList.remove("dz-started")
                    },
                    addedfile: function(e) {
                        var n = this;
                        if (this.element === this.previewsContainer && this.element.classList.add("dz-started"), this.previewsContainer) {
                            e.previewElement = t.createElement(this.options.previewTemplate.trim()), e.previewTemplate = e.previewElement, this.previewsContainer.appendChild(e.previewElement);
                            var i, r = _createForOfIteratorHelper(e.previewElement.querySelectorAll("[data-dz-name]"));
                            try {
                                for (r.s(); !(i = r.n()).done;) {
                                    var o = i.value;
                                    o.textContent = e.name
                                }
                            } catch (i) {
                                r.e(i)
                            } finally {
                                r.f()
                            }
                            var a, s = _createForOfIteratorHelper(e.previewElement.querySelectorAll("[data-dz-size]"));
                            try {
                                for (s.s(); !(a = s.n()).done;)(o = a.value).innerHTML = this.filesize(e.size)
                            } catch (i) {
                                s.e(i)
                            } finally {
                                s.f()
                            }
                            this.options.addRemoveLinks && (e._removeLink = t.createElement('<a class="dz-remove" href="javascript:undefined;" data-dz-remove>'.concat(this.options.dictRemoveFile, "</a>")), e.previewElement.appendChild(e._removeLink));
                            var l, c = function(i) {
                                    return i.preventDefault(), i.stopPropagation(), e.status === t.UPLOADING ? t.confirm(n.options.dictCancelUploadConfirmation, (function() {
                                        return n.removeFile(e)
                                    })) : n.options.dictRemoveFileConfirmation ? t.confirm(n.options.dictRemoveFileConfirmation, (function() {
                                        return n.removeFile(e)
                                    })) : n.removeFile(e)
                                },
                                u = _createForOfIteratorHelper(e.previewElement.querySelectorAll("[data-dz-remove]"));
                            try {
                                for (u.s(); !(l = u.n()).done;) l.value.addEventListener("click", c)
                            } catch (i) {
                                u.e(i)
                            } finally {
                                u.f()
                            }
                        }
                    },
                    removedfile: function(e) {
                        return null != e.previewElement && null != e.previewElement.parentNode && e.previewElement.parentNode.removeChild(e.previewElement), this._updateMaxFilesReachedClass()
                    },
                    thumbnail: function(e, t) {
                        if (e.previewElement) {
                            e.previewElement.classList.remove("dz-file-preview");
                            var n, i = _createForOfIteratorHelper(e.previewElement.querySelectorAll("[data-dz-thumbnail]"));
                            try {
                                for (i.s(); !(n = i.n()).done;) {
                                    var r = n.value;
                                    r.alt = e.name, r.src = t
                                }
                            } catch (e) {
                                i.e(e)
                            } finally {
                                i.f()
                            }
                            return setTimeout((function() {
                                return e.previewElement.classList.add("dz-image-preview")
                            }), 1)
                        }
                    },
                    error: function(e, t) {
                        if (e.previewElement) {
                            e.previewElement.classList.add("dz-error"), "string" != typeof t && t.error && (t = t.error);
                            var n, i = _createForOfIteratorHelper(e.previewElement.querySelectorAll("[data-dz-errormessage]"));
                            try {
                                for (i.s(); !(n = i.n()).done;) n.value.textContent = t
                            } catch (e) {
                                i.e(e)
                            } finally {
                                i.f()
                            }
                        }
                    },
                    errormultiple: function() {},
                    processing: function(e) {
                        if (e.previewElement && (e.previewElement.classList.add("dz-processing"), e._removeLink)) return e._removeLink.innerHTML = this.options.dictCancelUpload
                    },
                    processingmultiple: function() {},
                    uploadprogress: function(e, t) {
                        if (e.previewElement) {
                            var n, i = _createForOfIteratorHelper(e.previewElement.querySelectorAll("[data-dz-uploadprogress]"));
                            try {
                                for (i.s(); !(n = i.n()).done;) {
                                    var r = n.value;
                                    "PROGRESS" === r.nodeName ? r.value = t : r.style.width = "".concat(t, "%")
                                }
                            } catch (e) {
                                i.e(e)
                            } finally {
                                i.f()
                            }
                        }
                    },
                    totaluploadprogress: function() {},
                    sending: function() {},
                    sendingmultiple: function() {},
                    success: function(e) {
                        if (e.previewElement) return e.previewElement.classList.add("dz-success")
                    },
                    successmultiple: function() {},
                    canceled: function(e) {
                        return this.emit("error", e, this.options.dictUploadCanceled)
                    },
                    canceledmultiple: function() {},
                    complete: function(e) {
                        if (e._removeLink && (e._removeLink.innerHTML = this.options.dictRemoveFile), e.previewElement) return e.previewElement.classList.add("dz-complete")
                    },
                    completemultiple: function() {},
                    maxfilesexceeded: function() {},
                    maxfilesreached: function() {},
                    queuecomplete: function() {},
                    addedfiles: function() {}
                }, this.prototype._thumbnailQueue = [], this.prototype._processingThumbnail = !1
            }
        }, {
            key: "extend",
            value: function(e) {
                for (var t = arguments.length, n = new Array(1 < t ? t - 1 : 0), i = 1; i < t; i++) n[i - 1] = arguments[i];
                for (var r = 0, o = n; r < o.length; r++) {
                    var a = o[r];
                    for (var s in a) {
                        var l = a[s];
                        e[s] = l
                    }
                }
                return e
            }
        }]), _createClass(t, [{
            key: "getAcceptedFiles",
            value: function() {
                return this.files.filter((function(e) {
                    return e.accepted
                })).map((function(e) {
                    return e
                }))
            }
        }, {
            key: "getRejectedFiles",
            value: function() {
                return this.files.filter((function(e) {
                    return !e.accepted
                })).map((function(e) {
                    return e
                }))
            }
        }, {
            key: "getFilesWithStatus",
            value: function(e) {
                return this.files.filter((function(t) {
                    return t.status === e
                })).map((function(e) {
                    return e
                }))
            }
        }, {
            key: "getQueuedFiles",
            value: function() {
                return this.getFilesWithStatus(t.QUEUED)
            }
        }, {
            key: "getUploadingFiles",
            value: function() {
                return this.getFilesWithStatus(t.UPLOADING)
            }
        }, {
            key: "getAddedFiles",
            value: function() {
                return this.getFilesWithStatus(t.ADDED)
            }
        }, {
            key: "getActiveFiles",
            value: function() {
                return this.files.filter((function(e) {
                    return e.status === t.UPLOADING || e.status === t.QUEUED
                })).map((function(e) {
                    return e
                }))
            }
        }, {
            key: "init",
            value: function() {
                var e = this;
                "form" === this.element.tagName && this.element.setAttribute("enctype", "multipart/form-data"), this.element.classList.contains("dropzone") && !this.element.querySelector(".dz-message") && this.element.appendChild(t.createElement('<div class="dz-default dz-message"><button class="dz-button" type="button">'.concat(this.options.dictDefaultMessage, "</button></div>"))), this.clickableElements.length && function n() {
                    return e.hiddenFileInput && e.hiddenFileInput.parentNode.removeChild(e.hiddenFileInput), e.hiddenFileInput = document.createElement("input"), e.hiddenFileInput.setAttribute("type", "file"), (null === e.options.maxFiles || 1 < e.options.maxFiles) && e.hiddenFileInput.setAttribute("multiple", "multiple"), e.hiddenFileInput.className = "dz-hidden-input", null !== e.options.acceptedFiles && e.hiddenFileInput.setAttribute("accept", e.options.acceptedFiles), null !== e.options.capture && e.hiddenFileInput.setAttribute("capture", e.options.capture), e.hiddenFileInput.style.visibility = "hidden", e.hiddenFileInput.style.position = "absolute", e.hiddenFileInput.style.top = "0", e.hiddenFileInput.style.left = "0", e.hiddenFileInput.style.height = "0", e.hiddenFileInput.style.width = "0", t.getElement(e.options.hiddenInputContainer, "hiddenInputContainer").appendChild(e.hiddenFileInput), e.hiddenFileInput.addEventListener("change", (function() {
                        var t = e.hiddenFileInput.files;
                        if (t.length) {
                            var i, r = _createForOfIteratorHelper(t);
                            try {
                                for (r.s(); !(i = r.n()).done;) {
                                    var o = i.value;
                                    e.addFile(o)
                                }
                            } catch (t) {
                                r.e(t)
                            } finally {
                                r.f()
                            }
                        }
                        return e.emit("addedfiles", t), n()
                    }))
                }(), this.URL = null !== window.URL ? window.URL : window.webkitURL;
                var n, i = _createForOfIteratorHelper(this.events);
                try {
                    for (i.s(); !(n = i.n()).done;) {
                        var r = n.value;
                        this.on(r, this.options[r])
                    }
                } catch (n) {
                    i.e(n)
                } finally {
                    i.f()
                }

                function o(e) {
                    return function(e) {
                        if (e.dataTransfer.types)
                            for (var t = 0; t < e.dataTransfer.types.length; t++)
                                if ("Files" === e.dataTransfer.types[t]) return !0;
                        return !1
                    }(e) && (e.stopPropagation(), e.preventDefault ? e.preventDefault() : e.returnValue = !1)
                }
                return this.on("uploadprogress", (function() {
                    return e.updateTotalUploadProgress()
                })), this.on("removedfile", (function() {
                    return e.updateTotalUploadProgress()
                })), this.on("canceled", (function(t) {
                    return e.emit("complete", t)
                })), this.on("complete", (function(t) {
                    if (0 === e.getAddedFiles().length && 0 === e.getUploadingFiles().length && 0 === e.getQueuedFiles().length) return setTimeout((function() {
                        return e.emit("queuecomplete")
                    }), 0)
                })), this.listeners = [{
                    element: this.element,
                    events: {
                        dragstart: function(t) {
                            return e.emit("dragstart", t)
                        },
                        dragenter: function(t) {
                            return o(t), e.emit("dragenter", t)
                        },
                        dragover: function(t) {
                            var n;
                            try {
                                n = t.dataTransfer.effectAllowed
                            } catch (t) {}
                            return t.dataTransfer.dropEffect = "move" === n || "linkMove" === n ? "move" : "copy", o(t), e.emit("dragover", t)
                        },
                        dragleave: function(t) {
                            return e.emit("dragleave", t)
                        },
                        drop: function(t) {
                            return o(t), e.drop(t)
                        },
                        dragend: function(t) {
                            return e.emit("dragend", t)
                        }
                    }
                }], this.clickableElements.forEach((function(n) {
                    return e.listeners.push({
                        element: n,
                        events: {
                            click: function(i) {
                                return n === e.element && i.target !== e.element && !t.elementInside(i.target, e.element.querySelector(".dz-message")) || e.hiddenFileInput.click(), !0
                            }
                        }
                    })
                })), this.enable(), this.options.init.call(this)
            }
        }, {
            key: "destroy",
            value: function() {
                return this.disable(), this.removeAllFiles(!0), null != this.hiddenFileInput && this.hiddenFileInput.parentNode && (this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput), this.hiddenFileInput = null), delete this.element.dropzone, t.instances.splice(t.instances.indexOf(this), 1)
            }
        }, {
            key: "updateTotalUploadProgress",
            value: function() {
                var e, t = 0,
                    n = 0;
                if (this.getActiveFiles().length) {
                    var i, r = _createForOfIteratorHelper(this.getActiveFiles());
                    try {
                        for (r.s(); !(i = r.n()).done;) {
                            var o = i.value;
                            t += o.upload.bytesSent, n += o.upload.total
                        }
                    } catch (e) {
                        r.e(e)
                    } finally {
                        r.f()
                    }
                    e = 100 * t / n
                } else e = 100;
                return this.emit("totaluploadprogress", e, n, t)
            }
        }, {
            key: "_getParamName",
            value: function(e) {
                return "function" == typeof this.options.paramName ? this.options.paramName(e) : "".concat(this.options.paramName).concat(this.options.uploadMultiple ? "[".concat(e, "]") : "")
            }
        }, {
            key: "_renameFile",
            value: function(e) {
                return "function" != typeof this.options.renameFile ? e.name : this.options.renameFile(e)
            }
        }, {
            key: "getFallbackForm",
            value: function() {
                var e, n;
                if (e = this.getExistingFallback()) return e;
                var i = '<div class="dz-fallback">';
                this.options.dictFallbackText && (i += "<p>".concat(this.options.dictFallbackText, "</p>")), i += '<input type="file" name="'.concat(this._getParamName(0), '" ').concat(this.options.uploadMultiple ? 'multiple="multiple"' : void 0, ' /><input type="submit" value="Upload!"></div>');
                var r = t.createElement(i);
                return "FORM" !== this.element.tagName ? (n = t.createElement('<form action="'.concat(this.options.url, '" enctype="multipart/form-data" method="').concat(this.options.method, '"></form>'))).appendChild(r) : (this.element.setAttribute("enctype", "multipart/form-data"), this.element.setAttribute("method", this.options.method)), null != n ? n : r
            }
        }, {
            key: "getExistingFallback",
            value: function() {
                for (var e = function(e) {
                        var t, n = _createForOfIteratorHelper(e);
                        try {
                            for (n.s(); !(t = n.n()).done;) {
                                var i = t.value;
                                if (/(^| )fallback($| )/.test(i.className)) return i
                            }
                        } catch (e) {
                            n.e(e)
                        } finally {
                            n.f()
                        }
                    }, t = 0, n = ["div", "form"]; t < n.length; t++) {
                    var i, r = n[t];
                    if (i = e(this.element.getElementsByTagName(r))) return i
                }
            }
        }, {
            key: "setupEventListeners",
            value: function() {
                return this.listeners.map((function(e) {
                    return function() {
                        var t = [];
                        for (var n in e.events) {
                            var i = e.events[n];
                            t.push(e.element.addEventListener(n, i, !1))
                        }
                        return t
                    }()
                }))
            }
        }, {
            key: "removeEventListeners",
            value: function() {
                return this.listeners.map((function(e) {
                    return function() {
                        var t = [];
                        for (var n in e.events) {
                            var i = e.events[n];
                            t.push(e.element.removeEventListener(n, i, !1))
                        }
                        return t
                    }()
                }))
            }
        }, {
            key: "disable",
            value: function() {
                var e = this;
                return this.clickableElements.forEach((function(e) {
                    return e.classList.remove("dz-clickable")
                })), this.removeEventListeners(), this.disabled = !0, this.files.map((function(t) {
                    return e.cancelUpload(t)
                }))
            }
        }, {
            key: "enable",
            value: function() {
                return delete this.disabled, this.clickableElements.forEach((function(e) {
                    return e.classList.add("dz-clickable")
                })), this.setupEventListeners()
            }
        }, {
            key: "filesize",
            value: function(e) {
                var t = 0,
                    n = "b";
                if (0 < e) {
                    for (var i = ["tb", "gb", "mb", "kb", "b"], r = 0; r < i.length; r++) {
                        var o = i[r];
                        if (Math.pow(this.options.filesizeBase, 4 - r) / 10 <= e) {
                            t = e / Math.pow(this.options.filesizeBase, 4 - r), n = o;
                            break
                        }
                    }
                    t = Math.round(10 * t) / 10
                }
                return "<strong>".concat(t, "</strong> ").concat(this.options.dictFileSizeUnits[n])
            }
        }, {
            key: "_updateMaxFilesReachedClass",
            value: function() {
                return null != this.options.maxFiles && this.getAcceptedFiles().length >= this.options.maxFiles ? (this.getAcceptedFiles().length === this.options.maxFiles && this.emit("maxfilesreached", this.files), this.element.classList.add("dz-max-files-reached")) : this.element.classList.remove("dz-max-files-reached")
            }
        }, {
            key: "drop",
            value: function(e) {
                if (e.dataTransfer) {
                    this.emit("drop", e);
                    for (var t = [], n = 0; n < e.dataTransfer.files.length; n++) t[n] = e.dataTransfer.files[n];
                    if (t.length) {
                        var i = e.dataTransfer.items;
                        i && i.length && null != i[0].webkitGetAsEntry ? this._addFilesFromItems(i) : this.handleFiles(t)
                    }
                    this.emit("addedfiles", t)
                }
            }
        }, {
            key: "paste",
            value: function(e) {
                if (null != __guard__(null != e ? e.clipboardData : void 0, (function(e) {
                        return e.items
                    }))) {
                    this.emit("paste", e);
                    var t = e.clipboardData.items;
                    return t.length ? this._addFilesFromItems(t) : void 0
                }
            }
        }, {
            key: "handleFiles",
            value: function(e) {
                var t, n = _createForOfIteratorHelper(e);
                try {
                    for (n.s(); !(t = n.n()).done;) {
                        var i = t.value;
                        this.addFile(i)
                    }
                } catch (e) {
                    n.e(e)
                } finally {
                    n.f()
                }
            }
        }, {
            key: "_addFilesFromItems",
            value: function(e) {
                var t = this;
                return function() {
                    var n, i = [],
                        r = _createForOfIteratorHelper(e);
                    try {
                        for (r.s(); !(n = r.n()).done;) {
                            var o, a = n.value;
                            null != a.webkitGetAsEntry && (o = a.webkitGetAsEntry()) ? o.isFile ? i.push(t.addFile(a.getAsFile())) : o.isDirectory ? i.push(t._addFilesFromDirectory(o, o.name)) : i.push(void 0) : null == a.getAsFile || null != a.kind && "file" !== a.kind ? i.push(void 0) : i.push(t.addFile(a.getAsFile()))
                        }
                    } catch (n) {
                        r.e(n)
                    } finally {
                        r.f()
                    }
                    return i
                }()
            }
        }, {
            key: "_addFilesFromDirectory",
            value: function(e, t) {
                function n(e) {
                    return __guardMethod__(console, "log", (function(t) {
                        return t.log(e)
                    }))
                }
                var i = this,
                    r = e.createReader();
                return function e() {
                    return r.readEntries((function(n) {
                        if (0 < n.length) {
                            var r, o = _createForOfIteratorHelper(n);
                            try {
                                for (o.s(); !(r = o.n()).done;) {
                                    var a = r.value;
                                    a.isFile ? a.file((function(e) {
                                        if (!i.options.ignoreHiddenFiles || "." !== e.name.substring(0, 1)) return e.fullPath = "".concat(t, "/").concat(e.name), i.addFile(e)
                                    })) : a.isDirectory && i._addFilesFromDirectory(a, "".concat(t, "/").concat(a.name))
                                }
                            } catch (n) {
                                o.e(n)
                            } finally {
                                o.f()
                            }
                            e()
                        }
                        return null
                    }), n)
                }()
            }
        }, {
            key: "accept",
            value: function(e, n) {
                this.options.maxFilesize && e.size > 1024 * this.options.maxFilesize * 1024 ? n(this.options.dictFileTooBig.replace("{{filesize}}", Math.round(e.size / 1024 / 10.24) / 100).replace("{{maxFilesize}}", this.options.maxFilesize)) : t.isValidFile(e, this.options.acceptedFiles) ? null != this.options.maxFiles && this.getAcceptedFiles().length >= this.options.maxFiles ? (n(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}", this.options.maxFiles)), this.emit("maxfilesexceeded", e)) : this.options.accept.call(this, e, n) : n(this.options.dictInvalidFileType)
            }
        }, {
            key: "addFile",
            value: function(e) {
                var n = this;
                e.upload = {
                    uuid: t.uuidv4(),
                    progress: 0,
                    total: e.size,
                    bytesSent: 0,
                    filename: this._renameFile(e)
                }, this.files.push(e), e.status = t.ADDED, this.emit("addedfile", e), this._enqueueThumbnail(e), this.accept(e, (function(t) {
                    t ? (e.accepted = !1, n._errorProcessing([e], t)) : (e.accepted = !0, n.options.autoQueue && n.enqueueFile(e)), n._updateMaxFilesReachedClass()
                }))
            }
        }, {
            key: "enqueueFiles",
            value: function(e) {
                var t, n = _createForOfIteratorHelper(e);
                try {
                    for (n.s(); !(t = n.n()).done;) {
                        var i = t.value;
                        this.enqueueFile(i)
                    }
                } catch (e) {
                    n.e(e)
                } finally {
                    n.f()
                }
                return null
            }
        }, {
            key: "enqueueFile",
            value: function(e) {
                var n = this;
                if (e.status !== t.ADDED || !0 !== e.accepted) throw new Error("This file can't be queued because it has already been processed or was rejected.");
                if (e.status = t.QUEUED, this.options.autoProcessQueue) return setTimeout((function() {
                    return n.processQueue()
                }), 0)
            }
        }, {
            key: "_enqueueThumbnail",
            value: function(e) {
                var t = this;
                if (this.options.createImageThumbnails && e.type.match(/image.*/) && e.size <= 1024 * this.options.maxThumbnailFilesize * 1024) return this._thumbnailQueue.push(e), setTimeout((function() {
                    return t._processThumbnailQueue()
                }), 0)
            }
        }, {
            key: "_processThumbnailQueue",
            value: function() {
                var e = this;
                if (!this._processingThumbnail && 0 !== this._thumbnailQueue.length) {
                    this._processingThumbnail = !0;
                    var t = this._thumbnailQueue.shift();
                    return this.createThumbnail(t, this.options.thumbnailWidth, this.options.thumbnailHeight, this.options.thumbnailMethod, !0, (function(n) {
                        return e.emit("thumbnail", t, n), e._processingThumbnail = !1, e._processThumbnailQueue()
                    }))
                }
            }
        }, {
            key: "removeFile",
            value: function(e) {
                if (e.status === t.UPLOADING && this.cancelUpload(e), this.files = without(this.files, e), this.emit("removedfile", e), 0 === this.files.length) return this.emit("reset")
            }
        }, {
            key: "removeAllFiles",
            value: function(e) {
                null == e && (e = !1);
                var n, i = _createForOfIteratorHelper(this.files.slice());
                try {
                    for (i.s(); !(n = i.n()).done;) {
                        var r = n.value;
                        r.status === t.UPLOADING && !e || this.removeFile(r)
                    }
                } catch (e) {
                    i.e(e)
                } finally {
                    i.f()
                }
                return null
            }
        }, {
            key: "resizeImage",
            value: function(e, n, i, r, o) {
                var a = this;
                return this.createThumbnail(e, n, i, r, !0, (function(n, i) {
                    if (null == i) return o(e);
                    var r = a.options.resizeMimeType;
                    null == r && (r = e.type);
                    var s = i.toDataURL(r, a.options.resizeQuality);
                    return "image/jpeg" !== r && "image/jpg" !== r || (s = ExifRestore.restore(e.dataURL, s)), o(t.dataURItoBlob(s))
                }))
            }
        }, {
            key: "createThumbnail",
            value: function(e, t, n, i, r, o) {
                var a = this,
                    s = new FileReader;
                s.onload = function() {
                    e.dataURL = s.result, "image/svg+xml" !== e.type ? a.createThumbnailFromUrl(e, t, n, i, r, o) : null != o && o(s.result)
                }, s.readAsDataURL(e)
            }
        }, {
            key: "displayExistingFile",
            value: function(e, t, n, i, r) {
                var o = this,
                    a = !(4 < arguments.length && void 0 !== r) || r;
                this.emit("addedfile", e), this.emit("complete", e), a ? (e.dataURL = t, this.createThumbnailFromUrl(e, this.options.thumbnailWidth, this.options.thumbnailHeight, this.options.resizeMethod, this.options.fixOrientation, (function(t) {
                    o.emit("thumbnail", e, t), n && n()
                }), i)) : (this.emit("thumbnail", e, t), n && n())
            }
        }, {
            key: "createThumbnailFromUrl",
            value: function(e, t, n, i, r, o, a) {
                var s = this,
                    l = document.createElement("img");
                return a && (l.crossOrigin = a), r = "from-image" != getComputedStyle(document.body).imageOrientation && r, l.onload = function() {
                    var a = function(e) {
                        return e(1)
                    };
                    return "undefined" != typeof EXIF && null !== EXIF && r && (a = function(e) {
                        return EXIF.getData(l, (function() {
                            return e(EXIF.getTag(this, "Orientation"))
                        }))
                    }), a((function(r) {
                        e.width = l.width, e.height = l.height;
                        var a = s.options.resize.call(s, e, t, n, i),
                            c = document.createElement("canvas"),
                            u = c.getContext("2d");
                        switch (c.width = a.trgWidth, c.height = a.trgHeight, 4 < r && (c.width = a.trgHeight, c.height = a.trgWidth), r) {
                            case 2:
                                u.translate(c.width, 0), u.scale(-1, 1);
                                break;
                            case 3:
                                u.translate(c.width, c.height), u.rotate(Math.PI);
                                break;
                            case 4:
                                u.translate(0, c.height), u.scale(1, -1);
                                break;
                            case 5:
                                u.rotate(.5 * Math.PI), u.scale(1, -1);
                                break;
                            case 6:
                                u.rotate(.5 * Math.PI), u.translate(0, -c.width);
                                break;
                            case 7:
                                u.rotate(.5 * Math.PI), u.translate(c.height, -c.width), u.scale(-1, 1);
                                break;
                            case 8:
                                u.rotate(-.5 * Math.PI), u.translate(-c.height, 0)
                        }
                        drawImageIOSFix(u, l, null != a.srcX ? a.srcX : 0, null != a.srcY ? a.srcY : 0, a.srcWidth, a.srcHeight, null != a.trgX ? a.trgX : 0, null != a.trgY ? a.trgY : 0, a.trgWidth, a.trgHeight);
                        var d = c.toDataURL("image/png");
                        if (null != o) return o(d, c)
                    }))
                }, null != o && (l.onerror = o), l.src = e.dataURL
            }
        }, {
            key: "processQueue",
            value: function() {
                var e = this.options.parallelUploads,
                    t = this.getUploadingFiles().length,
                    n = t;
                if (!(e <= t)) {
                    var i = this.getQueuedFiles();
                    if (0 < i.length) {
                        if (this.options.uploadMultiple) return this.processFiles(i.slice(0, e - t));
                        for (; n < e;) {
                            if (!i.length) return;
                            this.processFile(i.shift()), n++
                        }
                    }
                }
            }
        }, {
            key: "processFile",
            value: function(e) {
                return this.processFiles([e])
            }
        }, {
            key: "processFiles",
            value: function(e) {
                var n, i = _createForOfIteratorHelper(e);
                try {
                    for (i.s(); !(n = i.n()).done;) {
                        var r = n.value;
                        r.processing = !0, r.status = t.UPLOADING, this.emit("processing", r)
                    }
                } catch (e) {
                    i.e(e)
                } finally {
                    i.f()
                }
                return this.options.uploadMultiple && this.emit("processingmultiple", e), this.uploadFiles(e)
            }
        }, {
            key: "_getFilesWithXhr",
            value: function(e) {
                return this.files.filter((function(t) {
                    return t.xhr === e
                })).map((function(e) {
                    return e
                }))
            }
        }, {
            key: "cancelUpload",
            value: function(e) {
                if (e.status === t.UPLOADING) {
                    var n, i = this._getFilesWithXhr(e.xhr),
                        r = _createForOfIteratorHelper(i);
                    try {
                        for (r.s(); !(n = r.n()).done;) n.value.status = t.CANCELED
                    } catch (e) {
                        r.e(e)
                    } finally {
                        r.f()
                    }
                    void 0 !== e.xhr && e.xhr.abort();
                    var o, a = _createForOfIteratorHelper(i);
                    try {
                        for (a.s(); !(o = a.n()).done;) {
                            var s = o.value;
                            this.emit("canceled", s)
                        }
                    } catch (e) {
                        a.e(e)
                    } finally {
                        a.f()
                    }
                    this.options.uploadMultiple && this.emit("canceledmultiple", i)
                } else e.status !== t.ADDED && e.status !== t.QUEUED || (e.status = t.CANCELED, this.emit("canceled", e), this.options.uploadMultiple && this.emit("canceledmultiple", [e]));
                if (this.options.autoProcessQueue) return this.processQueue()
            }
        }, {
            key: "resolveOption",
            value: function(e) {
                if ("function" != typeof e) return e;
                for (var t = arguments.length, n = new Array(1 < t ? t - 1 : 0), i = 1; i < t; i++) n[i - 1] = arguments[i];
                return e.apply(this, n)
            }
        }, {
            key: "uploadFile",
            value: function(e) {
                return this.uploadFiles([e])
            }
        }, {
            key: "uploadFiles",
            value: function(e) {
                var n = this;
                this._transformFiles(e, (function(i) {
                    if (n.options.chunking) {
                        var r = i[0];
                        e[0].upload.chunked = n.options.chunking && (n.options.forceChunking || r.size > n.options.chunkSize), e[0].upload.totalChunkCount = Math.ceil(r.size / n.options.chunkSize)
                    }
                    if (e[0].upload.chunked) {
                        var o = e[0],
                            a = i[0];
                        o.upload.chunks = [];
                        var s = function() {
                            for (var i = 0; void 0 !== o.upload.chunks[i];) i++;
                            if (!(i >= o.upload.totalChunkCount)) {
                                var r = i * n.options.chunkSize,
                                    s = Math.min(r + n.options.chunkSize, a.size),
                                    l = {
                                        name: n._getParamName(0),
                                        data: a.webkitSlice ? a.webkitSlice(r, s) : a.slice(r, s),
                                        filename: o.upload.filename,
                                        chunkIndex: i
                                    };
                                o.upload.chunks[i] = {
                                    file: o,
                                    index: i,
                                    dataBlock: l,
                                    status: t.UPLOADING,
                                    progress: 0,
                                    retries: 0
                                }, n._uploadData(e, [l])
                            }
                        };
                        if (o.upload.finishedChunkUpload = function(i) {
                                var r = !0;
                                i.status = t.SUCCESS, i.dataBlock = null, i.xhr = null;
                                for (var a = 0; a < o.upload.totalChunkCount; a++) {
                                    if (void 0 === o.upload.chunks[a]) return s();
                                    o.upload.chunks[a].status !== t.SUCCESS && (r = !1)
                                }
                                r && n.options.chunksUploaded(o, (function() {
                                    n._finished(e, "", null)
                                }))
                            }, n.options.parallelChunkUploads)
                            for (var l = 0; l < o.upload.totalChunkCount; l++) s();
                        else s()
                    } else {
                        for (var c = [], u = 0; u < e.length; u++) c[u] = {
                            name: n._getParamName(u),
                            data: i[u],
                            filename: e[u].upload.filename
                        };
                        n._uploadData(e, c)
                    }
                }))
            }
        }, {
            key: "_getChunk",
            value: function(e, t) {
                for (var n = 0; n < e.upload.totalChunkCount; n++)
                    if (void 0 !== e.upload.chunks[n] && e.upload.chunks[n].xhr === t) return e.upload.chunks[n]
            }
        }, {
            key: "_uploadData",
            value: function(e, n) {
                var i, r = this,
                    o = new XMLHttpRequest,
                    a = _createForOfIteratorHelper(e);
                try {
                    for (a.s(); !(i = a.n()).done;) i.value.xhr = o
                } catch (n) {
                    a.e(n)
                } finally {
                    a.f()
                }
                e[0].upload.chunked && (e[0].upload.chunks[n[0].chunkIndex].xhr = o);
                var s = this.resolveOption(this.options.method, e),
                    l = this.resolveOption(this.options.url, e);
                o.open(s, l, !0), o.timeout = this.resolveOption(this.options.timeout, e), o.withCredentials = !!this.options.withCredentials, o.onload = function(t) {
                    r._finishedUploading(e, o, t)
                }, o.ontimeout = function() {
                    r._handleUploadError(e, o, "Request timedout after ".concat(r.options.timeout / 1e3, " seconds"))
                }, o.onerror = function() {
                    r._handleUploadError(e, o)
                }, (null != o.upload ? o.upload : o).onprogress = function(t) {
                    return r._updateFilesUploadProgress(e, o, t)
                };
                var c = {
                    Accept: "application/json",
                    "Cache-Control": "no-cache",
                    "X-Requested-With": "XMLHttpRequest"
                };
                for (var u in this.options.headers && t.extend(c, this.options.headers), c) {
                    var d = c[u];
                    d && o.setRequestHeader(u, d)
                }
                var h = new FormData;
                if (this.options.params) {
                    var f = this.options.params;
                    for (var p in "function" == typeof f && (f = f.call(this, e, o, e[0].upload.chunked ? this._getChunk(e[0], o) : null)), f) {
                        var g = f[p];
                        if (Array.isArray(g))
                            for (var m = 0; m < g.length; m++) h.append(p, g[m]);
                        else h.append(p, g)
                    }
                }
                var v, y = _createForOfIteratorHelper(e);
                try {
                    for (y.s(); !(v = y.n()).done;) {
                        var b = v.value;
                        this.emit("sending", b, o, h)
                    }
                } catch (n) {
                    y.e(n)
                } finally {
                    y.f()
                }
                this.options.uploadMultiple && this.emit("sendingmultiple", e, o, h), this._addFormElementData(h);
                for (var w = 0; w < n.length; w++) {
                    var x = n[w];
                    h.append(x.name, x.data, x.filename)
                }
                this.submitRequest(o, h, e)
            }
        }, {
            key: "_transformFiles",
            value: function(e, t) {
                for (var n = this, i = [], r = 0, o = function(o) {
                        n.options.transformFile.call(n, e[o], (function(n) {
                            i[o] = n, ++r === e.length && t(i)
                        }))
                    }, a = 0; a < e.length; a++) o(a)
            }
        }, {
            key: "_addFormElementData",
            value: function(e) {
                if ("FORM" === this.element.tagName) {
                    var t, n = _createForOfIteratorHelper(this.element.querySelectorAll("input, textarea, select, button"));
                    try {
                        for (n.s(); !(t = n.n()).done;) {
                            var i = t.value,
                                r = i.getAttribute("name"),
                                o = i.getAttribute("type");
                            if (o = o && o.toLowerCase(), null != r)
                                if ("SELECT" === i.tagName && i.hasAttribute("multiple")) {
                                    var a, s = _createForOfIteratorHelper(i.options);
                                    try {
                                        for (s.s(); !(a = s.n()).done;) {
                                            var l = a.value;
                                            l.selected && e.append(r, l.value)
                                        }
                                    } catch (e) {
                                        s.e(e)
                                    } finally {
                                        s.f()
                                    }
                                } else(!o || "checkbox" !== o && "radio" !== o || i.checked) && e.append(r, i.value)
                        }
                    } catch (e) {
                        n.e(e)
                    } finally {
                        n.f()
                    }
                }
            }
        }, {
            key: "_updateFilesUploadProgress",
            value: function(e, t, n) {
                var i;
                if (void 0 !== n) {
                    if (i = 100 * n.loaded / n.total, e[0].upload.chunked) {
                        var r = e[0],
                            o = this._getChunk(r, t);
                        o.progress = i, o.total = n.total, o.bytesSent = n.loaded, r.upload.progress = 0, r.upload.total = 0;
                        for (var a = r.upload.bytesSent = 0; a < r.upload.totalChunkCount; a++) void 0 !== r.upload.chunks[a] && void 0 !== r.upload.chunks[a].progress && (r.upload.progress += r.upload.chunks[a].progress, r.upload.total += r.upload.chunks[a].total, r.upload.bytesSent += r.upload.chunks[a].bytesSent);
                        r.upload.progress = r.upload.progress / r.upload.totalChunkCount
                    } else {
                        var s, l = _createForOfIteratorHelper(e);
                        try {
                            for (l.s(); !(s = l.n()).done;) {
                                var c = s.value;
                                c.upload.progress = i, c.upload.total = n.total, c.upload.bytesSent = n.loaded
                            }
                        } catch (e) {
                            l.e(e)
                        } finally {
                            l.f()
                        }
                    }
                    var u, d = _createForOfIteratorHelper(e);
                    try {
                        for (d.s(); !(u = d.n()).done;) {
                            var h = u.value;
                            this.emit("uploadprogress", h, h.upload.progress, h.upload.bytesSent)
                        }
                    } catch (e) {
                        d.e(e)
                    } finally {
                        d.f()
                    }
                } else {
                    var f = !0;
                    i = 100;
                    var p, g = _createForOfIteratorHelper(e);
                    try {
                        for (g.s(); !(p = g.n()).done;) {
                            var m = p.value;
                            100 === m.upload.progress && m.upload.bytesSent === m.upload.total || (f = !1), m.upload.progress = i, m.upload.bytesSent = m.upload.total
                        }
                    } catch (e) {
                        g.e(e)
                    } finally {
                        g.f()
                    }
                    if (f) return;
                    var v, y = _createForOfIteratorHelper(e);
                    try {
                        for (y.s(); !(v = y.n()).done;) {
                            var b = v.value;
                            this.emit("uploadprogress", b, i, b.upload.bytesSent)
                        }
                    } catch (e) {
                        y.e(e)
                    } finally {
                        y.f()
                    }
                }
            }
        }, {
            key: "_finishedUploading",
            value: function(e, n, i) {
                var r;
                if (e[0].status !== t.CANCELED && 4 === n.readyState) {
                    if ("arraybuffer" !== n.responseType && "blob" !== n.responseType && (r = n.responseText, n.getResponseHeader("content-type") && ~n.getResponseHeader("content-type").indexOf("application/json"))) try {
                        r = JSON.parse(r)
                    } catch (e) {
                        i = e, r = "Invalid JSON response from server."
                    }
                    this._updateFilesUploadProgress(e), 200 <= n.status && n.status < 300 ? e[0].upload.chunked ? e[0].upload.finishedChunkUpload(this._getChunk(e[0], n)) : this._finished(e, r, i) : this._handleUploadError(e, n, r)
                }
            }
        }, {
            key: "_handleUploadError",
            value: function(e, n, i) {
                if (e[0].status !== t.CANCELED) {
                    if (e[0].upload.chunked && this.options.retryChunks) {
                        var r = this._getChunk(e[0], n);
                        if (r.retries++ < this.options.retryChunksLimit) return void this._uploadData(e, [r.dataBlock]);
                        console.warn("Retried this chunk too often. Giving up.")
                    }
                    this._errorProcessing(e, i || this.options.dictResponseError.replace("{{statusCode}}", n.status), n)
                }
            }
        }, {
            key: "submitRequest",
            value: function(e, t) {
                e.send(t)
            }
        }, {
            key: "_finished",
            value: function(e, n, i) {
                var r, o = _createForOfIteratorHelper(e);
                try {
                    for (o.s(); !(r = o.n()).done;) {
                        var a = r.value;
                        a.status = t.SUCCESS, this.emit("success", a, n, i), this.emit("complete", a)
                    }
                } catch (e) {
                    o.e(e)
                } finally {
                    o.f()
                }
                if (this.options.uploadMultiple && (this.emit("successmultiple", e, n, i), this.emit("completemultiple", e)), this.options.autoProcessQueue) return this.processQueue()
            }
        }, {
            key: "_errorProcessing",
            value: function(e, n, i) {
                var r, o = _createForOfIteratorHelper(e);
                try {
                    for (o.s(); !(r = o.n()).done;) {
                        var a = r.value;
                        a.status = t.ERROR, this.emit("error", a, n, i), this.emit("complete", a)
                    }
                } catch (e) {
                    o.e(e)
                } finally {
                    o.f()
                }
                if (this.options.uploadMultiple && (this.emit("errormultiple", e, n, i), this.emit("completemultiple", e)), this.options.autoProcessQueue) return this.processQueue()
            }
        }], [{
            key: "uuidv4",
            value: function() {
                return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (function(e) {
                    var t = 16 * Math.random() | 0;
                    return ("x" === e ? t : 3 & t | 8).toString(16)
                }))
            }
        }]), t
    }();
Dropzone.initClass(), Dropzone.version = "5.7.2", Dropzone.options = {}, Dropzone.optionsForElement = function(e) {
    return e.getAttribute("id") ? Dropzone.options[camelize(e.getAttribute("id"))] : void 0
}, Dropzone.instances = [], Dropzone.forElement = function(e) {
    if ("string" == typeof e && (e = document.querySelector(e)), null == (null != e ? e.dropzone : void 0)) throw new Error("No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.");
    return e.dropzone
}, Dropzone.autoDiscover = !0, Dropzone.discover = function() {
    var e;
    if (document.querySelectorAll) e = document.querySelectorAll(".dropzone");
    else {
        e = [];
        var t = function(t) {
            return function() {
                var n, i = [],
                    r = _createForOfIteratorHelper(t);
                try {
                    for (r.s(); !(n = r.n()).done;) {
                        var o = n.value;
                        /(^| )dropzone($| )/.test(o.className) ? i.push(e.push(o)) : i.push(void 0)
                    }
                } catch (n) {
                    r.e(n)
                } finally {
                    r.f()
                }
                return i
            }()
        };
        t(document.getElementsByTagName("div")), t(document.getElementsByTagName("form"))
    }
    return function() {
        var t, n = [],
            i = _createForOfIteratorHelper(e);
        try {
            for (i.s(); !(t = i.n()).done;) {
                var r = t.value;
                !1 !== Dropzone.optionsForElement(r) ? n.push(new Dropzone(r)) : n.push(void 0)
            }
        } catch (t) {
            i.e(t)
        } finally {
            i.f()
        }
        return n
    }()
}, Dropzone.blacklistedBrowsers = [/opera.*(Macintosh|Windows Phone).*version\/12/i], Dropzone.isBrowserSupported = function() {
    var e = !0;
    if (window.File && window.FileReader && window.FileList && window.Blob && window.FormData && document.querySelector)
        if ("classList" in document.createElement("a")) {
            var t, n = _createForOfIteratorHelper(Dropzone.blacklistedBrowsers);
            try {
                for (n.s(); !(t = n.n()).done;) t.value.test(navigator.userAgent) && (e = !1)
            } catch (e) {
                n.e(e)
            } finally {
                n.f()
            }
        } else e = !1;
    else e = !1;
    return e
}, Dropzone.dataURItoBlob = function(e) {
    for (var t = atob(e.split(",")[1]), n = e.split(",")[0].split(":")[1].split(";")[0], i = new ArrayBuffer(t.length), r = new Uint8Array(i), o = 0, a = t.length, s = 0 <= a; s ? o <= a : a <= o; s ? o++ : o--) r[o] = t.charCodeAt(o);
    return new Blob([i], {
        type: n
    })
};
var without = function(e, t) {
        return e.filter((function(e) {
            return e !== t
        })).map((function(e) {
            return e
        }))
    },
    camelize = function(e) {
        return e.replace(/[\-_](\w)/g, (function(e) {
            return e.charAt(1).toUpperCase()
        }))
    };
Dropzone.createElement = function(e) {
    var t = document.createElement("div");
    return t.innerHTML = e, t.childNodes[0]
}, Dropzone.elementInside = function(e, t) {
    if (e === t) return !0;
    for (; e = e.parentNode;)
        if (e === t) return !0;
    return !1
}, Dropzone.getElement = function(e, t) {
    var n;
    if ("string" == typeof e ? n = document.querySelector(e) : null != e.nodeType && (n = e), null == n) throw new Error("Invalid `".concat(t, "` option provided. Please provide a CSS selector or a plain HTML element."));
    return n
}, Dropzone.getElements = function(e, t) {
    var n, i;
    if (e instanceof Array) {
        i = [];
        try {
            var r, o = _createForOfIteratorHelper(e);
            try {
                for (o.s(); !(r = o.n()).done;) n = r.value, i.push(this.getElement(n, t))
            } catch (e) {
                o.e(e)
            } finally {
                o.f()
            }
        } catch (e) {
            i = null
        }
    } else if ("string" == typeof e) {
        i = [];
        var a, s = _createForOfIteratorHelper(document.querySelectorAll(e));
        try {
            for (s.s(); !(a = s.n()).done;) n = a.value, i.push(n)
        } catch (e) {
            s.e(e)
        } finally {
            s.f()
        }
    } else null != e.nodeType && (i = [e]);
    if (null == i || !i.length) throw new Error("Invalid `".concat(t, "` option provided. Please provide a CSS selector, a plain HTML element or a list of those."));
    return i
}, Dropzone.confirm = function(e, t, n) {
    return window.confirm(e) ? t() : null != n ? n() : void 0
}, Dropzone.isValidFile = function(e, t) {
    if (!t) return !0;
    t = t.split(",");
    var n, i = e.type,
        r = i.replace(/\/.*$/, ""),
        o = _createForOfIteratorHelper(t);
    try {
        for (o.s(); !(n = o.n()).done;) {
            var a = n.value;
            if ("." === (a = a.trim()).charAt(0)) {
                if (-1 !== e.name.toLowerCase().indexOf(a.toLowerCase(), e.name.length - a.length)) return !0
            } else if (/\/\*$/.test(a)) {
                if (r === a.replace(/\/.*$/, "")) return !0
            } else if (i === a) return !0
        }
    } catch (e) {
        o.e(e)
    } finally {
        o.f()
    }
    return !1
}, "undefined" != typeof jQuery && null !== jQuery && (jQuery.fn.dropzone = function(e) {
    return this.each((function() {
        return new Dropzone(this, e)
    }))
}), "undefined" != typeof module && null !== module ? module.exports = Dropzone : window.Dropzone = Dropzone, Dropzone.ADDED = "added", Dropzone.QUEUED = "queued", Dropzone.ACCEPTED = Dropzone.QUEUED, Dropzone.UPLOADING = "uploading", Dropzone.PROCESSING = Dropzone.UPLOADING, Dropzone.CANCELED = "canceled", Dropzone.ERROR = "error", Dropzone.SUCCESS = "success";
var detectVerticalSquash = function(e) {
        e.naturalWidth;
        var t = e.naturalHeight,
            n = document.createElement("canvas");
        n.width = 1, n.height = t;
        var i = n.getContext("2d");
        i.drawImage(e, 0, 0);
        for (var r = i.getImageData(1, 0, 1, t).data, o = 0, a = t, s = t; o < s;) 0 === r[4 * (s - 1) + 3] ? a = s : o = s, s = a + o >> 1;
        var l = s / t;
        return 0 == l ? 1 : l
    },
    drawImageIOSFix = function(e, t, n, i, r, o, a, s, l, c) {
        var u = detectVerticalSquash(t);
        return e.drawImage(t, n, i, r, o, a, s, l, c / u)
    },
    ExifRestore = function() {
        function e() {
            _classCallCheck(this, e)
        }
        return _createClass(e, null, [{
            key: "initClass",
            value: function() {
                this.KEY_STR = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
            }
        }, {
            key: "encode64",
            value: function(e) {
                for (var t = "", n = void 0, i = void 0, r = "", o = void 0, a = void 0, s = void 0, l = "", c = 0; o = (n = e[c++]) >> 2, a = (3 & n) << 4 | (i = e[c++]) >> 4, s = (15 & i) << 2 | (r = e[c++]) >> 6, l = 63 & r, isNaN(i) ? s = l = 64 : isNaN(r) && (l = 64), t = t + this.KEY_STR.charAt(o) + this.KEY_STR.charAt(a) + this.KEY_STR.charAt(s) + this.KEY_STR.charAt(l), n = i = r = "", o = a = s = l = "", c < e.length;);
                return t
            }
        }, {
            key: "restore",
            value: function(e, t) {
                if (!e.match("data:image/jpeg;base64,")) return t;
                var n = this.decode64(e.replace("data:image/jpeg;base64,", "")),
                    i = this.slice2Segments(n),
                    r = this.exifManipulation(t, i);
                return "data:image/jpeg;base64,".concat(this.encode64(r))
            }
        }, {
            key: "exifManipulation",
            value: function(e, t) {
                var n = this.getExifArray(t),
                    i = this.insertExif(e, n);
                return new Uint8Array(i)
            }
        }, {
            key: "getExifArray",
            value: function(e) {
                for (var t = void 0, n = 0; n < e.length;) {
                    if (255 === (t = e[n])[0] & 225 === t[1]) return t;
                    n++
                }
                return []
            }
        }, {
            key: "insertExif",
            value: function(e, t) {
                var n = e.replace("data:image/jpeg;base64,", ""),
                    i = this.decode64(n),
                    r = i.indexOf(255, 3),
                    o = i.slice(0, r),
                    a = i.slice(r),
                    s = o;
                return (s = s.concat(t)).concat(a)
            }
        }, {
            key: "slice2Segments",
            value: function(e) {
                for (var t = 0, n = []; !(255 === e[t] & 218 === e[t + 1]);) {
                    if (255 === e[t] & 216 === e[t + 1]) t += 2;
                    else {
                        var i = t + (256 * e[t + 2] + e[t + 3]) + 2,
                            r = e.slice(t, i);
                        n.push(r), t = i
                    }
                    if (t > e.length) break
                }
                return n
            }
        }, {
            key: "decode64",
            value: function(e) {
                var t = void 0,
                    n = void 0,
                    i = "",
                    r = void 0,
                    o = void 0,
                    a = "",
                    s = 0,
                    l = [];
                for (/[^A-Za-z0-9\+\/\=]/g.exec(e) && console.warn("There were invalid base64 characters in the input text.\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\nExpect errors in decoding."), e = e.replace(/[^A-Za-z0-9\+\/\=]/g, ""); t = this.KEY_STR.indexOf(e.charAt(s++)) << 2 | (r = this.KEY_STR.indexOf(e.charAt(s++))) >> 4, n = (15 & r) << 4 | (o = this.KEY_STR.indexOf(e.charAt(s++))) >> 2, i = (3 & o) << 6 | (a = this.KEY_STR.indexOf(e.charAt(s++))), l.push(t), 64 !== o && l.push(n), 64 !== a && l.push(i), t = n = i = "", r = o = a = "", s < e.length;);
                return l
            }
        }]), e
    }();
ExifRestore.initClass();
var contentLoaded = function(e, t) {
    function n(r) {
        if ("readystatechange" !== r.type || "complete" === o.readyState) return ("load" === r.type ? e : o)[l](c + r.type, n, !1), !i && (i = !0) ? t.call(e, r.type || r) : void 0
    }
    var i = !1,
        r = !0,
        o = e.document,
        a = o.documentElement,
        s = o.addEventListener ? "addEventListener" : "attachEvent",
        l = o.addEventListener ? "removeEventListener" : "detachEvent",
        c = o.addEventListener ? "" : "on";
    if ("complete" !== o.readyState) {
        if (o.createEventObject && a.doScroll) {
            try {
                r = !e.frameElement
            } catch (r) {}
            r && function e() {
                try {
                    a.doScroll("left")
                } catch (t) {
                    return void setTimeout(e, 50)
                }
                return n("poll")
            }()
        }
        return o[s](c + "DOMContentLoaded", n, !1), o[s](c + "readystatechange", n, !1), e[s](c + "load", n, !1)
    }
};

function __guard__(e, t) {
    return null != e ? t(e) : void 0
}

function __guardMethod__(e, t, n) {
    return null != e && "function" == typeof e[t] ? n(e, t) : void 0
}
Dropzone._autoDiscoverFunction = function() {
        if (Dropzone.autoDiscover) return Dropzone.discover()
    }, contentLoaded(window, Dropzone._autoDiscoverFunction),
    function(e) {
        "function" == typeof define && define.amd ? define(["jquery"], e) : e("object" == typeof exports ? require("jquery") : jQuery)
    }((function(e, t) {
        function n() {
            return new Date(Date.UTC.apply(Date, arguments))
        }

        function i() {
            var e = new Date;
            return n(e.getFullYear(), e.getMonth(), e.getDate())
        }

        function r(e, t) {
            return e.getUTCFullYear() === t.getUTCFullYear() && e.getUTCMonth() === t.getUTCMonth() && e.getUTCDate() === t.getUTCDate()
        }

        function o(n, i) {
            return function() {
                return i !== t && e.fn.datepicker.deprecated(i), this[n].apply(this, arguments)
            }
        }

        function a(t, n) {
            function i(e, t) {
                return t.toLowerCase()
            }
            var r = e(t).data(),
                o = {},
                a = new RegExp("^" + n.toLowerCase() + "([A-Z])");
            for (var s in n = new RegExp("^" + n.toLowerCase()), r) n.test(s) && (o[s.replace(a, i)] = r[s]);
            return o
        }

        function s(t) {
            var n = {};
            if (g[t] || (t = t.split("-")[0], g[t])) {
                var i = g[t];
                return e.each(p, (function(e, t) {
                    t in i && (n[t] = i[t])
                })), n
            }
        }
        var l = function() {
                var t = {
                    get: function(e) {
                        return this.slice(e)[0]
                    },
                    contains: function(e) {
                        for (var t = e && e.valueOf(), n = 0, i = this.length; n < i; n++)
                            if (0 <= this[n].valueOf() - t && this[n].valueOf() - t < 864e5) return n;
                        return -1
                    },
                    remove: function(e) {
                        this.splice(e, 1)
                    },
                    replace: function(t) {
                        t && (e.isArray(t) || (t = [t]), this.clear(), this.push.apply(this, t))
                    },
                    clear: function() {
                        this.length = 0
                    },
                    copy: function() {
                        var e = new l;
                        return e.replace(this), e
                    }
                };
                return function() {
                    var n = [];
                    return n.push.apply(n, arguments), e.extend(n, t), n
                }
            }(),
            c = function(t, n) {
                e.data(t, "datepicker", this), this._events = [], this._secondaryEvents = [], this._process_options(n), this.dates = new l, this.viewDate = this.o.defaultViewDate, this.focusDate = null, this.element = e(t), this.isInput = this.element.is("input"), this.inputField = this.isInput ? this.element : this.element.find("input"), this.component = !!this.element.hasClass("date") && this.element.find(".add-on, .input-group-addon, .input-group-append, .input-group-prepend, .btn"), this.component && 0 === this.component.length && (this.component = !1), this.isInline = !this.component && this.element.is("div"), this.picker = e(m.template), this._check_template(this.o.templates.leftArrow) && this.picker.find(".prev").html(this.o.templates.leftArrow), this._check_template(this.o.templates.rightArrow) && this.picker.find(".next").html(this.o.templates.rightArrow), this._buildEvents(), this._attachEvents(), this.isInline ? this.picker.addClass("datepicker-inline").appendTo(this.element) : this.picker.addClass("datepicker-dropdown dropdown-menu"), this.o.rtl && this.picker.addClass("datepicker-rtl"), this.o.calendarWeeks && this.picker.find(".datepicker-days .datepicker-switch, thead .datepicker-title, tfoot .today, tfoot .clear").attr("colspan", (function(e, t) {
                    return Number(t) + 1
                })), this._process_options({
                    startDate: this._o.startDate,
                    endDate: this._o.endDate,
                    daysOfWeekDisabled: this.o.daysOfWeekDisabled,
                    daysOfWeekHighlighted: this.o.daysOfWeekHighlighted,
                    datesDisabled: this.o.datesDisabled
                }), this._allow_update = !1, this.setViewMode(this.o.startView), this._allow_update = !0, this.fillDow(), this.fillMonths(), this.update(), this.isInline && this.show()
            };
        c.prototype = {
            constructor: c,
            _resolveViewName: function(t) {
                return e.each(m.viewModes, (function(n, i) {
                    if (t === n || -1 !== e.inArray(t, i.names)) return t = n, !1
                })), t
            },
            _resolveDaysOfWeek: function(t) {
                return e.isArray(t) || (t = t.split(/[,\s]*/)), e.map(t, Number)
            },
            _check_template: function(n) {
                try {
                    return n !== t && "" !== n && ((n.match(/[<>]/g) || []).length <= 0 || e(n).length > 0)
                } catch (e) {
                    return !1
                }
            },
            _process_options: function(t) {
                this._o = e.extend({}, this._o, t);
                var r = this.o = e.extend({}, this._o),
                    o = r.language;
                g[o] || (o = o.split("-")[0], g[o] || (o = f.language)), r.language = o, r.startView = this._resolveViewName(r.startView), r.minViewMode = this._resolveViewName(r.minViewMode), r.maxViewMode = this._resolveViewName(r.maxViewMode), r.startView = Math.max(this.o.minViewMode, Math.min(this.o.maxViewMode, r.startView)), !0 !== r.multidate && (r.multidate = Number(r.multidate) || !1, !1 !== r.multidate && (r.multidate = Math.max(0, r.multidate))), r.multidateSeparator = String(r.multidateSeparator), r.weekStart %= 7, r.weekEnd = (r.weekStart + 6) % 7;
                var a = m.parseFormat(r.format);
                r.startDate !== -1 / 0 && (r.startDate ? r.startDate instanceof Date ? r.startDate = this._local_to_utc(this._zero_time(r.startDate)) : r.startDate = m.parseDate(r.startDate, a, r.language, r.assumeNearbyYear) : r.startDate = -1 / 0), r.endDate !== 1 / 0 && (r.endDate ? r.endDate instanceof Date ? r.endDate = this._local_to_utc(this._zero_time(r.endDate)) : r.endDate = m.parseDate(r.endDate, a, r.language, r.assumeNearbyYear) : r.endDate = 1 / 0), r.daysOfWeekDisabled = this._resolveDaysOfWeek(r.daysOfWeekDisabled || []), r.daysOfWeekHighlighted = this._resolveDaysOfWeek(r.daysOfWeekHighlighted || []), r.datesDisabled = r.datesDisabled || [], e.isArray(r.datesDisabled) || (r.datesDisabled = r.datesDisabled.split(",")), r.datesDisabled = e.map(r.datesDisabled, (function(e) {
                    return m.parseDate(e, a, r.language, r.assumeNearbyYear)
                }));
                var s = String(r.orientation).toLowerCase().split(/\s+/g),
                    l = r.orientation.toLowerCase();
                if (s = e.grep(s, (function(e) {
                        return /^auto|left|right|top|bottom$/.test(e)
                    })), r.orientation = {
                        x: "auto",
                        y: "auto"
                    }, l && "auto" !== l)
                    if (1 === s.length) switch (s[0]) {
                        case "top":
                        case "bottom":
                            r.orientation.y = s[0];
                            break;
                        case "left":
                        case "right":
                            r.orientation.x = s[0]
                    } else l = e.grep(s, (function(e) {
                        return /^left|right$/.test(e)
                    })), r.orientation.x = l[0] || "auto", l = e.grep(s, (function(e) {
                        return /^top|bottom$/.test(e)
                    })), r.orientation.y = l[0] || "auto";
                if (r.defaultViewDate instanceof Date || "string" == typeof r.defaultViewDate) r.defaultViewDate = m.parseDate(r.defaultViewDate, a, r.language, r.assumeNearbyYear);
                else if (r.defaultViewDate) {
                    var c = r.defaultViewDate.year || (new Date).getFullYear(),
                        u = r.defaultViewDate.month || 0,
                        d = r.defaultViewDate.day || 1;
                    r.defaultViewDate = n(c, u, d)
                } else r.defaultViewDate = i()
            },
            _applyEvents: function(e) {
                for (var n, i, r, o = 0; o < e.length; o++) n = e[o][0], 2 === e[o].length ? (i = t, r = e[o][1]) : 3 === e[o].length && (i = e[o][1], r = e[o][2]), n.on(r, i)
            },
            _unapplyEvents: function(e) {
                for (var n, i, r, o = 0; o < e.length; o++) n = e[o][0], 2 === e[o].length ? (r = t, i = e[o][1]) : 3 === e[o].length && (r = e[o][1], i = e[o][2]), n.off(i, r)
            },
            _buildEvents: function() {
                var t = {
                    keyup: e.proxy((function(t) {
                        -1 === e.inArray(t.keyCode, [27, 37, 39, 38, 40, 32, 13, 9]) && this.update()
                    }), this),
                    keydown: e.proxy(this.keydown, this),
                    paste: e.proxy(this.paste, this)
                };
                !0 === this.o.showOnFocus && (t.focus = e.proxy(this.show, this)), this.isInput ? this._events = [
                    [this.element, t]
                ] : this.component && this.inputField.length ? this._events = [
                    [this.inputField, t],
                    [this.component, {
                        click: e.proxy(this.show, this)
                    }]
                ] : this._events = [
                    [this.element, {
                        click: e.proxy(this.show, this),
                        keydown: e.proxy(this.keydown, this)
                    }]
                ], this._events.push([this.element, "*", {
                    blur: e.proxy((function(e) {
                        this._focused_from = e.target
                    }), this)
                }], [this.element, {
                    blur: e.proxy((function(e) {
                        this._focused_from = e.target
                    }), this)
                }]), this.o.immediateUpdates && this._events.push([this.element, {
                    "changeYear changeMonth": e.proxy((function(e) {
                        this.update(e.date)
                    }), this)
                }]), this._secondaryEvents = [
                    [this.picker, {
                        click: e.proxy(this.click, this)
                    }],
                    [this.picker, ".prev, .next", {
                        click: e.proxy(this.navArrowsClick, this)
                    }],
                    [this.picker, ".day:not(.disabled)", {
                        click: e.proxy(this.dayCellClick, this)
                    }],
                    [e(window), {
                        resize: e.proxy(this.place, this)
                    }],
                    [e(document), {
                        "mousedown touchstart": e.proxy((function(e) {
                            this.element.is(e.target) || this.element.find(e.target).length || this.picker.is(e.target) || this.picker.find(e.target).length || this.isInline || this.hide()
                        }), this)
                    }]
                ]
            },
            _attachEvents: function() {
                this._detachEvents(), this._applyEvents(this._events)
            },
            _detachEvents: function() {
                this._unapplyEvents(this._events)
            },
            _attachSecondaryEvents: function() {
                this._detachSecondaryEvents(), this._applyEvents(this._secondaryEvents)
            },
            _detachSecondaryEvents: function() {
                this._unapplyEvents(this._secondaryEvents)
            },
            _trigger: function(t, n) {
                var i = n || this.dates.get(-1),
                    r = this._utc_to_local(i);
                this.element.trigger({
                    type: t,
                    date: r,
                    viewMode: this.viewMode,
                    dates: e.map(this.dates, this._utc_to_local),
                    format: e.proxy((function(e, t) {
                        0 === arguments.length ? (e = this.dates.length - 1, t = this.o.format) : "string" == typeof e && (t = e, e = this.dates.length - 1), t = t || this.o.format;
                        var n = this.dates.get(e);
                        return m.formatDate(n, t, this.o.language)
                    }), this)
                })
            },
            show: function() {
                if (!(this.inputField.is(":disabled") || this.inputField.prop("readonly") && !1 === this.o.enableOnReadonly)) return this.isInline || this.picker.appendTo(this.o.container), this.place(), this.picker.show(), this._attachSecondaryEvents(), this._trigger("show"), (window.navigator.msMaxTouchPoints || "ontouchstart" in document) && this.o.disableTouchKeyboard && e(this.element).blur(), this
            },
            hide: function() {
                return this.isInline || !this.picker.is(":visible") || (this.focusDate = null, this.picker.hide().detach(), this._detachSecondaryEvents(), this.setViewMode(this.o.startView), this.o.forceParse && this.inputField.val() && this.setValue(), this._trigger("hide")), this
            },
            destroy: function() {
                return this.hide(), this._detachEvents(), this._detachSecondaryEvents(), this.picker.remove(), delete this.element.data().datepicker, this.isInput || delete this.element.data().date, this
            },
            paste: function(t) {
                var n;
                if (t.originalEvent.clipboardData && t.originalEvent.clipboardData.types && -1 !== e.inArray("text/plain", t.originalEvent.clipboardData.types)) n = t.originalEvent.clipboardData.getData("text/plain");
                else {
                    if (!window.clipboardData) return;
                    n = window.clipboardData.getData("Text")
                }
                this.setDate(n), this.update(), t.preventDefault()
            },
            _utc_to_local: function(e) {
                if (!e) return e;
                var t = new Date(e.getTime() + 6e4 * e.getTimezoneOffset());
                return t.getTimezoneOffset() !== e.getTimezoneOffset() && (t = new Date(e.getTime() + 6e4 * t.getTimezoneOffset())), t
            },
            _local_to_utc: function(e) {
                return e && new Date(e.getTime() - 6e4 * e.getTimezoneOffset())
            },
            _zero_time: function(e) {
                return e && new Date(e.getFullYear(), e.getMonth(), e.getDate())
            },
            _zero_utc_time: function(e) {
                return e && n(e.getUTCFullYear(), e.getUTCMonth(), e.getUTCDate())
            },
            getDates: function() {
                return e.map(this.dates, this._utc_to_local)
            },
            getUTCDates: function() {
                return e.map(this.dates, (function(e) {
                    return new Date(e)
                }))
            },
            getDate: function() {
                return this._utc_to_local(this.getUTCDate())
            },
            getUTCDate: function() {
                var e = this.dates.get(-1);
                return e !== t ? new Date(e) : null
            },
            clearDates: function() {
                this.inputField.val(""), this.update(), this._trigger("changeDate"), this.o.autoclose && this.hide()
            },
            setDates: function() {
                var t = e.isArray(arguments[0]) ? arguments[0] : arguments;
                return this.update.apply(this, t), this._trigger("changeDate"), this.setValue(), this
            },
            setUTCDates: function() {
                var t = e.isArray(arguments[0]) ? arguments[0] : arguments;
                return this.setDates.apply(this, e.map(t, this._utc_to_local)), this
            },
            setDate: o("setDates"),
            setUTCDate: o("setUTCDates"),
            remove: o("destroy", "Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead"),
            setValue: function() {
                var e = this.getFormattedDate();
                return this.inputField.val(e), this
            },
            getFormattedDate: function(n) {
                n === t && (n = this.o.format);
                var i = this.o.language;
                return e.map(this.dates, (function(e) {
                    return m.formatDate(e, n, i)
                })).join(this.o.multidateSeparator)
            },
            getStartDate: function() {
                return this.o.startDate
            },
            setStartDate: function(e) {
                return this._process_options({
                    startDate: e
                }), this.update(), this.updateNavArrows(), this
            },
            getEndDate: function() {
                return this.o.endDate
            },
            setEndDate: function(e) {
                return this._process_options({
                    endDate: e
                }), this.update(), this.updateNavArrows(), this
            },
            setDaysOfWeekDisabled: function(e) {
                return this._process_options({
                    daysOfWeekDisabled: e
                }), this.update(), this
            },
            setDaysOfWeekHighlighted: function(e) {
                return this._process_options({
                    daysOfWeekHighlighted: e
                }), this.update(), this
            },
            setDatesDisabled: function(e) {
                return this._process_options({
                    datesDisabled: e
                }), this.update(), this
            },
            place: function() {
                if (this.isInline) return this;
                var t = this.picker.outerWidth(),
                    n = this.picker.outerHeight(),
                    i = e(this.o.container),
                    r = i.width(),
                    o = "body" === this.o.container ? e(document).scrollTop() : i.scrollTop(),
                    a = i.offset(),
                    s = [0];
                this.element.parents().each((function() {
                    var t = e(this).css("z-index");
                    "auto" !== t && 0 !== Number(t) && s.push(Number(t))
                }));
                var l = Math.max.apply(Math, s) + this.o.zIndexOffset,
                    c = this.component ? this.component.parent().offset() : this.element.offset(),
                    u = this.component ? this.component.outerHeight(!0) : this.element.outerHeight(!1),
                    d = this.component ? this.component.outerWidth(!0) : this.element.outerWidth(!1),
                    h = c.left - a.left,
                    f = c.top - a.top;
                "body" !== this.o.container && (f += o), this.picker.removeClass("datepicker-orient-top datepicker-orient-bottom datepicker-orient-right datepicker-orient-left"), "auto" !== this.o.orientation.x ? (this.picker.addClass("datepicker-orient-" + this.o.orientation.x), "right" === this.o.orientation.x && (h -= t - d)) : c.left < 0 ? (this.picker.addClass("datepicker-orient-left"), h -= c.left - 10) : h + t > r ? (this.picker.addClass("datepicker-orient-right"), h += d - t) : this.o.rtl ? this.picker.addClass("datepicker-orient-right") : this.picker.addClass("datepicker-orient-left");
                var p = this.o.orientation.y;
                if ("auto" === p && (p = -o + f - n < 0 ? "bottom" : "top"), this.picker.addClass("datepicker-orient-" + p), "top" === p ? f -= n + parseInt(this.picker.css("padding-top")) : f += u, this.o.rtl) {
                    var g = r - (h + d);
                    this.picker.css({
                        top: f,
                        right: g,
                        zIndex: l
                    })
                } else this.picker.css({
                    top: f,
                    left: h,
                    zIndex: l
                });
                return this
            },
            _allow_update: !0,
            update: function() {
                if (!this._allow_update) return this;
                var t = this.dates.copy(),
                    n = [],
                    i = !1;
                return arguments.length ? (e.each(arguments, e.proxy((function(e, t) {
                    t instanceof Date && (t = this._local_to_utc(t)), n.push(t)
                }), this)), i = !0) : (n = (n = this.isInput ? this.element.val() : this.element.data("date") || this.inputField.val()) && this.o.multidate ? n.split(this.o.multidateSeparator) : [n], delete this.element.data().date), n = e.map(n, e.proxy((function(e) {
                    return m.parseDate(e, this.o.format, this.o.language, this.o.assumeNearbyYear)
                }), this)), n = e.grep(n, e.proxy((function(e) {
                    return !this.dateWithinRange(e) || !e
                }), this), !0), this.dates.replace(n), this.o.updateViewDate && (this.dates.length ? this.viewDate = new Date(this.dates.get(-1)) : this.viewDate < this.o.startDate ? this.viewDate = new Date(this.o.startDate) : this.viewDate > this.o.endDate ? this.viewDate = new Date(this.o.endDate) : this.viewDate = this.o.defaultViewDate), i ? (this.setValue(), this.element.change()) : this.dates.length && String(t) !== String(this.dates) && i && (this._trigger("changeDate"), this.element.change()), !this.dates.length && t.length && (this._trigger("clearDate"), this.element.change()), this.fill(), this
            },
            fillDow: function() {
                if (this.o.showWeekDays) {
                    var t = this.o.weekStart,
                        n = "<tr>";
                    for (this.o.calendarWeeks && (n += '<th class="cw">&#160;</th>'); t < this.o.weekStart + 7;) n += '<th class="dow', -1 !== e.inArray(t, this.o.daysOfWeekDisabled) && (n += " disabled"), n += '">' + g[this.o.language].daysMin[t++ % 7] + "</th>";
                    n += "</tr>", this.picker.find(".datepicker-days thead").append(n)
                }
            },
            fillMonths: function() {
                for (var e = this._utc_to_local(this.viewDate), t = "", n = 0; n < 12; n++) t += '<span class="month' + (e && e.getMonth() === n ? " focused" : "") + '">' + g[this.o.language].monthsShort[n] + "</span>";
                this.picker.find(".datepicker-months td").html(t)
            },
            setRange: function(t) {
                t && t.length ? this.range = e.map(t, (function(e) {
                    return e.valueOf()
                })) : delete this.range, this.fill()
            },
            getClassNames: function(t) {
                var n = [],
                    o = this.viewDate.getUTCFullYear(),
                    a = this.viewDate.getUTCMonth(),
                    s = i();
                return t.getUTCFullYear() < o || t.getUTCFullYear() === o && t.getUTCMonth() < a ? n.push("old") : (t.getUTCFullYear() > o || t.getUTCFullYear() === o && t.getUTCMonth() > a) && n.push("new"), this.focusDate && t.valueOf() === this.focusDate.valueOf() && n.push("focused"), this.o.todayHighlight && r(t, s) && n.push("today"), -1 !== this.dates.contains(t) && n.push("active"), this.dateWithinRange(t) || n.push("disabled"), this.dateIsDisabled(t) && n.push("disabled", "disabled-date"), -1 !== e.inArray(t.getUTCDay(), this.o.daysOfWeekHighlighted) && n.push("highlighted"), this.range && (t > this.range[0] && t < this.range[this.range.length - 1] && n.push("range"), -1 !== e.inArray(t.valueOf(), this.range) && n.push("selected"), t.valueOf() === this.range[0] && n.push("range-start"), t.valueOf() === this.range[this.range.length - 1] && n.push("range-end")), n
            },
            _fill_yearsView: function(n, i, r, o, a, s, l) {
                for (var c, u, d, h = "", f = r / 10, p = this.picker.find(n), g = Math.floor(o / r) * r, m = g + 9 * f, v = Math.floor(this.viewDate.getFullYear() / f) * f, y = e.map(this.dates, (function(e) {
                        return Math.floor(e.getUTCFullYear() / f) * f
                    })), b = g - f; b <= m + f; b += f) c = [i], u = null, b === g - f ? c.push("old") : b === m + f && c.push("new"), -1 !== e.inArray(b, y) && c.push("active"), (b < a || b > s) && c.push("disabled"), b === v && c.push("focused"), l !== e.noop && ((d = l(new Date(b, 0, 1))) === t ? d = {} : "boolean" == typeof d ? d = {
                    enabled: d
                } : "string" == typeof d && (d = {
                    classes: d
                }), !1 === d.enabled && c.push("disabled"), d.classes && (c = c.concat(d.classes.split(/\s+/))), d.tooltip && (u = d.tooltip)), h += '<span class="' + c.join(" ") + '"' + (u ? ' title="' + u + '"' : "") + ">" + b + "</span>";
                p.find(".datepicker-switch").text(g + "-" + m), p.find("td").html(h)
            },
            fill: function() {
                var r, o, a = new Date(this.viewDate),
                    s = a.getUTCFullYear(),
                    l = a.getUTCMonth(),
                    c = this.o.startDate !== -1 / 0 ? this.o.startDate.getUTCFullYear() : -1 / 0,
                    u = this.o.startDate !== -1 / 0 ? this.o.startDate.getUTCMonth() : -1 / 0,
                    d = this.o.endDate !== 1 / 0 ? this.o.endDate.getUTCFullYear() : 1 / 0,
                    h = this.o.endDate !== 1 / 0 ? this.o.endDate.getUTCMonth() : 1 / 0,
                    f = g[this.o.language].today || g.en.today || "",
                    p = g[this.o.language].clear || g.en.clear || "",
                    v = g[this.o.language].titleFormat || g.en.titleFormat,
                    y = i(),
                    b = (!0 === this.o.todayBtn || "linked" === this.o.todayBtn) && y >= this.o.startDate && y <= this.o.endDate && !this.weekOfDateIsDisabled(y);
                if (!isNaN(s) && !isNaN(l)) {
                    this.picker.find(".datepicker-days .datepicker-switch").text(m.formatDate(a, v, this.o.language)), this.picker.find("tfoot .today").text(f).css("display", b ? "table-cell" : "none"), this.picker.find("tfoot .clear").text(p).css("display", !0 === this.o.clearBtn ? "table-cell" : "none"), this.picker.find("thead .datepicker-title").text(this.o.title).css("display", "string" == typeof this.o.title && "" !== this.o.title ? "table-cell" : "none"), this.updateNavArrows(), this.fillMonths();
                    var w = n(s, l, 0),
                        x = w.getUTCDate();
                    w.setUTCDate(x - (w.getUTCDay() - this.o.weekStart + 7) % 7);
                    var _ = new Date(w);
                    w.getUTCFullYear() < 100 && _.setUTCFullYear(w.getUTCFullYear()), _.setUTCDate(_.getUTCDate() + 42), _ = _.valueOf();
                    for (var C, k, S = []; w.valueOf() < _;) {
                        if ((C = w.getUTCDay()) === this.o.weekStart && (S.push("<tr>"), this.o.calendarWeeks)) {
                            var T = new Date(+w + (this.o.weekStart - C - 7) % 7 * 864e5),
                                D = new Date(Number(T) + (11 - T.getUTCDay()) % 7 * 864e5),
                                E = new Date(Number(E = n(D.getUTCFullYear(), 0, 1)) + (11 - E.getUTCDay()) % 7 * 864e5),
                                A = (D - E) / 864e5 / 7 + 1;
                            S.push('<td class="cw">' + A + "</td>")
                        }(k = this.getClassNames(w)).push("day");
                        var M = w.getUTCDate();
                        this.o.beforeShowDay !== e.noop && ((o = this.o.beforeShowDay(this._utc_to_local(w))) === t ? o = {} : "boolean" == typeof o ? o = {
                            enabled: o
                        } : "string" == typeof o && (o = {
                            classes: o
                        }), !1 === o.enabled && k.push("disabled"), o.classes && (k = k.concat(o.classes.split(/\s+/))), o.tooltip && (r = o.tooltip), o.content && (M = o.content)), k = e.isFunction(e.uniqueSort) ? e.uniqueSort(k) : e.unique(k), S.push('<td class="' + k.join(" ") + '"' + (r ? ' title="' + r + '"' : "") + ' data-date="' + w.getTime().toString() + '">' + M + "</td>"), r = null, C === this.o.weekEnd && S.push("</tr>"), w.setUTCDate(w.getUTCDate() + 1)
                    }
                    this.picker.find(".datepicker-days tbody").html(S.join(""));
                    var O = g[this.o.language].monthsTitle || g.en.monthsTitle || "Months",
                        I = this.picker.find(".datepicker-months").find(".datepicker-switch").text(this.o.maxViewMode < 2 ? O : s).end().find("tbody span").removeClass("active");
                    if (e.each(this.dates, (function(e, t) {
                            t.getUTCFullYear() === s && I.eq(t.getUTCMonth()).addClass("active")
                        })), (s < c || s > d) && I.addClass("disabled"), s === c && I.slice(0, u).addClass("disabled"), s === d && I.slice(h + 1).addClass("disabled"), this.o.beforeShowMonth !== e.noop) {
                        var P = this;
                        e.each(I, (function(n, i) {
                            var r = new Date(s, n, 1),
                                o = P.o.beforeShowMonth(r);
                            o === t ? o = {} : "boolean" == typeof o ? o = {
                                enabled: o
                            } : "string" == typeof o && (o = {
                                classes: o
                            }), !1 !== o.enabled || e(i).hasClass("disabled") || e(i).addClass("disabled"), o.classes && e(i).addClass(o.classes), o.tooltip && e(i).prop("title", o.tooltip)
                        }))
                    }
                    this._fill_yearsView(".datepicker-years", "year", 10, s, c, d, this.o.beforeShowYear), this._fill_yearsView(".datepicker-decades", "decade", 100, s, c, d, this.o.beforeShowDecade), this._fill_yearsView(".datepicker-centuries", "century", 1e3, s, c, d, this.o.beforeShowCentury)
                }
            },
            updateNavArrows: function() {
                if (this._allow_update) {
                    var e, t, n = new Date(this.viewDate),
                        i = n.getUTCFullYear(),
                        r = n.getUTCMonth(),
                        o = this.o.startDate !== -1 / 0 ? this.o.startDate.getUTCFullYear() : -1 / 0,
                        a = this.o.startDate !== -1 / 0 ? this.o.startDate.getUTCMonth() : -1 / 0,
                        s = this.o.endDate !== 1 / 0 ? this.o.endDate.getUTCFullYear() : 1 / 0,
                        l = this.o.endDate !== 1 / 0 ? this.o.endDate.getUTCMonth() : 1 / 0,
                        c = 1;
                    switch (this.viewMode) {
                        case 4:
                            c *= 10;
                        case 3:
                            c *= 10;
                        case 2:
                            c *= 10;
                        case 1:
                            e = Math.floor(i / c) * c <= o, t = Math.floor(i / c) * c + c > s;
                            break;
                        case 0:
                            e = i <= o && r <= a, t = i >= s && r >= l
                    }
                    this.picker.find(".prev").toggleClass("disabled", e), this.picker.find(".next").toggleClass("disabled", t)
                }
            },
            click: function(t) {
                var r, o, a;
                t.preventDefault(), t.stopPropagation(), (r = e(t.target)).hasClass("datepicker-switch") && this.viewMode !== this.o.maxViewMode && this.setViewMode(this.viewMode + 1), r.hasClass("today") && !r.hasClass("day") && (this.setViewMode(0), this._setDate(i(), "linked" === this.o.todayBtn ? null : "view")), r.hasClass("clear") && this.clearDates(), r.hasClass("disabled") || (r.hasClass("month") || r.hasClass("year") || r.hasClass("decade") || r.hasClass("century")) && (this.viewDate.setUTCDate(1), 1, 1 === this.viewMode ? (a = r.parent().find("span").index(r), o = this.viewDate.getUTCFullYear(), this.viewDate.setUTCMonth(a)) : (a = 0, o = Number(r.text()), this.viewDate.setUTCFullYear(o)), this._trigger(m.viewModes[this.viewMode - 1].e, this.viewDate), this.viewMode === this.o.minViewMode ? this._setDate(n(o, a, 1)) : (this.setViewMode(this.viewMode - 1), this.fill())), this.picker.is(":visible") && this._focused_from && this._focused_from.focus(), delete this._focused_from
            },
            dayCellClick: function(t) {
                var n = e(t.currentTarget).data("date"),
                    i = new Date(n);
                this.o.updateViewDate && (i.getUTCFullYear() !== this.viewDate.getUTCFullYear() && this._trigger("changeYear", this.viewDate), i.getUTCMonth() !== this.viewDate.getUTCMonth() && this._trigger("changeMonth", this.viewDate)), this._setDate(i)
            },
            navArrowsClick: function(t) {
                var n = e(t.currentTarget).hasClass("prev") ? -1 : 1;
                0 !== this.viewMode && (n *= 12 * m.viewModes[this.viewMode].navStep), this.viewDate = this.moveMonth(this.viewDate, n), this._trigger(m.viewModes[this.viewMode].e, this.viewDate), this.fill()
            },
            _toggle_multidate: function(e) {
                var t = this.dates.contains(e);
                if (e || this.dates.clear(), -1 !== t ? (!0 === this.o.multidate || this.o.multidate > 1 || this.o.toggleActive) && this.dates.remove(t) : !1 === this.o.multidate ? (this.dates.clear(), this.dates.push(e)) : this.dates.push(e), "number" == typeof this.o.multidate)
                    for (; this.dates.length > this.o.multidate;) this.dates.remove(0)
            },
            _setDate: function(e, t) {
                t && "date" !== t || this._toggle_multidate(e && new Date(e)), (!t && this.o.updateViewDate || "view" === t) && (this.viewDate = e && new Date(e)), this.fill(), this.setValue(), t && "view" === t || this._trigger("changeDate"), this.inputField.trigger("change"), !this.o.autoclose || t && "date" !== t || this.hide()
            },
            moveDay: function(e, t) {
                var n = new Date(e);
                return n.setUTCDate(e.getUTCDate() + t), n
            },
            moveWeek: function(e, t) {
                return this.moveDay(e, 7 * t)
            },
            moveMonth: function(e, t) {
                if (! function(e) {
                        return e && !isNaN(e.getTime())
                    }(e)) return this.o.defaultViewDate;
                if (!t) return e;
                var n, i, r = new Date(e.valueOf()),
                    o = r.getUTCDate(),
                    a = r.getUTCMonth(),
                    s = Math.abs(t);
                if (t = t > 0 ? 1 : -1, 1 === s) i = -1 === t ? function() {
                    return r.getUTCMonth() === a
                } : function() {
                    return r.getUTCMonth() !== n
                }, n = a + t, r.setUTCMonth(n), n = (n + 12) % 12;
                else {
                    for (var l = 0; l < s; l++) r = this.moveMonth(r, t);
                    n = r.getUTCMonth(), r.setUTCDate(o), i = function() {
                        return n !== r.getUTCMonth()
                    }
                }
                for (; i();) r.setUTCDate(--o), r.setUTCMonth(n);
                return r
            },
            moveYear: function(e, t) {
                return this.moveMonth(e, 12 * t)
            },
            moveAvailableDate: function(e, t, n) {
                do {
                    if (e = this[n](e, t), !this.dateWithinRange(e)) return !1;
                    n = "moveDay"
                } while (this.dateIsDisabled(e));
                return e
            },
            weekOfDateIsDisabled: function(t) {
                return -1 !== e.inArray(t.getUTCDay(), this.o.daysOfWeekDisabled)
            },
            dateIsDisabled: function(t) {
                return this.weekOfDateIsDisabled(t) || e.grep(this.o.datesDisabled, (function(e) {
                    return r(t, e)
                })).length > 0
            },
            dateWithinRange: function(e) {
                return e >= this.o.startDate && e <= this.o.endDate
            },
            keydown: function(e) {
                if (this.picker.is(":visible")) {
                    var t, n, i = !1,
                        r = this.focusDate || this.viewDate;
                    switch (e.keyCode) {
                        case 27:
                            this.focusDate ? (this.focusDate = null, this.viewDate = this.dates.get(-1) || this.viewDate, this.fill()) : this.hide(), e.preventDefault(), e.stopPropagation();
                            break;
                        case 37:
                        case 38:
                        case 39:
                        case 40:
                            if (!this.o.keyboardNavigation || 7 === this.o.daysOfWeekDisabled.length) break;
                            t = 37 === e.keyCode || 38 === e.keyCode ? -1 : 1, 0 === this.viewMode ? e.ctrlKey ? (n = this.moveAvailableDate(r, t, "moveYear")) && this._trigger("changeYear", this.viewDate) : e.shiftKey ? (n = this.moveAvailableDate(r, t, "moveMonth")) && this._trigger("changeMonth", this.viewDate) : 37 === e.keyCode || 39 === e.keyCode ? n = this.moveAvailableDate(r, t, "moveDay") : this.weekOfDateIsDisabled(r) || (n = this.moveAvailableDate(r, t, "moveWeek")) : 1 === this.viewMode ? (38 !== e.keyCode && 40 !== e.keyCode || (t *= 4), n = this.moveAvailableDate(r, t, "moveMonth")) : 2 === this.viewMode && (38 !== e.keyCode && 40 !== e.keyCode || (t *= 4), n = this.moveAvailableDate(r, t, "moveYear")), n && (this.focusDate = this.viewDate = n, this.setValue(), this.fill(), e.preventDefault());
                            break;
                        case 13:
                            if (!this.o.forceParse) break;
                            r = this.focusDate || this.dates.get(-1) || this.viewDate, this.o.keyboardNavigation && (this._toggle_multidate(r), i = !0), this.focusDate = null, this.viewDate = this.dates.get(-1) || this.viewDate, this.setValue(), this.fill(), this.picker.is(":visible") && (e.preventDefault(), e.stopPropagation(), this.o.autoclose && this.hide());
                            break;
                        case 9:
                            this.focusDate = null, this.viewDate = this.dates.get(-1) || this.viewDate, this.fill(), this.hide()
                    }
                    i && (this.dates.length ? this._trigger("changeDate") : this._trigger("clearDate"), this.inputField.trigger("change"))
                } else 40 !== e.keyCode && 27 !== e.keyCode || (this.show(), e.stopPropagation())
            },
            setViewMode: function(e) {
                this.viewMode = e, this.picker.children("div").hide().filter(".datepicker-" + m.viewModes[this.viewMode].clsName).show(), this.updateNavArrows(), this._trigger("changeViewMode", new Date(this.viewDate))
            }
        };
        var u = function(t, n) {
            e.data(t, "datepicker", this), this.element = e(t), this.inputs = e.map(n.inputs, (function(e) {
                return e.jquery ? e[0] : e
            })), delete n.inputs, this.keepEmptyValues = n.keepEmptyValues, delete n.keepEmptyValues, h.call(e(this.inputs), n).on("changeDate", e.proxy(this.dateUpdated, this)), this.pickers = e.map(this.inputs, (function(t) {
                return e.data(t, "datepicker")
            })), this.updateDates()
        };
        u.prototype = {
            updateDates: function() {
                this.dates = e.map(this.pickers, (function(e) {
                    return e.getUTCDate()
                })), this.updateRanges()
            },
            updateRanges: function() {
                var t = e.map(this.dates, (function(e) {
                    return e.valueOf()
                }));
                e.each(this.pickers, (function(e, n) {
                    n.setRange(t)
                }))
            },
            clearDates: function() {
                e.each(this.pickers, (function(e, t) {
                    t.clearDates()
                }))
            },
            dateUpdated: function(n) {
                if (!this.updating) {
                    this.updating = !0;
                    var i = e.data(n.target, "datepicker");
                    if (i !== t) {
                        var r = i.getUTCDate(),
                            o = this.keepEmptyValues,
                            a = e.inArray(n.target, this.inputs),
                            s = a - 1,
                            l = a + 1,
                            c = this.inputs.length;
                        if (-1 !== a) {
                            if (e.each(this.pickers, (function(e, t) {
                                    t.getUTCDate() || t !== i && o || t.setUTCDate(r)
                                })), r < this.dates[s])
                                for (; s >= 0 && r < this.dates[s];) this.pickers[s--].setUTCDate(r);
                            else if (r > this.dates[l])
                                for (; l < c && r > this.dates[l];) this.pickers[l++].setUTCDate(r);
                            this.updateDates(), delete this.updating
                        }
                    }
                }
            },
            destroy: function() {
                e.map(this.pickers, (function(e) {
                    e.destroy()
                })), e(this.inputs).off("changeDate", this.dateUpdated), delete this.element.data().datepicker
            },
            remove: o("destroy", "Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead")
        };
        var d = e.fn.datepicker,
            h = function(n) {
                var i, r = Array.apply(null, arguments);
                if (r.shift(), this.each((function() {
                        var t = e(this),
                            o = t.data("datepicker"),
                            l = "object" == typeof n && n;
                        if (!o) {
                            var d = a(this, "date"),
                                h = s(e.extend({}, f, d, l).language),
                                p = e.extend({}, f, h, d, l);
                            t.hasClass("input-daterange") || p.inputs ? (e.extend(p, {
                                inputs: p.inputs || t.find("input").toArray()
                            }), o = new u(this, p)) : o = new c(this, p), t.data("datepicker", o)
                        }
                        "string" == typeof n && "function" == typeof o[n] && (i = o[n].apply(o, r))
                    })), i === t || i instanceof c || i instanceof u) return this;
                if (this.length > 1) throw new Error("Using only allowed for the collection of a single element (" + n + " function)");
                return i
            };
        e.fn.datepicker = h;
        var f = e.fn.datepicker.defaults = {
                assumeNearbyYear: !1,
                autoclose: !1,
                beforeShowDay: e.noop,
                beforeShowMonth: e.noop,
                beforeShowYear: e.noop,
                beforeShowDecade: e.noop,
                beforeShowCentury: e.noop,
                calendarWeeks: !1,
                clearBtn: !1,
                toggleActive: !1,
                daysOfWeekDisabled: [],
                daysOfWeekHighlighted: [],
                datesDisabled: [],
                endDate: 1 / 0,
                forceParse: !0,
                format: "mm/dd/yyyy",
                keepEmptyValues: !1,
                keyboardNavigation: !0,
                language: "en",
                minViewMode: 0,
                maxViewMode: 4,
                multidate: !1,
                multidateSeparator: ",",
                orientation: "auto",
                rtl: !1,
                startDate: -1 / 0,
                startView: 0,
                todayBtn: !1,
                todayHighlight: !1,
                updateViewDate: !0,
                weekStart: 0,
                disableTouchKeyboard: !1,
                enableOnReadonly: !0,
                showOnFocus: !0,
                zIndexOffset: 10,
                container: "body",
                immediateUpdates: !1,
                title: "",
                templates: {
                    leftArrow: "&#x00AB;",
                    rightArrow: "&#x00BB;"
                },
                showWeekDays: !0
            },
            p = e.fn.datepicker.locale_opts = ["format", "rtl", "weekStart"];
        e.fn.datepicker.Constructor = c;
        var g = e.fn.datepicker.dates = {
                en: {
                    days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
                    daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
                    daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
                    months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
                    monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
                    today: "Today",
                    clear: "Clear",
                    titleFormat: "MM yyyy"
                }
            },
            m = {
                viewModes: [{
                    names: ["days", "month"],
                    clsName: "days",
                    e: "changeMonth"
                }, {
                    names: ["months", "year"],
                    clsName: "months",
                    e: "changeYear",
                    navStep: 1
                }, {
                    names: ["years", "decade"],
                    clsName: "years",
                    e: "changeDecade",
                    navStep: 10
                }, {
                    names: ["decades", "century"],
                    clsName: "decades",
                    e: "changeCentury",
                    navStep: 100
                }, {
                    names: ["centuries", "millennium"],
                    clsName: "centuries",
                    e: "changeMillennium",
                    navStep: 1e3
                }],
                validParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g,
                nonpunctuation: /[^ -\/:-@\u5e74\u6708\u65e5\[-`{-~\t\n\r]+/g,
                parseFormat: function(e) {
                    if ("function" == typeof e.toValue && "function" == typeof e.toDisplay) return e;
                    var t = e.replace(this.validParts, "\0").split("\0"),
                        n = e.match(this.validParts);
                    if (!t || !t.length || !n || 0 === n.length) throw new Error("Invalid date format.");
                    return {
                        separators: t,
                        parts: n
                    }
                },
                parseDate: function(n, r, o, a) {
                    function s() {
                        var e = this.slice(0, l[h].length),
                            t = l[h].slice(0, e.length);
                        return e.toLowerCase() === t.toLowerCase()
                    }
                    if (!n) return t;
                    if (n instanceof Date) return n;
                    if ("string" == typeof r && (r = m.parseFormat(r)), r.toValue) return r.toValue(n, r, o);
                    var l, u, d, h, f, p = {
                            d: "moveDay",
                            m: "moveMonth",
                            w: "moveWeek",
                            y: "moveYear"
                        },
                        v = {
                            yesterday: "-1d",
                            today: "+0d",
                            tomorrow: "+1d"
                        };
                    if (n in v && (n = v[n]), /^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/i.test(n)) {
                        for (l = n.match(/([\-+]\d+)([dmwy])/gi), n = new Date, h = 0; h < l.length; h++) u = l[h].match(/([\-+]\d+)([dmwy])/i), d = Number(u[1]), f = p[u[2].toLowerCase()], n = c.prototype[f](n, d);
                        return c.prototype._zero_utc_time(n)
                    }
                    l = n && n.match(this.nonpunctuation) || [];
                    var y, b, w = {},
                        x = ["yyyy", "yy", "M", "MM", "m", "mm", "d", "dd"],
                        _ = {
                            yyyy: function(e, t) {
                                return e.setUTCFullYear(a ? function(e, t) {
                                    return !0 === t && (t = 10), e < 100 && (e += 2e3) > (new Date).getFullYear() + t && (e -= 100), e
                                }(t, a) : t)
                            },
                            m: function(e, t) {
                                if (isNaN(e)) return e;
                                for (t -= 1; t < 0;) t += 12;
                                for (t %= 12, e.setUTCMonth(t); e.getUTCMonth() !== t;) e.setUTCDate(e.getUTCDate() - 1);
                                return e
                            },
                            d: function(e, t) {
                                return e.setUTCDate(t)
                            }
                        };
                    _.yy = _.yyyy, _.M = _.MM = _.mm = _.m, _.dd = _.d, n = i();
                    var C = r.parts.slice();
                    if (l.length !== C.length && (C = e(C).filter((function(t, n) {
                            return -1 !== e.inArray(n, x)
                        })).toArray()), l.length === C.length) {
                        var k, S, T;
                        for (h = 0, k = C.length; h < k; h++) {
                            if (y = parseInt(l[h], 10), u = C[h], isNaN(y)) switch (u) {
                                case "MM":
                                    b = e(g[o].months).filter(s), y = e.inArray(b[0], g[o].months) + 1;
                                    break;
                                case "M":
                                    b = e(g[o].monthsShort).filter(s), y = e.inArray(b[0], g[o].monthsShort) + 1
                            }
                            w[u] = y
                        }
                        for (h = 0; h < x.length; h++)(T = x[h]) in w && !isNaN(w[T]) && (S = new Date(n), _[T](S, w[T]), isNaN(S) || (n = S))
                    }
                    return n
                },
                formatDate: function(t, n, i) {
                    if (!t) return "";
                    if ("string" == typeof n && (n = m.parseFormat(n)), n.toDisplay) return n.toDisplay(t, n, i);
                    var r = {
                        d: t.getUTCDate(),
                        D: g[i].daysShort[t.getUTCDay()],
                        DD: g[i].days[t.getUTCDay()],
                        m: t.getUTCMonth() + 1,
                        M: g[i].monthsShort[t.getUTCMonth()],
                        MM: g[i].months[t.getUTCMonth()],
                        yy: t.getUTCFullYear().toString().substring(2),
                        yyyy: t.getUTCFullYear()
                    };
                    r.dd = (r.d < 10 ? "0" : "") + r.d, r.mm = (r.m < 10 ? "0" : "") + r.m, t = [];
                    for (var o = e.extend([], n.separators), a = 0, s = n.parts.length; a <= s; a++) o.length && t.push(o.shift()), t.push(r[n.parts[a]]);
                    return t.join("")
                },
                headTemplate: '<thead><tr><th colspan="7" class="datepicker-title"></th></tr><tr><th class="prev">' + f.templates.leftArrow + '</th><th colspan="5" class="datepicker-switch"></th><th class="next">' + f.templates.rightArrow + "</th></tr></thead>",
                contTemplate: '<tbody><tr><td colspan="7"></td></tr></tbody>',
                footTemplate: '<tfoot><tr><th colspan="7" class="today"></th></tr><tr><th colspan="7" class="clear"></th></tr></tfoot>'
            };
        m.template = '<div class="datepicker"><div class="datepicker-days"><table class="table-condensed">' + m.headTemplate + "<tbody></tbody>" + m.footTemplate + '</table></div><div class="datepicker-months"><table class="table-condensed">' + m.headTemplate + m.contTemplate + m.footTemplate + '</table></div><div class="datepicker-years"><table class="table-condensed">' + m.headTemplate + m.contTemplate + m.footTemplate + '</table></div><div class="datepicker-decades"><table class="table-condensed">' + m.headTemplate + m.contTemplate + m.footTemplate + '</table></div><div class="datepicker-centuries"><table class="table-condensed">' + m.headTemplate + m.contTemplate + m.footTemplate + "</table></div></div>", e.fn.datepicker.DPGlobal = m, e.fn.datepicker.noConflict = function() {
            return e.fn.datepicker = d, this
        }, e.fn.datepicker.version = "1.9.0", e.fn.datepicker.deprecated = function(e) {
            var t = window.console;
            t && t.warn && t.warn("DEPRECATED: " + e)
        }, e(document).on("focus.datepicker.data-api click.datepicker.data-api", '[data-provide="datepicker"]', (function(t) {
            var n = e(this);
            n.data("datepicker") || (t.preventDefault(), h.call(n, "show"))
        })), e((function() {
            h.call(e('[data-provide="datepicker-inline"]'))
        }))
    })), "undefined" != typeof jQuery && function(e, t) {
        function n(e, t, n) {
            return new Array(n + 1 - e.length).join(t) + e
        }

        function i() {
            if (1 === arguments.length) {
                var t = arguments[0];
                return "string" == typeof t && (t = e.fn.timepicker.parseTime(t)), new Date(0, 0, 0, t.getHours(), t.getMinutes(), t.getSeconds())
            }
            return 3 === arguments.length ? new Date(0, 0, 0, arguments[0], arguments[1], arguments[2]) : 2 === arguments.length ? new Date(0, 0, 0, arguments[0], arguments[1], 0) : new Date(0, 0, 0)
        }
        var r, o;
        e.TimePicker = function() {
            var t = this;
            t.container = e(".ui-timepicker-container"), t.ui = t.container.find(".ui-timepicker"), 0 === t.container.length && (t.container = e("<div></div>").addClass("ui-timepicker-container").addClass("ui-timepicker-hidden ui-helper-hidden").appendTo("body").hide(), t.ui = e("<div></div>").addClass("ui-timepicker").addClass("ui-widget ui-widget-content ui-menu").addClass("ui-corner-all").appendTo(t.container), t.viewport = e("<ul></ul>").addClass("ui-timepicker-viewport").appendTo(t.ui), e.fn.jquery >= "1.4.2" && t.ui.delegate("a", "mouseenter.timepicker", (function() {
                t.activate(!1, e(this).parent())
            })).delegate("a", "mouseleave.timepicker", (function() {
                t.deactivate(!1)
            })).delegate("a", "click.timepicker", (function(n) {
                n.preventDefault(), t.select(!1, e(this).parent())
            })))
        }, e.TimePicker.count = 0, e.TimePicker.instance = function() {
            return e.TimePicker._instance || (e.TimePicker._instance = new e.TimePicker), e.TimePicker._instance
        }, e.TimePicker.prototype = {
            keyCode: {
                ALT: 18,
                BLOQ_MAYUS: 20,
                CTRL: 17,
                DOWN: 40,
                END: 35,
                ENTER: 13,
                HOME: 36,
                LEFT: 37,
                NUMPAD_ENTER: 108,
                PAGE_DOWN: 34,
                PAGE_UP: 33,
                RIGHT: 39,
                SHIFT: 16,
                TAB: 9,
                UP: 38
            },
            _items: function(t, n) {
                var r, o, a = e("<ul></ul>"),
                    s = null;
                for (-1 === t.options.timeFormat.indexOf("m") && t.options.interval % 60 != 0 && (t.options.interval = 60 * Math.max(Math.round(t.options.interval / 60), 1)), r = n ? i(n) : t.options.startTime ? i(t.options.startTime) : i(t.options.startHour, t.options.startMinutes), o = new Date(r.getTime() + 864e5); r < o;) this._isValidTime(t, r) && (s = e("<li>").addClass("ui-menu-item").appendTo(a), e("<a>").addClass("ui-corner-all").text(e.fn.timepicker.formatTime(t.options.timeFormat, r)).appendTo(s), s.data("time-value", r)), r = new Date(r.getTime() + 60 * t.options.interval * 1e3);
                return a.children()
            },
            _isValidTime: function(e, t) {
                var n = null,
                    r = null;
                return t = i(t), null !== e.options.minTime ? n = i(e.options.minTime) : null === e.options.minHour && null === e.options.minMinutes || (n = i(e.options.minHour, e.options.minMinutes)), null !== e.options.maxTime ? r = i(e.options.maxTime) : null === e.options.maxHour && null === e.options.maxMinutes || (r = i(e.options.maxHour, e.options.maxMinutes)), null !== n && null !== r ? t >= n && t <= r : null !== n ? t >= n : null === r || t <= r
            },
            _hasScroll: function() {
                var e = void 0 !== this.ui.prop ? "prop" : "attr";
                return this.ui.height() < this.ui[e]("scrollHeight")
            },
            _move: function(e, t, n) {
                if (this.closed() && this.open(e), this.active) {
                    var i = this.active[t + "All"](".ui-menu-item").eq(0);
                    i.length ? this.activate(e, i) : this.activate(e, this.viewport.children(n))
                } else this.activate(e, this.viewport.children(n))
            },
            register: function(t, n) {
                var i = this,
                    r = {};
                r.element = e(t), r.element.data("TimePicker") || (r.options = e.metadata ? e.extend({}, n, r.element.metadata()) : e.extend({}, n), r.widget = i, e.extend(r, {
                    next: function() {
                        return i.next(r)
                    },
                    previous: function() {
                        return i.previous(r)
                    },
                    first: function() {
                        return i.first(r)
                    },
                    last: function() {
                        return i.last(r)
                    },
                    selected: function() {
                        return i.selected(r)
                    },
                    open: function() {
                        return i.open(r)
                    },
                    close: function() {
                        return i.close(r)
                    },
                    closed: function() {
                        return i.closed(r)
                    },
                    destroy: function() {
                        return i.destroy(r)
                    },
                    parse: function(e) {
                        return i.parse(r, e)
                    },
                    format: function(e, t) {
                        return i.format(r, e, t)
                    },
                    getTime: function() {
                        return i.getTime(r)
                    },
                    setTime: function(e, t) {
                        return i.setTime(r, e, t)
                    },
                    option: function(e, t) {
                        return i.option(r, e, t)
                    }
                }), i._setDefaultTime(r), i._addInputEventsHandlers(r), r.element.data("TimePicker", r))
            },
            _setDefaultTime: function(t) {
                "now" === t.options.defaultTime ? t.setTime(i(new Date)) : t.options.defaultTime && t.options.defaultTime.getFullYear ? t.setTime(i(t.options.defaultTime)) : t.options.defaultTime && t.setTime(e.fn.timepicker.parseTime(t.options.defaultTime))
            },
            _addInputEventsHandlers: function(t) {
                var n = this;
                t.element.bind("keydown.timepicker", (function(e) {
                    switch (e.which || e.keyCode) {
                        case n.keyCode.ENTER:
                        case n.keyCode.NUMPAD_ENTER:
                            e.preventDefault(), n.closed() ? t.element.trigger("change.timepicker") : n.select(t, n.active);
                            break;
                        case n.keyCode.UP:
                            t.previous();
                            break;
                        case n.keyCode.DOWN:
                            t.next();
                            break;
                        default:
                            n.closed() || t.close(!0)
                    }
                })).bind("focus.timepicker", (function() {
                    t.open()
                })).bind("blur.timepicker", (function() {
                    setTimeout((function() {
                        t.element.data("timepicker-user-clicked-outside") && t.close()
                    }))
                })).bind("change.timepicker", (function() {
                    t.closed() && t.setTime(e.fn.timepicker.parseTime(t.element.val()))
                }))
            },
            select: function(t, n) {
                var i = !1 === t ? this.instance : t;
                this.setTime(i, e.fn.timepicker.parseTime(n.children("a").text())), this.close(i, !0)
            },
            activate: function(e, t) {
                if ((!1 === e ? this.instance : e) === this.instance) {
                    if (this.deactivate(), this._hasScroll()) {
                        var n = t.offset().top - this.ui.offset().top,
                            i = this.ui.scrollTop(),
                            r = this.ui.height();
                        n < 0 ? this.ui.scrollTop(i + n) : n >= r && this.ui.scrollTop(i + n - r + t.height())
                    }
                    this.active = t.eq(0).children("a").addClass("ui-state-hover").attr("id", "ui-active-item").end()
                }
            },
            deactivate: function() {
                this.active && (this.active.children("a").removeClass("ui-state-hover").removeAttr("id"), this.active = null)
            },
            next: function(e) {
                return (this.closed() || this.instance === e) && this._move(e, "next", ".ui-menu-item:first"), e.element
            },
            previous: function(e) {
                return (this.closed() || this.instance === e) && this._move(e, "prev", ".ui-menu-item:last"), e.element
            },
            first: function(e) {
                return this.instance === e && (this.active && 0 === this.active.prevAll(".ui-menu-item").length)
            },
            last: function(e) {
                return this.instance === e && (this.active && 0 === this.active.nextAll(".ui-menu-item").length)
            },
            selected: function(e) {
                return this.instance === e && this.active ? this.active : null
            },
            open: function(t) {
                var n = this,
                    i = t.getTime(),
                    r = t.options.dynamic && i;
                if (!t.options.dropdown) return t.element;
                switch (t.element.data("timepicker-event-namespace", Math.random()), e(document).bind("click.timepicker-" + t.element.data("timepicker-event-namespace"), (function(e) {
                    t.element.get(0) === e.target ? t.element.data("timepicker-user-clicked-outside", !1) : t.element.data("timepicker-user-clicked-outside", !0).blur()
                })), (t.rebuild || !t.items || r) && (t.items = n._items(t, r ? i : null)), (t.rebuild || n.instance !== t || r) && (e.fn.jquery < "1.4.2" ? (n.viewport.children().remove(), n.viewport.append(t.items), n.viewport.find("a").bind("mouseover.timepicker", (function() {
                    n.activate(t, e(this).parent())
                })).bind("mouseout.timepicker", (function() {
                    n.deactivate(t)
                })).bind("click.timepicker", (function(i) {
                    i.preventDefault(), n.select(t, e(this).parent())
                }))) : (n.viewport.children().detach(), n.viewport.append(t.items))), t.rebuild = !1, n.container.removeClass("ui-helper-hidden ui-timepicker-hidden ui-timepicker-standard ui-timepicker-corners").show(), t.options.theme) {
                    case "standard":
                        n.container.addClass("ui-timepicker-standard");
                        break;
                    case "standard-rounded-corners":
                        n.container.addClass("ui-timepicker-standard ui-timepicker-corners")
                }
                n.container.hasClass("ui-timepicker-no-scrollbar") || t.options.scrollbar || (n.container.addClass("ui-timepicker-no-scrollbar"), n.viewport.css({
                    paddingRight: 40
                }));
                var o = n.container.outerHeight() - n.container.height(),
                    a = t.options.zindex ? t.options.zindex : t.element.offsetParent().css("z-index"),
                    s = t.element.offset();
                n.container.css({
                    top: s.top + t.element.outerHeight(),
                    left: s.left
                }), n.container.show(), n.container.css({
                    left: t.element.offset().left,
                    height: n.ui.outerHeight() + o,
                    width: t.element.outerWidth(),
                    zIndex: a,
                    cursor: "default"
                });
                var l = n.container.width() - (n.ui.outerWidth() - n.ui.width());
                return n.ui.css({
                    width: l
                }), n.viewport.css({
                    width: l
                }), t.items.css({
                    width: l
                }), n.instance = t, i ? t.items.each((function() {
                    var r = e(this);
                    return (e.fn.jquery < "1.4.2" ? e.fn.timepicker.parseTime(r.find("a").text()) : r.data("time-value")).getTime() !== i.getTime() || (n.activate(t, r), !1)
                })) : n.deactivate(t), t.element
            },
            close: function(t) {
                return this.instance === t && (this.container.addClass("ui-helper-hidden ui-timepicker-hidden").hide(), this.ui.scrollTop(0), this.ui.children().removeClass("ui-state-hover")), e(document).unbind("click.timepicker-" + t.element.data("timepicker-event-namespace")), t.element
            },
            closed: function() {
                return this.ui.is(":hidden")
            },
            destroy: function(e) {
                return this.close(e, !0), e.element.unbind(".timepicker").data("TimePicker", null)
            },
            parse: function(t, n) {
                return e.fn.timepicker.parseTime(n)
            },
            format: function(t, n, i) {
                return i = i || t.options.timeFormat, e.fn.timepicker.formatTime(i, n)
            },
            getTime: function(t) {
                var n = e.fn.timepicker.parseTime(t.element.val());
                return n instanceof Date && !this._isValidTime(t, n) ? null : n instanceof Date && t.selectedTime ? t.format(n) === t.format(t.selectedTime) ? t.selectedTime : n : n instanceof Date ? n : null
            },
            setTime: function(t, n, r) {
                var o = t.selectedTime;
                if ("string" == typeof n && (n = t.parse(n)), n && n.getMinutes && this._isValidTime(t, n)) {
                    if (n = i(n), t.selectedTime = n, t.element.val(t.format(n, t.options.timeFormat)), r) return t
                } else t.selectedTime = null;
                return null === o && null === t.selectedTime || (t.element.trigger("time-change", [n]), e.isFunction(t.options.change) && t.options.change.apply(t.element, [n])), t.element
            },
            option: function(t, n, i) {
                if (void 0 === i) return t.options[n];
                var r, o, a = t.getTime();
                "string" == typeof n ? (r = {})[n] = i : r = n, o = ["minHour", "minMinutes", "minTime", "maxHour", "maxMinutes", "maxTime", "startHour", "startMinutes", "startTime", "timeFormat", "interval", "dropdown"], e.each(r, (function(n) {
                    t.options[n] = r[n], t.rebuild = t.rebuild || e.inArray(n, o) > -1
                })), t.rebuild && t.setTime(a)
            }
        }, e.TimePicker.defaults = {
            timeFormat: "hh:mm p",
            minHour: null,
            minMinutes: null,
            minTime: null,
            maxHour: null,
            maxMinutes: null,
            maxTime: null,
            startHour: null,
            startMinutes: null,
            startTime: null,
            interval: 30,
            dynamic: !0,
            theme: "standard",
            zindex: null,
            dropdown: !0,
            scrollbar: !1,
            change: function() {}
        }, e.TimePicker.methods = {
            chainable: ["next", "previous", "open", "close", "destroy", "setTime"]
        }, e.fn.timepicker = function(t) {
            if ("string" == typeof t) {
                var n, i, r = Array.prototype.slice.call(arguments, 1);
                return i = this[n = "option" === t && arguments.length > 2 || -1 !== e.inArray(t, e.TimePicker.methods.chainable) ? "each" : "map"]((function() {
                    var n = e(this).data("TimePicker");
                    if ("object" == typeof n) return n[t].apply(n, r)
                })), "map" === n && 1 === this.length ? e.makeArray(i).shift() : "map" === n ? e.makeArray(i) : i
            }
            if (1 === this.length && this.data("TimePicker")) return this.data("TimePicker");
            var o = e.extend({}, e.TimePicker.defaults, t);
            return this.each((function() {
                e.TimePicker.instance().register(this, o)
            }))
        }, e.fn.timepicker.formatTime = function(e, t) {
            var i = t.getHours(),
                r = i % 12,
                o = t.getMinutes(),
                a = t.getSeconds(),
                s = {
                    hh: n((0 === r ? 12 : r).toString(), "0", 2),
                    HH: n(i.toString(), "0", 2),
                    mm: n(o.toString(), "0", 2),
                    ss: n(a.toString(), "0", 2),
                    h: 0 === r ? 12 : r,
                    H: i,
                    m: o,
                    s: a,
                    p: i > 11 ? "PM" : "AM"
                },
                l = e,
                c = "";
            for (c in s) s.hasOwnProperty(c) && (l = l.replace(new RegExp(c, "g"), s[c]));
            return l = l.replace(new RegExp("a", "g"), i > 11 ? "pm" : "am")
        }, e.fn.timepicker.parseTime = (o = (r = [
            [/^(\d+)$/, "$1"],
            [/^:(\d)$/, "$10"],
            [/^:(\d+)/, "$1"],
            [/^(\d):([7-9])$/, "0$10$2"],
            [/^(\d):(\d\d)$/, "$1$2"],
            [/^(\d):(\d{1,})$/, "0$1$20"],
            [/^(\d\d):([7-9])$/, "$10$2"],
            [/^(\d\d):(\d)$/, "$1$20"],
            [/^(\d\d):(\d*)$/, "$1$2"],
            [/^(\d{3,}):(\d)$/, "$10$2"],
            [/^(\d{3,}):(\d{2,})/, "$1$2"],
            [/^(\d):(\d):(\d)$/, "0$10$20$3"],
            [/^(\d{1,2}):(\d):(\d\d)/, "$10$2$3"]
        ]).length, function(t) {
            var n, a, s = i(new Date),
                l = !1,
                c = !1,
                u = !1;
            if (void 0 === t || !t.toLowerCase) return null;
            t = t.toLowerCase(), a = !(n = /a/.test(t)) && /p/.test(t), t = t.replace(/[^0-9:]/g, "").replace(/:+/g, ":");
            for (var d = 0; d < o; d += 1)
                if (r[d][0].test(t)) {
                    t = t.replace(r[d][0], r[d][1]);
                    break
                }
            return 1 === (t = t.replace(/:/g, "")).length || 2 === t.length ? l = t : 3 === t.length || 5 === t.length ? (l = t.substr(0, 1), c = t.substr(1, 2), u = t.substr(3, 2)) : (4 === t.length || t.length > 5) && (l = t.substr(0, 2), c = t.substr(2, 2), u = t.substr(4, 2)), t.length > 0 && t.length < 5 && (t.length < 3 && (c = 0), u = 0), !1 !== l && !1 !== c && !1 !== u && (l = parseInt(l, 10), c = parseInt(c, 10), u = parseInt(u, 10), n && 12 === l ? l = 0 : a && l < 12 && (l += 12), l > 24 ? t.length >= 6 ? e.fn.timepicker.parseTime(t.substr(0, 5)) : e.fn.timepicker.parseTime(t + "0" + (n ? "a" : "") + (a ? "p" : "")) : (s.setHours(l, c, u), s))
        })
    }(jQuery),
    function(e) {
        "function" == typeof define && define.amd ? define(["jquery"], e) : e(jQuery)
    }((function(e) {
        "use strict";
        var t = {},
            n = Math.max,
            i = Math.min;
        t.c = {}, t.c.d = e(document), t.c.t = function(e) {
            return e.originalEvent.touches.length - 1
        }, t.o = function() {
            var n = this;
            this.o = null, this.$ = null, this.i = null, this.g = null, this.v = null, this.cv = null, this.x = 0, this.y = 0, this.w = 0, this.h = 0, this.$c = null, this.c = null, this.t = 0, this.isInit = !1, this.fgColor = null, this.pColor = null, this.dH = null, this.cH = null, this.eH = null, this.rH = null, this.scale = 1, this.relative = !1, this.relativeWidth = !1, this.relativeHeight = !1, this.$div = null, this.run = function() {
                var t = function(e, t) {
                    var i;
                    for (i in t) n.o[i] = t[i];
                    n._carve().init(), n._configure()._draw()
                };
                if (!this.$.data("kontroled")) {
                    if (this.$.data("kontroled", !0), this.extend(), this.o = e.extend({
                            min: void 0 !== this.$.data("min") ? this.$.data("min") : 0,
                            max: void 0 !== this.$.data("max") ? this.$.data("max") : 100,
                            stopper: !0,
                            readOnly: this.$.data("readonly") || "readonly" === this.$.attr("readonly"),
                            cursor: (!0 === this.$.data("cursor") ? 30 : this.$.data("cursor")) || 0,
                            thickness: this.$.data("thickness") && Math.max(Math.min(this.$.data("thickness"), 1), .01) || .35,
                            lineCap: this.$.data("linecap") || "butt",
                            width: this.$.data("width") || 200,
                            height: this.$.data("height") || 200,
                            displayInput: null == this.$.data("displayinput") || this.$.data("displayinput"),
                            displayPrevious: this.$.data("displayprevious"),
                            fgColor: this.$.data("fgcolor") || "#87CEEB",
                            inputColor: this.$.data("inputcolor"),
                            font: this.$.data("font") || "Arial",
                            fontWeight: this.$.data("font-weight") || "bold",
                            inline: !1,
                            step: this.$.data("step") || 1,
                            rotation: this.$.data("rotation"),
                            draw: null,
                            change: null,
                            cancel: null,
                            release: null,
                            format: function(e) {
                                return e
                            },
                            parse: function(e) {
                                return parseFloat(e)
                            }
                        }, this.o), this.o.flip = "anticlockwise" === this.o.rotation || "acw" === this.o.rotation, this.o.inputColor || (this.o.inputColor = this.o.fgColor), this.$.is("fieldset") ? (this.v = {}, this.i = this.$.find("input"), this.i.each((function(t) {
                            var i = e(this);
                            n.i[t] = i, n.v[t] = n.o.parse(i.val()), i.bind("change blur", (function() {
                                var e = {};
                                e[t] = i.val(), n.val(n._validate(e))
                            }))
                        })), this.$.find("legend").remove()) : (this.i = this.$, this.v = this.o.parse(this.$.val()), "" === this.v && (this.v = this.o.min), this.$.bind("change blur", (function() {
                            n.val(n._validate(n.o.parse(n.$.val())))
                        }))), !this.o.displayInput && this.$.hide(), this.$c = e(document.createElement("canvas")).attr({
                            width: this.o.width,
                            height: this.o.height
                        }), this.$div = e('<div style="' + (this.o.inline ? "display:inline;" : "") + "width:" + this.o.width + "px;height:" + this.o.height + 'px;"></div>'), this.$.wrap(this.$div).before(this.$c), this.$div = this.$.parent(), "undefined" != typeof G_vmlCanvasManager && G_vmlCanvasManager.initElement(this.$c[0]), this.c = this.$c[0].getContext ? this.$c[0].getContext("2d") : null, !this.c) throw {
                        name: "CanvasNotSupportedException",
                        message: "Canvas not supported. Please use excanvas on IE8.0.",
                        toString: function() {
                            return this.name + ": " + this.message
                        }
                    };
                    return this.scale = (window.devicePixelRatio || 1) / (this.c.webkitBackingStorePixelRatio || this.c.mozBackingStorePixelRatio || this.c.msBackingStorePixelRatio || this.c.oBackingStorePixelRatio || this.c.backingStorePixelRatio || 1), this.relativeWidth = this.o.width % 1 != 0 && this.o.width.indexOf("%"), this.relativeHeight = this.o.height % 1 != 0 && this.o.height.indexOf("%"), this.relative = this.relativeWidth || this.relativeHeight, this._carve(), this.v instanceof Object ? (this.cv = {}, this.copy(this.v, this.cv)) : this.cv = this.v, this.$.bind("configure", t).parent().bind("configure", t), this._listen()._configure()._xy().init(), this.isInit = !0, this.$.val(this.o.format(this.v)), this._draw(), this
                }
            }, this._carve = function() {
                if (this.relative) {
                    var e = this.relativeWidth ? this.$div.parent().width() * parseInt(this.o.width) / 100 : this.$div.parent().width(),
                        t = this.relativeHeight ? this.$div.parent().height() * parseInt(this.o.height) / 100 : this.$div.parent().height();
                    this.w = this.h = Math.min(e, t)
                } else this.w = this.o.width, this.h = this.o.height;
                return this.$div.css({
                    width: this.w + "px",
                    height: this.h + "px"
                }), this.$c.attr({
                    width: this.w,
                    height: this.h
                }), 1 !== this.scale && (this.$c[0].width = this.$c[0].width * this.scale, this.$c[0].height = this.$c[0].height * this.scale, this.$c.width(this.w), this.$c.height(this.h)), this
            }, this._draw = function() {
                var e = !0;
                n.g = n.c, n.clear(), n.dH && (e = n.dH()), !1 !== e && n.draw()
            }, this._touch = function(e) {
                var i = function(e) {
                    var t = n.xy2val(e.originalEvent.touches[n.t].pageX, e.originalEvent.touches[n.t].pageY);
                    t != n.cv && (n.cH && !1 === n.cH(t) || (n.change(n._validate(t)), n._draw()))
                };
                return this.t = t.c.t(e), i(e), t.c.d.bind("touchmove.k", i).bind("touchend.k", (function() {
                    t.c.d.unbind("touchmove.k touchend.k"), n.val(n.cv)
                })), this
            }, this._mouse = function(e) {
                var i = function(e) {
                    var t = n.xy2val(e.pageX, e.pageY);
                    t != n.cv && (n.cH && !1 === n.cH(t) || (n.change(n._validate(t)), n._draw()))
                };
                return i(e), t.c.d.bind("mousemove.k", i).bind("keyup.k", (function(e) {
                    if (27 === e.keyCode) {
                        if (t.c.d.unbind("mouseup.k mousemove.k keyup.k"), n.eH && !1 === n.eH()) return;
                        n.cancel()
                    }
                })).bind("mouseup.k", (function(e) {
                    t.c.d.unbind("mousemove.k mouseup.k keyup.k"), n.val(n.cv)
                })), this
            }, this._xy = function() {
                var e = this.$c.offset();
                return this.x = e.left, this.y = e.top, this
            }, this._listen = function() {
                return this.o.readOnly ? this.$.attr("readonly", "readonly") : (this.$c.bind("mousedown", (function(e) {
                    e.preventDefault(), n._xy()._mouse(e)
                })).bind("touchstart", (function(e) {
                    e.preventDefault(), n._xy()._touch(e)
                })), this.listen()), this.relative && e(window).resize((function() {
                    n._carve().init(), n._draw()
                })), this
            }, this._configure = function() {
                return this.o.draw && (this.dH = this.o.draw), this.o.change && (this.cH = this.o.change), this.o.cancel && (this.eH = this.o.cancel), this.o.release && (this.rH = this.o.release), this.o.displayPrevious ? (this.pColor = this.h2rgba(this.o.fgColor, "0.4"), this.fgColor = this.h2rgba(this.o.fgColor, "0.6")) : this.fgColor = this.o.fgColor, this
            }, this._clear = function() {
                this.$c[0].width = this.$c[0].width
            }, this._validate = function(e) {
                var t = ~~((e < 0 ? -.5 : .5) + e / this.o.step) * this.o.step;
                return Math.round(100 * t) / 100
            }, this.listen = function() {}, this.extend = function() {}, this.init = function() {}, this.change = function(e) {}, this.val = function(e) {}, this.xy2val = function(e, t) {}, this.draw = function() {}, this.clear = function() {
                this._clear()
            }, this.h2rgba = function(e, t) {
                var n;
                return e = e.substring(1, 7), "rgba(" + (n = [parseInt(e.substring(0, 2), 16), parseInt(e.substring(2, 4), 16), parseInt(e.substring(4, 6), 16)])[0] + "," + n[1] + "," + n[2] + "," + t + ")"
            }, this.copy = function(e, t) {
                for (var n in e) t[n] = e[n]
            }
        }, t.Dial = function() {
            t.o.call(this), this.startAngle = null, this.xy = null, this.radius = null, this.lineWidth = null, this.cursorExt = null, this.w2 = null, this.PI2 = 2 * Math.PI, this.extend = function() {
                this.o = e.extend({
                    bgColor: this.$.data("bgcolor") || "#EEEEEE",
                    angleOffset: this.$.data("angleoffset") || 0,
                    angleArc: this.$.data("anglearc") || 360,
                    inline: !0
                }, this.o)
            }, this.val = function(e, t) {
                if (null == e) return this.v;
                e = this.o.parse(e), !1 !== t && e != this.v && this.rH && !1 === this.rH(e) || (this.cv = this.o.stopper ? n(i(e, this.o.max), this.o.min) : e, this.v = this.cv, this.$.val(this.o.format(this.v)), this._draw())
            }, this.xy2val = function(e, t) {
                var r, o;
                return r = Math.atan2(e - (this.x + this.w2), -(t - this.y - this.w2)) - this.angleOffset, this.o.flip && (r = this.angleArc - r - this.PI2), this.angleArc != this.PI2 && r < 0 && r > -.5 ? r = 0 : r < 0 && (r += this.PI2), o = r * (this.o.max - this.o.min) / this.angleArc + this.o.min, this.o.stopper && (o = n(i(o, this.o.max), this.o.min)), o
            }, this.listen = function() {
                var t, r, o, a, s = this,
                    l = function(e) {
                        e.preventDefault();
                        var o = e.originalEvent,
                            a = o.detail || o.wheelDeltaX,
                            l = o.detail || o.wheelDeltaY,
                            c = s._validate(s.o.parse(s.$.val())) + (a > 0 || l > 0 ? s.o.step : a < 0 || l < 0 ? -s.o.step : 0);
                        c = n(i(c, s.o.max), s.o.min), s.val(c, !1), s.rH && (clearTimeout(t), t = setTimeout((function() {
                            s.rH(c), t = null
                        }), 100), r || (r = setTimeout((function() {
                            t && s.rH(c), r = null
                        }), 200)))
                    },
                    c = 1,
                    u = {
                        37: -s.o.step,
                        38: s.o.step,
                        39: s.o.step,
                        40: -s.o.step
                    };
                this.$.bind("keydown", (function(t) {
                    var r = t.keyCode;
                    if (r >= 96 && r <= 105 && (r = t.keyCode = r - 48), o = parseInt(String.fromCharCode(r)), isNaN(o) && (13 !== r && 8 !== r && 9 !== r && 189 !== r && (190 !== r || s.$.val().match(/\./)) && t.preventDefault(), e.inArray(r, [37, 38, 39, 40]) > -1)) {
                        t.preventDefault();
                        var l = s.o.parse(s.$.val()) + u[r] * c;
                        s.o.stopper && (l = n(i(l, s.o.max), s.o.min)), s.change(s._validate(l)), s._draw(), a = window.setTimeout((function() {
                            c *= 2
                        }), 30)
                    }
                })).bind("keyup", (function(e) {
                    isNaN(o) ? a && (window.clearTimeout(a), a = null, c = 1, s.val(s.$.val())) : s.$.val() > s.o.max && s.$.val(s.o.max) || s.$.val() < s.o.min && s.$.val(s.o.min)
                })), this.$c.bind("mousewheel DOMMouseScroll", l), this.$.bind("mousewheel DOMMouseScroll", l)
            }, this.init = function() {
                (this.v < this.o.min || this.v > this.o.max) && (this.v = this.o.min), this.$.val(this.v), this.w2 = this.w / 2, this.cursorExt = this.o.cursor / 100, this.xy = this.w2 * this.scale, this.lineWidth = this.xy * this.o.thickness, this.lineCap = this.o.lineCap, this.radius = this.xy - this.lineWidth / 2, this.o.angleOffset && (this.o.angleOffset = isNaN(this.o.angleOffset) ? 0 : this.o.angleOffset), this.o.angleArc && (this.o.angleArc = isNaN(this.o.angleArc) ? this.PI2 : this.o.angleArc), this.angleOffset = this.o.angleOffset * Math.PI / 180, this.angleArc = this.o.angleArc * Math.PI / 180, this.startAngle = 1.5 * Math.PI + this.angleOffset, this.endAngle = 1.5 * Math.PI + this.angleOffset + this.angleArc;
                var e = n(String(Math.abs(this.o.max)).length, String(Math.abs(this.o.min)).length, 2) + 2;
                this.o.displayInput && this.i.css({
                    width: (this.w / 2 + 4 >> 0) + "px",
                    height: (this.w / 3 >> 0) + "px",
                    position: "absolute",
                    "vertical-align": "middle",
                    "margin-top": (this.w / 3 >> 0) + "px",
                    "margin-left": "-" + (3 * this.w / 4 + 2 >> 0) + "px",
                    border: 0,
                    background: "none",
                    font: this.o.fontWeight + " " + (this.w / e >> 0) + "px " + this.o.font,
                    "text-align": "center",
                    color: this.o.inputColor || this.o.fgColor,
                    padding: "0px",
                    "-webkit-appearance": "none"
                }) || this.i.css({
                    width: "0px",
                    visibility: "hidden"
                })
            }, this.change = function(e) {
                this.cv = e, this.$.val(this.o.format(e))
            }, this.angle = function(e) {
                return (e - this.o.min) * this.angleArc / (this.o.max - this.o.min)
            }, this.arc = function(e) {
                var t, n;
                return e = this.angle(e), n = this.o.flip ? (t = this.endAngle + 1e-5) - e - 1e-5 : (t = this.startAngle - 1e-5) + e + 1e-5, this.o.cursor && (t = n - this.cursorExt) && (n += this.cursorExt), {
                    s: t,
                    e: n,
                    d: this.o.flip && !this.o.cursor
                }
            }, this.draw = function() {
                var e, t = this.g,
                    n = this.arc(this.cv),
                    i = 1;
                t.lineWidth = this.lineWidth, t.lineCap = this.lineCap, "none" !== this.o.bgColor && (t.beginPath(), t.strokeStyle = this.o.bgColor, t.arc(this.xy, this.xy, this.radius, this.endAngle - 1e-5, this.startAngle + 1e-5, !0), t.stroke()), this.o.displayPrevious && (e = this.arc(this.v), t.beginPath(), t.strokeStyle = this.pColor, t.arc(this.xy, this.xy, this.radius, e.s, e.e, e.d), t.stroke(), i = this.cv == this.v), t.beginPath(), t.strokeStyle = i ? this.o.fgColor : this.fgColor, t.arc(this.xy, this.xy, this.radius, n.s, n.e, n.d), t.stroke()
            }, this.cancel = function() {
                this.val(this.v)
            }
        }, e.fn.dial = e.fn.knob = function(n) {
            return this.each((function() {
                var i = new t.Dial;
                i.o = n, i.$ = e(this), i.run()
            })).parent()
        }
    })),
    function(e, t) {
        function n(n, i, r) {
            var o = n.children(i.headerTag),
                a = n.children(i.bodyTag);
            o.length > a.length ? O($, "contents") : o.length < a.length && O($, "titles");
            var s = i.startIndex;
            if (r.stepCount = o.length, i.saveState && e.cookie) {
                var l = e.cookie(L + d(n)),
                    u = parseInt(l, 0);
                !isNaN(u) && u < r.stepCount && (s = u)
            }
            r.currentIndex = s, o.each((function(i) {
                var r = e(this),
                    o = a.eq(i),
                    s = o.data("mode"),
                    l = null == s ? z.html : h(z, /^\s*$/.test(s) || isNaN(s) ? s : parseInt(s, 0)),
                    u = l === z.html || o.data("url") === t ? "" : o.data("url"),
                    d = l !== z.html && "1" === o.data("loaded"),
                    f = e.extend({}, q, {
                        title: r.html(),
                        content: l === z.html ? o.html() : "",
                        contentUrl: u,
                        contentMode: l,
                        contentLoaded: d
                    });
                ! function(e, t) {
                    c(e).push(t)
                }(n, f)
            }))
        }

        function i(e, t) {
            var n = e.find(".steps li").eq(t.currentIndex);
            e.triggerHandler("finishing", [t.currentIndex]) ? (n.addClass("done").removeClass("error"), e.triggerHandler("finished", [t.currentIndex])) : n.addClass("error")
        }

        function r(e) {
            var t = e.data("eventNamespace");
            return null == t && (t = "." + d(e), e.data("eventNamespace", t)), t
        }

        function o(e, t) {
            var n = d(e);
            return e.find("#" + n + F + t)
        }

        function a(e, t) {
            var n = d(e);
            return e.find("#" + n + N + t)
        }

        function s(e) {
            return e.data("options")
        }

        function l(e) {
            return e.data("state")
        }

        function c(e) {
            return e.data("steps")
        }

        function u(e, t) {
            var n = c(e);
            return (0 > t || t >= n.length) && O(j), n[t]
        }

        function d(e) {
            var t = e.data("uid");
            return null == t && (null == (t = e._id()) && (t = "steps-uid-".concat(P), e._id(t)), P++, e.data("uid", t)), t
        }

        function h(e, n) {
            if (I("enumType", e), I("keyOrValue", n), "string" == typeof n) {
                var i = e[n];
                return i === t && O("The enum key '{0}' does not exist.", n), i
            }
            if ("number" == typeof n) {
                for (var r in e)
                    if (e[r] === n) return n;
                O("Invalid enum value '{0}'.", n)
            } else O("Invalid key or value type.")
        }

        function f(e, t, n) {
            return b(e, t, n, function(e, t) {
                return e.currentIndex + t
            }(n, 1))
        }

        function p(e, t, n) {
            return b(e, t, n, function(e, t) {
                return e.currentIndex - t
            }(n, 1))
        }

        function g(t) {
            var i = e.extend(!0, {}, W, t);
            return this.each((function() {
                var t = e(this),
                    a = {
                        currentIndex: i.startIndex,
                        currentStep: null,
                        stepCount: 0,
                        transitionElement: null
                    };
                t.data("options", i), t.data("state", a), t.data("steps", []), n(t, i, a),
                    function(t, n, i) {
                        var r = '<{0} class="{1}">{2}</{0}>',
                            o = h(H, n.stepsOrientation) === H.vertical ? " vertical" : "",
                            a = e(r.format(n.contentContainerTag, "content " + n.clearFixCssClass, t.html())),
                            s = e(r.format(n.stepsContainerTag, "steps " + n.clearFixCssClass, '<ul role="tablist"></ul>')),
                            l = a.children(n.headerTag),
                            c = a.children(n.bodyTag);
                        t.attr("role", "application").empty().append(s).append(a).addClass(n.cssClass + " " + n.clearFixCssClass + o), c.each((function(n) {
                                S(t, i, e(this), n)
                            })), l.each((function(r) {
                                D(t, n, i, e(this), r)
                            })), _(t, n, i),
                            function(e, t, n) {
                                if (t.enablePagination) {
                                    var i = '<li><a href="#{0}" role="menuitem">{1}</a></li>',
                                        r = "";
                                    t.forceMoveForward || (r += i.format("previous", t.labels.previous)), r += i.format("next", t.labels.next), t.enableFinishButton && (r += i.format("finish", t.labels.finish)), t.enableCancelButton && (r += i.format("cancel", t.labels.cancel)), e.append('<{0} class="actions {1}"><ul role="menu" aria-label="{2}">{3}</ul></{0}>'.format(t.actionContainerTag, t.clearFixCssClass, t.labels.pagination, r)), x(e, t, n), y(e, t, n)
                                }
                            }(t, n, i)
                    }(t, i, a),
                    function(e, t) {
                        var n = r(e);
                        e.bind("canceled" + n, t.onCanceled), e.bind("contentLoaded" + n, t.onContentLoaded), e.bind("finishing" + n, t.onFinishing), e.bind("finished" + n, t.onFinished), e.bind("init" + n, t.onInit), e.bind("stepChanging" + n, t.onStepChanging), e.bind("stepChanged" + n, t.onStepChanged), t.enableKeyNavigation && e.bind("keyup" + n, v), e.find(".actions a").bind("click" + n, w)
                    }(t, i), i.autoFocus && 0 === P && o(t, i.startIndex).focus(), t.triggerHandler("init", [i.startIndex])
            }))
        }

        function m(t, n, i, r, o) {
            (0 > r || r > i.stepCount) && O(j),
                function(e, t, n) {
                    c(e).splice(t, 0, n)
                }(t, r, o = e.extend({}, q, o)), i.currentIndex !== i.stepCount && i.currentIndex >= r && (i.currentIndex++, E(t, n, i)), i.stepCount++;
            var s = t.find(".content"),
                l = e("<{0}>{1}</{0}>".format(n.headerTag, o.title)),
                u = e("<{0}></{0}>".format(n.bodyTag));
            return (null == o.contentMode || o.contentMode === z.html) && u.html(o.content), 0 === r ? s.prepend(u).prepend(l) : a(t, r - 1).after(u).after(l), S(t, i, u, r), D(t, n, i, l, r), C(t, n, i, r), r === i.currentIndex && _(t, n, i), x(t, n, i), t
        }

        function v(t) {
            var n = e(this),
                i = s(n),
                r = l(n);
            if (i.suppressPaginationOnFocus && n.find(":focus").is(":input")) return t.preventDefault(), !1;
            var o = 37,
                a = 39;
            t.keyCode === o ? (t.preventDefault(), p(n, i, r)) : t.keyCode === a && (t.preventDefault(), f(n, i, r))
        }

        function y(t, n, i) {
            if (i.stepCount > 0) {
                var r = i.currentIndex,
                    o = u(t, r);
                if (!n.enableContentCache || !o.contentLoaded) switch (h(z, o.contentMode)) {
                    case z.iframe:
                        t.find(".content > .body").eq(i.currentIndex).empty().html('<iframe src="' + o.contentUrl + '" frameborder="0" scrolling="no" />').data("loaded", "1");
                        break;
                    case z.async:
                        var s = a(t, r)._aria("busy", "true").empty().append(T(n.loadingTemplate, {
                            text: n.labels.loading
                        }));
                        e.ajax({
                            url: o.contentUrl,
                            cache: !1
                        }).done((function(e) {
                            s.empty().html(e)._aria("busy", "false").data("loaded", "1"), t.triggerHandler("contentLoaded", [r])
                        }))
                }
            }
        }

        function b(e, t, n, i) {
            var r = n.currentIndex;
            if (i >= 0 && i < n.stepCount && !(t.forceMoveForward && i < n.currentIndex)) {
                var a = o(e, i),
                    s = a.parent(),
                    l = s.hasClass("disabled");
                return s._enableAria(), a.click(), r !== n.currentIndex || !l || (s._enableAria(!1), !1)
            }
            return !1
        }

        function w(t) {
            t.preventDefault();
            var n = e(this),
                r = n.parent().parent().parent().parent(),
                o = s(r),
                a = l(r),
                c = n.attr("href");
            switch (c.substring(c.lastIndexOf("#") + 1)) {
                case "cancel":
                    ! function(e) {
                        e.triggerHandler("canceled")
                    }(r);
                    break;
                case "finish":
                    i(r, a);
                    break;
                case "next":
                    f(r, o, a);
                    break;
                case "previous":
                    p(r, o, a)
            }
        }

        function x(e, t, n) {
            if (t.enablePagination) {
                var i = e.find(".actions a[href$='#finish']").parent(),
                    r = e.find(".actions a[href$='#next']").parent();
                if (!t.forceMoveForward) e.find(".actions a[href$='#previous']").parent()._enableAria(n.currentIndex > 0);
                t.enableFinishButton && t.showFinishButtonAlways ? (i._enableAria(n.stepCount > 0), r._enableAria(n.stepCount > 1 && n.stepCount > n.currentIndex + 1)) : (i._showAria(t.enableFinishButton && n.stepCount === n.currentIndex + 1), r._showAria(0 === n.stepCount || n.stepCount > n.currentIndex + 1)._enableAria(n.stepCount > n.currentIndex + 1 || !t.enableFinishButton))
            }
        }

        function _(t, n, i, r) {
            var a = o(t, i.currentIndex),
                s = e('<span class="current-info audible">' + n.labels.current + " </span>"),
                l = t.find(".content > .title");
            if (null != r) {
                var c = o(t, r);
                c.parent().addClass("done").removeClass("error")._selectAria(!1), l.eq(r).removeClass("current").next(".body").removeClass("current"), s = c.find(".current-info"), a.focus()
            }
            a.prepend(s).parent()._selectAria().removeClass("done")._enableAria(), l.eq(i.currentIndex).addClass("current").next(".body").addClass("current")
        }

        function C(e, t, n, i) {
            for (var r = d(e), o = i; o < n.stepCount; o++) {
                var a = r + F + o,
                    s = r + N + o,
                    l = r + R + o,
                    c = e.find(".title").eq(o)._id(l);
                e.find(".steps a").eq(o)._id(a)._aria("controls", s).attr("href", "#" + l).html(T(t.titleTemplate, {
                    index: o + 1,
                    title: c.html()
                })), e.find(".body").eq(o)._id(s)._aria("labelledby", l)
            }
        }

        function k(e, t, n, i) {
            return !(0 > i || i >= n.stepCount || n.currentIndex === i) && (function(e, t) {
                c(e).splice(t, 1)
            }(e, i), n.currentIndex > i && (n.currentIndex--, E(e, t, n)), n.stepCount--, function(e, t) {
                var n = d(e);
                return e.find("#" + n + R + t)
            }(e, i).remove(), a(e, i).remove(), o(e, i).parent().remove(), 0 === i && e.find(".steps li").first().addClass("first"), i === n.stepCount && e.find(".steps li").eq(i).addClass("last"), C(e, t, n, i), x(e, t, n), !0)
        }

        function S(e, t, n, i) {
            var r = d(e),
                o = r + N + i,
                a = r + R + i;
            n._id(o).attr("role", "tabpanel")._aria("labelledby", a).addClass("body")._showAria(t.currentIndex === i)
        }

        function T(e, n) {
            for (var i = e.match(/#([a-z]*)#/gi), r = 0; r < i.length; r++) {
                var o = i[r],
                    a = o.substring(1, o.length - 1);
                n[a] === t && O("The key '{0}' does not exist in the substitute collection!", a), e = e.replace(o, n[a])
            }
            return e
        }

        function D(t, n, i, o, a) {
            var s = d(t),
                l = s + F + a,
                c = s + N + a,
                u = s + R + a,
                h = t.find(".steps > ul"),
                f = T(n.titleTemplate, {
                    index: a + 1,
                    title: o.html()
                }),
                p = e('<li role="tab"><a id="' + l + '" href="#' + u + '" aria-controls="' + c + '">' + f + "</a></li>");
            p._enableAria(n.enableAllSteps || i.currentIndex > a), i.currentIndex > a && p.addClass("done"), o._id(u).attr("tabindex", "-1").addClass("title"), 0 === a ? h.prepend(p) : h.find("li").eq(a - 1).after(p), 0 === a && h.find("li").removeClass("first").eq(a).addClass("first"), a === i.stepCount - 1 && h.find("li").removeClass("last").eq(a).addClass("last"), p.children("a").bind("click" + r(t), M)
        }

        function E(t, n, i) {
            n.saveState && e.cookie && e.cookie(L + d(t), i.currentIndex)
        }

        function A(t, n, i, r, o, a) {
            var s = t.find(".content > .body"),
                c = h(B, n.transitionEffect),
                u = n.transitionEffectSpeed,
                d = s.eq(r),
                f = s.eq(o);
            switch (c) {
                case B.fade:
                case B.slide:
                    var p = c === B.fade ? "fadeOut" : "slideUp",
                        g = c === B.fade ? "fadeIn" : "slideDown";
                    i.transitionElement = d, f[p](u, (function() {
                        var t = l(e(this)._showAria(!1).parent().parent());
                        t.transitionElement && (t.transitionElement[g](u, (function() {
                            e(this)._showAria()
                        })).promise().done(a), t.transitionElement = null)
                    }));
                    break;
                case B.slideLeft:
                    var m = f.outerWidth(!0),
                        v = r > o ? -m : m,
                        y = r > o ? m : -m;
                    e.when(f.animate({
                        left: v
                    }, u, (function() {
                        e(this)._showAria(!1)
                    })), d.css("left", y + "px")._showAria().animate({
                        left: 0
                    }, u)).done(a);
                    break;
                default:
                    e.when(f._showAria(!1), d._showAria()).done(a)
            }
        }

        function M(t) {
            t.preventDefault();
            var n = e(this),
                i = n.parent().parent().parent().parent(),
                r = s(i),
                a = l(i),
                c = a.currentIndex;
            if (n.parent().is(":not(.disabled):not(.current)")) {
                var u = n.attr("href");
                ! function(e, t, n, i) {
                    if ((0 > i || i >= n.stepCount) && O(j), !(t.forceMoveForward && i < n.currentIndex)) {
                        var r = n.currentIndex;
                        e.triggerHandler("stepChanging", [n.currentIndex, i]) ? (n.currentIndex = i, E(e, t, n), _(e, t, n, r), x(e, t, n), y(e, t, n), A(e, t, n, i, r, (function() {
                            e.triggerHandler("stepChanged", [i, r])
                        }))) : e.find(".steps li").eq(r).addClass("error")
                    }
                }(i, r, a, parseInt(u.substring(u.lastIndexOf("-") + 1), 0))
            }
            return c === a.currentIndex ? (o(i, c).focus(), !1) : void 0
        }

        function O(e) {
            throw arguments.length > 1 && (e = e.format(Array.prototype.slice.call(arguments, 1))), new Error(e)
        }

        function I(e, t) {
            null == t && O("The argument '{0}' is null or undefined.", e)
        }
        e.fn.extend({
            _aria: function(e, t) {
                return this.attr("aria-" + e, t)
            },
            _removeAria: function(e) {
                return this.removeAttr("aria-" + e)
            },
            _enableAria: function(e) {
                return null == e || e ? this.removeClass("disabled")._aria("disabled", "false") : this.addClass("disabled")._aria("disabled", "true")
            },
            _showAria: function(e) {
                return null == e || e ? this.show()._aria("hidden", "false") : this.hide()._aria("hidden", "true")
            },
            _selectAria: function(e) {
                return null == e || e ? this.addClass("current")._aria("selected", "true") : this.removeClass("current")._aria("selected", "false")
            },
            _id: function(e) {
                return e ? this.attr("id", e) : this.attr("id")
            }
        }), String.prototype.format || (String.prototype.format = function() {
            for (var t = 1 === arguments.length && e.isArray(arguments[0]) ? arguments[0] : arguments, n = this, i = 0; i < t.length; i++) {
                var r = new RegExp("\\{" + i + "\\}", "gm");
                n = n.replace(r, t[i])
            }
            return n
        });
        var P = 0,
            L = "jQu3ry_5teps_St@te_",
            F = "-t-",
            N = "-p-",
            R = "-h-",
            j = "Index out of range.",
            $ = "One or more corresponding step {0} are missing.";
        e.fn.steps = function(t) {
            return e.fn.steps[t] ? e.fn.steps[t].apply(this, Array.prototype.slice.call(arguments, 1)) : "object" != typeof t && t ? void e.error("Method " + t + " does not exist on jQuery.steps") : g.apply(this, arguments)
        }, e.fn.steps.add = function(e) {
            var t = l(this);
            return m(this, s(this), t, t.stepCount, e)
        }, e.fn.steps.destroy = function() {
            return function(t, n) {
                var i = r(t);
                t.unbind(i).removeData("uid").removeData("options").removeData("state").removeData("steps").removeData("eventNamespace").find(".actions a").unbind(i), t.removeClass(n.clearFixCssClass + " vertical");
                var o = t.find(".content > *");
                o.removeData("loaded").removeData("mode").removeData("url"), o.removeAttr("id").removeAttr("role").removeAttr("tabindex").removeAttr("class").removeAttr("style")._removeAria("labelledby")._removeAria("hidden"), t.find(".content > [data-mode='async'],.content > [data-mode='iframe']").empty();
                var a = e('<{0} class="{1}"></{0}>'.format(t.get(0).tagName, t.attr("class"))),
                    s = t._id();
                return null != s && "" !== s && a._id(s), a.html(t.find(".content").html()), t.after(a), t.remove(), a
            }(this, s(this))
        }, e.fn.steps.finish = function() {
            i(this, l(this))
        }, e.fn.steps.getCurrentIndex = function() {
            return l(this).currentIndex
        }, e.fn.steps.getCurrentStep = function() {
            return u(this, l(this).currentIndex)
        }, e.fn.steps.getStep = function(e) {
            return u(this, e)
        }, e.fn.steps.insert = function(e, t) {
            return m(this, s(this), l(this), e, t)
        }, e.fn.steps.next = function() {
            return f(this, s(this), l(this))
        }, e.fn.steps.previous = function() {
            return p(this, s(this), l(this))
        }, e.fn.steps.remove = function(e) {
            return k(this, s(this), l(this), e)
        }, e.fn.steps.setStep = function() {
            throw new Error("Not yet implemented!")
        }, e.fn.steps.skip = function() {
            throw new Error("Not yet implemented!")
        };
        var z = e.fn.steps.contentMode = {
                html: 0,
                iframe: 1,
                async: 2
            },
            H = e.fn.steps.stepsOrientation = {
                horizontal: 0,
                vertical: 1
            },
            B = e.fn.steps.transitionEffect = {
                none: 0,
                fade: 1,
                slide: 2,
                slideLeft: 3
            },
            q = e.fn.steps.stepModel = {
                title: "",
                content: "",
                contentUrl: "",
                contentMode: z.html,
                contentLoaded: !1
            },
            W = e.fn.steps.defaults = {
                headerTag: "h1",
                bodyTag: "div",
                contentContainerTag: "div",
                actionContainerTag: "div",
                stepsContainerTag: "div",
                cssClass: "wizard",
                clearFixCssClass: "clearfix",
                stepsOrientation: H.horizontal,
                titleTemplate: '<span class="number">#index#.</span> #title#',
                loadingTemplate: '<span class="spinner"></span> #text#',
                autoFocus: !1,
                enableAllSteps: !1,
                enableKeyNavigation: !0,
                enablePagination: !0,
                suppressPaginationOnFocus: !0,
                enableContentCache: !0,
                enableCancelButton: !1,
                enableFinishButton: !0,
                preloadContent: !1,
                showFinishButtonAlways: !1,
                forceMoveForward: !1,
                saveState: !1,
                startIndex: 0,
                transitionEffect: B.none,
                transitionEffectSpeed: 200,
                onStepChanging: function() {
                    return !0
                },
                onStepChanged: function() {},
                onCanceled: function() {},
                onFinishing: function() {
                    return !0
                },
                onFinished: function() {},
                onContentLoaded: function() {},
                onInit: function() {},
                labels: {
                    cancel: "Cancel",
                    current: "current step:",
                    pagination: "Pagination",
                    finish: "Finish",
                    next: "Next",
                    previous: "Previous",
                    loading: "Loading ..."
                }
            }
    }(jQuery);
var q = null;
window.PR_SHOULD_USE_CONTINUATION = !0,
    function() {
        function e(e, t, n, i) {
            t && (n(e = {
                a: t,
                d: e
            }), i.push.apply(i, e.e))
        }

        function t(t, n) {
            var i, r = {};
            ! function() {
                for (var e = t.concat(n), o = [], a = {}, s = 0, l = e.length; s < l; ++s) {
                    var c = e[s],
                        u = c[3];
                    if (u)
                        for (var d = u.length; --d >= 0;) r[u.charAt(d)] = c;
                    u = "" + (c = c[1]), a.hasOwnProperty(u) || (o.push(c), a[u] = q)
                }
                o.push(/[\S\s]/), i = function(e) {
                    function t(e) {
                        var t = e.charCodeAt(0);
                        if (92 !== t) return t;
                        var n = e.charAt(1);
                        return (t = d[n]) ? t : "0" <= n && n <= "7" ? parseInt(e.substring(1), 8) : "u" === n || "x" === n ? parseInt(e.substring(2), 16) : e.charCodeAt(1)
                    }

                    function n(e) {
                        return e < 32 ? (e < 16 ? "\\x0" : "\\x") + e.toString(16) : ("\\" !== (e = String.fromCharCode(e)) && "-" !== e && "[" !== e && "]" !== e || (e = "\\" + e), e)
                    }

                    function i(e) {
                        for (var i = e.substring(1, e.length - 1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g), r = (e = [], []), o = "^" === i[0], a = o ? 1 : 0, s = i.length; a < s; ++a) {
                            var l = i[a];
                            if (/\\[bdsw]/i.test(l)) e.push(l);
                            else {
                                var c;
                                l = t(l);
                                a + 2 < s && "-" === i[a + 1] ? (c = t(i[a + 2]), a += 2) : c = l, r.push([l, c]), c < 65 || l > 122 || (c < 65 || l > 90 || r.push([32 | Math.max(65, l), 32 | Math.min(c, 90)]), c < 97 || l > 122 || r.push([-33 & Math.max(97, l), -33 & Math.min(c, 122)]))
                            }
                        }
                        for (r.sort((function(e, t) {
                                return e[0] - t[0] || t[1] - e[1]
                            })), i = [], l = [NaN, NaN], a = 0; a < r.length; ++a)(s = r[a])[0] <= l[1] + 1 ? l[1] = Math.max(l[1], s[1]) : i.push(l = s);
                        for (r = ["["], o && r.push("^"), r.push.apply(r, e), a = 0; a < i.length; ++a) s = i[a], r.push(n(s[0])), s[1] > s[0] && (s[1] + 1 > s[0] && r.push("-"), r.push(n(s[1])));
                        return r.push("]"), r.join("")
                    }

                    function r(e) {
                        for (var t = e.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g), n = t.length, r = [], s = 0, l = 0; s < n; ++s) {
                            var c = t[s];
                            "(" === c ? ++l : "\\" === c.charAt(0) && (c = +c.substring(1)) && c <= l && (r[c] = -1)
                        }
                        for (s = 1; s < r.length; ++s) - 1 === r[s] && (r[s] = ++o);
                        for (l = s = 0; s < n; ++s) "(" === (c = t[s]) ? void 0 === r[++l] && (t[s] = "(?:") : "\\" === c.charAt(0) && (c = +c.substring(1)) && c <= l && (t[s] = "\\" + r[l]);
                        for (l = s = 0; s < n; ++s) "^" === t[s] && "^" !== t[s + 1] && (t[s] = "");
                        if (e.ignoreCase && a)
                            for (s = 0; s < n; ++s) e = (c = t[s]).charAt(0), c.length >= 2 && "[" === e ? t[s] = i(c) : "\\" !== e && (t[s] = c.replace(/[A-Za-z]/g, (function(e) {
                                return e = e.charCodeAt(0), "[" + String.fromCharCode(-33 & e, 32 | e) + "]"
                            })));
                        return t.join("")
                    }
                    for (var o = 0, a = !1, s = !1, l = 0, c = e.length; l < c; ++l) {
                        var u = e[l];
                        if (u.ignoreCase) s = !0;
                        else if (/[a-z]/i.test(u.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi, ""))) {
                            a = !0, s = !1;
                            break
                        }
                    }
                    var d = {
                            b: 8,
                            t: 9,
                            n: 10,
                            v: 11,
                            f: 12,
                            r: 13
                        },
                        h = [];
                    for (l = 0, c = e.length; l < c; ++l) {
                        if ((u = e[l]).global || u.multiline) throw Error("" + u);
                        h.push("(?:" + r(u) + ")")
                    }
                    return RegExp(h.join("|"), s ? "gi" : "g")
                }(o)
            }();
            var a = n.length;
            return function t(s) {
                for (var l = s.d, c = [l, "pln"], u = 0, d = s.a.match(i) || [], h = {}, f = 0, p = d.length; f < p; ++f) {
                    var g, m = d[f],
                        v = h[m],
                        y = void 0;
                    if ("string" == typeof v) g = !1;
                    else {
                        var b = r[m.charAt(0)];
                        if (b) y = m.match(b[1]), v = b[0];
                        else {
                            for (g = 0; g < a; ++g)
                                if (b = n[g], y = m.match(b[1])) {
                                    v = b[0];
                                    break
                                }
                            y || (v = "pln")
                        }!(g = v.length >= 5 && "lang-" === v.substring(0, 5)) || y && "string" == typeof y[1] || (g = !1, v = "src"), g || (h[m] = v)
                    }
                    if (b = u, u += m.length, g) {
                        g = y[1];
                        var w = m.indexOf(g),
                            x = w + g.length;
                        y[2] && (w = (x = m.length - y[2].length) - g.length), v = v.substring(5), e(l + b, m.substring(0, w), t, c), e(l + b + w, g, o(v, g), c), e(l + b + x, m.substring(x), t, c)
                    } else c.push(l + b, v)
                }
                s.e = c
            }
        }

        function n(e) {
            var n = [],
                i = [];
            e.tripleQuotedStrings ? n.push(["str", /^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/, q, "'\""]) : e.multiLineStrings ? n.push(["str", /^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, q, "'\"`"]) : n.push(["str", /^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/, q, "\"'"]), e.verbatimStrings && i.push(["str", /^@"(?:[^"]|"")*(?:"|$)/, q]);
            var r = e.hashComments;
            return r && (e.cStyleComments ? (r > 1 ? n.push(["com", /^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/, q, "#"]) : n.push(["com", /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/, q, "#"]), i.push(["str", /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/, q])) : n.push(["com", /^#[^\n\r]*/, q, "#"])), e.cStyleComments && (i.push(["com", /^\/\/[^\n\r]*/, q]), i.push(["com", /^\/\*[\S\s]*?(?:\*\/|$)/, q])), e.regexLiterals && i.push(["lang-regex", /^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]), (r = e.types) && i.push(["typ", r]), (e = ("" + e.keywords).replace(/^ | $/g, "")).length && i.push(["kwd", RegExp("^(?:" + e.replace(/[\s,]+/g, "|") + ")\\b"), q]), n.push(["pln", /^\s+/, q, " \r\n\t "]), i.push(["lit", /^@[$_a-z][\w$@]*/i, q], ["typ", /^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/, q], ["pln", /^[$_a-z][\w$@]*/i, q], ["lit", /^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i, q, "0123456789"], ["pln", /^\\[\S\s]?/, q], ["pun", /^.[^\s\w"-$'./@\\`]*/, q]), t(n, i)
        }

        function i(e, t) {
            function n(e) {
                switch (e.nodeType) {
                    case 1:
                        if (o.test(e.className)) break;
                        if ("BR" === e.nodeName) i(e), e.parentNode && e.parentNode.removeChild(e);
                        else
                            for (e = e.firstChild; e; e = e.nextSibling) n(e);
                        break;
                    case 3:
                    case 4:
                        if (l) {
                            var t = e.nodeValue,
                                r = t.match(a);
                            if (r) {
                                var c = t.substring(0, r.index);
                                e.nodeValue = c, (t = t.substring(r.index + r[0].length)) && e.parentNode.insertBefore(s.createTextNode(t), e.nextSibling), i(e), c || e.parentNode.removeChild(e)
                            }
                        }
                }
            }

            function i(e) {
                for (; !e.nextSibling;)
                    if (!(e = e.parentNode)) return;
                var t;
                for (e = function e(t, n) {
                        var i = n ? t.cloneNode(!1) : t;
                        if (r = t.parentNode) {
                            var r = e(r, 1),
                                o = t.nextSibling;
                            r.appendChild(i);
                            for (var a = o; a; a = o) o = a.nextSibling, r.appendChild(a)
                        }
                        return i
                    }(e.nextSibling, 0);
                    (t = e.parentNode) && 1 === t.nodeType;) e = t;
                c.push(e)
            }
            var r, o = /(?:^|\s)nocode(?:\s|$)/,
                a = /\r\n?|\n/,
                s = e.ownerDocument;
            e.currentStyle ? r = e.currentStyle.whiteSpace : window.getComputedStyle && (r = s.defaultView.getComputedStyle(e, q).getPropertyValue("white-space"));
            var l = r && "pre" === r.substring(0, 3);
            for (r = s.createElement("LI"); e.firstChild;) r.appendChild(e.firstChild);
            for (var c = [r], u = 0; u < c.length; ++u) n(c[u]);
            t === (0 | t) && c[0].setAttribute("value", t);
            var d = s.createElement("OL");
            d.className = "linenums";
            for (var h = Math.max(0, t - 1 | 0) || 0, f = (u = 0, c.length); u < f; ++u)(r = c[u]).className = "L" + (u + h) % 10, r.firstChild || r.appendChild(s.createTextNode(" ")), d.appendChild(r);
            e.appendChild(d)
        }

        function r(e, t) {
            for (var n = t.length; --n >= 0;) {
                var i = t[n];
                v.hasOwnProperty(i) ? window.console && console.warn("cannot override language handler %s", i) : v[i] = e
            }
        }

        function o(e, t) {
            return e && v.hasOwnProperty(e) || (e = /^\s*</.test(t) ? "default-markup" : "default-code"), v[e]
        }

        function a(e) {
            var t = e.g;
            try {
                var n = (c = function(e) {
                    var t, n = /(?:^|\s)nocode(?:\s|$)/,
                        i = [],
                        r = 0,
                        o = [],
                        a = 0;
                    e.currentStyle ? t = e.currentStyle.whiteSpace : window.getComputedStyle && (t = document.defaultView.getComputedStyle(e, q).getPropertyValue("white-space"));
                    var s = t && "pre" === t.substring(0, 3);
                    return function e(t) {
                        switch (t.nodeType) {
                            case 1:
                                if (n.test(t.className)) break;
                                for (var l = t.firstChild; l; l = l.nextSibling) e(l);
                                "BR" !== (l = t.nodeName) && "LI" !== l || (i[a] = "\n", o[a << 1] = r++, o[a++ << 1 | 1] = t);
                                break;
                            case 3:
                            case 4:
                                (l = t.nodeValue).length && (l = s ? l.replace(/\r\n?/g, "\n") : l.replace(/[\t\n\r ]+/g, " "), i[a] = l, o[a << 1] = r, r += l.length, o[a++ << 1 | 1] = t)
                        }
                    }(e), {
                        a: i.join("").replace(/\n$/, ""),
                        c: o
                    }
                }(e.h)).a;
                e.a = n, e.c = c.c, e.d = 0, o(t, n)(e);
                var i, r, a = /\bMSIE\b/.test(navigator.userAgent),
                    s = (t = /\n/g, e.a),
                    l = s.length,
                    c = 0,
                    u = e.c,
                    d = u.length,
                    h = (n = 0, e.e),
                    f = h.length;
                e = 0;
                for (h[f] = l, r = i = 0; r < f;) h[r] !== h[r + 2] ? (h[i++] = h[r++], h[i++] = h[r++]) : r += 2;
                for (f = i, r = i = 0; r < f;) {
                    for (var p = h[r], g = h[r + 1], m = r + 2; m + 2 <= f && h[m + 1] === g;) m += 2;
                    h[i++] = p, h[i++] = g, r = m
                }
                for (h.length = i; n < d;) {
                    var v, y = u[n + 2] || l,
                        b = h[e + 2] || l,
                        w = (m = Math.min(y, b), u[n + 1]);
                    if (1 !== w.nodeType && (v = s.substring(c, m))) {
                        a && (v = v.replace(t, "\r")), w.nodeValue = v;
                        var x = w.ownerDocument,
                            _ = x.createElement("SPAN");
                        _.className = h[e + 1];
                        var C = w.parentNode;
                        C.replaceChild(_, w), _.appendChild(w), c < y && (u[n + 1] = w = x.createTextNode(s.substring(m, y)), C.insertBefore(w, _.nextSibling))
                    }(c = m) >= y && (n += 2), c >= b && (e += 2)
                }
            } catch (e) {
                "console" in window && console.log(e && e.stack ? e.stack : e)
            }
        }
        var s, l, c = [s = [
                [l = ["break,continue,do,else,for,if,return,while"], "auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], "catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"
            ], "alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],
            u = [s, "abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"],
            d = [u, "as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],
            h = [l, "and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],
            f = [l, "alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],
            p = /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,
            g = /\S/,
            m = n({
                keywords: [c, d, s = [s, "debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"], "caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END" + h, f, l = [l, "case,done,elif,esac,eval,fi,function,in,local,set,then,until"]],
                hashComments: !0,
                cStyleComments: !0,
                multiLineStrings: !0,
                regexLiterals: !0
            }),
            v = {};
        r(m, ["default-code"]), r(t([], [
            ["pln", /^[^<?]+/],
            ["dec", /^<!\w[^>]*(?:>|$)/],
            ["com", /^<\!--[\S\s]*?(?:--\>|$)/],
            ["lang-", /^<\?([\S\s]+?)(?:\?>|$)/],
            ["lang-", /^<%([\S\s]+?)(?:%>|$)/],
            ["pun", /^(?:<[%?]|[%?]>)/],
            ["lang-", /^<xmp\b[^>]*>([\S\s]+?)<\/xmp\b[^>]*>/i],
            ["lang-js", /^<script\b[^>]*>([\S\s]*?)(<\/script\b[^>]*>)/i],
            ["lang-css", /^<style\b[^>]*>([\S\s]*?)(<\/style\b[^>]*>)/i],
            ["lang-in.tag", /^(<\/?[a-z][^<>]*>)/i]
        ]), ["default-markup", "htm", "html", "mxml", "xhtml", "xml", "xsl"]), r(t([
            ["pln", /^\s+/, q, " \t\r\n"],
            ["atv", /^(?:"[^"]*"?|'[^']*'?)/, q, "\"'"]
        ], [
            ["tag", /^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],
            ["atn", /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],
            ["lang-uq.val", /^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],
            ["pun", /^[/<->]+/],
            ["lang-js", /^on\w+\s*=\s*"([^"]+)"/i],
            ["lang-js", /^on\w+\s*=\s*'([^']+)'/i],
            ["lang-js", /^on\w+\s*=\s*([^\s"'>]+)/i],
            ["lang-css", /^style\s*=\s*"([^"]+)"/i],
            ["lang-css", /^style\s*=\s*'([^']+)'/i],
            ["lang-css", /^style\s*=\s*([^\s"'>]+)/i]
        ]), ["in.tag"]), r(t([], [
            ["atv", /^[\S\s]+/]
        ]), ["uq.val"]), r(n({
            keywords: c,
            hashComments: !0,
            cStyleComments: !0,
            types: p
        }), ["c", "cc", "cpp", "cxx", "cyc", "m"]), r(n({
            keywords: "null,true,false"
        }), ["json"]), r(n({
            keywords: d,
            hashComments: !0,
            cStyleComments: !0,
            verbatimStrings: !0,
            types: p
        }), ["cs"]), r(n({
            keywords: u,
            cStyleComments: !0
        }), ["java"]), r(n({
            keywords: l,
            hashComments: !0,
            multiLineStrings: !0
        }), ["bsh", "csh", "sh"]), r(n({
            keywords: h,
            hashComments: !0,
            multiLineStrings: !0,
            tripleQuotedStrings: !0
        }), ["cv", "py"]), r(n({
            keywords: "caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",
            hashComments: !0,
            multiLineStrings: !0,
            regexLiterals: !0
        }), ["perl", "pl", "pm"]), r(n({
            keywords: f,
            hashComments: !0,
            multiLineStrings: !0,
            regexLiterals: !0
        }), ["rb"]), r(n({
            keywords: s,
            cStyleComments: !0,
            regexLiterals: !0
        }), ["js"]), r(n({
            keywords: "all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes",
            hashComments: 3,
            cStyleComments: !0,
            multilineStrings: !0,
            tripleQuotedStrings: !0,
            regexLiterals: !0
        }), ["coffee"]), r(t([], [
            ["str", /^[\S\s]+/]
        ]), ["regex"]), window.prettyPrintOne = function(e, t, n) {
            var r = document.createElement("PRE");
            return r.innerHTML = e, n && i(r, n), a({
                g: t,
                i: n,
                h: r
            }), r.innerHTML
        }, window.prettyPrint = function(e) {
            for (var t = [document.getElementsByTagName("pre"), document.getElementsByTagName("code"), document.getElementsByTagName("xmp")], n = [], r = 0; r < t.length; ++r)
                for (var o = 0, s = t[r].length; o < s; ++o) n.push(t[r][o]);
            t = q;
            var l = Date;
            l.now || (l = {
                now: function() {
                    return +new Date
                }
            });
            var c = 0,
                u = /\blang(?:uage)?-([\w.]+)(?!\S)/;
            ! function t() {
                for (var r = window.PR_SHOULD_USE_CONTINUATION ? l.now() + 250 : 1 / 0; c < n.length && l.now() < r; c++) {
                    var o = n[c];
                    if ((s = o.className).indexOf("prettyprint") >= 0) {
                        var s, d, h;
                        if (h = !(s = s.match(u))) {
                            for (var f = void 0, p = (h = o).firstChild; p; p = p.nextSibling) {
                                var m = p.nodeType;
                                f = 1 === m ? f ? h : p : 3 === m && g.test(p.nodeValue) ? h : f
                            }
                            h = (d = f === h ? void 0 : f) && "CODE" === d.tagName
                        }
                        for (h && (s = d.className.match(u)), s && (s = s[1]), h = !1, f = o.parentNode; f; f = f.parentNode)
                            if (("pre" === f.tagName || "code" === f.tagName || "xmp" === f.tagName) && f.className && f.className.indexOf("prettyprint") >= 0) {
                                h = !0;
                                break
                            }
                        h || ((h = !!(h = o.className.match(/\blinenums\b(?::(\d+))?/)) && (!h[1] || !h[1].length || +h[1])) && i(o, h), a({
                            g: s,
                            h: o,
                            i: h
                        }))
                    }
                }
                c < n.length ? setTimeout(t, 250) : e && e()
            }()
        }, window.PR = {
            createSimpleLexer: t,
            registerLangHandler: r,
            sourceDecorator: n,
            PR_ATTRIB_NAME: "atn",
            PR_ATTRIB_VALUE: "atv",
            PR_COMMENT: "com",
            PR_DECLARATION: "dec",
            PR_KEYWORD: "kwd",
            PR_LITERAL: "lit",
            PR_NOCODE: "nocode",
            PR_PLAIN: "pln",
            PR_PUNCTUATION: "pun",
            PR_SOURCE: "src",
            PR_STRING: "str",
            PR_TAG: "tag",
            PR_TYPE: "typ"
        }
    }();