! function(t, e) {
    "use strict";
    "object" == typeof module && "object" == typeof module.exports ? module.exports = t.document ? e(t, !0) : function(t) {
        if (!t.document) throw new Error("jQuery requires a window with a document");
        return e(t)
    } : e(t)
}("undefined" != typeof window ? window : this, (function(t, e) {
    "use strict";
    var n = [],
        i = Object.getPrototypeOf,
        r = n.slice,
        o = n.flat ? function(t) {
            return n.flat.call(t)
        } : function(t) {
            return n.concat.apply([], t)
        },
        a = n.push,
        s = n.indexOf,
        l = {},
        c = l.toString,
        u = l.hasOwnProperty,
        d = u.toString,
        h = d.call(Object),
        f = {},
        p = function(t) {
            return "function" == typeof t && "number" != typeof t.nodeType
        },
        g = function(t) {
            return null != t && t === t.window
        },
        m = t.document,
        v = {
            type: !0,
            src: !0,
            nonce: !0,
            noModule: !0
        };

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

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

    function _(t) {
        var e = !!t && "length" in t && t.length,
            n = b(t);
        return !p(t) && !g(t) && ("array" === n || 0 === e || "number" == typeof e && 0 < e && e - 1 in t)
    }
    x.fn = x.prototype = {
        jquery: w,
        constructor: x,
        length: 0,
        toArray: function() {
            return r.call(this)
        },
        get: function(t) {
            return null == t ? r.call(this) : t < 0 ? this[t + this.length] : this[t]
        },
        pushStack: function(t) {
            var e = x.merge(this.constructor(), t);
            return e.prevObject = this, e
        },
        each: function(t) {
            return x.each(this, t)
        },
        map: function(t) {
            return this.pushStack(x.map(this, (function(e, n) {
                return t.call(e, n, e)
            })))
        },
        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(t, e) {
                return (e + 1) % 2
            })))
        },
        odd: function() {
            return this.pushStack(x.grep(this, (function(t, e) {
                return e % 2
            })))
        },
        eq: function(t) {
            var e = this.length,
                n = +t + (t < 0 ? e : 0);
            return this.pushStack(0 <= n && n < e ? [this[n]] : [])
        },
        end: function() {
            return this.prevObject || this.constructor()
        },
        push: a,
        sort: n.sort,
        splice: n.splice
    }, x.extend = x.fn.extend = function() {
        var t, e, 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 != (t = arguments[s]))
                for (e in t) i = t[e], "__proto__" !== e && a !== i && (c && i && (x.isPlainObject(i) || (r = Array.isArray(i))) ? (n = a[e], o = r && !Array.isArray(n) ? [] : r || x.isPlainObject(n) ? n : {}, r = !1, a[e] = x.extend(c, o, i)) : void 0 !== i && (a[e] = i));
        return a
    }, x.extend({
        expando: "jQuery" + (w + Math.random()).replace(/\D/g, ""),
        isReady: !0,
        error: function(t) {
            throw new Error(t)
        },
        noop: function() {},
        isPlainObject: function(t) {
            var e, n;
            return !(!t || "[object Object]" !== c.call(t) || (e = i(t)) && ("function" != typeof(n = u.call(e, "constructor") && e.constructor) || d.call(n) !== h))
        },
        isEmptyObject: function(t) {
            var e;
            for (e in t) return !1;
            return !0
        },
        globalEval: function(t, e, n) {
            y(t, {
                nonce: e && e.nonce
            }, n)
        },
        each: function(t, e) {
            var n, i = 0;
            if (_(t))
                for (n = t.length; i < n && !1 !== e.call(t[i], i, t[i]); i++);
            else
                for (i in t)
                    if (!1 === e.call(t[i], i, t[i])) break;
            return t
        },
        makeArray: function(t, e) {
            var n = e || [];
            return null != t && (_(Object(t)) ? x.merge(n, "string" == typeof t ? [t] : t) : a.call(n, t)), n
        },
        inArray: function(t, e, n) {
            return null == e ? -1 : s.call(e, t, n)
        },
        merge: function(t, e) {
            for (var n = +e.length, i = 0, r = t.length; i < n; i++) t[r++] = e[i];
            return t.length = r, t
        },
        grep: function(t, e, n) {
            for (var i = [], r = 0, o = t.length, a = !n; r < o; r++) !e(t[r], r) !== a && i.push(t[r]);
            return i
        },
        map: function(t, e, n) {
            var i, r, a = 0,
                s = [];
            if (_(t))
                for (i = t.length; a < i; a++) null != (r = e(t[a], a, n)) && s.push(r);
            else
                for (a in t) null != (r = e(t[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(t, e) {
        l["[object " + e + "]"] = e.toLowerCase()
    }));
    var S = function(t) {
        var e, n, i, r, o, a, s, l, c, u, d, h, f, p, g, m, v, y, b, w = "sizzle" + 1 * new Date,
            x = t.document,
            _ = 0,
            S = 0,
            C = lt(),
            k = lt(),
            T = lt(),
            A = lt(),
            D = function(t, e) {
                return t === e && (d = !0), 0
            },
            E = {}.hasOwnProperty,
            M = [],
            O = M.pop,
            I = M.push,
            P = M.push,
            L = M.slice,
            N = function(t, e) {
                for (var n = 0, i = t.length; n < i; n++)
                    if (t[n] === e) return n;
                return -1
            },
            F = "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 + "$"),
            G = {
                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("^(?:" + F + ")$", "i"),
                needsContext: new RegExp("^" + R + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + R + "*((?:-\\d)?\\d*)" + R + "*\\)|)(?=[^-]|$)", "i")
            },
            X = /HTML$/i,
            Q = /^(?:input|select|textarea|button)$/i,
            K = /^h\d$/i,
            J = /^[^{]+\{\s*\[native \w/,
            Z = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
            tt = /[+~]/,
            et = new RegExp("\\\\[\\da-fA-F]{1,6}" + R + "?|\\\\([^\\r\\n\\f])", "g"),
            nt = function(t, e) {
                var n = "0x" + t.slice(1) - 65536;
                return e || (n < 0 ? String.fromCharCode(n + 65536) : String.fromCharCode(n >> 10 | 55296, 1023 & n | 56320))
            },
            it = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
            rt = function(t, e) {
                return e ? "\0" === t ? "�" : t.slice(0, -1) + "\\" + t.charCodeAt(t.length - 1).toString(16) + " " : "\\" + t
            },
            ot = function() {
                h()
            },
            at = wt((function(t) {
                return !0 === t.disabled && "fieldset" === t.nodeName.toLowerCase()
            }), {
                dir: "parentNode",
                next: "legend"
            });
        try {
            P.apply(M = L.call(x.childNodes), x.childNodes), M[x.childNodes.length].nodeType
        } catch (e) {
            P = {
                apply: M.length ? function(t, e) {
                    I.apply(t, L.call(e))
                } : function(t, e) {
                    for (var n = t.length, i = 0; t[n++] = e[i++];);
                    t.length = n - 1
                }
            }
        }

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

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

        function ct(t) {
            return t[w] = !0, t
        }

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

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

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

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

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

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

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

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

        function yt() {}

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

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

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

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

        function St(t, e, n, i, r, o) {
            return i && !i[w] && (i = St(i)), r && !r[w] && (r = St(r, o)), ct((function(o, a, s, l) {
                var c, u, d, h = [],
                    f = [],
                    p = a.length,
                    g = o || function(t, e, n) {
                        for (var i = 0, r = e.length; i < r; i++) st(t, e[i], n);
                        return n
                    }(e || "*", s.nodeType ? [s] : s, []),
                    m = !t || !o && e ? g : _t(g, h, t, s, l),
                    v = n ? r || (o ? t : p || i) ? [] : a : m;
                if (n && n(m, v, s, l), i)
                    for (c = _t(v, f), i(c, [], s, l), u = c.length; u--;)(d = c[u]) && (v[f[u]] = !(m[f[u]] = d));
                if (o) {
                    if (r || t) {
                        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 ? N(o, d) : h[u]) && (o[c] = !(a[c] = d))
                    }
                } else v = _t(v === a ? v.splice(p, v.length) : v), r ? r(null, a, v, l) : P.apply(a, v)
            }))
        }

        function Ct(t) {
            for (var e, n, r, o = t.length, a = i.relative[t[0].type], s = a || i.relative[" "], l = a ? 1 : 0, u = wt((function(t) {
                    return t === e
                }), s, !0), d = wt((function(t) {
                    return -1 < N(e, t)
                }), s, !0), h = [function(t, n, i) {
                    var r = !a && (i || n !== c) || ((e = n).nodeType ? u(t, n, i) : d(t, n, i));
                    return e = null, r
                }]; l < o; l++)
                if (n = i.relative[t[l].type]) h = [wt(xt(h), n)];
                else {
                    if ((n = i.filter[t[l].type].apply(null, t[l].matches))[w]) {
                        for (r = ++l; r < o && !i.relative[t[r].type]; r++);
                        return St(1 < l && xt(h), 1 < l && bt(t.slice(0, l - 1).concat({
                            value: " " === t[l - 2].type ? "*" : ""
                        })).replace(B, "$1"), n, l < r && Ct(t.slice(l, r)), r < o && Ct(t = t.slice(r)), r < o && bt(t))
                    }
                    h.push(n)
                }
            return xt(h)
        }
        return yt.prototype = i.filters = i.pseudos, i.setFilters = new yt, a = st.tokenize = function(t, e) {
            var n, r, o, a, s, l, c, u = k[t + " "];
            if (u) return e ? 0 : u.slice(0);
            for (s = t, 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 = G[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 e ? s.length : s ? st.error(t) : k(t, l).slice(0)
        }, s = st.compile = function(t, e) {
            var n, r, o, s, l, u, d = [],
                p = [],
                m = T[t + " "];
            if (!m) {
                for (e || (e = a(t)), n = e.length; n--;)(m = Ct(e[n]))[w] ? d.push(m) : p.push(m);
                (m = T(t, (r = p, s = 0 < (o = d).length, l = 0 < r.length, u = function(t, e, n, a, u) {
                    var d, p, m, v = 0,
                        y = "0",
                        b = t && [],
                        w = [],
                        x = c,
                        S = t || l && i.find.TAG("*", u),
                        C = _ += null == x ? 1 : Math.random() || .1,
                        k = S.length;
                    for (u && (c = e == f || e || u); y !== k && null != (d = S[y]); y++) {
                        if (l && d) {
                            for (p = 0, e || d.ownerDocument == f || (h(d), n = !g); m = r[p++];)
                                if (m(d, e || f, n)) {
                                    a.push(d);
                                    break
                                }
                            u && (_ = C)
                        }
                        s && ((d = !m && d) && v--, t && b.push(d))
                    }
                    if (v += y, s && y !== v) {
                        for (p = 0; m = o[p++];) m(b, w, e, n);
                        if (t) {
                            if (0 < v)
                                for (; y--;) b[y] || w[y] || (w[y] = O.call(a));
                            w = _t(w)
                        }
                        P.apply(a, w), u && !t && 0 < w.length && 1 < v + o.length && st.uniqueSort(a)
                    }
                    return u && (_ = C, c = x), b
                }, s ? ct(u) : u))).selector = t
            }
            return m
        }, l = st.select = function(t, e, n, r) {
            var o, l, c, u, d, h = "function" == typeof t && t,
                f = !r && a(t = h.selector || t);
            if (n = n || [], 1 === f.length) {
                if (2 < (l = f[0] = f[0].slice(0)).length && "ID" === (c = l[0]).type && 9 === e.nodeType && g && i.relative[l[1].type]) {
                    if (!(e = (i.find.ID(c.matches[0].replace(et, nt), e) || [])[0])) return n;
                    h && (e = e.parentNode), t = t.slice(l.shift().value.length)
                }
                for (o = G.needsContext.test(t) ? 0 : l.length; o-- && (c = l[o], !i.relative[u = c.type]);)
                    if ((d = i.find[u]) && (r = d(c.matches[0].replace(et, nt), tt.test(l[0].type) && vt(e.parentNode) || e))) {
                        if (l.splice(o, 1), !(t = r.length && bt(l))) return P.apply(n, r), n;
                        break
                    }
            }
            return (h || s(t, f))(r, e, !g, n, !e || tt.test(t) && vt(e.parentNode) || e), n
        }, n.sortStable = w.split("").sort(D).join("") === w, n.detectDuplicates = !!d, h(), n.sortDetached = ut((function(t) {
            return 1 & t.compareDocumentPosition(f.createElement("fieldset"))
        })), ut((function(t) {
            return t.innerHTML = "<a href='#'></a>", "#" === t.firstChild.getAttribute("href")
        })) || dt("type|href|height|width", (function(t, e, n) {
            if (!n) return t.getAttribute(e, "type" === e.toLowerCase() ? 1 : 2)
        })), n.attributes && ut((function(t) {
            return t.innerHTML = "<input/>", t.firstChild.setAttribute("value", ""), "" === t.firstChild.getAttribute("value")
        })) || dt("value", (function(t, e, n) {
            if (!n && "input" === t.nodeName.toLowerCase()) return t.defaultValue
        })), ut((function(t) {
            return null == t.getAttribute("disabled")
        })) || dt(F, (function(t, e, n) {
            var i;
            if (!n) return !0 === t[e] ? e.toLowerCase() : (i = t.getAttributeNode(e)) && i.specified ? i.value : null
        })), st
    }(t);
    x.find = S, x.expr = S.selectors, x.expr[":"] = x.expr.pseudos, x.uniqueSort = x.unique = S.uniqueSort, x.text = S.getText, x.isXMLDoc = S.isXML, x.contains = S.contains, x.escapeSelector = S.escape;
    var C = function(t, e, n) {
            for (var i = [], r = void 0 !== n;
                (t = t[e]) && 9 !== t.nodeType;)
                if (1 === t.nodeType) {
                    if (r && x(t).is(n)) break;
                    i.push(t)
                }
            return i
        },
        k = function(t, e) {
            for (var n = []; t; t = t.nextSibling) 1 === t.nodeType && t !== e && n.push(t);
            return n
        },
        T = x.expr.match.needsContext;

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

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

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

    function F(t) {
        return t
    }

    function R(t) {
        throw t
    }

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

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

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

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

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

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

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

    function st(t, e, n, i) {
        var r, o, a = 20,
            s = i ? function() {
                return i.cur()
            } : function() {
                return x.css(t, e, "")
            },
            l = s(),
            c = n && n[3] || (x.cssNumber[e] ? "" : "px"),
            u = t.nodeType && (x.cssNumber[e] || "px" !== c && +l) && et.exec(x.css(t, e));
        if (u && u[3] !== c) {
            for (l /= 2, c = c || u[3], u = +l || 1; a--;) x.style(t, e, u + c), (1 - o) * (1 - (o = s() / l || .5)) <= 0 && (a = 0), u /= o;
            u *= 2, x.style(t, e, 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 lt = {};

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

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

    function bt(t, e, n, i, r) {
        for (var o, a, s, l, c, u, d = e.createDocumentFragment(), h = [], f = 0, p = t.length; f < p; f++)
            if ((o = t[f]) || 0 === o)
                if ("object" === b(o)) x.merge(h, o.nodeType ? [o] : o);
                else if (yt.test(o)) {
            for (a = a || d.appendChild(e.createElement("div")), s = (ft.exec(o) || ["", ""])[1].toLowerCase(), l = gt[s] || gt._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(e.createTextNode(o));
        for (d.textContent = "", f = 0; o = h[f++];)
            if (i && -1 < x.inArray(o, i)) r && r.push(o);
            else if (c = rt(o), a = mt(d.appendChild(o), "script"), c && vt(a), n)
            for (u = 0; o = a[u++];) pt.test(o.type || "") && n.push(o);
        return d
    }
    var wt = /^key/,
        xt = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
        _t = /^([^.]*)(?:\.(.+)|)/;

    function St() {
        return !0
    }

    function Ct() {
        return !1
    }

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

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

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

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

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

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

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

    function Nt(t, e, n, i) {
        e = o(e);
        var r, a, s, l, c, u, d = 0,
            h = t.length,
            g = h - 1,
            m = e[0],
            v = p(m);
        if (v || 1 < h && "string" == typeof m && !f.checkClone && Et.test(m)) return t.each((function(r) {
            var o = t.eq(r);
            v && (e[0] = m.call(this, r, o.html())), Nt(o, e, n, i)
        }));
        if (h && (a = (r = bt(e, t[0].ownerDocument, !1, t, i)).firstChild, 1 === r.childNodes.length && (r = a), a || i)) {
            for (l = (s = x.map(mt(r, "script"), It)).length; d < h; d++) c = r, d !== g && (c = x.clone(c, !0, !0), l && x.merge(s, mt(c, "script"))), n.call(t[d], c, d);
            if (l)
                for (u = s[s.length - 1].ownerDocument, x.map(s, Pt), d = 0; d < l; d++) c = s[d], pt.test(c.type || "") && !X.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(Mt, ""), c, u))
        }
        return t
    }

    function Ft(t, e, n) {
        for (var i, r = e ? x.filter(e, t) : t, o = 0; null != (i = r[o]); o++) n || 1 !== i.nodeType || x.cleanData(mt(i)), i.parentNode && (n && rt(i) && vt(mt(i, "script")), i.parentNode.removeChild(i));
        return t
    }
    x.extend({
        htmlPrefilter: function(t) {
            return t
        },
        clone: function(t, e, n) {
            var i, r, o, a, s, l, c, u = t.cloneNode(!0),
                d = rt(t);
            if (!(f.noCloneChecked || 1 !== t.nodeType && 11 !== t.nodeType || x.isXMLDoc(t)))
                for (a = mt(u), i = 0, r = (o = mt(t)).length; i < r; i++) s = o[i], "input" === (c = (l = a[i]).nodeName.toLowerCase()) && ht.test(s.type) ? l.checked = s.checked : "input" !== c && "textarea" !== c || (l.defaultValue = s.defaultValue);
            if (e)
                if (n)
                    for (o = o || mt(t), a = a || mt(u), i = 0, r = o.length; i < r; i++) Lt(o[i], a[i]);
                else Lt(t, u);
            return 0 < (a = mt(u, "script")).length && vt(a, !d && mt(t, "script")), u
        },
        cleanData: function(t) {
            for (var e, n, i, r = x.event.special, o = 0; void 0 !== (n = t[o]); o++)
                if (Y(n)) {
                    if (e = n[X.expando]) {
                        if (e.events)
                            for (i in e.events) r[i] ? x.event.remove(n, i) : x.removeEvent(n, i, e.handle);
                        n[X.expando] = void 0
                    }
                    n[Q.expando] && (n[Q.expando] = void 0)
                }
        }
    }), x.fn.extend({
        detach: function(t) {
            return Ft(this, t, !0)
        },
        remove: function(t) {
            return Ft(this, t)
        },
        text: function(t) {
            return B(this, (function(t) {
                return void 0 === t ? x.text(this) : this.empty().each((function() {
                    1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || (this.textContent = t)
                }))
            }), null, t, arguments.length)
        },
        append: function() {
            return Nt(this, arguments, (function(t) {
                1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || Ot(this, t).appendChild(t)
            }))
        },
        prepend: function() {
            return Nt(this, arguments, (function(t) {
                if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
                    var e = Ot(this, t);
                    e.insertBefore(t, e.firstChild)
                }
            }))
        },
        before: function() {
            return Nt(this, arguments, (function(t) {
                this.parentNode && this.parentNode.insertBefore(t, this)
            }))
        },
        after: function() {
            return Nt(this, arguments, (function(t) {
                this.parentNode && this.parentNode.insertBefore(t, this.nextSibling)
            }))
        },
        empty: function() {
            for (var t, e = 0; null != (t = this[e]); e++) 1 === t.nodeType && (x.cleanData(mt(t, !1)), t.textContent = "");
            return this
        },
        clone: function(t, e) {
            return t = null != t && t, e = null == e ? t : e, this.map((function() {
                return x.clone(this, t, e)
            }))
        },
        html: function(t) {
            return B(this, (function(t) {
                var e = this[0] || {},
                    n = 0,
                    i = this.length;
                if (void 0 === t && 1 === e.nodeType) return e.innerHTML;
                if ("string" == typeof t && !Dt.test(t) && !gt[(ft.exec(t) || ["", ""])[1].toLowerCase()]) {
                    t = x.htmlPrefilter(t);
                    try {
                        for (; n < i; n++) 1 === (e = this[n] || {}).nodeType && (x.cleanData(mt(e, !1)), e.innerHTML = t);
                        e = 0
                    } catch (t) {}
                }
                e && this.empty().append(t)
            }), null, t, arguments.length)
        },
        replaceWith: function() {
            var t = [];
            return Nt(this, arguments, (function(e) {
                var n = this.parentNode;
                x.inArray(this, t) < 0 && (x.cleanData(mt(this)), n && n.replaceChild(e, this))
            }), t)
        }
    }), x.each({
        appendTo: "append",
        prependTo: "prepend",
        insertBefore: "before",
        insertAfter: "after",
        replaceAll: "replaceWith"
    }, (function(t, e) {
        x.fn[t] = function(t) {
            for (var n, i = [], r = x(t), o = r.length - 1, s = 0; s <= o; s++) n = s === o ? this : this.clone(!0), x(r[s])[e](n), a.apply(i, n.get());
            return this.pushStack(i)
        }
    }));
    var Rt = new RegExp("^(" + tt + ")(?!px)[a-z%]+$", "i"),
        jt = function(e) {
            var n = e.ownerDocument.defaultView;
            return n && n.opener || (n = t), n.getComputedStyle(e)
        },
        $t = function(t, e, n) {
            var i, r, o = {};
            for (r in e) o[r] = t.style[r], t.style[r] = e[r];
            for (r in i = n.call(t), e) t.style[r] = o[r];
            return i
        },
        zt = new RegExp(nt.join("|"), "i");

    function Ht(t, e, n) {
        var i, r, o, a, s = t.style;
        return (n = n || jt(t)) && ("" !== (a = n.getPropertyValue(e) || n[e]) || rt(t) || (a = x.style(t, e)), !f.pixelBoxStyles() && Rt.test(a) && zt.test(e) && (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 Bt(t, e) {
        return {
            get: function() {
                if (!t()) return (this.get = e).apply(this, arguments);
                delete this.get
            }
        }
    }! function() {
        function e() {
            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%", it.appendChild(c).appendChild(u);
                var e = t.getComputedStyle(u);
                i = "1%" !== e.top, l = 12 === n(e.marginLeft), u.style.right = "60%", a = 36 === n(e.right), r = 36 === n(e.width), u.style.position = "absolute", o = 12 === n(u.offsetWidth / 3), it.removeChild(c), u = null
            }
        }

        function n(t) {
            return Math.round(parseFloat(t))
        }
        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 e(), r
            },
            pixelBoxStyles: function() {
                return e(), a
            },
            pixelPosition: function() {
                return e(), i
            },
            reliableMarginLeft: function() {
                return e(), l
            },
            scrollboxSize: function() {
                return e(), o
            },
            reliableTrDimensions: function() {
                var e, n, i, r;
                return null == s && (e = m.createElement("table"), n = m.createElement("tr"), i = m.createElement("div"), e.style.cssText = "position:absolute;left:-11111px", n.style.height = "1px", i.style.height = "9px", it.appendChild(e).appendChild(n).appendChild(i), r = t.getComputedStyle(n), s = 3 < parseInt(r.height), it.removeChild(e)), s
            }
        }))
    }();
    var qt = ["Webkit", "Moz", "ms"],
        Wt = m.createElement("div").style,
        Ut = {};

    function Vt(t) {
        return x.cssProps[t] || Ut[t] || (t in Wt ? t : Ut[t] = function(t) {
            for (var e = t[0].toUpperCase() + t.slice(1), n = qt.length; n--;)
                if ((t = qt[n] + e) in Wt) return t
        }(t) || t)
    }
    var Yt = /^(none|table(?!-c[ea]).+)/,
        Gt = /^--/,
        Xt = {
            position: "absolute",
            visibility: "hidden",
            display: "block"
        },
        Qt = {
            letterSpacing: "0",
            fontWeight: "400"
        };

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

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

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

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

    function se() {
        ne && (!1 === m.hidden && t.requestAnimationFrame ? t.requestAnimationFrame(se) : t.setTimeout(se, x.fx.interval), x.fx.tick())
    }

    function le() {
        return t.setTimeout((function() {
            ee = void 0
        })), ee = Date.now()
    }

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

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

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

    function me(t) {
        return (t.match(N) || []).join(" ")
    }

    function ve(t) {
        return t.getAttribute && t.getAttribute("class") || ""
    }

    function ye(t) {
        return Array.isArray(t) ? t : "string" == typeof t && t.match(N) || []
    }
    x.fn.extend({
        prop: function(t, e) {
            return B(this, x.prop, t, e, 1 < arguments.length)
        },
        removeProp: function(t) {
            return this.each((function() {
                delete this[x.propFix[t] || t]
            }))
        }
    }), x.extend({
        prop: function(t, e, n) {
            var i, r, o = t.nodeType;
            if (3 !== o && 8 !== o && 2 !== o) return 1 === o && x.isXMLDoc(t) || (e = x.propFix[e] || e, r = x.propHooks[e]), void 0 !== n ? r && "set" in r && void 0 !== (i = r.set(t, n, e)) ? i : t[e] = n : r && "get" in r && null !== (i = r.get(t, e)) ? i : t[e]
        },
        propHooks: {
            tabIndex: {
                get: function(t) {
                    var e = x.find.attr(t, "tabindex");
                    return e ? parseInt(e, 10) : pe.test(t.nodeName) || ge.test(t.nodeName) && t.href ? 0 : -1
                }
            }
        },
        propFix: {
            for: "htmlFor",
            class: "className"
        }
    }), f.optSelected || (x.propHooks.selected = {
        get: function(t) {
            var e = t.parentNode;
            return e && e.parentNode && e.parentNode.selectedIndex, null
        },
        set: function(t) {
            var e = t.parentNode;
            e && (e.selectedIndex, e.parentNode && e.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(t) {
            var e, n, i, r, o, a, s, l = 0;
            if (p(t)) return this.each((function(e) {
                x(this).addClass(t.call(this, e, ve(this)))
            }));
            if ((e = ye(t)).length)
                for (; n = this[l++];)
                    if (r = ve(n), i = 1 === n.nodeType && " " + me(r) + " ") {
                        for (a = 0; o = e[a++];) i.indexOf(" " + o + " ") < 0 && (i += o + " ");
                        r !== (s = me(i)) && n.setAttribute("class", s)
                    }
            return this
        },
        removeClass: function(t) {
            var e, n, i, r, o, a, s, l = 0;
            if (p(t)) return this.each((function(e) {
                x(this).removeClass(t.call(this, e, ve(this)))
            }));
            if (!arguments.length) return this.attr("class", "");
            if ((e = ye(t)).length)
                for (; n = this[l++];)
                    if (r = ve(n), i = 1 === n.nodeType && " " + me(r) + " ") {
                        for (a = 0; o = e[a++];)
                            for (; - 1 < i.indexOf(" " + o + " ");) i = i.replace(" " + o + " ", " ");
                        r !== (s = me(i)) && n.setAttribute("class", s)
                    }
            return this
        },
        toggleClass: function(t, e) {
            var n = typeof t,
                i = "string" === n || Array.isArray(t);
            return "boolean" == typeof e && i ? e ? this.addClass(t) : this.removeClass(t) : p(t) ? this.each((function(n) {
                x(this).toggleClass(t.call(this, n, ve(this), e), e)
            })) : this.each((function() {
                var e, r, o, a;
                if (i)
                    for (r = 0, o = x(this), a = ye(t); e = a[r++];) o.hasClass(e) ? o.removeClass(e) : o.addClass(e);
                else void 0 !== t && "boolean" !== n || ((e = ve(this)) && X.set(this, "__className__", e), this.setAttribute && this.setAttribute("class", e || !1 === t ? "" : X.get(this, "__className__") || ""))
            }))
        },
        hasClass: function(t) {
            var e, n, i = 0;
            for (e = " " + t + " "; n = this[i++];)
                if (1 === n.nodeType && -1 < (" " + me(ve(n)) + " ").indexOf(e)) return !0;
            return !1
        }
    });
    var be = /\r/g;
    x.fn.extend({
        val: function(t) {
            var e, n, i, r = this[0];
            return arguments.length ? (i = p(t), this.each((function(n) {
                var r;
                1 === this.nodeType && (null == (r = i ? t.call(this, n, x(this).val()) : t) ? r = "" : "number" == typeof r ? r += "" : Array.isArray(r) && (r = x.map(r, (function(t) {
                    return null == t ? "" : t + ""
                }))), (e = x.valHooks[this.type] || x.valHooks[this.nodeName.toLowerCase()]) && "set" in e && void 0 !== e.set(this, r, "value") || (this.value = r))
            }))) : r ? (e = x.valHooks[r.type] || x.valHooks[r.nodeName.toLowerCase()]) && "get" in e && void 0 !== (n = e.get(r, "value")) ? n : "string" == typeof(n = r.value) ? n.replace(be, "") : null == n ? "" : n : void 0
        }
    }), x.extend({
        valHooks: {
            option: {
                get: function(t) {
                    var e = x.find.attr(t, "value");
                    return null != e ? e : me(x.text(t))
                }
            },
            select: {
                get: function(t) {
                    var e, n, i, r = t.options,
                        o = t.selectedIndex,
                        a = "select-one" === t.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 || !A(n.parentNode, "optgroup"))) {
                            if (e = x(n).val(), a) return e;
                            s.push(e)
                        }
                    return s
                },
                set: function(t, e) {
                    for (var n, i, r = t.options, o = x.makeArray(e), a = r.length; a--;)((i = r[a]).selected = -1 < x.inArray(x.valHooks.option.get(i), o)) && (n = !0);
                    return n || (t.selectedIndex = -1), o
                }
            }
        }
    }), x.each(["radio", "checkbox"], (function() {
        x.valHooks[this] = {
            set: function(t, e) {
                if (Array.isArray(e)) return t.checked = -1 < x.inArray(x(t).val(), e)
            }
        }, f.checkOn || (x.valHooks[this].get = function(t) {
            return null === t.getAttribute("value") ? "on" : t.value
        })
    })), f.focusin = "onfocusin" in t;
    var we = /^(?:focusinfocus|focusoutblur)$/,
        xe = function(t) {
            t.stopPropagation()
        };
    x.extend(x.event, {
        trigger: function(e, n, i, r) {
            var o, a, s, l, c, d, h, f, v = [i || m],
                y = u.call(e, "type") ? e.type : e,
                b = u.call(e, "namespace") ? e.namespace.split(".") : [];
            if (a = f = s = i = i || m, 3 !== i.nodeType && 8 !== i.nodeType && !we.test(y + x.event.triggered) && (-1 < y.indexOf(".") && (y = (b = y.split(".")).shift(), b.sort()), c = y.indexOf(":") < 0 && "on" + y, (e = e[x.expando] ? e : new x.Event(y, "object" == typeof e && e)).isTrigger = r ? 2 : 3, e.namespace = b.join("."), e.rnamespace = e.namespace ? new RegExp("(^|\\.)" + b.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, e.result = void 0, e.target || (e.target = i), n = null == n ? [e] : x.makeArray(n, [e]), 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, we.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 || t)
                }
                for (o = 0;
                    (a = v[o++]) && !e.isPropagationStopped();) f = a, e.type = 1 < o ? l : h.bindType || y, (d = (X.get(a, "events") || Object.create(null))[e.type] && X.get(a, "handle")) && d.apply(a, n), (d = c && a[c]) && d.apply && Y(a) && (e.result = d.apply(a, n), !1 === e.result && e.preventDefault());
                return e.type = y, r || e.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, e.isPropagationStopped() && f.addEventListener(y, xe), i[y](), e.isPropagationStopped() && f.removeEventListener(y, xe), x.event.triggered = void 0, s && (i[c] = s)), e.result
            }
        },
        simulate: function(t, e, n) {
            var i = x.extend(new x.Event, n, {
                type: t,
                isSimulated: !0
            });
            x.event.trigger(i, null, e)
        }
    }), x.fn.extend({
        trigger: function(t, e) {
            return this.each((function() {
                x.event.trigger(t, e, this)
            }))
        },
        triggerHandler: function(t, e) {
            var n = this[0];
            if (n) return x.event.trigger(t, e, n, !0)
        }
    }), f.focusin || x.each({
        focus: "focusin",
        blur: "focusout"
    }, (function(t, e) {
        var n = function(t) {
            x.event.simulate(e, t.target, x.event.fix(t))
        };
        x.event.special[e] = {
            setup: function() {
                var i = this.ownerDocument || this.document || this,
                    r = X.access(i, e);
                r || i.addEventListener(t, n, !0), X.access(i, e, (r || 0) + 1)
            },
            teardown: function() {
                var i = this.ownerDocument || this.document || this,
                    r = X.access(i, e) - 1;
                r ? X.access(i, e, r) : (i.removeEventListener(t, n, !0), X.remove(i, e))
            }
        }
    }));
    var _e = t.location,
        Se = {
            guid: Date.now()
        },
        Ce = /\?/;
    x.parseXML = function(e) {
        var n;
        if (!e || "string" != typeof e) return null;
        try {
            n = (new t.DOMParser).parseFromString(e, "text/xml")
        } catch (e) {
            n = void 0
        }
        return n && !n.getElementsByTagName("parsererror").length || x.error("Invalid XML: " + e), n
    };
    var ke = /\[\]$/,
        Te = /\r?\n/g,
        Ae = /^(?:submit|button|image|reset|file)$/i,
        De = /^(?:input|select|textarea|keygen)/i;

    function Ee(t, e, n, i) {
        var r;
        if (Array.isArray(e)) x.each(e, (function(e, r) {
            n || ke.test(t) ? i(t, r) : Ee(t + "[" + ("object" == typeof r && null != r ? e : "") + "]", r, n, i)
        }));
        else if (n || "object" !== b(e)) i(t, e);
        else
            for (r in e) Ee(t + "[" + r + "]", e[r], n, i)
    }
    x.param = function(t, e) {
        var n, i = [],
            r = function(t, e) {
                var n = p(e) ? e() : e;
                i[i.length] = encodeURIComponent(t) + "=" + encodeURIComponent(null == n ? "" : n)
            };
        if (null == t) return "";
        if (Array.isArray(t) || t.jquery && !x.isPlainObject(t)) x.each(t, (function() {
            r(this.name, this.value)
        }));
        else
            for (n in t) Ee(n, t[n], e, r);
        return i.join("&")
    }, x.fn.extend({
        serialize: function() {
            return x.param(this.serializeArray())
        },
        serializeArray: function() {
            return this.map((function() {
                var t = x.prop(this, "elements");
                return t ? x.makeArray(t) : this
            })).filter((function() {
                var t = this.type;
                return this.name && !x(this).is(":disabled") && De.test(this.nodeName) && !Ae.test(t) && (this.checked || !ht.test(t))
            })).map((function(t, e) {
                var n = x(this).val();
                return null == n ? null : Array.isArray(n) ? x.map(n, (function(t) {
                    return {
                        name: e.name,
                        value: t.replace(Te, "\r\n")
                    }
                })) : {
                    name: e.name,
                    value: n.replace(Te, "\r\n")
                }
            })).get()
        }
    });
    var Me = /%20/g,
        Oe = /#.*$/,
        Ie = /([?&])_=[^&]*/,
        Pe = /^(.*?):[ \t]*([^\r\n]*)$/gm,
        Le = /^(?:GET|HEAD)$/,
        Ne = /^\/\//,
        Fe = {},
        Re = {},
        je = "*/".concat("*"),
        $e = m.createElement("a");

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

    function He(t, e, n, i) {
        var r = {},
            o = t === Re;

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

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

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

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

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

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

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

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

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

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

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

    function P(t) {
        return 11 === t ? O : 10 === t ? I : O || I
    }

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

    function N(t) {
        return null !== t.parentNode ? N(t.parentNode) : t
    }

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

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

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

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

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

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

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

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

    function G(t, e) {
        var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],
            i = P(10),
            r = "HTML" === e.nodeName,
            o = Y(t),
            a = Y(e),
            s = E(t),
            l = A(e),
            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 = V({
            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 ? e.contains(s) : e === s && "BODY" !== s.nodeName) && (d = j(d, e)), d
    }

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

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

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

    function J(t, e, n, i) {
        var r = arguments.length > 4 && void 0 !== arguments[4] && arguments[4],
            o = {
                top: 0,
                left: 0
            },
            a = r ? K(t) : F(t, M(e));
        if ("viewport" === i) o = X(a, r);
        else {
            var s = void 0;
            "scrollParent" === i ? "BODY" === (s = E(D(e))).nodeName && (s = t.ownerDocument.documentElement) : s = "window" === i ? t.ownerDocument.documentElement : i;
            var l = G(s, a, r);
            if ("HTML" !== s.nodeName || Q(a)) o = l;
            else {
                var c = H(t.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 Z(t) {
        return t.width * t.height
    }

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

    function et(t, e, n) {
        var i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : null,
            r = i ? K(e) : F(e, M(n));
        return G(n, r, i)
    }

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

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

    function rt(t, e, n) {
        n = n.split("-")[0];
        var i = nt(t),
            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] = e[a] + e[l] / 2 - i[l] / 2, r[s] = n === s ? e[s] - i[c] : e[it(s)], r
    }

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

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

    function st() {
        if (!this.state.isDestroyed) {
            var t = {
                instance: this,
                styles: {},
                arrowStyles: {},
                attributes: {},
                flipped: !1,
                offsets: {}
            };
            t.offsets.reference = et(this.state, this.popper, this.reference, this.options.positionFixed), t.placement = tt(this.options.placement, t.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding), t.originalPlacement = t.placement, t.positionFixed = this.options.positionFixed, t.offsets.popper = rt(this.popper, t.offsets.reference, t.placement), t.offsets.popper.position = this.options.positionFixed ? "fixed" : "absolute", t = at(this.modifiers, t), this.state.isCreated ? this.options.onUpdate(t) : (this.state.isCreated = !0, this.options.onCreate(t))
        }
    }

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

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

    function ut() {
        return this.state.isDestroyed = !0, lt(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[ct("transform")] = ""), this.disableEventListeners(), this.options.removeOnDestroy && this.popper.parentNode.removeChild(this.popper), this
    }

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

    function ht() {
        this.state.eventsEnabled || (this.state = function(t, e, n, i) {
            n.updateBound = i, dt(t).addEventListener("resize", n.updateBound, {
                passive: !0
            });
            var r = E(t);
            return function t(e, n, i, r) {
                var o = "BODY" === e.nodeName,
                    a = o ? e.ownerDocument.defaultView : e;
                a.addEventListener(n, i, {
                    passive: !0
                }), o || t(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 ft() {
        var t, e;
        this.state.eventsEnabled && (cancelAnimationFrame(this.scheduleUpdate), this.state = (t = this.reference, e = this.state, dt(t).removeEventListener("resize", e.updateBound), e.scrollParents.forEach((function(t) {
            t.removeEventListener("scroll", e.updateBound)
        })), e.updateBound = null, e.scrollParents = [], e.scrollElement = null, e.eventsEnabled = !1, e))
    }

    function pt(t) {
        return "" !== t && !isNaN(parseFloat(t)) && isFinite(t)
    }

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

    function vt(t, e, n) {
        var i = ot(t, (function(t) {
                return t.name === e
            })),
            r = !!i && t.some((function(t) {
                return t.name === n && t.enabled && t.order < i.order
            }));
        if (!r) {
            var o = "`" + e + "`",
                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 yt = ["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"],
        bt = yt.slice(3);

    function wt(t) {
        var e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1],
            n = bt.indexOf(t),
            i = bt.slice(n + 1).concat(bt.slice(0, n));
        return e ? i.reverse() : i
    }
    var xt = {
            placement: "bottom",
            positionFixed: !1,
            eventsEnabled: !0,
            removeOnDestroy: !1,
            onCreate: function() {},
            onUpdate: function() {},
            modifiers: {
                shift: {
                    order: 100,
                    enabled: !0,
                    fn: function(t) {
                        var e = t.placement,
                            n = e.split("-")[0],
                            i = e.split("-")[1];
                        if (i) {
                            var r = t.offsets,
                                o = r.reference,
                                a = r.popper,
                                s = -1 !== ["bottom", "top"].indexOf(n),
                                l = s ? "left" : "top",
                                c = s ? "width" : "height",
                                u = {
                                    start: W({}, l, o[l]),
                                    end: W({}, l, o[l] + o[c] - a[c])
                                };
                            t.offsets.popper = U({}, a, u[i])
                        }
                        return t
                    }
                },
                offset: {
                    order: 200,
                    enabled: !0,
                    fn: function(t, e) {
                        var n, i = e.offset,
                            r = t.placement,
                            o = t.offsets,
                            a = o.popper,
                            s = o.reference,
                            l = r.split("-")[0];
                        return n = pt(+i) ? [+i, 0] : function(t, e, n, i) {
                            var r = [0, 0],
                                o = -1 !== ["right", "left"].indexOf(i),
                                a = t.split(/(\+|\-)/).map((function(t) {
                                    return t.trim()
                                })),
                                s = a.indexOf(ot(a, (function(t) {
                                    return -1 !== t.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(t, i) {
                                var r = (1 === i ? !o : o) ? "height" : "width",
                                    a = !1;
                                return t.reduce((function(t, e) {
                                    return "" === t[t.length - 1] && -1 !== ["+", "-"].indexOf(e) ? (t[t.length - 1] = e, a = !0, t) : a ? (t[t.length - 1] += e, a = !1, t) : t.concat(e)
                                }), []).map((function(t) {
                                    return function(t, e, n, i) {
                                        var r = t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),
                                            o = +r[1],
                                            a = r[2];
                                        if (!o) return t;
                                        if (0 === a.indexOf("%")) {
                                            var s = void 0;
                                            switch (a) {
                                                case "%p":
                                                    s = n;
                                                    break;
                                                case "%":
                                                case "%r":
                                                default:
                                                    s = i
                                            }
                                            return V(s)[e] / 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
                                    }(t, r, e, n)
                                }))
                            }))).forEach((function(t, e) {
                                t.forEach((function(n, i) {
                                    pt(n) && (r[e] += n * ("-" === t[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]), t.popper = a, t
                    },
                    offset: 0
                },
                preventOverflow: {
                    order: 300,
                    enabled: !0,
                    fn: function(t, e) {
                        var n = e.boundariesElement || L(t.instance.popper);
                        t.instance.reference === n && (n = L(n));
                        var i = ct("transform"),
                            r = t.instance.popper.style,
                            o = r.top,
                            a = r.left,
                            s = r[i];
                        r.top = "", r.left = "", r[i] = "";
                        var l = J(t.instance.popper, t.instance.reference, e.padding, n, t.positionFixed);
                        r.top = o, r.left = a, r[i] = s, e.boundaries = l;
                        var c = e.priority,
                            u = t.offsets.popper,
                            d = {
                                primary: function(t) {
                                    var n = u[t];
                                    return u[t] < l[t] && !e.escapeWithReference && (n = Math.max(u[t], l[t])), W({}, t, n)
                                },
                                secondary: function(t) {
                                    var n = "right" === t ? "left" : "top",
                                        i = u[n];
                                    return u[t] > l[t] && !e.escapeWithReference && (i = Math.min(u[n], l[t] - ("right" === t ? u.width : u.height))), W({}, n, i)
                                }
                            };
                        return c.forEach((function(t) {
                            var e = -1 !== ["left", "top"].indexOf(t) ? "primary" : "secondary";
                            u = U({}, u, d[e](t))
                        })), t.offsets.popper = u, t
                    },
                    priority: ["left", "right", "top", "bottom"],
                    padding: 5,
                    boundariesElement: "scrollParent"
                },
                keepTogether: {
                    order: 400,
                    enabled: !0,
                    fn: function(t) {
                        var e = t.offsets,
                            n = e.popper,
                            i = e.reference,
                            r = t.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]) && (t.offsets.popper[l] = o(i[l]) - n[c]), n[l] > o(i[s]) && (t.offsets.popper[l] = o(i[s])), t
                    }
                },
                arrow: {
                    order: 500,
                    enabled: !0,
                    fn: function(t, e) {
                        var n;
                        if (!vt(t.instance.modifiers, "arrow", "keepTogether")) return t;
                        var i = e.element;
                        if ("string" == typeof i) {
                            if (!(i = t.instance.popper.querySelector(i))) return t
                        } else if (!t.instance.popper.contains(i)) return console.warn("WARNING: `arrow.element` must be child of its popper element!"), t;
                        var r = t.placement.split("-")[0],
                            o = t.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 = nt(i)[c];
                        s[f] - p < a[d] && (t.offsets.popper[d] -= a[d] - (s[f] - p)), s[d] + p > a[f] && (t.offsets.popper[d] += s[d] + p - a[f]), t.offsets.popper = V(t.offsets.popper);
                        var g = s[d] + s[c] / 2 - p / 2,
                            m = A(t.instance.popper),
                            v = parseFloat(m["margin" + u]),
                            y = parseFloat(m["border" + u + "Width"]),
                            b = g - t.offsets.popper[d] - v - y;
                        return b = Math.max(Math.min(a[c] - p, b), 0), t.arrowElement = i, t.offsets.arrow = (W(n = {}, d, Math.round(b)), W(n, h, ""), n), t
                    },
                    element: "[x-arrow]"
                },
                flip: {
                    order: 600,
                    enabled: !0,
                    fn: function(t, e) {
                        if (lt(t.instance.modifiers, "inner")) return t;
                        if (t.flipped && t.placement === t.originalPlacement) return t;
                        var n = J(t.instance.popper, t.instance.reference, e.padding, e.boundariesElement, t.positionFixed),
                            i = t.placement.split("-")[0],
                            r = it(i),
                            o = t.placement.split("-")[1] || "",
                            a = [];
                        switch (e.behavior) {
                            case "flip":
                                a = [i, r];
                                break;
                            case "clockwise":
                                a = wt(i);
                                break;
                            case "counterclockwise":
                                a = wt(i, !0);
                                break;
                            default:
                                a = e.behavior
                        }
                        return a.forEach((function(s, l) {
                            if (i !== s || a.length === l + 1) return t;
                            i = t.placement.split("-")[0], r = it(i);
                            var c = t.offsets.popper,
                                u = t.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 = !!e.flipVariations && (y && "start" === o && f || y && "end" === o && p || !y && "start" === o && g || !y && "end" === o && m),
                                w = !!e.flipVariationsByContent && (y && "start" === o && p || y && "end" === o && f || !y && "start" === o && m || !y && "end" === o && g),
                                x = b || w;
                            (h || v || x) && (t.flipped = !0, (h || v) && (i = a[l + 1]), x && (o = function(t) {
                                return "end" === t ? "start" : "start" === t ? "end" : t
                            }(o)), t.placement = i + (o ? "-" + o : ""), t.offsets.popper = U({}, t.offsets.popper, rt(t.instance.popper, t.offsets.reference, t.placement)), t = at(t.instance.modifiers, t, "flip"))
                        })), t
                    },
                    behavior: "flip",
                    padding: 5,
                    boundariesElement: "viewport",
                    flipVariations: !1,
                    flipVariationsByContent: !1
                },
                inner: {
                    order: 700,
                    enabled: !1,
                    fn: function(t) {
                        var e = t.placement,
                            n = e.split("-")[0],
                            i = t.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), t.placement = it(e), t.offsets.popper = V(r), t
                    }
                },
                hide: {
                    order: 800,
                    enabled: !0,
                    fn: function(t) {
                        if (!vt(t.instance.modifiers, "hide", "preventOverflow")) return t;
                        var e = t.offsets.reference,
                            n = ot(t.instance.modifiers, (function(t) {
                                return "preventOverflow" === t.name
                            })).boundaries;
                        if (e.bottom < n.top || e.left > n.right || e.top > n.bottom || e.right < n.left) {
                            if (!0 === t.hide) return t;
                            t.hide = !0, t.attributes["x-out-of-boundaries"] = ""
                        } else {
                            if (!1 === t.hide) return t;
                            t.hide = !1, t.attributes["x-out-of-boundaries"] = !1
                        }
                        return t
                    }
                },
                computeStyle: {
                    order: 850,
                    enabled: !0,
                    fn: function(t, e) {
                        var n = e.x,
                            i = e.y,
                            r = t.offsets.popper,
                            o = ot(t.instance.modifiers, (function(t) {
                                return "applyStyle" === t.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 : e.gpuAcceleration,
                            c = L(t.instance.popper),
                            u = Y(c),
                            d = {
                                position: r.position
                            },
                            h = function(t, e) {
                                var n = t.offsets,
                                    i = n.popper,
                                    r = n.reference,
                                    o = Math.round,
                                    a = Math.floor,
                                    s = function(t) {
                                        return t
                                    },
                                    l = o(r.width),
                                    c = o(i.width),
                                    u = -1 !== ["left", "right"].indexOf(t.placement),
                                    d = -1 !== t.placement.indexOf("-"),
                                    h = e ? u || d || l % 2 == c % 2 ? o : a : s,
                                    f = e ? o : s;
                                return {
                                    left: h(l % 2 == 1 && c % 2 == 1 && !d && e ? i.left - 1 : i.left),
                                    top: f(i.top),
                                    bottom: f(i.bottom),
                                    right: h(i.right)
                                }
                            }(t, window.devicePixelRatio < 2 || !mt),
                            f = "bottom" === n ? "top" : "bottom",
                            p = "right" === i ? "left" : "right",
                            g = ct("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": t.placement
                        };
                        return t.attributes = U({}, y, t.attributes), t.styles = U({}, d, t.styles), t.arrowStyles = U({}, t.offsets.arrow, t.arrowStyles), t
                    },
                    gpuAcceleration: !0,
                    x: "bottom",
                    y: "right"
                },
                applyStyle: {
                    order: 900,
                    enabled: !0,
                    fn: function(t) {
                        var e, n;
                        return gt(t.instance.popper, t.styles), e = t.instance.popper, n = t.attributes, Object.keys(n).forEach((function(t) {
                            !1 !== n[t] ? e.setAttribute(t, n[t]) : e.removeAttribute(t)
                        })), t.arrowElement && Object.keys(t.arrowStyles).length && gt(t.arrowElement, t.arrowStyles), t
                    },
                    onLoad: function(t, e, n, i, r) {
                        var o = et(r, e, t, n.positionFixed),
                            a = tt(n.placement, o, e, t, n.modifiers.flip.boundariesElement, n.modifiers.flip.padding);
                        return e.setAttribute("x-placement", a), gt(e, {
                            position: n.positionFixed ? "fixed" : "absolute"
                        }), n
                    },
                    gpuAcceleration: void 0
                }
            }
        },
        _t = function() {
            function t(e, n) {
                var i = this,
                    r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
                B(this, t), this.scheduleUpdate = function() {
                    return requestAnimationFrame(i.update)
                }, this.update = k(this.update.bind(this)), this.options = U({}, t.Defaults, r), this.state = {
                    isDestroyed: !1,
                    isCreated: !1,
                    scrollParents: []
                }, this.reference = e && e.jquery ? e[0] : e, this.popper = n && n.jquery ? n[0] : n, this.options.modifiers = {}, Object.keys(U({}, t.Defaults.modifiers, r.modifiers)).forEach((function(e) {
                    i.options.modifiers[e] = U({}, t.Defaults.modifiers[e] || {}, r.modifiers ? r.modifiers[e] : {})
                })), this.modifiers = Object.keys(this.options.modifiers).map((function(t) {
                    return U({
                        name: t
                    }, i.options.modifiers[t])
                })).sort((function(t, e) {
                    return t.order - e.order
                })), this.modifiers.forEach((function(t) {
                    t.enabled && T(t.onLoad) && t.onLoad(i.reference, i.popper, i.options, t, i.state)
                })), this.update();
                var o = this.options.eventsEnabled;
                o && this.enableEventListeners(), this.state.eventsEnabled = o
            }
            return q(t, [{
                key: "update",
                value: function() {
                    return st.call(this)
                }
            }, {
                key: "destroy",
                value: function() {
                    return ut.call(this)
                }
            }, {
                key: "enableEventListeners",
                value: function() {
                    return ht.call(this)
                }
            }, {
                key: "disableEventListeners",
                value: function() {
                    return ft.call(this)
                }
            }]), t
        }();
    _t.Utils = ("undefined" != typeof window ? window : global).PopperUtils, _t.placements = yt, _t.Defaults = xt;
    var St = "dropdown",
        Ct = n.default.fn[St],
        kt = new RegExp("38|40|27"),
        Tt = {
            offset: 0,
            flip: !0,
            boundary: "scrollParent",
            reference: "toggle",
            display: "dynamic",
            popperConfig: null
        },
        At = {
            offset: "(number|string|function)",
            flip: "boolean",
            boundary: "(string|element)",
            reference: "(string|element)",
            display: "string",
            popperConfig: "(null|object)"
        },
        Dt = function() {
            function t(t, e) {
                this._element = t, this._popper = null, this._config = this._getConfig(e), this._menu = this._getMenuElement(), this._inNavbar = this._detectNavbar(), this._addEventListeners()
            }
            var e = t.prototype;
            return e.toggle = function() {
                if (!this._element.disabled && !n.default(this._element).hasClass("disabled")) {
                    var e = n.default(this._menu).hasClass("show");
                    t._clearMenus(), e || this.show(!0)
                }
            }, e.show = function(e) {
                if (void 0 === e && (e = !1), !(this._element.disabled || n.default(this._element).hasClass("disabled") || n.default(this._menu).hasClass("show"))) {
                    var i = {
                            relatedTarget: this._element
                        },
                        r = n.default.Event("show.bs.dropdown", i),
                        o = t._getParentFromElement(this._element);
                    if (n.default(o).trigger(r), !r.isDefaultPrevented()) {
                        if (!this._inNavbar && e) {
                            if (void 0 === _t) throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");
                            var s = this._element;
                            "parent" === this._config.reference ? s = o : a.isElement(this._config.reference) && (s = this._config.reference, void 0 !== this._config.reference.jquery && (s = this._config.reference[0])), "scrollParent" !== this._config.boundary && n.default(o).addClass("position-static"), this._popper = new _t(s, this._menu, this._getPopperConfig())
                        }
                        "ontouchstart" in document.documentElement && 0 === n.default(o).closest(".navbar-nav").length && n.default(document.body).children().on("mouseover", null, n.default.noop), this._element.focus(), this._element.setAttribute("aria-expanded", !0), n.default(this._menu).toggleClass("show"), n.default(o).toggleClass("show").trigger(n.default.Event("shown.bs.dropdown", i))
                    }
                }
            }, e.hide = function() {
                if (!this._element.disabled && !n.default(this._element).hasClass("disabled") && n.default(this._menu).hasClass("show")) {
                    var e = {
                            relatedTarget: this._element
                        },
                        i = n.default.Event("hide.bs.dropdown", e),
                        r = t._getParentFromElement(this._element);
                    n.default(r).trigger(i), i.isDefaultPrevented() || (this._popper && this._popper.destroy(), n.default(this._menu).toggleClass("show"), n.default(r).toggleClass("show").trigger(n.default.Event("hidden.bs.dropdown", e)))
                }
            }, e.dispose = function() {
                n.default.removeData(this._element, "bs.dropdown"), n.default(this._element).off(".bs.dropdown"), this._element = null, this._menu = null, null !== this._popper && (this._popper.destroy(), this._popper = null)
            }, e.update = function() {
                this._inNavbar = this._detectNavbar(), null !== this._popper && this._popper.scheduleUpdate()
            }, e._addEventListeners = function() {
                var t = this;
                n.default(this._element).on("click.bs.dropdown", (function(e) {
                    e.preventDefault(), e.stopPropagation(), t.toggle()
                }))
            }, e._getConfig = function(t) {
                return t = o({}, this.constructor.Default, n.default(this._element).data(), t), a.typeCheckConfig(St, t, this.constructor.DefaultType), t
            }, e._getMenuElement = function() {
                if (!this._menu) {
                    var e = t._getParentFromElement(this._element);
                    e && (this._menu = e.querySelector(".dropdown-menu"))
                }
                return this._menu
            }, e._getPlacement = function() {
                var t = n.default(this._element.parentNode),
                    e = "bottom-start";
                return t.hasClass("dropup") ? e = n.default(this._menu).hasClass("dropdown-menu-right") ? "top-end" : "top-start" : t.hasClass("dropright") ? e = "right-start" : t.hasClass("dropleft") ? e = "left-start" : n.default(this._menu).hasClass("dropdown-menu-right") && (e = "bottom-end"), e
            }, e._detectNavbar = function() {
                return n.default(this._element).closest(".navbar").length > 0
            }, e._getOffset = function() {
                var t = this,
                    e = {};
                return "function" == typeof this._config.offset ? e.fn = function(e) {
                    return e.offsets = o({}, e.offsets, t._config.offset(e.offsets, t._element) || {}), e
                } : e.offset = this._config.offset, e
            }, e._getPopperConfig = function() {
                var t = {
                    placement: this._getPlacement(),
                    modifiers: {
                        offset: this._getOffset(),
                        flip: {
                            enabled: this._config.flip
                        },
                        preventOverflow: {
                            boundariesElement: this._config.boundary
                        }
                    }
                };
                return "static" === this._config.display && (t.modifiers.applyStyle = {
                    enabled: !1
                }), o({}, t, this._config.popperConfig)
            }, t._jQueryInterface = function(e) {
                return this.each((function() {
                    var i = n.default(this).data("bs.dropdown");
                    if (i || (i = new t(this, "object" == typeof e ? e : null), n.default(this).data("bs.dropdown", i)), "string" == typeof e) {
                        if (void 0 === i[e]) throw new TypeError('No method named "' + e + '"');
                        i[e]()
                    }
                }))
            }, t._clearMenus = function(e) {
                if (!e || 3 !== e.which && ("keyup" !== e.type || 9 === e.which))
                    for (var i = [].slice.call(document.querySelectorAll('[data-toggle="dropdown"]')), r = 0, o = i.length; r < o; r++) {
                        var a = t._getParentFromElement(i[r]),
                            s = n.default(i[r]).data("bs.dropdown"),
                            l = {
                                relatedTarget: i[r]
                            };
                        if (e && "click" === e.type && (l.clickEvent = e), s) {
                            var c = s._menu;
                            if (n.default(a).hasClass("show") && !(e && ("click" === e.type && /input|textarea/i.test(e.target.tagName) || "keyup" === e.type && 9 === e.which) && n.default.contains(a, e.target))) {
                                var u = n.default.Event("hide.bs.dropdown", l);
                                n.default(a).trigger(u), u.isDefaultPrevented() || ("ontouchstart" in document.documentElement && n.default(document.body).children().off("mouseover", null, n.default.noop), i[r].setAttribute("aria-expanded", "false"), s._popper && s._popper.destroy(), n.default(c).removeClass("show"), n.default(a).removeClass("show").trigger(n.default.Event("hidden.bs.dropdown", l)))
                            }
                        }
                    }
            }, t._getParentFromElement = function(t) {
                var e, n = a.getSelectorFromElement(t);
                return n && (e = document.querySelector(n)), e || t.parentNode
            }, t._dataApiKeydownHandler = function(e) {
                if (!(/input|textarea/i.test(e.target.tagName) ? 32 === e.which || 27 !== e.which && (40 !== e.which && 38 !== e.which || n.default(e.target).closest(".dropdown-menu").length) : !kt.test(e.which)) && !this.disabled && !n.default(this).hasClass("disabled")) {
                    var i = t._getParentFromElement(this),
                        r = n.default(i).hasClass("show");
                    if (r || 27 !== e.which) {
                        if (e.preventDefault(), e.stopPropagation(), !r || 27 === e.which || 32 === e.which) return 27 === e.which && n.default(i.querySelector('[data-toggle="dropdown"]')).trigger("focus"), void n.default(this).trigger("click");
                        var o = [].slice.call(i.querySelectorAll(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)")).filter((function(t) {
                            return n.default(t).is(":visible")
                        }));
                        if (0 !== o.length) {
                            var a = o.indexOf(e.target);
                            38 === e.which && a > 0 && a--, 40 === e.which && a < o.length - 1 && a++, a < 0 && (a = 0), o[a].focus()
                        }
                    }
                }
            }, r(t, null, [{
                key: "VERSION",
                get: function() {
                    return "4.6.0"
                }
            }, {
                key: "Default",
                get: function() {
                    return Tt
                }
            }, {
                key: "DefaultType",
                get: function() {
                    return At
                }
            }]), t
        }();
    n.default(document).on("keydown.bs.dropdown.data-api", '[data-toggle="dropdown"]', Dt._dataApiKeydownHandler).on("keydown.bs.dropdown.data-api", ".dropdown-menu", Dt._dataApiKeydownHandler).on("click.bs.dropdown.data-api keyup.bs.dropdown.data-api", Dt._clearMenus).on("click.bs.dropdown.data-api", '[data-toggle="dropdown"]', (function(t) {
        t.preventDefault(), t.stopPropagation(), Dt._jQueryInterface.call(n.default(this), "toggle")
    })).on("click.bs.dropdown.data-api", ".dropdown form", (function(t) {
        t.stopPropagation()
    })), n.default.fn[St] = Dt._jQueryInterface, n.default.fn[St].Constructor = Dt, n.default.fn[St].noConflict = function() {
        return n.default.fn[St] = Ct, Dt._jQueryInterface
    };
    var Et = n.default.fn.modal,
        Mt = {
            backdrop: !0,
            keyboard: !0,
            focus: !0,
            show: !0
        },
        Ot = {
            backdrop: "(boolean|string)",
            keyboard: "boolean",
            focus: "boolean",
            show: "boolean"
        },
        It = function() {
            function t(t, e) {
                this._config = this._getConfig(e), this._element = t, this._dialog = t.querySelector(".modal-dialog"), this._backdrop = null, this._isShown = !1, this._isBodyOverflowing = !1, this._ignoreBackdropClick = !1, this._isTransitioning = !1, this._scrollbarWidth = 0
            }
            var e = t.prototype;
            return e.toggle = function(t) {
                return this._isShown ? this.hide() : this.show(t)
            }, e.show = function(t) {
                var e = this;
                if (!this._isShown && !this._isTransitioning) {
                    n.default(this._element).hasClass("fade") && (this._isTransitioning = !0);
                    var i = n.default.Event("show.bs.modal", {
                        relatedTarget: t
                    });
                    n.default(this._element).trigger(i), this._isShown || i.isDefaultPrevented() || (this._isShown = !0, this._checkScrollbar(), this._setScrollbar(), this._adjustDialog(), this._setEscapeEvent(), this._setResizeEvent(), n.default(this._element).on("click.dismiss.bs.modal", '[data-dismiss="modal"]', (function(t) {
                        return e.hide(t)
                    })), n.default(this._dialog).on("mousedown.dismiss.bs.modal", (function() {
                        n.default(e._element).one("mouseup.dismiss.bs.modal", (function(t) {
                            n.default(t.target).is(e._element) && (e._ignoreBackdropClick = !0)
                        }))
                    })), this._showBackdrop((function() {
                        return e._showElement(t)
                    })))
                }
            }, e.hide = function(t) {
                var e = this;
                if (t && t.preventDefault(), this._isShown && !this._isTransitioning) {
                    var i = n.default.Event("hide.bs.modal");
                    if (n.default(this._element).trigger(i), this._isShown && !i.isDefaultPrevented()) {
                        this._isShown = !1;
                        var r = n.default(this._element).hasClass("fade");
                        if (r && (this._isTransitioning = !0), this._setEscapeEvent(), this._setResizeEvent(), n.default(document).off("focusin.bs.modal"), n.default(this._element).removeClass("show"), n.default(this._element).off("click.dismiss.bs.modal"), n.default(this._dialog).off("mousedown.dismiss.bs.modal"), r) {
                            var o = a.getTransitionDurationFromElement(this._element);
                            n.default(this._element).one(a.TRANSITION_END, (function(t) {
                                return e._hideModal(t)
                            })).emulateTransitionEnd(o)
                        } else this._hideModal()
                    }
                }
            }, e.dispose = function() {
                [window, this._element, this._dialog].forEach((function(t) {
                    return n.default(t).off(".bs.modal")
                })), n.default(document).off("focusin.bs.modal"), n.default.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
            }, e.handleUpdate = function() {
                this._adjustDialog()
            }, e._getConfig = function(t) {
                return t = o({}, Mt, t), a.typeCheckConfig("modal", t, Ot), t
            }, e._triggerBackdropTransition = function() {
                var t = this,
                    e = n.default.Event("hidePrevented.bs.modal");
                if (n.default(this._element).trigger(e), !e.isDefaultPrevented()) {
                    var i = this._element.scrollHeight > document.documentElement.clientHeight;
                    i || (this._element.style.overflowY = "hidden"), this._element.classList.add("modal-static");
                    var r = a.getTransitionDurationFromElement(this._dialog);
                    n.default(this._element).off(a.TRANSITION_END), n.default(this._element).one(a.TRANSITION_END, (function() {
                        t._element.classList.remove("modal-static"), i || n.default(t._element).one(a.TRANSITION_END, (function() {
                            t._element.style.overflowY = ""
                        })).emulateTransitionEnd(t._element, r)
                    })).emulateTransitionEnd(r), this._element.focus()
                }
            }, e._showElement = function(t) {
                var e = this,
                    i = n.default(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"), n.default(this._dialog).hasClass("modal-dialog-scrollable") && r ? r.scrollTop = 0 : this._element.scrollTop = 0, i && a.reflow(this._element), n.default(this._element).addClass("show"), this._config.focus && this._enforceFocus();
                var o = n.default.Event("shown.bs.modal", {
                        relatedTarget: t
                    }),
                    s = function() {
                        e._config.focus && e._element.focus(), e._isTransitioning = !1, n.default(e._element).trigger(o)
                    };
                if (i) {
                    var l = a.getTransitionDurationFromElement(this._dialog);
                    n.default(this._dialog).one(a.TRANSITION_END, s).emulateTransitionEnd(l)
                } else s()
            }, e._enforceFocus = function() {
                var t = this;
                n.default(document).off("focusin.bs.modal").on("focusin.bs.modal", (function(e) {
                    document !== e.target && t._element !== e.target && 0 === n.default(t._element).has(e.target).length && t._element.focus()
                }))
            }, e._setEscapeEvent = function() {
                var t = this;
                this._isShown ? n.default(this._element).on("keydown.dismiss.bs.modal", (function(e) {
                    t._config.keyboard && 27 === e.which ? (e.preventDefault(), t.hide()) : t._config.keyboard || 27 !== e.which || t._triggerBackdropTransition()
                })) : this._isShown || n.default(this._element).off("keydown.dismiss.bs.modal")
            }, e._setResizeEvent = function() {
                var t = this;
                this._isShown ? n.default(window).on("resize.bs.modal", (function(e) {
                    return t.handleUpdate(e)
                })) : n.default(window).off("resize.bs.modal")
            }, e._hideModal = function() {
                var t = 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() {
                    n.default(document.body).removeClass("modal-open"), t._resetAdjustments(), t._resetScrollbar(), n.default(t._element).trigger("hidden.bs.modal")
                }))
            }, e._removeBackdrop = function() {
                this._backdrop && (n.default(this._backdrop).remove(), this._backdrop = null)
            }, e._showBackdrop = function(t) {
                var e = this,
                    i = n.default(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), n.default(this._backdrop).appendTo(document.body), n.default(this._element).on("click.dismiss.bs.modal", (function(t) {
                            e._ignoreBackdropClick ? e._ignoreBackdropClick = !1 : t.target === t.currentTarget && ("static" === e._config.backdrop ? e._triggerBackdropTransition() : e.hide())
                        })), i && a.reflow(this._backdrop), n.default(this._backdrop).addClass("show"), !t) return;
                    if (!i) return void t();
                    var r = a.getTransitionDurationFromElement(this._backdrop);
                    n.default(this._backdrop).one(a.TRANSITION_END, t).emulateTransitionEnd(r)
                } else if (!this._isShown && this._backdrop) {
                    n.default(this._backdrop).removeClass("show");
                    var o = function() {
                        e._removeBackdrop(), t && t()
                    };
                    if (n.default(this._element).hasClass("fade")) {
                        var s = a.getTransitionDurationFromElement(this._backdrop);
                        n.default(this._backdrop).one(a.TRANSITION_END, o).emulateTransitionEnd(s)
                    } else o()
                } else t && t()
            }, e._adjustDialog = function() {
                var t = this._element.scrollHeight > document.documentElement.clientHeight;
                !this._isBodyOverflowing && t && (this._element.style.paddingLeft = this._scrollbarWidth + "px"), this._isBodyOverflowing && !t && (this._element.style.paddingRight = this._scrollbarWidth + "px")
            }, e._resetAdjustments = function() {
                this._element.style.paddingLeft = "", this._element.style.paddingRight = ""
            }, e._checkScrollbar = function() {
                var t = document.body.getBoundingClientRect();
                this._isBodyOverflowing = Math.round(t.left + t.right) < window.innerWidth, this._scrollbarWidth = this._getScrollbarWidth()
            }, e._setScrollbar = function() {
                var t = this;
                if (this._isBodyOverflowing) {
                    var e = [].slice.call(document.querySelectorAll(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top")),
                        i = [].slice.call(document.querySelectorAll(".sticky-top"));
                    n.default(e).each((function(e, i) {
                        var r = i.style.paddingRight,
                            o = n.default(i).css("padding-right");
                        n.default(i).data("padding-right", r).css("padding-right", parseFloat(o) + t._scrollbarWidth + "px")
                    })), n.default(i).each((function(e, i) {
                        var r = i.style.marginRight,
                            o = n.default(i).css("margin-right");
                        n.default(i).data("margin-right", r).css("margin-right", parseFloat(o) - t._scrollbarWidth + "px")
                    }));
                    var r = document.body.style.paddingRight,
                        o = n.default(document.body).css("padding-right");
                    n.default(document.body).data("padding-right", r).css("padding-right", parseFloat(o) + this._scrollbarWidth + "px")
                }
                n.default(document.body).addClass("modal-open")
            }, e._resetScrollbar = function() {
                var t = [].slice.call(document.querySelectorAll(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top"));
                n.default(t).each((function(t, e) {
                    var i = n.default(e).data("padding-right");
                    n.default(e).removeData("padding-right"), e.style.paddingRight = i || ""
                }));
                var e = [].slice.call(document.querySelectorAll(".sticky-top"));
                n.default(e).each((function(t, e) {
                    var i = n.default(e).data("margin-right");
                    void 0 !== i && n.default(e).css("margin-right", i).removeData("margin-right")
                }));
                var i = n.default(document.body).data("padding-right");
                n.default(document.body).removeData("padding-right"), document.body.style.paddingRight = i || ""
            }, e._getScrollbarWidth = function() {
                var t = document.createElement("div");
                t.className = "modal-scrollbar-measure", document.body.appendChild(t);
                var e = t.getBoundingClientRect().width - t.clientWidth;
                return document.body.removeChild(t), e
            }, t._jQueryInterface = function(e, i) {
                return this.each((function() {
                    var r = n.default(this).data("bs.modal"),
                        a = o({}, Mt, n.default(this).data(), "object" == typeof e && e ? e : {});
                    if (r || (r = new t(this, a), n.default(this).data("bs.modal", r)), "string" == typeof e) {
                        if (void 0 === r[e]) throw new TypeError('No method named "' + e + '"');
                        r[e](i)
                    } else a.show && r.show(i)
                }))
            }, r(t, null, [{
                key: "VERSION",
                get: function() {
                    return "4.6.0"
                }
            }, {
                key: "Default",
                get: function() {
                    return Mt
                }
            }]), t
        }();
    n.default(document).on("click.bs.modal.data-api", '[data-toggle="modal"]', (function(t) {
        var e, i = this,
            r = a.getSelectorFromElement(this);
        r && (e = document.querySelector(r));
        var s = n.default(e).data("bs.modal") ? "toggle" : o({}, n.default(e).data(), n.default(this).data());
        "A" !== this.tagName && "AREA" !== this.tagName || t.preventDefault();
        var l = n.default(e).one("show.bs.modal", (function(t) {
            t.isDefaultPrevented() || l.one("hidden.bs.modal", (function() {
                n.default(i).is(":visible") && i.focus()
            }))
        }));
        It._jQueryInterface.call(n.default(e), s, this)
    })), n.default.fn.modal = It._jQueryInterface, n.default.fn.modal.Constructor = It, n.default.fn.modal.noConflict = function() {
        return n.default.fn.modal = Et, It._jQueryInterface
    };
    var Pt = ["background", "cite", "href", "itemtype", "longdesc", "poster", "src", "xlink:href"],
        Lt = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi,
        Nt = /^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 Ft(t, e, n) {
        if (0 === t.length) return t;
        if (n && "function" == typeof n) return n(t);
        for (var i = (new window.DOMParser).parseFromString(t, "text/html"), r = Object.keys(e), o = [].slice.call(i.body.querySelectorAll("*")), a = function(t, n) {
                var i = o[t],
                    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(e["*"] || [], e[a] || []);
                s.forEach((function(t) {
                    (function(t, e) {
                        var n = t.nodeName.toLowerCase();
                        if (-1 !== e.indexOf(n)) return -1 === Pt.indexOf(n) || Boolean(t.nodeValue.match(Lt) || t.nodeValue.match(Nt));
                        for (var i = e.filter((function(t) {
                                return t instanceof RegExp
                            })), r = 0, o = i.length; r < o; r++)
                            if (n.match(i[r])) return !0;
                        return !1
                    })(t, l) || i.removeAttribute(t.nodeName)
                }))
            }, s = 0, l = o.length; s < l; s++) a(s);
        return i.body.innerHTML
    }
    var Rt = "tooltip",
        jt = n.default.fn[Rt],
        $t = new RegExp("(^|\\s)bs-tooltip\\S+", "g"),
        zt = ["sanitize", "whiteList", "sanitizeFn"],
        Ht = {
            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)",
            customClass: "(string|function)",
            sanitize: "boolean",
            sanitizeFn: "(null|function)",
            whiteList: "object",
            popperConfig: "(null|object)"
        },
        Bt = {
            AUTO: "auto",
            TOP: "top",
            RIGHT: "right",
            BOTTOM: "bottom",
            LEFT: "left"
        },
        qt = {
            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",
            customClass: "",
            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
        },
        Wt = {
            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"
        },
        Ut = function() {
            function t(t, e) {
                if (void 0 === _t) throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");
                this._isEnabled = !0, this._timeout = 0, this._hoverState = "", this._activeTrigger = {}, this._popper = null, this.element = t, this.config = this._getConfig(e), this.tip = null, this._setListeners()
            }
            var e = t.prototype;
            return e.enable = function() {
                this._isEnabled = !0
            }, e.disable = function() {
                this._isEnabled = !1
            }, e.toggleEnabled = function() {
                this._isEnabled = !this._isEnabled
            }, e.toggle = function(t) {
                if (this._isEnabled)
                    if (t) {
                        var e = this.constructor.DATA_KEY,
                            i = n.default(t.currentTarget).data(e);
                        i || (i = new this.constructor(t.currentTarget, this._getDelegateConfig()), n.default(t.currentTarget).data(e, i)), i._activeTrigger.click = !i._activeTrigger.click, i._isWithActiveTrigger() ? i._enter(null, i) : i._leave(null, i)
                    } else {
                        if (n.default(this.getTipElement()).hasClass("show")) return void this._leave(null, this);
                        this._enter(null, this)
                    }
            }, e.dispose = function() {
                clearTimeout(this._timeout), n.default.removeData(this.element, this.constructor.DATA_KEY), n.default(this.element).off(this.constructor.EVENT_KEY), n.default(this.element).closest(".modal").off("hide.bs.modal", this._hideModalHandler), this.tip && n.default(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
            }, e.show = function() {
                var t = this;
                if ("none" === n.default(this.element).css("display")) throw new Error("Please use show on visible elements");
                var e = n.default.Event(this.constructor.Event.SHOW);
                if (this.isWithContent() && this._isEnabled) {
                    n.default(this.element).trigger(e);
                    var i = a.findShadowRoot(this.element),
                        r = n.default.contains(null !== i ? i : this.element.ownerDocument.documentElement, this.element);
                    if (e.isDefaultPrevented() || !r) return;
                    var o = this.getTipElement(),
                        s = a.getUID(this.constructor.NAME);
                    o.setAttribute("id", s), this.element.setAttribute("aria-describedby", s), this.setContent(), this.config.animation && n.default(o).addClass("fade");
                    var l = "function" == typeof this.config.placement ? this.config.placement.call(this, o, this.element) : this.config.placement,
                        c = this._getAttachment(l);
                    this.addAttachmentClass(c);
                    var u = this._getContainer();
                    n.default(o).data(this.constructor.DATA_KEY, this), n.default.contains(this.element.ownerDocument.documentElement, this.tip) || n.default(o).appendTo(u), n.default(this.element).trigger(this.constructor.Event.INSERTED), this._popper = new _t(this.element, o, this._getPopperConfig(c)), n.default(o).addClass("show"), n.default(o).addClass(this.config.customClass), "ontouchstart" in document.documentElement && n.default(document.body).children().on("mouseover", null, n.default.noop);
                    var d = function() {
                        t.config.animation && t._fixTransition();
                        var e = t._hoverState;
                        t._hoverState = null, n.default(t.element).trigger(t.constructor.Event.SHOWN), "out" === e && t._leave(null, t)
                    };
                    if (n.default(this.tip).hasClass("fade")) {
                        var h = a.getTransitionDurationFromElement(this.tip);
                        n.default(this.tip).one(a.TRANSITION_END, d).emulateTransitionEnd(h)
                    } else d()
                }
            }, e.hide = function(t) {
                var e = this,
                    i = this.getTipElement(),
                    r = n.default.Event(this.constructor.Event.HIDE),
                    o = function() {
                        "show" !== e._hoverState && i.parentNode && i.parentNode.removeChild(i), e._cleanTipClass(), e.element.removeAttribute("aria-describedby"), n.default(e.element).trigger(e.constructor.Event.HIDDEN), null !== e._popper && e._popper.destroy(), t && t()
                    };
                if (n.default(this.element).trigger(r), !r.isDefaultPrevented()) {
                    if (n.default(i).removeClass("show"), "ontouchstart" in document.documentElement && n.default(document.body).children().off("mouseover", null, n.default.noop), this._activeTrigger.click = !1, this._activeTrigger.focus = !1, this._activeTrigger.hover = !1, n.default(this.tip).hasClass("fade")) {
                        var s = a.getTransitionDurationFromElement(i);
                        n.default(i).one(a.TRANSITION_END, o).emulateTransitionEnd(s)
                    } else o();
                    this._hoverState = ""
                }
            }, e.update = function() {
                null !== this._popper && this._popper.scheduleUpdate()
            }, e.isWithContent = function() {
                return Boolean(this.getTitle())
            }, e.addAttachmentClass = function(t) {
                n.default(this.getTipElement()).addClass("bs-tooltip-" + t)
            }, e.getTipElement = function() {
                return this.tip = this.tip || n.default(this.config.template)[0], this.tip
            }, e.setContent = function() {
                var t = this.getTipElement();
                this.setElementContent(n.default(t.querySelectorAll(".tooltip-inner")), this.getTitle()), n.default(t).removeClass("fade show")
            }, e.setElementContent = function(t, e) {
                "object" != typeof e || !e.nodeType && !e.jquery ? this.config.html ? (this.config.sanitize && (e = Ft(e, this.config.whiteList, this.config.sanitizeFn)), t.html(e)) : t.text(e) : this.config.html ? n.default(e).parent().is(t) || t.empty().append(e) : t.text(n.default(e).text())
            }, e.getTitle = function() {
                var t = this.element.getAttribute("data-original-title");
                return t || (t = "function" == typeof this.config.title ? this.config.title.call(this.element) : this.config.title), t
            }, e._getPopperConfig = function(t) {
                var e = this;
                return o({}, {
                    placement: t,
                    modifiers: {
                        offset: this._getOffset(),
                        flip: {
                            behavior: this.config.fallbackPlacement
                        },
                        arrow: {
                            element: ".arrow"
                        },
                        preventOverflow: {
                            boundariesElement: this.config.boundary
                        }
                    },
                    onCreate: function(t) {
                        t.originalPlacement !== t.placement && e._handlePopperPlacementChange(t)
                    },
                    onUpdate: function(t) {
                        return e._handlePopperPlacementChange(t)
                    }
                }, this.config.popperConfig)
            }, e._getOffset = function() {
                var t = this,
                    e = {};
                return "function" == typeof this.config.offset ? e.fn = function(e) {
                    return e.offsets = o({}, e.offsets, t.config.offset(e.offsets, t.element) || {}), e
                } : e.offset = this.config.offset, e
            }, e._getContainer = function() {
                return !1 === this.config.container ? document.body : a.isElement(this.config.container) ? n.default(this.config.container) : n.default(document).find(this.config.container)
            }, e._getAttachment = function(t) {
                return Bt[t.toUpperCase()]
            }, e._setListeners = function() {
                var t = this;
                this.config.trigger.split(" ").forEach((function(e) {
                    if ("click" === e) n.default(t.element).on(t.constructor.Event.CLICK, t.config.selector, (function(e) {
                        return t.toggle(e)
                    }));
                    else if ("manual" !== e) {
                        var i = "hover" === e ? t.constructor.Event.MOUSEENTER : t.constructor.Event.FOCUSIN,
                            r = "hover" === e ? t.constructor.Event.MOUSELEAVE : t.constructor.Event.FOCUSOUT;
                        n.default(t.element).on(i, t.config.selector, (function(e) {
                            return t._enter(e)
                        })).on(r, t.config.selector, (function(e) {
                            return t._leave(e)
                        }))
                    }
                })), this._hideModalHandler = function() {
                    t.element && t.hide()
                }, n.default(this.element).closest(".modal").on("hide.bs.modal", this._hideModalHandler), this.config.selector ? this.config = o({}, this.config, {
                    trigger: "manual",
                    selector: ""
                }) : this._fixTitle()
            }, e._fixTitle = function() {
                var t = typeof this.element.getAttribute("data-original-title");
                (this.element.getAttribute("title") || "string" !== t) && (this.element.setAttribute("data-original-title", this.element.getAttribute("title") || ""), this.element.setAttribute("title", ""))
            }, e._enter = function(t, e) {
                var i = this.constructor.DATA_KEY;
                (e = e || n.default(t.currentTarget).data(i)) || (e = new this.constructor(t.currentTarget, this._getDelegateConfig()), n.default(t.currentTarget).data(i, e)), t && (e._activeTrigger["focusin" === t.type ? "focus" : "hover"] = !0), n.default(e.getTipElement()).hasClass("show") || "show" === e._hoverState ? e._hoverState = "show" : (clearTimeout(e._timeout), e._hoverState = "show", e.config.delay && e.config.delay.show ? e._timeout = setTimeout((function() {
                    "show" === e._hoverState && e.show()
                }), e.config.delay.show) : e.show())
            }, e._leave = function(t, e) {
                var i = this.constructor.DATA_KEY;
                (e = e || n.default(t.currentTarget).data(i)) || (e = new this.constructor(t.currentTarget, this._getDelegateConfig()), n.default(t.currentTarget).data(i, e)), t && (e._activeTrigger["focusout" === t.type ? "focus" : "hover"] = !1), e._isWithActiveTrigger() || (clearTimeout(e._timeout), e._hoverState = "out", e.config.delay && e.config.delay.hide ? e._timeout = setTimeout((function() {
                    "out" === e._hoverState && e.hide()
                }), e.config.delay.hide) : e.hide())
            }, e._isWithActiveTrigger = function() {
                for (var t in this._activeTrigger)
                    if (this._activeTrigger[t]) return !0;
                return !1
            }, e._getConfig = function(t) {
                var e = n.default(this.element).data();
                return Object.keys(e).forEach((function(t) {
                    -1 !== zt.indexOf(t) && delete e[t]
                })), "number" == typeof(t = o({}, this.constructor.Default, e, "object" == typeof t && t ? t : {})).delay && (t.delay = {
                    show: t.delay,
                    hide: t.delay
                }), "number" == typeof t.title && (t.title = t.title.toString()), "number" == typeof t.content && (t.content = t.content.toString()), a.typeCheckConfig(Rt, t, this.constructor.DefaultType), t.sanitize && (t.template = Ft(t.template, t.whiteList, t.sanitizeFn)), t
            }, e._getDelegateConfig = function() {
                var t = {};
                if (this.config)
                    for (var e in this.config) this.constructor.Default[e] !== this.config[e] && (t[e] = this.config[e]);
                return t
            }, e._cleanTipClass = function() {
                var t = n.default(this.getTipElement()),
                    e = t.attr("class").match($t);
                null !== e && e.length && t.removeClass(e.join(""))
            }, e._handlePopperPlacementChange = function(t) {
                this.tip = t.instance.popper, this._cleanTipClass(), this.addAttachmentClass(this._getAttachment(t.placement))
            }, e._fixTransition = function() {
                var t = this.getTipElement(),
                    e = this.config.animation;
                null === t.getAttribute("x-placement") && (n.default(t).removeClass("fade"), this.config.animation = !1, this.hide(), this.show(), this.config.animation = e)
            }, t._jQueryInterface = function(e) {
                return this.each((function() {
                    var i = n.default(this),
                        r = i.data("bs.tooltip"),
                        o = "object" == typeof e && e;
                    if ((r || !/dispose|hide/.test(e)) && (r || (r = new t(this, o), i.data("bs.tooltip", r)), "string" == typeof e)) {
                        if (void 0 === r[e]) throw new TypeError('No method named "' + e + '"');
                        r[e]()
                    }
                }))
            }, r(t, null, [{
                key: "VERSION",
                get: function() {
                    return "4.6.0"
                }
            }, {
                key: "Default",
                get: function() {
                    return qt
                }
            }, {
                key: "NAME",
                get: function() {
                    return Rt
                }
            }, {
                key: "DATA_KEY",
                get: function() {
                    return "bs.tooltip"
                }
            }, {
                key: "Event",
                get: function() {
                    return Wt
                }
            }, {
                key: "EVENT_KEY",
                get: function() {
                    return ".bs.tooltip"
                }
            }, {
                key: "DefaultType",
                get: function() {
                    return Ht
                }
            }]), t
        }();
    n.default.fn[Rt] = Ut._jQueryInterface, n.default.fn[Rt].Constructor = Ut, n.default.fn[Rt].noConflict = function() {
        return n.default.fn[Rt] = jt, Ut._jQueryInterface
    };
    var Vt = "popover",
        Yt = n.default.fn[Vt],
        Gt = new RegExp("(^|\\s)bs-popover\\S+", "g"),
        Xt = o({}, Ut.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>'
        }),
        Qt = o({}, Ut.DefaultType, {
            content: "(string|element|function)"
        }),
        Kt = {
            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"
        },
        Jt = function(t) {
            var e, i;

            function o() {
                return t.apply(this, arguments) || this
            }
            i = t, (e = o).prototype = Object.create(i.prototype), e.prototype.constructor = e, e.__proto__ = i;
            var a = o.prototype;
            return a.isWithContent = function() {
                return this.getTitle() || this._getContent()
            }, a.addAttachmentClass = function(t) {
                n.default(this.getTipElement()).addClass("bs-popover-" + t)
            }, a.getTipElement = function() {
                return this.tip = this.tip || n.default(this.config.template)[0], this.tip
            }, a.setContent = function() {
                var t = n.default(this.getTipElement());
                this.setElementContent(t.find(".popover-header"), this.getTitle());
                var e = this._getContent();
                "function" == typeof e && (e = e.call(this.element)), this.setElementContent(t.find(".popover-body"), e), t.removeClass("fade show")
            }, a._getContent = function() {
                return this.element.getAttribute("data-content") || this.config.content
            }, a._cleanTipClass = function() {
                var t = n.default(this.getTipElement()),
                    e = t.attr("class").match(Gt);
                null !== e && e.length > 0 && t.removeClass(e.join(""))
            }, o._jQueryInterface = function(t) {
                return this.each((function() {
                    var e = n.default(this).data("bs.popover"),
                        i = "object" == typeof t ? t : null;
                    if ((e || !/dispose|hide/.test(t)) && (e || (e = new o(this, i), n.default(this).data("bs.popover", e)), "string" == typeof t)) {
                        if (void 0 === e[t]) throw new TypeError('No method named "' + t + '"');
                        e[t]()
                    }
                }))
            }, r(o, null, [{
                key: "VERSION",
                get: function() {
                    return "4.6.0"
                }
            }, {
                key: "Default",
                get: function() {
                    return Xt
                }
            }, {
                key: "NAME",
                get: function() {
                    return Vt
                }
            }, {
                key: "DATA_KEY",
                get: function() {
                    return "bs.popover"
                }
            }, {
                key: "Event",
                get: function() {
                    return Kt
                }
            }, {
                key: "EVENT_KEY",
                get: function() {
                    return ".bs.popover"
                }
            }, {
                key: "DefaultType",
                get: function() {
                    return Qt
                }
            }]), o
        }(Ut);
    n.default.fn[Vt] = Jt._jQueryInterface, n.default.fn[Vt].Constructor = Jt, n.default.fn[Vt].noConflict = function() {
        return n.default.fn[Vt] = Yt, Jt._jQueryInterface
    };
    var Zt = "scrollspy",
        te = n.default.fn[Zt],
        ee = {
            offset: 10,
            method: "auto",
            target: ""
        },
        ne = {
            offset: "number",
            method: "string",
            target: "(string|element)"
        },
        ie = function() {
            function t(t, e) {
                var i = this;
                this._element = t, this._scrollElement = "BODY" === t.tagName ? window : t, this._config = this._getConfig(e), 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, n.default(this._scrollElement).on("scroll.bs.scrollspy", (function(t) {
                    return i._process(t)
                })), this.refresh(), this._process()
            }
            var e = t.prototype;
            return e.refresh = function() {
                var t = this,
                    e = this._scrollElement === this._scrollElement.window ? "offset" : "position",
                    i = "auto" === this._config.method ? e : 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(t) {
                    var e, o = a.getSelectorFromElement(t);
                    if (o && (e = document.querySelector(o)), e) {
                        var s = e.getBoundingClientRect();
                        if (s.width || s.height) return [n.default(e)[i]().top + r, o]
                    }
                    return null
                })).filter((function(t) {
                    return t
                })).sort((function(t, e) {
                    return t[0] - e[0]
                })).forEach((function(e) {
                    t._offsets.push(e[0]), t._targets.push(e[1])
                }))
            }, e.dispose = function() {
                n.default.removeData(this._element, "bs.scrollspy"), n.default(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
            }, e._getConfig = function(t) {
                if ("string" != typeof(t = o({}, ee, "object" == typeof t && t ? t : {})).target && a.isElement(t.target)) {
                    var e = n.default(t.target).attr("id");
                    e || (e = a.getUID(Zt), n.default(t.target).attr("id", e)), t.target = "#" + e
                }
                return a.typeCheckConfig(Zt, t, ne), t
            }, e._getScrollTop = function() {
                return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop
            }, e._getScrollHeight = function() {
                return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight)
            }, e._getOffsetHeight = function() {
                return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height
            }, e._process = function() {
                var t = this._getScrollTop() + this._config.offset,
                    e = this._getScrollHeight(),
                    n = this._config.offset + e - this._getOffsetHeight();
                if (this._scrollHeight !== e && this.refresh(), t >= n) {
                    var i = this._targets[this._targets.length - 1];
                    this._activeTarget !== i && this._activate(i)
                } else {
                    if (this._activeTarget && t < 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] && t >= this._offsets[r] && (void 0 === this._offsets[r + 1] || t < this._offsets[r + 1]) && this._activate(this._targets[r])
                }
            }, e._activate = function(t) {
                this._activeTarget = t, this._clear();
                var e = this._selector.split(",").map((function(e) {
                        return e + '[data-target="' + t + '"],' + e + '[href="' + t + '"]'
                    })),
                    i = n.default([].slice.call(document.querySelectorAll(e.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")), n.default(this._scrollElement).trigger("activate.bs.scrollspy", {
                    relatedTarget: t
                })
            }, e._clear = function() {
                [].slice.call(document.querySelectorAll(this._selector)).filter((function(t) {
                    return t.classList.contains("active")
                })).forEach((function(t) {
                    return t.classList.remove("active")
                }))
            }, t._jQueryInterface = function(e) {
                return this.each((function() {
                    var i = n.default(this).data("bs.scrollspy");
                    if (i || (i = new t(this, "object" == typeof e && e), n.default(this).data("bs.scrollspy", i)), "string" == typeof e) {
                        if (void 0 === i[e]) throw new TypeError('No method named "' + e + '"');
                        i[e]()
                    }
                }))
            }, r(t, null, [{
                key: "VERSION",
                get: function() {
                    return "4.6.0"
                }
            }, {
                key: "Default",
                get: function() {
                    return ee
                }
            }]), t
        }();
    n.default(window).on("load.bs.scrollspy.data-api", (function() {
        for (var t = [].slice.call(document.querySelectorAll('[data-spy="scroll"]')), e = t.length; e--;) {
            var i = n.default(t[e]);
            ie._jQueryInterface.call(i, i.data())
        }
    })), n.default.fn[Zt] = ie._jQueryInterface, n.default.fn[Zt].Constructor = ie, n.default.fn[Zt].noConflict = function() {
        return n.default.fn[Zt] = te, ie._jQueryInterface
    };
    var re = n.default.fn.tab,
        oe = function() {
            function t(t) {
                this._element = t
            }
            var e = t.prototype;
            return e.show = function() {
                var t = this;
                if (!(this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && n.default(this._element).hasClass("active") || n.default(this._element).hasClass("disabled"))) {
                    var e, i, r = n.default(this._element).closest(".nav, .list-group")[0],
                        o = a.getSelectorFromElement(this._element);
                    if (r) {
                        var s = "UL" === r.nodeName || "OL" === r.nodeName ? "> li > .active" : ".active";
                        i = (i = n.default.makeArray(n.default(r).find(s)))[i.length - 1]
                    }
                    var l = n.default.Event("hide.bs.tab", {
                            relatedTarget: this._element
                        }),
                        c = n.default.Event("show.bs.tab", {
                            relatedTarget: i
                        });
                    if (i && n.default(i).trigger(l), n.default(this._element).trigger(c), !c.isDefaultPrevented() && !l.isDefaultPrevented()) {
                        o && (e = document.querySelector(o)), this._activate(this._element, r);
                        var u = function() {
                            var e = n.default.Event("hidden.bs.tab", {
                                    relatedTarget: t._element
                                }),
                                r = n.default.Event("shown.bs.tab", {
                                    relatedTarget: i
                                });
                            n.default(i).trigger(e), n.default(t._element).trigger(r)
                        };
                        e ? this._activate(e, e.parentNode, u) : u()
                    }
                }
            }, e.dispose = function() {
                n.default.removeData(this._element, "bs.tab"), this._element = null
            }, e._activate = function(t, e, i) {
                var r = this,
                    o = (!e || "UL" !== e.nodeName && "OL" !== e.nodeName ? n.default(e).children(".active") : n.default(e).find("> li > .active"))[0],
                    s = i && o && n.default(o).hasClass("fade"),
                    l = function() {
                        return r._transitionComplete(t, o, i)
                    };
                if (o && s) {
                    var c = a.getTransitionDurationFromElement(o);
                    n.default(o).removeClass("show").one(a.TRANSITION_END, l).emulateTransitionEnd(c)
                } else l()
            }, e._transitionComplete = function(t, e, i) {
                if (e) {
                    n.default(e).removeClass("active");
                    var r = n.default(e.parentNode).find("> .dropdown-menu .active")[0];
                    r && n.default(r).removeClass("active"), "tab" === e.getAttribute("role") && e.setAttribute("aria-selected", !1)
                }
                if (n.default(t).addClass("active"), "tab" === t.getAttribute("role") && t.setAttribute("aria-selected", !0), a.reflow(t), t.classList.contains("fade") && t.classList.add("show"), t.parentNode && n.default(t.parentNode).hasClass("dropdown-menu")) {
                    var o = n.default(t).closest(".dropdown")[0];
                    if (o) {
                        var s = [].slice.call(o.querySelectorAll(".dropdown-toggle"));
                        n.default(s).addClass("active")
                    }
                    t.setAttribute("aria-expanded", !0)
                }
                i && i()
            }, t._jQueryInterface = function(e) {
                return this.each((function() {
                    var i = n.default(this),
                        r = i.data("bs.tab");
                    if (r || (r = new t(this), i.data("bs.tab", r)), "string" == typeof e) {
                        if (void 0 === r[e]) throw new TypeError('No method named "' + e + '"');
                        r[e]()
                    }
                }))
            }, r(t, null, [{
                key: "VERSION",
                get: function() {
                    return "4.6.0"
                }
            }]), t
        }();
    n.default(document).on("click.bs.tab.data-api", '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]', (function(t) {
        t.preventDefault(), oe._jQueryInterface.call(n.default(this), "show")
    })), n.default.fn.tab = oe._jQueryInterface, n.default.fn.tab.Constructor = oe, n.default.fn.tab.noConflict = function() {
        return n.default.fn.tab = re, oe._jQueryInterface
    };
    var ae = n.default.fn.toast,
        se = {
            animation: "boolean",
            autohide: "boolean",
            delay: "number"
        },
        le = {
            animation: !0,
            autohide: !0,
            delay: 500
        },
        ce = function() {
            function t(t, e) {
                this._element = t, this._config = this._getConfig(e), this._timeout = null, this._setListeners()
            }
            var e = t.prototype;
            return e.show = function() {
                var t = this,
                    e = n.default.Event("show.bs.toast");
                if (n.default(this._element).trigger(e), !e.isDefaultPrevented()) {
                    this._clearTimeout(), this._config.animation && this._element.classList.add("fade");
                    var i = function() {
                        t._element.classList.remove("showing"), t._element.classList.add("show"), n.default(t._element).trigger("shown.bs.toast"), t._config.autohide && (t._timeout = setTimeout((function() {
                            t.hide()
                        }), t._config.delay))
                    };
                    if (this._element.classList.remove("hide"), a.reflow(this._element), this._element.classList.add("showing"), this._config.animation) {
                        var r = a.getTransitionDurationFromElement(this._element);
                        n.default(this._element).one(a.TRANSITION_END, i).emulateTransitionEnd(r)
                    } else i()
                }
            }, e.hide = function() {
                if (this._element.classList.contains("show")) {
                    var t = n.default.Event("hide.bs.toast");
                    n.default(this._element).trigger(t), t.isDefaultPrevented() || this._close()
                }
            }, e.dispose = function() {
                this._clearTimeout(), this._element.classList.contains("show") && this._element.classList.remove("show"), n.default(this._element).off("click.dismiss.bs.toast"), n.default.removeData(this._element, "bs.toast"), this._element = null, this._config = null
            }, e._getConfig = function(t) {
                return t = o({}, le, n.default(this._element).data(), "object" == typeof t && t ? t : {}), a.typeCheckConfig("toast", t, this.constructor.DefaultType), t
            }, e._setListeners = function() {
                var t = this;
                n.default(this._element).on("click.dismiss.bs.toast", '[data-dismiss="toast"]', (function() {
                    return t.hide()
                }))
            }, e._close = function() {
                var t = this,
                    e = function() {
                        t._element.classList.add("hide"), n.default(t._element).trigger("hidden.bs.toast")
                    };
                if (this._element.classList.remove("show"), this._config.animation) {
                    var i = a.getTransitionDurationFromElement(this._element);
                    n.default(this._element).one(a.TRANSITION_END, e).emulateTransitionEnd(i)
                } else e()
            }, e._clearTimeout = function() {
                clearTimeout(this._timeout), this._timeout = null
            }, t._jQueryInterface = function(e) {
                return this.each((function() {
                    var i = n.default(this),
                        r = i.data("bs.toast");
                    if (r || (r = new t(this, "object" == typeof e && e), i.data("bs.toast", r)), "string" == typeof e) {
                        if (void 0 === r[e]) throw new TypeError('No method named "' + e + '"');
                        r[e](this)
                    }
                }))
            }, r(t, null, [{
                key: "VERSION",
                get: function() {
                    return "4.6.0"
                }
            }, {
                key: "DefaultType",
                get: function() {
                    return se
                }
            }, {
                key: "Default",
                get: function() {
                    return le
                }
            }]), t
        }();
    n.default.fn.toast = ce._jQueryInterface, n.default.fn.toast.Constructor = ce, n.default.fn.toast.noConflict = function() {
        return n.default.fn.toast = ae, ce._jQueryInterface
    }, t.Alert = c, t.Button = d, t.Carousel = v, t.Collapse = _, t.Dropdown = Dt, t.Modal = It, t.Popover = Jt, t.Scrollspy = ie, t.Tab = oe, t.Toast = ce, t.Tooltip = Ut, t.Util = a, Object.defineProperty(t, "__esModule", {
        value: !0
    })
}));
var NioApp = function(t, e) {
    "use strict";
    var n = e(window),
        i = e("body"),
        r = "lite-dash";

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

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

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

    function s(e) {
        e = "object" == typeof e ? t : e, r.onResize.concat(r.onResizeDefer).forEach((function(t) {
            null != t && t(e)
        }))
    }
    return t(n).ready(o), t(e).on("load", a), t(e).on("resize", s), i.coms = r, i.docReady = o, i.winLoad = a, i.onResize = s, i
}(jQuery, window, document), jQuery);
! function(t, e) {
    "object" == typeof exports && "undefined" != typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : (t = t || self).SimpleBar = e()
}(this, (function() {
    "use strict";
    var t = "undefined" != typeof globalThis ? globalThis : "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : {};

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

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

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

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

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

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

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

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

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

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

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

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

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

            function v() {
                var t = ri(),
                    n = p(t);
                if (i = arguments, r = this, l = t, n) {
                    if (void 0 === s) return function(t) {
                        return c = t, s = setTimeout(g, e), u ? f(t) : a
                    }(l);
                    if (d) return s = setTimeout(g, e), f(l)
                }
                return void 0 === s && (s = setTimeout(g, e)), a
            }
            return e = ai(e) || 0, oi(n) && (u = !!n.leading, o = (d = "maxWait" in n) ? ni(ai(n.maxWait) || 0, e) : 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 t && t && t.Object === Object && t,
        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 t = /[^.]+$/.exec(mi && mi.keys && mi.keys.IE_PROTO || "");
            return t ? "Symbol(src)_1." + t : ""
        }(),
        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,
        Si = Mi(hi, "Map"),
        Ci = Mi(Object, "create");

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

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

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

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

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

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

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

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

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

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

                    function a() {
                        Ri(o)
                    }

                    function s() {
                        var t = Date.now();
                        if (n) {
                            if (t - r < 2) return;
                            i = !0
                        } else n = !0, i = !1, setTimeout(a, 20);
                        r = t
                    }
                    return s
                }(this.refresh.bind(this))
            }
            return t.prototype.addObserver = function(t) {
                ~this.observers_.indexOf(t) || this.observers_.push(t), this.connected_ || this.connect_()
            }, t.prototype.removeObserver = function(t) {
                var e = this.observers_,
                    n = e.indexOf(t);
                ~n && e.splice(n, 1), !e.length && this.connected_ && this.disconnect_()
            }, t.prototype.refresh = function() {
                this.updateObservers_() && this.refresh()
            }, t.prototype.updateObservers_ = function() {
                var t = this.observers_.filter((function(t) {
                    return t.gatherActive(), t.hasActive()
                }));
                return t.forEach((function(t) {
                    return t.broadcastActive()
                })), t.length > 0
            }, t.prototype.connect_ = function() {
                Ni && !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)
            }, t.prototype.disconnect_ = function() {
                Ni && 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)
            }, t.prototype.onTransitionEnd_ = function(t) {
                var e = t.propertyName,
                    n = void 0 === e ? "" : e;
                ji.some((function(t) {
                    return !!~n.indexOf(t)
                })) && this.refresh()
            }, t.getInstance = function() {
                return this.instance_ || (this.instance_ = new t), this.instance_
            }, t.instance_ = null, t
        }(),
        Hi = function(t, e) {
            for (var n = 0, i = Object.keys(e); n < i.length; n++) {
                var r = i[n];
                Object.defineProperty(t, r, {
                    value: e[r],
                    enumerable: !1,
                    writable: !1,
                    configurable: !0
                })
            }
            return t
        },
        Bi = function(t) {
            return t && t.ownerDocument && t.ownerDocument.defaultView || Fi
        },
        qi = Gi(0, 0, 0, 0);

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

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

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

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

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

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

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

    function Pr(t) {
        return t && t.ownerDocument ? t.ownerDocument : document
    }
    var Lr = function() {
        function t(e, n) {
            var i = this;
            this.onScroll = function() {
                var t = Ir(i.el);
                i.scrollXTicking || (t.requestAnimationFrame(i.scrollX), i.scrollXTicking = !0), i.scrollYTicking || (t.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(t) {
                i.mouseX = t.clientX, i.mouseY = t.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(t) {
                var e, 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) && (e = i.isWithinBounds(i.axis.x.track.rect)), (i.axis.y.isOverflowing || i.axis.y.forceVisible) && (n = i.isWithinBounds(i.axis.y.track.rect)), (e || n) && (t.preventDefault(), t.stopPropagation(), "mousedown" === t.type && (e && (i.axis.x.scrollbar.rect = i.axis.x.scrollbar.el.getBoundingClientRect(), i.isWithinBounds(i.axis.x.scrollbar.rect) ? i.onDragStart(t, "x") : i.onTrackClick(t, "x")), n && (i.axis.y.scrollbar.rect = i.axis.y.scrollbar.el.getBoundingClientRect(), i.isWithinBounds(i.axis.y.scrollbar.rect) ? i.onDragStart(t, "y") : i.onTrackClick(t, "y"))))
            }, this.drag = function(e) {
                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);
                e.preventDefault(), e.stopPropagation();
                var l = (("y" === i.draggedAxis ? e.pageY : e.pageX) - n.rect[i.axis[i.draggedAxis].offsetAttr] - i.axis[i.draggedAxis].dragOffset) / (r - o.size) * (a - s);
                "x" === i.draggedAxis && (l = i.isRtl && t.getRtlHelpers().isRtlScrollbarInverted ? l - (r + o.size) : l, l = i.isRtl && t.getRtlHelpers().isRtlScrollingInverted ? -l : l), i.contentWrapperEl[i.axis[i.draggedAxis].scrollOffsetAttr] = l
            }, this.onEndDrag = function(t) {
                var e = Pr(i.el),
                    n = Ir(i.el);
                t.preventDefault(), t.stopPropagation(), i.el.classList.remove(i.classNames.dragging), e.removeEventListener("mousemove", i.drag, !0), e.removeEventListener("mouseup", i.onEndDrag, !0), i.removePreventClickId = n.setTimeout((function() {
                    e.removeEventListener("click", i.preventClick, !0), e.removeEventListener("dblclick", i.preventClick, !0), i.removePreventClickId = null
                }))
            }, this.preventClick = function(t) {
                t.preventDefault(), t.stopPropagation()
            }, this.el = e, this.minScrollbarWidth = 20, this.options = Object.assign({}, t.defaultOptions, {}, n), this.classNames = Object.assign({}, t.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, t.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
            }), t.getRtlHelpers = Pi(t.getRtlHelpers), this.init())
        }
        t.getRtlHelpers = function() {
            var e = document.createElement("div");
            e.innerHTML = '<div class="hs-dummy-scrollbar-size"><div style="height: 200%; width: 200%; margin: 10px 0;"></div></div>';
            var n = e.firstElementChild;
            document.body.appendChild(n);
            var i = n.firstElementChild;
            n.scrollLeft = 0;
            var r = t.getOffset(n),
                o = t.getOffset(i);
            n.scrollLeft = 999;
            var a = t.getOffset(i);
            return {
                isRtlScrollingInverted: r.left !== o.left && o.left - a.left != 0,
                isRtlScrollbarInverted: r.left !== o.left
            }
        }, t.getOffset = function(t) {
            var e = t.getBoundingClientRect(),
                n = Pr(t),
                i = Ir(t);
            return {
                top: e.top + (i.pageYOffset || n.documentElement.scrollTop),
                left: e.left + (i.pageXOffset || n.documentElement.scrollLeft)
            }
        };
        var e = t.prototype;
        return e.init = function() {
            t.instances.set(this.el, this), Yt && (this.initDOM(), this.scrollbarWidth = this.getScrollbarWidth(), this.recalculate(), this.initListeners())
        }, e.initDOM = function() {
            var t = this;
            if (Array.prototype.filter.call(this.el.children, (function(e) {
                    return e.classList.contains(t.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 e = document.createElement("div"),
                    n = document.createElement("div");
                e.classList.add(this.classNames.track), n.classList.add(this.classNames.scrollbar), e.appendChild(n), this.axis.x.track.el = e.cloneNode(!0), this.axis.x.track.el.classList.add(this.classNames.horizontal), this.axis.y.track.el = e.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")
        }, e.initListeners = function() {
            var t = this,
                e = Ir(this.el);
            this.options.autoHide && this.el.addEventListener("mouseenter", this.onMouseEnter), ["mousedown", "click", "dblclick"].forEach((function(e) {
                t.el.addEventListener(e, t.onPointerEvent, !0)
            })), ["touchstart", "touchend", "touchmove"].forEach((function(e) {
                t.el.addEventListener(e, t.onPointerEvent, {
                    capture: !0,
                    passive: !0
                })
            })), this.el.addEventListener("mousemove", this.onMouseMove), this.el.addEventListener("mouseleave", this.onMouseLeave), this.contentWrapperEl.addEventListener("scroll", this.onScroll), e.addEventListener("resize", this.onWindowResize);
            var n = !1,
                i = e.ResizeObserver || tr;
            this.resizeObserver = new i((function() {
                n && t.recalculate()
            })), this.resizeObserver.observe(this.el), this.resizeObserver.observe(this.contentEl), e.requestAnimationFrame((function() {
                n = !0
            })), this.mutationObserver = new e.MutationObserver(this.recalculate), this.mutationObserver.observe(this.contentEl, {
                childList: !0,
                subtree: !0,
                characterData: !0
            })
        }, e.recalculate = function() {
            var t = Ir(this.el);
            this.elStyles = t.getComputedStyle(this.el), this.isRtl = "rtl" === this.elStyles.direction;
            var e = 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 = e ? "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")
        }, e.getScrollbarSize = function(t) {
            if (void 0 === t && (t = "y"), !this.axis[t].isOverflowing) return 0;
            var e, n = this.contentEl[this.axis[t].scrollSizeAttr],
                i = this.axis[t].track.el[this.axis[t].offsetSizeAttr],
                r = i / n;
            return e = Math.max(~~(r * i), this.options.scrollbarMinSize), this.options.scrollbarMaxSize && (e = Math.min(e, this.options.scrollbarMaxSize)), e
        }, e.positionScrollbar = function(e) {
            if (void 0 === e && (e = "y"), this.axis[e].isOverflowing) {
                var n = this.contentWrapperEl[this.axis[e].scrollSizeAttr],
                    i = this.axis[e].track.el[this.axis[e].offsetSizeAttr],
                    r = parseInt(this.elStyles[this.axis[e].sizeAttr], 10),
                    o = this.axis[e].scrollbar,
                    a = this.contentWrapperEl[this.axis[e].scrollOffsetAttr],
                    s = (a = "x" === e && this.isRtl && t.getRtlHelpers().isRtlScrollingInverted ? -a : a) / (n - r),
                    l = ~~((i - o.size) * s);
                l = "x" === e && this.isRtl && t.getRtlHelpers().isRtlScrollbarInverted ? l + (i - o.size) : l, o.el.style.transform = "x" === e ? "translate3d(" + l + "px, 0, 0)" : "translate3d(0, " + l + "px, 0)"
            }
        }, e.toggleTrackVisibility = function(t) {
            void 0 === t && (t = "y");
            var e = this.axis[t].track.el,
                n = this.axis[t].scrollbar.el;
            this.axis[t].isOverflowing || this.axis[t].forceVisible ? (e.style.visibility = "visible", this.contentWrapperEl.style[this.axis[t].overflowAttr] = "scroll") : (e.style.visibility = "hidden", this.contentWrapperEl.style[this.axis[t].overflowAttr] = "hidden"), this.axis[t].isOverflowing ? n.style.display = "block" : n.style.display = "none"
        }, e.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
        }, e.onMouseMoveForAxis = function(t) {
            void 0 === t && (t = "y"), this.axis[t].track.rect = this.axis[t].track.el.getBoundingClientRect(), this.axis[t].scrollbar.rect = this.axis[t].scrollbar.el.getBoundingClientRect(), this.isWithinBounds(this.axis[t].scrollbar.rect) ? this.axis[t].scrollbar.el.classList.add(this.classNames.hover) : this.axis[t].scrollbar.el.classList.remove(this.classNames.hover), this.isWithinBounds(this.axis[t].track.rect) ? (this.showScrollbar(t), this.axis[t].track.el.classList.add(this.classNames.hover)) : this.axis[t].track.el.classList.remove(this.classNames.hover)
        }, e.onMouseLeaveForAxis = function(t) {
            void 0 === t && (t = "y"), this.axis[t].track.el.classList.remove(this.classNames.hover), this.axis[t].scrollbar.el.classList.remove(this.classNames.hover)
        }, e.showScrollbar = function(t) {
            void 0 === t && (t = "y");
            var e = this.axis[t].scrollbar.el;
            this.axis[t].isVisible || (e.classList.add(this.classNames.visible), this.axis[t].isVisible = !0), this.options.autoHide && this.hideScrollbars()
        }, e.onDragStart = function(t, e) {
            void 0 === e && (e = "y");
            var n = Pr(this.el),
                i = Ir(this.el),
                r = this.axis[e].scrollbar,
                o = "y" === e ? t.pageY : t.pageX;
            this.axis[e].dragOffset = o - r.rect[this.axis[e].offsetAttr], this.draggedAxis = e, 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)
        }, e.onTrackClick = function(t, e) {
            var n = this;
            if (void 0 === e && (e = "y"), this.options.clickOnTrack) {
                var i = Ir(this.el);
                this.axis[e].scrollbar.rect = this.axis[e].scrollbar.el.getBoundingClientRect();
                var r = this.axis[e].scrollbar.rect[this.axis[e].offsetAttr],
                    o = parseInt(this.elStyles[this.axis[e].sizeAttr], 10),
                    a = this.contentWrapperEl[this.axis[e].scrollOffsetAttr],
                    s = ("y" === e ? this.mouseY - r : this.mouseX - r) < 0 ? -1 : 1,
                    l = -1 === s ? a - o : a + o;
                ! function t() {
                    var r, o; - 1 === s ? a > l && (a -= n.options.clickOnTrackSpeed, n.contentWrapperEl.scrollTo(((r = {})[n.axis[e].offsetAttr] = a, r)), i.requestAnimationFrame(t)) : a < l && (a += n.options.clickOnTrackSpeed, n.contentWrapperEl.scrollTo(((o = {})[n.axis[e].offsetAttr] = a, o)), i.requestAnimationFrame(t))
                }()
            }
        }, e.getContentElement = function() {
            return this.contentEl
        }, e.getScrollElement = function() {
            return this.contentWrapperEl
        }, e.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 (t) {
                return ir()
            }
        }, e.removeListeners = function() {
            var t = this,
                e = Ir(this.el);
            this.options.autoHide && this.el.removeEventListener("mouseenter", this.onMouseEnter), ["mousedown", "click", "dblclick"].forEach((function(e) {
                t.el.removeEventListener(e, t.onPointerEvent, !0)
            })), ["touchstart", "touchend", "touchmove"].forEach((function(e) {
                t.el.removeEventListener(e, t.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), e.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()
        }, e.unMount = function() {
            this.removeListeners(), t.instances.delete(this.el)
        }, e.isWithinBounds = function(t) {
            return this.mouseX >= t.left && this.mouseX <= t.left + t.width && this.mouseY >= t.top && this.mouseY <= t.top + t.height
        }, e.findChild = function(t, e) {
            var n = t.matches || t.webkitMatchesSelector || t.mozMatchesSelector || t.msMatchesSelector;
            return Array.prototype.filter.call(t.children, (function(t) {
                return n.call(t, e)
            }))[0]
        }, t
    }();
    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(t) {
            "init" === t.getAttribute("data-simplebar") || Lr.instances.has(t) || new Lr(t, Or(t.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(t) {
        t.forEach((function(t) {
            Array.prototype.forEach.call(t.addedNodes, (function(t) {
                1 === t.nodeType && (t.hasAttribute("data-simplebar") ? !Lr.instances.has(t) && new Lr(t, Or(t.attributes)) : Array.prototype.forEach.call(t.querySelectorAll("[data-simplebar]"), (function(t) {
                    "init" === t.getAttribute("data-simplebar") || Lr.instances.has(t) || new Lr(t, Or(t.attributes))
                })))
            })), Array.prototype.forEach.call(t.removedNodes, (function(t) {
                1 === t.nodeType && (t.hasAttribute('[data-simplebar="init"]') ? Lr.instances.has(t) && Lr.instances.get(t).unMount() : Array.prototype.forEach.call(t.querySelectorAll('[data-simplebar="init"]'), (function(t) {
                    Lr.instances.has(t) && Lr.instances.get(t).unMount()
                })))
            }))
        }))
    }, Lr.getOptions = Or, Yt && Lr.initHtmlApi(), Lr
})),
function(t) {
    "function" == typeof define && define.amd ? define(["jquery"], t) : "object" == typeof module && module.exports ? module.exports = function(e, n) {
        return void 0 === n && (n = "undefined" != typeof window ? require("jquery") : require("jquery")(e)), t(n), n
    } : t(jQuery)
}((function(t) {
    var e = function() {
            if (t && t.fn && t.fn.select2 && t.fn.select2.amd) var e = t.fn.select2.amd;
            var n, i, r, o, a, s, l, c, u, d, h, f, p, g, m, v;

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

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

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

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

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

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

            function C(t) {
                return t ? S(t) : []
            }
            return e && e.requirejs || (e ? i = e : e = {}, u = {}, d = {}, h = {}, f = {}, p = Object.prototype.hasOwnProperty, g = [].slice, m = /\.js$/, l = function(t, e) {
                var n, i, r = S(t),
                    o = r[0],
                    a = e[1];
                return t = r[1], o && (n = _(o = b(o, a))), o ? t = n && n.normalize ? n.normalize(t, (i = a, function(t) {
                    return b(t, i)
                })) : b(t, a) : (o = (r = S(t = b(t, a)))[0], t = r[1], o && (n = _(o))), {
                    f: o ? o + "!" + t : t,
                    n: t,
                    pr: o,
                    p: n
                }
            }, c = {
                require: function(t) {
                    return w(t)
                },
                exports: function(t) {
                    var e = u[t];
                    return void 0 !== e ? e : u[t] = {}
                },
                module: function(t) {
                    return {
                        id: t,
                        uri: "",
                        exports: u[t],
                        config: (e = t, function() {
                            return h && h.config && h.config[e] || {}
                        })
                    };
                    var e
                }
            }, a = function(t, e, n, i) {
                var r, a, s, h, p, g, m, v = [],
                    b = typeof n;
                if (g = C(i = i || t), "undefined" == b || "function" == b) {
                    for (e = !e.length && n.length ? ["require", "exports", "module"] : e, p = 0; p < e.length; p += 1)
                        if ("require" === (a = (h = l(e[p], g)).f)) v[p] = c.require(t);
                        else if ("exports" === a) v[p] = c.exports(t), m = !0;
                    else if ("module" === a) r = v[p] = c.module(t);
                    else if (y(u, a) || y(d, a) || y(f, a)) v[p] = _(a);
                    else {
                        if (!h.p) throw new Error(t + " missing " + a);
                        h.p.load(h.n, w(i, !0), x(a), {}), v[p] = u[a]
                    }
                    s = n ? n.apply(u[t], v) : void 0, t && (r && r.exports !== o && r.exports !== u[t] ? u[t] = r.exports : s === o && m || (u[t] = s))
                } else t && (u[t] = n)
            }, n = i = s = function(t, e, n, i, r) {
                if ("string" == typeof t) return c[t] ? c[t](e) : _(l(t, C(e)).f);
                if (!t.splice) {
                    if ((h = t).deps && s(h.deps, h.callback), !e) return;
                    e.splice ? (t = e, e = n, n = null) : t = o
                }
                return e = e || function() {}, "function" == typeof n && (n = i, i = r), i ? a(o, t, e, n) : setTimeout((function() {
                    a(o, t, e, n)
                }), 4), s
            }, s.config = function(t) {
                return s(t)
            }, n._defined = u, (r = function(t, e, n) {
                if ("string" != typeof t) throw new Error("See almond README: incorrect module build, no module name");
                e.splice || (n = e, e = []), y(u, t) || y(d, t) || (d[t] = [t, e, n])
            }).amd = {
                jQuery: !0
            }, e.requirejs = n, e.require = i, e.define = r), e.define("almond", (function() {})), e.define("jquery", [], (function() {
                var e = t || $;
                return null == e && 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."), e
            })), e.define("select2/utils", ["jquery"], (function(t) {
                var e = {};

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

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

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

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

                    function l(t) {
                        var n = function() {};
                        t in o.prototype && (n = o.prototype[t]);
                        var i = e.prototype[t];
                        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(t, e) {
                    this.listeners = this.listeners || {}, t in this.listeners ? this.listeners[t].push(e) : this.listeners[t] = [e]
                }, i.prototype.trigger = function(t) {
                    var e = Array.prototype.slice,
                        n = e.call(arguments, 1);
                    this.listeners = this.listeners || {}, null == n && (n = []), 0 === n.length && n.push({}), (n[0]._type = t) in this.listeners && this.invoke(this.listeners[t], e.call(arguments, 1)), "*" in this.listeners && this.invoke(this.listeners["*"], arguments)
                }, i.prototype.invoke = function(t, e) {
                    for (var n = 0, i = t.length; n < i; n++) t[n].apply(this, e)
                }, e.Observable = i, e.generateChars = function(t) {
                    for (var e = "", n = 0; n < t; n++) e += Math.floor(36 * Math.random()).toString(36);
                    return e
                }, e.bind = function(t, e) {
                    return function() {
                        t.apply(e, arguments)
                    }
                }, e._convertData = function(t) {
                    for (var e in t) {
                        var n = e.split("-"),
                            i = t;
                        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] = t[e]), i = i[o]
                            }
                            delete t[e]
                        }
                    }
                    return t
                }, e.hasScroll = function(e, n) {
                    var i = t(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)
                }, e.escapeMarkup = function(t) {
                    var e = {
                        "\\": "&#92;",
                        "&": "&amp;",
                        "<": "&lt;",
                        ">": "&gt;",
                        '"': "&quot;",
                        "'": "&#39;",
                        "/": "&#47;"
                    };
                    return "string" != typeof t ? t : String(t).replace(/[&<>"'\/\\]/g, (function(t) {
                        return e[t]
                    }))
                }, e.appendMany = function(e, n) {
                    if ("1.7" === t.fn.jquery.substr(0, 3)) {
                        var i = t();
                        t.map(n, (function(t) {
                            i = i.add(t)
                        })), n = i
                    }
                    e.append(n)
                }, e.__cache = {};
                var r = 0;
                return e.GetUniqueElementId = function(t) {
                    var e = t.getAttribute("data-select2-id");
                    return null == e && (t.id ? (e = t.id, t.setAttribute("data-select2-id", e)) : (t.setAttribute("data-select2-id", ++r), e = r.toString())), e
                }, e.StoreData = function(t, n, i) {
                    var r = e.GetUniqueElementId(t);
                    e.__cache[r] || (e.__cache[r] = {}), e.__cache[r][n] = i
                }, e.GetData = function(n, i) {
                    var r = e.GetUniqueElementId(n);
                    return i ? e.__cache[r] && null != e.__cache[r][i] ? e.__cache[r][i] : t(n).data(i) : e.__cache[r]
                }, e.RemoveData = function(t) {
                    var n = e.GetUniqueElementId(t);
                    null != e.__cache[n] && delete e.__cache[n], t.removeAttribute("data-select2-id")
                }, e
            })), e.define("select2/results", ["jquery", "./utils"], (function(t, e) {
                function n(t, e, i) {
                    this.$element = t, this.data = i, this.options = e, n.__super__.constructor.call(this)
                }
                return e.Extend(n, e.Observable), n.prototype.render = function() {
                    var e = t('<ul class="select2-results__options" role="listbox"></ul>');
                    return this.options.get("multiple") && e.attr("aria-multiselectable", "true"), this.$results = e
                }, n.prototype.clear = function() {
                    this.$results.empty()
                }, n.prototype.displayMessage = function(e) {
                    var n = this.options.get("escapeMarkup");
                    this.clear(), this.hideLoading();
                    var i = t('<li role="alert" aria-live="assertive" class="select2-results__option"></li>'),
                        r = this.options.get("translations").get(e.message);
                    i.append(n(r(e.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(t) {
                    this.hideLoading();
                    var e = [];
                    if (null != t.results && 0 !== t.results.length) {
                        t.results = this.sort(t.results);
                        for (var n = 0; n < t.results.length; n++) {
                            var i = t.results[n],
                                r = this.option(i);
                            e.push(r)
                        }
                        this.$results.append(e)
                    } else 0 === this.$results.children().length && this.trigger("results:message", {
                        message: "noResults"
                    })
                }, n.prototype.position = function(t, e) {
                    e.find(".select2-results").append(t)
                }, n.prototype.sort = function(t) {
                    return this.options.get("sorter")(t)
                }, n.prototype.highlightFirstItem = function() {
                    var t = this.$results.find(".select2-results__option[aria-selected]"),
                        e = t.filter("[aria-selected=true]");
                    0 < e.length ? e.first().trigger("mouseenter") : t.first().trigger("mouseenter"), this.ensureHighlightVisible()
                }, n.prototype.setClasses = function() {
                    var n = this;
                    this.data.current((function(i) {
                        var r = t.map(i, (function(t) {
                            return t.id.toString()
                        }));
                        n.$results.find(".select2-results__option[aria-selected]").each((function() {
                            var n = t(this),
                                i = e.GetData(this, "data"),
                                o = "" + i.id;
                            null != i.element && i.element.selected || null == i.element && -1 < t.inArray(o, r) ? n.attr("aria-selected", "true") : n.attr("aria-selected", "false")
                        }))
                    }))
                }, n.prototype.showLoading = function(t) {
                    this.hideLoading();
                    var e = {
                            disabled: !0,
                            loading: !0,
                            text: this.options.get("translations").get("searching")(t)
                        },
                        n = this.option(e);
                    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 = t(i),
                            c = document.createElement("strong");
                        c.className = "select2-results__group", t(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 = t("<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 e.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(t) {
                        r.clear(), r.append(t.data), n.isOpen() && (r.setClasses(), r.highlightFirstItem())
                    })), n.on("results:append", (function(t) {
                        r.append(t.data), n.isOpen() && r.setClasses()
                    })), n.on("query", (function(t) {
                        r.hideMessages(), r.showLoading(t)
                    })), 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 t = r.getHighlightedResults();
                        0 !== t.length && t.trigger("mouseup")
                    })), n.on("results:select", (function() {
                        var t = r.getHighlightedResults();
                        if (0 !== t.length) {
                            var n = e.GetData(t[0], "data");
                            "true" == t.attr("aria-selected") ? r.trigger("close", {}) : r.trigger("select", {
                                data: n
                            })
                        }
                    })), n.on("results:previous", (function() {
                        var t = r.getHighlightedResults(),
                            e = r.$results.find("[aria-selected]"),
                            n = e.index(t);
                        if (!(n <= 0)) {
                            var i = n - 1;
                            0 === t.length && (i = 0);
                            var o = e.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 t = r.getHighlightedResults(),
                            e = r.$results.find("[aria-selected]"),
                            n = e.index(t) + 1;
                        if (!(n >= e.length)) {
                            var i = e.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(t) {
                        t.element.addClass("select2-results__option--highlighted")
                    })), n.on("results:message", (function(t) {
                        r.displayMessage(t)
                    })), t.fn.mousewheel && this.$results.on("mousewheel", (function(t) {
                        var e = r.$results.scrollTop(),
                            n = r.$results.get(0).scrollHeight - e + t.deltaY,
                            i = 0 < t.deltaY && e - t.deltaY <= 0,
                            o = t.deltaY < 0 && n <= r.$results.height();
                        i ? (r.$results.scrollTop(0), t.preventDefault(), t.stopPropagation()) : o && (r.$results.scrollTop(r.$results.get(0).scrollHeight - r.$results.height()), t.preventDefault(), t.stopPropagation())
                    })), this.$results.on("mouseup", ".select2-results__option[aria-selected]", (function(n) {
                        var i = t(this),
                            o = e.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 = e.GetData(this, "data");
                        r.getHighlightedResults().removeClass("select2-results__option--highlighted"), r.trigger("results:focus", {
                            data: i,
                            element: t(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 t = this.getHighlightedResults();
                    if (0 !== t.length) {
                        var e = this.$results.find("[aria-selected]").index(t),
                            n = this.$results.offset().top,
                            i = t.offset().top,
                            r = this.$results.scrollTop() + (i - n),
                            o = i - n;
                        r -= 2 * t.outerHeight(!1), e <= 2 ? this.$results.scrollTop(0) : (o > this.$results.outerHeight() || o < 0) && this.$results.scrollTop(r)
                    }
                }, n.prototype.template = function(e, n) {
                    var i = this.options.get("templateResult"),
                        r = this.options.get("escapeMarkup"),
                        o = i(e, n);
                    null == o ? n.style.display = "none" : "string" == typeof o ? n.innerHTML = r(o) : t(n).append(o)
                }, n
            })), e.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
                }
            })), e.define("select2/selection/base", ["jquery", "../utils", "../keys"], (function(t, e, n) {
                function i(t, e) {
                    this.$element = t, this.options = e, i.__super__.constructor.call(this)
                }
                return e.Extend(i, e.Observable), i.prototype.render = function() {
                    var n = t('<span class="select2-selection" role="combobox"  aria-haspopup="true" aria-expanded="false"></span>');
                    return this._tabindex = 0, null != e.GetData(this.$element[0], "old-tabindex") ? this._tabindex = e.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(t, e) {
                    var i = this,
                        r = t.id + "-results";
                    this.container = t, this.$selection.on("focus", (function(t) {
                        i.trigger("focus", t)
                    })), this.$selection.on("blur", (function(t) {
                        i._handleBlur(t)
                    })), this.$selection.on("keydown", (function(t) {
                        i.trigger("keypress", t), t.which === n.SPACE && t.preventDefault()
                    })), t.on("results:focus", (function(t) {
                        i.$selection.attr("aria-activedescendant", t.data._resultId)
                    })), t.on("selection:update", (function(t) {
                        i.update(t.data)
                    })), t.on("open", (function() {
                        i.$selection.attr("aria-expanded", "true"), i.$selection.attr("aria-owns", r), i._attachCloseHandler(t)
                    })), t.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(t)
                    })), t.on("enable", (function() {
                        i.$selection.attr("tabindex", i._tabindex), i.$selection.attr("aria-disabled", "false")
                    })), t.on("disable", (function() {
                        i.$selection.attr("tabindex", "-1"), i.$selection.attr("aria-disabled", "true")
                    }))
                }, i.prototype._handleBlur = function(e) {
                    var n = this;
                    window.setTimeout((function() {
                        document.activeElement == n.$selection[0] || t.contains(n.$selection[0], document.activeElement) || n.trigger("blur", e)
                    }), 1)
                }, i.prototype._attachCloseHandler = function(n) {
                    t(document.body).on("mousedown.select2." + n.id, (function(n) {
                        var i = t(n.target).closest(".select2");
                        t(".select2.select2-container--open").each((function() {
                            this != i[0] && e.GetData(this, "element").select2("close")
                        }))
                    }))
                }, i.prototype._detachCloseHandler = function(e) {
                    t(document.body).off("mousedown.select2." + e.id)
                }, i.prototype.position = function(t, e) {
                    e.find(".selection").append(t)
                }, i.prototype.destroy = function() {
                    this._detachCloseHandler(this.container)
                }, i.prototype.update = function(t) {
                    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
            })), e.define("select2/selection/single", ["jquery", "./base", "../utils", "../keys"], (function(t, e, n, i) {
                function r() {
                    r.__super__.constructor.apply(this, arguments)
                }
                return n.Extend(r, e), r.prototype.render = function() {
                    var t = r.__super__.render.call(this);
                    return t.addClass("select2-selection--single"), t.html('<span class="select2-selection__rendered"></span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span>'), t
                }, r.prototype.bind = function(t, e) {
                    var n = this;
                    r.__super__.bind.apply(this, arguments);
                    var i = t.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(t) {
                        1 === t.which && n.trigger("toggle", {
                            originalEvent: t
                        })
                    })), this.$selection.on("focus", (function(t) {})), this.$selection.on("blur", (function(t) {})), t.on("focus", (function(e) {
                        t.isOpen() || n.$selection.trigger("focus")
                    }))
                }, r.prototype.clear = function() {
                    var t = this.$selection.find(".select2-selection__rendered");
                    t.empty(), t.removeAttr("title")
                }, r.prototype.display = function(t, e) {
                    var n = this.options.get("templateSelection");
                    return this.options.get("escapeMarkup")(n(t, e))
                }, r.prototype.selectionContainer = function() {
                    return t("<span></span>")
                }, r.prototype.update = function(t) {
                    if (0 !== t.length) {
                        var e = t[0],
                            n = this.$selection.find(".select2-selection__rendered"),
                            i = this.display(e, n);
                        n.empty().append(i);
                        var r = e.title || e.text;
                        r ? n.attr("title", r) : n.removeAttr("title")
                    } else this.clear()
                }, r
            })), e.define("select2/selection/multiple", ["jquery", "./base", "../utils"], (function(t, e, n) {
                function i(t, e) {
                    i.__super__.constructor.apply(this, arguments)
                }
                return n.Extend(i, e), i.prototype.render = function() {
                    var t = i.__super__.render.call(this);
                    return t.addClass("select2-selection--multiple"), t.html('<ul class="select2-selection__rendered"></ul>'), t
                }, i.prototype.bind = function(e, r) {
                    var o = this;
                    i.__super__.bind.apply(this, arguments), this.$selection.on("click", (function(t) {
                        o.trigger("toggle", {
                            originalEvent: t
                        })
                    })), this.$selection.on("click", ".select2-selection__choice__remove", (function(e) {
                        if (!o.isDisabled()) {
                            var i = t(this).parent(),
                                r = n.GetData(i[0], "data");
                            o.trigger("unselect", {
                                originalEvent: e,
                                data: r
                            })
                        }
                    }))
                }, i.prototype.clear = function() {
                    var t = this.$selection.find(".select2-selection__rendered");
                    t.empty(), t.removeAttr("title")
                }, i.prototype.display = function(t, e) {
                    var n = this.options.get("templateSelection");
                    return this.options.get("escapeMarkup")(n(t, e))
                }, i.prototype.selectionContainer = function() {
                    return t('<li class="select2-selection__choice"><span class="select2-selection__choice__remove" role="presentation">&times;</span></li>')
                }, i.prototype.update = function(t) {
                    if (this.clear(), 0 !== t.length) {
                        for (var e = [], i = 0; i < t.length; i++) {
                            var r = t[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), e.push(o)
                        }
                        var l = this.$selection.find(".select2-selection__rendered");
                        n.appendMany(l, e)
                    }
                }, i
            })), e.define("select2/selection/placeholder", ["../utils"], (function(t) {
                function e(t, e, n) {
                    this.placeholder = this.normalizePlaceholder(n.get("placeholder")), t.call(this, e, n)
                }
                return e.prototype.normalizePlaceholder = function(t, e) {
                    return "string" == typeof e && (e = {
                        id: "",
                        text: e
                    }), e
                }, e.prototype.createPlaceholder = function(t, e) {
                    var n = this.selectionContainer();
                    return n.html(this.display(e)), n.addClass("select2-selection__placeholder").removeClass("select2-selection__choice"), n
                }, e.prototype.update = function(t, e) {
                    var n = 1 == e.length && e[0].id != this.placeholder.id;
                    if (1 < e.length || n) return t.call(this, e);
                    this.clear();
                    var i = this.createPlaceholder(this.placeholder);
                    this.$selection.find(".select2-selection__rendered").append(i)
                }, e
            })), e.define("select2/selection/allowClear", ["jquery", "../keys", "../utils"], (function(t, e, n) {
                function i() {}
                return i.prototype.bind = function(t, e, n) {
                    var i = this;
                    t.call(this, e, 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(t) {
                        i._handleClear(t)
                    })), e.on("keypress", (function(t) {
                        i._handleKeyboardClear(t, e)
                    }))
                }, i.prototype._handleClear = function(t, e) {
                    if (!this.isDisabled()) {
                        var i = this.$selection.find(".select2-selection__clear");
                        if (0 !== i.length) {
                            e.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(t, n, i) {
                    i.isOpen() || n.which != e.DELETE && n.which != e.BACKSPACE || this._handleClear(n)
                }, i.prototype.update = function(e, i) {
                    if (e.call(this, i), !(0 < this.$selection.find(".select2-selection__placeholder").length || 0 === i.length)) {
                        var r = this.options.get("translations").get("removeAllItems"),
                            o = t('<span class="select2-selection__clear" title="' + r() + '">&times;</span>');
                        n.StoreData(o[0], "data", i), this.$selection.find(".select2-selection__rendered").prepend(o)
                    }
                }, i
            })), e.define("select2/selection/search", ["jquery", "../utils", "../keys"], (function(t, e, n) {
                function i(t, e, n) {
                    t.call(this, e, n)
                }
                return i.prototype.render = function(e) {
                    var n = t('<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 = e.call(this);
                    return this._transferTabIndex(), i
                }, i.prototype.bind = function(t, i, r) {
                    var o = this,
                        a = i.id + "-results";
                    t.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(t) {
                        o.$search.trigger("focus")
                    })), i.on("results:focus", (function(t) {
                        t.data._resultId ? o.$search.attr("aria-activedescendant", t.data._resultId) : o.$search.removeAttr("aria-activedescendant")
                    })), this.$selection.on("focusin", ".select2-search--inline", (function(t) {
                        o.trigger("focus", t)
                    })), this.$selection.on("focusout", ".select2-search--inline", (function(t) {
                        o._handleBlur(t)
                    })), this.$selection.on("keydown", ".select2-search--inline", (function(t) {
                        if (t.stopPropagation(), o.trigger("keypress", t), o._keyUpPrevented = t.isDefaultPrevented(), t.which === n.BACKSPACE && "" === o.$search.val()) {
                            var i = o.$searchContainer.prev(".select2-selection__choice");
                            if (0 < i.length) {
                                var r = e.GetData(i[0], "data");
                                o.searchRemoveChoice(r), t.preventDefault()
                            }
                        }
                    })), this.$selection.on("click", ".select2-search--inline", (function(t) {
                        o.$search.val() && t.stopPropagation()
                    }));
                    var s = document.documentMode,
                        l = s && s <= 11;
                    this.$selection.on("input.searchcheck", ".select2-search--inline", (function(t) {
                        l ? o.$selection.off("input.search input.searchcheck") : o.$selection.off("keyup.search")
                    })), this.$selection.on("keyup.search input.search", ".select2-search--inline", (function(t) {
                        if (l && "input" === t.type) o.$selection.off("input.search input.searchcheck");
                        else {
                            var e = t.which;
                            e != n.SHIFT && e != n.CTRL && e != n.ALT && e != n.TAB && o.handleSearch(t)
                        }
                    }))
                }, i.prototype._transferTabIndex = function(t) {
                    this.$search.attr("tabindex", this.$selection.attr("tabindex")), this.$selection.attr("tabindex", "-1")
                }, i.prototype.createPlaceholder = function(t, e) {
                    this.$search.attr("placeholder", e.text)
                }, i.prototype.update = function(t, e) {
                    var n = this.$search[0] == document.activeElement;
                    this.$search.attr("placeholder", ""), t.call(this, e), 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 t = this.$search.val();
                        this.trigger("query", {
                            term: t
                        })
                    }
                    this._keyUpPrevented = !1
                }, i.prototype.searchRemoveChoice = function(t, e) {
                    this.trigger("unselect", {
                        data: e
                    }), this.$search.val(e.text), this.handleSearch()
                }, i.prototype.resizeSearch = function() {
                    this.$search.css("width", "25px");
                    var t = "";
                    t = "" !== this.$search.attr("placeholder") ? this.$selection.find(".select2-selection__rendered").width() : .75 * (this.$search.val().length + 1) + "em", this.$search.css("width", t)
                }, i
            })), e.define("select2/selection/eventRelay", ["jquery"], (function(t) {
                function e() {}
                return e.prototype.bind = function(e, n, i) {
                    var r = this,
                        o = ["open", "opening", "close", "closing", "select", "selecting", "unselect", "unselecting", "clear", "clearing"],
                        a = ["opening", "closing", "selecting", "unselecting", "clearing"];
                    e.call(this, n, i), n.on("*", (function(e, n) {
                        if (-1 !== t.inArray(e, o)) {
                            n = n || {};
                            var i = t.Event("select2:" + e, {
                                params: n
                            });
                            r.$element.trigger(i), -1 !== t.inArray(e, a) && (n.prevented = i.isDefaultPrevented())
                        }
                    }))
                }, e
            })), e.define("select2/translation", ["jquery", "require"], (function(t, e) {
                function n(t) {
                    this.dict = t || {}
                }
                return n.prototype.all = function() {
                    return this.dict
                }, n.prototype.get = function(t) {
                    return this.dict[t]
                }, n.prototype.extend = function(e) {
                    this.dict = t.extend({}, e.all(), this.dict)
                }, n._cache = {}, n.loadPath = function(t) {
                    if (!(t in n._cache)) {
                        var i = e(t);
                        n._cache[t] = i
                    }
                    return new n(n._cache[t])
                }, n
            })), e.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",
                    "Ꜳ": "AA",
                    "Æ": "AE",
                    "Ǽ": "AE",
                    "Ǣ": "AE",
                    "Ꜵ": "AO",
                    "Ꜷ": "AU",
                    "Ꜹ": "AV",
                    "Ꜻ": "AV",
                    "Ꜽ": "AY",
                    "Ⓑ": "B",
                    "Ｂ": "B",
                    "Ḃ": "B",
                    "Ḅ": "B",
                    "Ḇ": "B",
                    "Ƀ": "B",
                    "Ƃ": "B",
                    "Ɓ": "B",
                    "Ⓒ": "C",
                    "Ｃ": "C",
                    "Ć": "C",
                    "Ĉ": "C",
                    "Ċ": "C",
                    "Č": "C",
                    "Ç": "C",
                    "Ḉ": "C",
                    "Ƈ": "C",
                    "Ȼ": "C",
                    "Ꜿ": "C",
                    "Ⓓ": "D",
                    "Ｄ": "D",
                    "Ḋ": "D",
                    "Ď": "D",
                    "Ḍ": "D",
                    "Ḑ": "D",
                    "Ḓ": "D",
                    "Ḏ": "D",
                    "Đ": "D",
                    "Ƌ": "D",
                    "Ɗ": "D",
                    "Ɖ": "D",
                    "Ꝺ": "D",
                    "Ǳ": "DZ",
                    "Ǆ": "DZ",
                    "ǲ": "Dz",
                    "ǅ": "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",
                    "Ⓕ": "F",
                    "Ｆ": "F",
                    "Ḟ": "F",
                    "Ƒ": "F",
                    "Ꝼ": "F",
                    "Ⓖ": "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",
                    "Ⓘ": "I",
                    "Ｉ": "I",
                    "Ì": "I",
                    "Í": "I",
                    "Î": "I",
                    "Ĩ": "I",
                    "Ī": "I",
                    "Ĭ": "I",
                    "İ": "I",
                    "Ï": "I",
                    "Ḯ": "I",
                    "Ỉ": "I",
                    "Ǐ": "I",
                    "Ȉ": "I",
                    "Ȋ": "I",
                    "Ị": "I",
                    "Į": "I",
                    "Ḭ": "I",
                    "Ɨ": "I",
                    "Ⓙ": "J",
                    "Ｊ": "J",
                    "Ĵ": "J",
                    "Ɉ": "J",
                    "Ⓚ": "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",
                    "Ǉ": "LJ",
                    "ǈ": "Lj",
                    "Ⓜ": "M",
                    "Ｍ": "M",
                    "Ḿ": "M",
                    "Ṁ": "M",
                    "Ṃ": "M",
                    "Ɱ": "M",
                    "Ɯ": "M",
                    "Ⓝ": "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",
                    "Œ": "OE",
                    "Ƣ": "OI",
                    "Ꝏ": "OO",
                    "Ȣ": "OU",
                    "Ⓟ": "P",
                    "Ｐ": "P",
                    "Ṕ": "P",
                    "Ṗ": "P",
                    "Ƥ": "P",
                    "Ᵽ": "P",
                    "Ꝑ": "P",
                    "Ꝓ": "P",
                    "Ꝕ": "P",
                    "Ⓠ": "Q",
                    "Ｑ": "Q",
                    "Ꝗ": "Q",
                    "Ꝙ": "Q",
                    "Ɋ": "Q",
                    "Ⓡ": "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",
                    "Ⓣ": "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",
                    "Ⓥ": "V",
                    "Ｖ": "V",
                    "Ṽ": "V",
                    "Ṿ": "V",
                    "Ʋ": "V",
                    "Ꝟ": "V",
                    "Ʌ": "V",
                    "Ꝡ": "VY",
                    "Ⓦ": "W",
                    "Ｗ": "W",
                    "Ẁ": "W",
                    "Ẃ": "W",
                    "Ŵ": "W",
                    "Ẇ": "W",
                    "Ẅ": "W",
                    "Ẉ": "W",
                    "Ⱳ": "W",
                    "Ⓧ": "X",
                    "Ｘ": "X",
                    "Ẋ": "X",
                    "Ẍ": "X",
                    "Ⓨ": "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",
                    "ⓐ": "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",
                    "ⓒ": "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",
                    "ǳ": "dz",
                    "ǆ": "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",
                    "ⓖ": "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",
                    "ƕ": "hv",
                    "ⓘ": "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",
                    "ⓛ": "l",
                    "ｌ": "l",
                    "ŀ": "l",
                    "ĺ": "l",
                    "ľ": "l",
                    "ḷ": "l",
                    "ḹ": "l",
                    "ļ": "l",
                    "ḽ": "l",
                    "ḻ": "l",
                    "ſ": "l",
                    "ł": "l",
                    "ƚ": "l",
                    "ɫ": "l",
                    "ⱡ": "l",
                    "ꝉ": "l",
                    "ꞁ": "l",
                    "ꝇ": "l",
                    "ǉ": "lj",
                    "ⓜ": "m",
                    "ｍ": "m",
                    "ḿ": "m",
                    "ṁ": "m",
                    "ṃ": "m",
                    "ɱ": "m",
                    "ɯ": "m",
                    "ⓝ": "n",
                    "ｎ": "n",
                    "ǹ": "n",
                    "ń": "n",
                    "ñ": "n",
                    "ṅ": "n",
                    "ň": "n",
                    "ṇ": "n",
                    "ņ": "n",
                    "ṋ": "n",
                    "ṉ": "n",
                    "ƞ": "n",
                    "ɲ": "n",
                    "ŉ": "n",
                    "ꞑ": "n",
                    "ꞥ": "n",
                    "ǌ": "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",
                    "œ": "oe",
                    "ƣ": "oi",
                    "ȣ": "ou",
                    "ꝏ": "oo",
                    "ⓟ": "p",
                    "ｐ": "p",
                    "ṕ": "p",
                    "ṗ": "p",
                    "ƥ": "p",
                    "ᵽ": "p",
                    "ꝑ": "p",
                    "ꝓ": "p",
                    "ꝕ": "p",
                    "ⓠ": "q",
                    "ｑ": "q",
                    "ɋ": "q",
                    "ꝗ": "q",
                    "ꝙ": "q",
                    "ⓡ": "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",
                    "ⓥ": "v",
                    "ｖ": "v",
                    "ṽ": "v",
                    "ṿ": "v",
                    "ʋ": "v",
                    "ꝟ": "v",
                    "ʌ": "v",
                    "ꝡ": "vy",
                    "ⓦ": "w",
                    "ｗ": "w",
                    "ẁ": "w",
                    "ẃ": "w",
                    "ŵ": "w",
                    "ẇ": "w",
                    "ẅ": "w",
                    "ẘ": "w",
                    "ẉ": "w",
                    "ⱳ": "w",
                    "ⓧ": "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",
                    "Ά": "Α",
                    "Έ": "Ε",
                    "Ή": "Η",
                    "Ί": "Ι",
                    "Ϊ": "Ι",
                    "Ό": "Ο",
                    "Ύ": "Υ",
                    "Ϋ": "Υ",
                    "Ώ": "Ω",
                    "ά": "α",
                    "έ": "ε",
                    "ή": "η",
                    "ί": "ι",
                    "ϊ": "ι",
                    "ΐ": "ι",
                    "ό": "ο",
                    "ύ": "υ",
                    "ϋ": "υ",
                    "ΰ": "υ",
                    "ώ": "ω",
                    "ς": "σ",
                    "’": "'"
                }
            })), e.define("select2/data/base", ["../utils"], (function(t) {
                function e(t, n) {
                    e.__super__.constructor.call(this)
                }
                return t.Extend(e, t.Observable), e.prototype.current = function(t) {
                    throw new Error("The `current` method must be defined in child classes.")
                }, e.prototype.query = function(t, e) {
                    throw new Error("The `query` method must be defined in child classes.")
                }, e.prototype.bind = function(t, e) {}, e.prototype.destroy = function() {}, e.prototype.generateResultId = function(e, n) {
                    var i = e.id + "-result-";
                    return i += t.generateChars(4), null != n.id ? i += "-" + n.id.toString() : i += "-" + t.generateChars(4), i
                }, e
            })), e.define("select2/data/select", ["./base", "../utils", "jquery"], (function(t, e, n) {
                function i(t, e) {
                    this.$element = t, this.options = e, i.__super__.constructor.call(this)
                }
                return e.Extend(i, t), i.prototype.current = function(t) {
                    var e = [],
                        i = this;
                    this.$element.find(":selected").each((function() {
                        var t = n(this),
                            r = i.item(t);
                        e.push(r)
                    })), t(e)
                }, i.prototype.select = function(t) {
                    var e = this;
                    if (t.selected = !0, n(t.element).is("option")) return t.element.selected = !0, void this.$element.trigger("input").trigger("change");
                    if (this.$element.prop("multiple")) this.current((function(i) {
                        var r = [];
                        (t = [t]).push.apply(t, i);
                        for (var o = 0; o < t.length; o++) {
                            var a = t[o].id; - 1 === n.inArray(a, r) && r.push(a)
                        }
                        e.$element.val(r), e.$element.trigger("input").trigger("change")
                    }));
                    else {
                        var i = t.id;
                        this.$element.val(i), this.$element.trigger("input").trigger("change")
                    }
                }, i.prototype.unselect = function(t) {
                    var e = this;
                    if (this.$element.prop("multiple")) {
                        if (t.selected = !1, n(t.element).is("option")) return t.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 !== t.id && -1 === n.inArray(a, r) && r.push(a)
                            }
                            e.$element.val(r), e.$element.trigger("input").trigger("change")
                        }))
                    }
                }, i.prototype.bind = function(t, e) {
                    var n = this;
                    (this.container = t).on("select", (function(t) {
                        n.select(t.data)
                    })), t.on("unselect", (function(t) {
                        n.unselect(t.data)
                    }))
                }, i.prototype.destroy = function() {
                    this.$element.find("*").each((function() {
                        e.RemoveData(this)
                    }))
                }, i.prototype.query = function(t, e) {
                    var i = [],
                        r = this;
                    this.$element.children().each((function() {
                        var e = n(this);
                        if (e.is("option") || e.is("optgroup")) {
                            var o = r.item(e),
                                a = r.matches(t, o);
                            null !== a && i.push(a)
                        }
                    })), e({
                        results: i
                    })
                }, i.prototype.addOptions = function(t) {
                    e.appendMany(this.$element, t)
                }, i.prototype.option = function(t) {
                    var i;
                    t.children ? (i = document.createElement("optgroup")).label = t.text : void 0 !== (i = document.createElement("option")).textContent ? i.textContent = t.text : i.innerText = t.text, void 0 !== t.id && (i.value = t.id), t.disabled && (i.disabled = !0), t.selected && (i.selected = !0), t.title && (i.title = t.title);
                    var r = n(i),
                        o = this._normalizeItem(t);
                    return o.element = i, e.StoreData(i, "data", o), r
                }, i.prototype.item = function(t) {
                    var i = {};
                    if (null != (i = e.GetData(t[0], "data"))) return i;
                    if (t.is("option")) i = {
                        id: t.val(),
                        text: t.text(),
                        disabled: t.prop("disabled"),
                        selected: t.prop("selected"),
                        title: t.prop("title")
                    };
                    else if (t.is("optgroup")) {
                        i = {
                            text: t.prop("label"),
                            children: [],
                            title: t.prop("title")
                        };
                        for (var r = t.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 = t[0], e.StoreData(t[0], "data", i), i
                }, i.prototype._normalizeItem = function(t) {
                    return t !== Object(t) && (t = {
                        id: t,
                        text: t
                    }), null != (t = n.extend({}, {
                        text: ""
                    }, t)).id && (t.id = t.id.toString()), null != t.text && (t.text = t.text.toString()), null == t._resultId && t.id && null != this.container && (t._resultId = this.generateResultId(this.container, t)), n.extend({}, {
                        selected: !1,
                        disabled: !1
                    }, t)
                }, i.prototype.matches = function(t, e) {
                    return this.options.get("matcher")(t, e)
                }, i
            })), e.define("select2/data/array", ["./select", "../utils", "jquery"], (function(t, e, n) {
                function i(t, e) {
                    this._dataToConvert = e.get("data") || [], i.__super__.constructor.call(this, t, e)
                }
                return e.Extend(i, t), i.prototype.bind = function(t, e) {
                    i.__super__.bind.call(this, t, e), this.addOptions(this.convertToOptions(this._dataToConvert))
                }, i.prototype.select = function(t) {
                    var e = this.$element.find("option").filter((function(e, n) {
                        return n.value == t.id.toString()
                    }));
                    0 === e.length && (e = this.option(t), this.addOptions(e)), i.__super__.select.call(this, t)
                }, i.prototype.convertToOptions = function(t) {
                    var i = this,
                        r = this.$element.find("option"),
                        o = r.map((function() {
                            return i.item(n(this)).id
                        })).get(),
                        a = [];

                    function s(t) {
                        return function() {
                            return n(this).val() == t.id
                        }
                    }
                    for (var l = 0; l < t.length; l++) {
                        var c = this._normalizeItem(t[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);
                                e.appendMany(p, g)
                            }
                            a.push(p)
                        }
                    }
                    return a
                }, i
            })), e.define("select2/data/ajax", ["./array", "../utils", "jquery"], (function(t, e, n) {
                function i(t, e) {
                    this.ajaxOptions = this._applyDefaults(e.get("ajax")), null != this.ajaxOptions.processResults && (this.processResults = this.ajaxOptions.processResults), i.__super__.constructor.call(this, t, e)
                }
                return e.Extend(i, t), i.prototype._applyDefaults = function(t) {
                    var e = {
                        data: function(t) {
                            return n.extend({}, t, {
                                q: t.term
                            })
                        },
                        transport: function(t, e, i) {
                            var r = n.ajax(t);
                            return r.then(e), r.fail(i), r
                        }
                    };
                    return n.extend({}, e, t, !0)
                }, i.prototype.processResults = function(t) {
                    return t
                }, i.prototype.query = function(t, e) {
                    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, t);
                            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.")), e(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, t)), "function" == typeof r.data && (r.data = r.data.call(this.$element, t)), this.ajaxOptions.delay && null != t.term ? (this._queryTimeout && window.clearTimeout(this._queryTimeout), this._queryTimeout = window.setTimeout(o, this.ajaxOptions.delay)) : o()
                }, i
            })), e.define("select2/data/tags", ["jquery"], (function(t) {
                function e(e, 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), e.call(this, n, i), t.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 e.prototype.query = function(t, e, n) {
                    var i = this;
                    this._removeOldTags(), null != e.term && null == e.page ? t.call(this, e, (function t(r, o) {
                        for (var a = r.results, s = 0; s < a.length; s++) {
                            var l = a[s],
                                c = null != l.children && !t({
                                    results: l.children
                                }, !0);
                            if ((l.text || "").toUpperCase() === (e.term || "").toUpperCase() || c) return !o && (r.data = a, void n(r))
                        }
                        if (o) return !0;
                        var u = i.createTag(e);
                        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)
                    })) : t.call(this, e, n)
                }, e.prototype.createTag = function(e, n) {
                    var i = t.trim(n.term);
                    return "" === i ? null : {
                        id: i,
                        text: i
                    }
                }, e.prototype.insertTag = function(t, e, n) {
                    e.unshift(n)
                }, e.prototype._removeOldTags = function(e) {
                    this.$element.find("option[data-select2-tag]").each((function() {
                        this.selected || t(this).remove()
                    }))
                }, e
            })), e.define("select2/data/tokenizer", ["jquery"], (function(t) {
                function e(t, e, n) {
                    var i = n.get("tokenizer");
                    void 0 !== i && (this.tokenizer = i), t.call(this, e, n)
                }
                return e.prototype.bind = function(t, e, n) {
                    t.call(this, e, n), this.$search = e.dropdown.$search || e.selection.$search || n.find(".select2-search__field")
                }, e.prototype.query = function(e, n, i) {
                    var r = this;
                    n.term = n.term || "";
                    var o = this.tokenizer(n, this.options, (function(e) {
                        var n, i = r._normalizeItem(e);
                        if (!r.$element.find("option").filter((function() {
                                return t(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), e.call(this, n, i)
                }, e.prototype.tokenizer = function(e, n, i, r) {
                    for (var o = i.get("tokenSeparators") || [], a = n.term, s = 0, l = this.createTag || function(t) {
                            return {
                                id: t.term,
                                text: t.term
                            }
                        }; s < a.length;) {
                        var c = a[s];
                        if (-1 !== t.inArray(c, o)) {
                            var u = a.substr(0, s),
                                d = l(t.extend({}, n, {
                                    term: u
                                }));
                            null != d ? (r(d), a = a.substr(s + 1) || "", s = 0) : s++
                        } else s++
                    }
                    return {
                        term: a
                    }
                }, e
            })), e.define("select2/data/minimumInputLength", [], (function() {
                function t(t, e, n) {
                    this.minimumInputLength = n.get("minimumInputLength"), t.call(this, e, n)
                }
                return t.prototype.query = function(t, e, n) {
                    e.term = e.term || "", e.term.length < this.minimumInputLength ? this.trigger("results:message", {
                        message: "inputTooShort",
                        args: {
                            minimum: this.minimumInputLength,
                            input: e.term,
                            params: e
                        }
                    }) : t.call(this, e, n)
                }, t
            })), e.define("select2/data/maximumInputLength", [], (function() {
                function t(t, e, n) {
                    this.maximumInputLength = n.get("maximumInputLength"), t.call(this, e, n)
                }
                return t.prototype.query = function(t, e, n) {
                    e.term = e.term || "", 0 < this.maximumInputLength && e.term.length > this.maximumInputLength ? this.trigger("results:message", {
                        message: "inputTooLong",
                        args: {
                            maximum: this.maximumInputLength,
                            input: e.term,
                            params: e
                        }
                    }) : t.call(this, e, n)
                }, t
            })), e.define("select2/data/maximumSelectionLength", [], (function() {
                function t(t, e, n) {
                    this.maximumSelectionLength = n.get("maximumSelectionLength"), t.call(this, e, n)
                }
                return t.prototype.bind = function(t, e, n) {
                    var i = this;
                    t.call(this, e, n), e.on("select", (function() {
                        i._checkIfMaximumSelected()
                    }))
                }, t.prototype.query = function(t, e, n) {
                    var i = this;
                    this._checkIfMaximumSelected((function() {
                        t.call(i, e, n)
                    }))
                }, t.prototype._checkIfMaximumSelected = function(t, e) {
                    var n = this;
                    this.current((function(t) {
                        var i = null != t ? t.length : 0;
                        0 < n.maximumSelectionLength && i >= n.maximumSelectionLength ? n.trigger("results:message", {
                            message: "maximumSelected",
                            args: {
                                maximum: n.maximumSelectionLength
                            }
                        }) : e && e()
                    }))
                }, t
            })), e.define("select2/dropdown", ["jquery", "./utils"], (function(t, e) {
                function n(t, e) {
                    this.$element = t, this.options = e, n.__super__.constructor.call(this)
                }
                return e.Extend(n, e.Observable), n.prototype.render = function() {
                    var e = t('<span class="select2-dropdown"><span class="select2-results"></span></span>');
                    return e.attr("dir", this.options.get("dir")), this.$dropdown = e
                }, n.prototype.bind = function() {}, n.prototype.position = function(t, e) {}, n.prototype.destroy = function() {
                    this.$dropdown.remove()
                }, n
            })), e.define("select2/dropdown/search", ["jquery", "../utils"], (function(t, e) {
                function n() {}
                return n.prototype.render = function(e) {
                    var n = e.call(this),
                        i = t('<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(e, n, i) {
                    var r = this,
                        o = n.id + "-results";
                    e.call(this, n, i), this.$search.on("keydown", (function(t) {
                        r.trigger("keypress", t), r._keyUpPrevented = t.isDefaultPrevented()
                    })), this.$search.on("input", (function(e) {
                        t(this).off("keyup")
                    })), this.$search.on("keyup input", (function(t) {
                        r.handleSearch(t)
                    })), 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(t) {
                        null != t.query.term && "" !== t.query.term || (r.showSearch(t) ? r.$searchContainer.removeClass("select2-search--hide") : r.$searchContainer.addClass("select2-search--hide"))
                    })), n.on("results:focus", (function(t) {
                        t.data._resultId ? r.$search.attr("aria-activedescendant", t.data._resultId) : r.$search.removeAttr("aria-activedescendant")
                    }))
                }, n.prototype.handleSearch = function(t) {
                    if (!this._keyUpPrevented) {
                        var e = this.$search.val();
                        this.trigger("query", {
                            term: e
                        })
                    }
                    this._keyUpPrevented = !1
                }, n.prototype.showSearch = function(t, e) {
                    return !0
                }, n
            })), e.define("select2/dropdown/hidePlaceholder", [], (function() {
                function t(t, e, n, i) {
                    this.placeholder = this.normalizePlaceholder(n.get("placeholder")), t.call(this, e, n, i)
                }
                return t.prototype.append = function(t, e) {
                    e.results = this.removePlaceholder(e.results), t.call(this, e)
                }, t.prototype.normalizePlaceholder = function(t, e) {
                    return "string" == typeof e && (e = {
                        id: "",
                        text: e
                    }), e
                }, t.prototype.removePlaceholder = function(t, e) {
                    for (var n = e.slice(0), i = e.length - 1; 0 <= i; i--) {
                        var r = e[i];
                        this.placeholder.id === r.id && n.splice(i, 1)
                    }
                    return n
                }, t
            })), e.define("select2/dropdown/infiniteScroll", ["jquery"], (function(t) {
                function e(t, e, n, i) {
                    this.lastParams = {}, t.call(this, e, n, i), this.$loadingMore = this.createLoadingMore(), this.loading = !1
                }
                return e.prototype.append = function(t, e) {
                    this.$loadingMore.remove(), this.loading = !1, t.call(this, e), this.showLoadingMore(e) && (this.$results.append(this.$loadingMore), this.loadMoreIfNeeded())
                }, e.prototype.bind = function(t, e, n) {
                    var i = this;
                    t.call(this, e, n), e.on("query", (function(t) {
                        i.lastParams = t, i.loading = !0
                    })), e.on("query:append", (function(t) {
                        i.lastParams = t, i.loading = !0
                    })), this.$results.on("scroll", this.loadMoreIfNeeded.bind(this))
                }, e.prototype.loadMoreIfNeeded = function() {
                    var e = t.contains(document.documentElement, this.$loadingMore[0]);
                    if (!this.loading && e) {
                        var n = this.$results.offset().top + this.$results.outerHeight(!1);
                        this.$loadingMore.offset().top + this.$loadingMore.outerHeight(!1) <= n + 50 && this.loadMore()
                    }
                }, e.prototype.loadMore = function() {
                    this.loading = !0;
                    var e = t.extend({}, {
                        page: 1
                    }, this.lastParams);
                    e.page++, this.trigger("query:append", e)
                }, e.prototype.showLoadingMore = function(t, e) {
                    return e.pagination && e.pagination.more
                }, e.prototype.createLoadingMore = function() {
                    var e = t('<li class="select2-results__option select2-results__option--load-more"role="option" aria-disabled="true"></li>'),
                        n = this.options.get("translations").get("loadingMore");
                    return e.html(n(this.lastParams)), e
                }, e
            })), e.define("select2/dropdown/attachBody", ["jquery", "../utils"], (function(t, e) {
                function n(e, n, i) {
                    this.$dropdownParent = t(i.get("dropdownParent") || document.body), e.call(this, n, i)
                }
                return n.prototype.bind = function(t, e, n) {
                    var i = this;
                    t.call(this, e, n), e.on("open", (function() {
                        i._showDropdown(), i._attachPositioningHandler(e), i._bindContainerResultHandlers(e)
                    })), e.on("close", (function() {
                        i._hideDropdown(), i._detachPositioningHandler(e)
                    })), this.$dropdownContainer.on("mousedown", (function(t) {
                        t.stopPropagation()
                    }))
                }, n.prototype.destroy = function(t) {
                    t.call(this), this.$dropdownContainer.remove()
                }, n.prototype.position = function(t, e, n) {
                    e.attr("class", n.attr("class")), e.removeClass("select2"), e.addClass("select2-container--open"), e.css({
                        position: "absolute",
                        top: -999999
                    }), this.$container = n
                }, n.prototype.render = function(e) {
                    var n = t("<span></span>"),
                        i = e.call(this);
                    return n.append(i), this.$dropdownContainer = n
                }, n.prototype._hideDropdown = function(t) {
                    this.$dropdownContainer.detach()
                }, n.prototype._bindContainerResultHandlers = function(t, e) {
                    if (!this._containerResultsHandlersBound) {
                        var n = this;
                        e.on("results:all", (function() {
                            n._positionDropdown(), n._resizeDropdown()
                        })), e.on("results:append", (function() {
                            n._positionDropdown(), n._resizeDropdown()
                        })), e.on("results:message", (function() {
                            n._positionDropdown(), n._resizeDropdown()
                        })), e.on("select", (function() {
                            n._positionDropdown(), n._resizeDropdown()
                        })), e.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(e.hasScroll);
                    l.each((function() {
                        e.StoreData(this, "select2-scroll-position", {
                            x: t(this).scrollLeft(),
                            y: t(this).scrollTop()
                        })
                    })), l.on(o, (function(n) {
                        var i = e.GetData(this, "select2-scroll-position");
                        t(this).scrollTop(i.y)
                    })), t(window).on(o + " " + a + " " + s, (function(t) {
                        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(e.hasScroll).off(r), t(window).off(r + " " + o + " " + a)
                }, n.prototype._positionDropdown = function() {
                    var e = t(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 = e.scrollTop(),
                        c = e.scrollTop() + e.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
                    };
                    (t.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 t = {
                        width: this.$container.outerWidth(!1) + "px"
                    };
                    this.options.get("dropdownAutoWidth") && (t.minWidth = t.width, t.position = "relative", t.width = "auto"), this.$dropdown.css(t)
                }, n.prototype._showDropdown = function(t) {
                    this.$dropdownContainer.appendTo(this.$dropdownParent), this._positionDropdown(), this._resizeDropdown()
                }, n
            })), e.define("select2/dropdown/minimumResultsForSearch", [], (function() {
                function t(t, e, n, i) {
                    this.minimumResultsForSearch = n.get("minimumResultsForSearch"), this.minimumResultsForSearch < 0 && (this.minimumResultsForSearch = 1 / 0), t.call(this, e, n, i)
                }
                return t.prototype.showSearch = function(t, e) {
                    return !(function t(e) {
                        for (var n = 0, i = 0; i < e.length; i++) {
                            var r = e[i];
                            r.children ? n += t(r.children) : n++
                        }
                        return n
                    }(e.data.results) < this.minimumResultsForSearch) && t.call(this, e)
                }, t
            })), e.define("select2/dropdown/selectOnClose", ["../utils"], (function(t) {
                function e() {}
                return e.prototype.bind = function(t, e, n) {
                    var i = this;
                    t.call(this, e, n), e.on("close", (function(t) {
                        i._handleSelectOnClose(t)
                    }))
                }, e.prototype._handleSelectOnClose = function(e, 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 = t.GetData(r[0], "data");
                        null != o.element && o.element.selected || null == o.element && o.selected || this.trigger("select", {
                            data: o
                        })
                    }
                }, e
            })), e.define("select2/dropdown/closeOnSelect", [], (function() {
                function t() {}
                return t.prototype.bind = function(t, e, n) {
                    var i = this;
                    t.call(this, e, n), e.on("select", (function(t) {
                        i._selectTriggered(t)
                    })), e.on("unselect", (function(t) {
                        i._selectTriggered(t)
                    }))
                }, t.prototype._selectTriggered = function(t, e) {
                    var n = e.originalEvent;
                    n && (n.ctrlKey || n.metaKey) || this.trigger("close", {
                        originalEvent: n,
                        originalSelect2Event: e
                    })
                }, t
            })), e.define("select2/i18n/en", [], (function() {
                return {
                    errorLoading: function() {
                        return "The results could not be loaded."
                    },
                    inputTooLong: function(t) {
                        var e = t.input.length - t.maximum,
                            n = "Please delete " + e + " character";
                        return 1 != e && (n += "s"), n
                    },
                    inputTooShort: function(t) {
                        return "Please enter " + (t.minimum - t.input.length) + " or more characters"
                    },
                    loadingMore: function() {
                        return "Loading more results…"
                    },
                    maximumSelected: function(t) {
                        var e = "You can only select " + t.maximum + " item";
                        return 1 != t.maximum && (e += "s"), e
                    },
                    noResults: function() {
                        return "No results found"
                    },
                    searching: function() {
                        return "Searching…"
                    },
                    removeAllItems: function() {
                        return "Remove all items"
                    }
                }
            })), e.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(t, e, n, i, r, o, a, s, l, c, u, d, h, f, p, g, m, v, y, b, w, x, _, S, C, k, T, A, D) {
                function E() {
                    this.reset()
                }
                return E.prototype.apply = function(u) {
                    if (null == (u = t.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 = e(u.amdBase + "compat/query");
                            u.dataAdapter = c.Decorate(u.dataAdapter, d)
                        }
                        if (null != u.initSelection) {
                            var D = e(u.amdBase + "compat/initSelection");
                            u.dataAdapter = c.Decorate(u.dataAdapter, D)
                        }
                    }
                    if (null == u.resultsAdapter && (u.resultsAdapter = n, null != u.ajax && (u.resultsAdapter = c.Decorate(u.resultsAdapter, S)), 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 E = c.Decorate(w, x);
                            u.dropdownAdapter = E
                        }
                        if (0 !== u.minimumResultsForSearch && (u.dropdownAdapter = c.Decorate(u.dropdownAdapter, k)), u.closeOnSelect && (u.dropdownAdapter = c.Decorate(u.dropdownAdapter, A)), null != u.dropdownCssClass || null != u.dropdownCss || null != u.adaptDropdownCssClass) {
                            var M = e(u.amdBase + "compat/dropdownCss");
                            u.dropdownAdapter = c.Decorate(u.dropdownAdapter, M)
                        }
                        u.dropdownAdapter = c.Decorate(u.dropdownAdapter, C)
                    }
                    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 = e(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
                }, E.prototype.reset = function() {
                    function e(t) {
                        return t.replace(/[^\u0000-\u007E]/g, (function(t) {
                            return d[t] || t
                        }))
                    }
                    this.defaults = {
                        amdBase: "./",
                        amdLanguageBase: "./i18n/",
                        closeOnSelect: !0,
                        debug: !1,
                        dropdownAutoWidth: !1,
                        escapeMarkup: c.escapeMarkup,
                        language: {},
                        matcher: function n(i, r) {
                            if ("" === t.trim(i.term)) return r;
                            if (r.children && 0 < r.children.length) {
                                for (var o = t.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 = e(r.text).toUpperCase(),
                                l = e(i.term).toUpperCase();
                            return -1 < s.indexOf(l) ? r : null
                        },
                        minimumInputLength: 0,
                        maximumInputLength: 0,
                        maximumSelectionLength: 0,
                        minimumResultsForSearch: 0,
                        selectOnClose: !1,
                        scrollAfterSelect: !1,
                        sorter: function(t) {
                            return t
                        },
                        templateResult: function(t) {
                            return t.text
                        },
                        templateSelection: function(t) {
                            return t.text
                        },
                        theme: "default",
                        width: "resolve"
                    }
                }, E.prototype.applyFromElement = function(t, e) {
                    var n = t.language,
                        i = this.defaults.language,
                        r = e.prop("lang"),
                        o = e.closest("[lang]").prop("lang"),
                        a = Array.prototype.concat.call(this._resolveLanguage(r), this._resolveLanguage(n), this._resolveLanguage(i), this._resolveLanguage(o));
                    return t.language = a, t
                }, E.prototype._resolveLanguage = function(e) {
                    if (!e) return [];
                    if (t.isEmptyObject(e)) return [];
                    if (t.isPlainObject(e)) return [e];
                    var n;
                    n = t.isArray(e) ? e : [e];
                    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
                }, E.prototype._processTranslations = function(e, n) {
                    for (var i = new u, r = 0; r < e.length; r++) {
                        var o = new u,
                            a = e[r];
                        if ("string" == typeof a) try {
                            o = u.loadPath(a)
                        } catch (e) {
                            try {
                                a = this.defaults.amdLanguageBase + a, o = u.loadPath(a)
                            } catch (e) {
                                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 = t.isPlainObject(a) ? new u(a) : a;
                        i.extend(o)
                    }
                    return i
                }, E.prototype.set = function(e, n) {
                    var i = {};
                    i[t.camelCase(e)] = n;
                    var r = c._convertData(i);
                    t.extend(!0, this.defaults, r)
                }, new E
            })), e.define("select2/options", ["require", "jquery", "./defaults", "./utils"], (function(t, e, n, i) {
                function r(e, r) {
                    if (this.options = e, 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 = t(this.get("amdBase") + "compat/inputData");
                        this.options.dataAdapter = i.Decorate(this.options.dataAdapter, o)
                    }
                }
                return r.prototype.fromElement = function(t) {
                    var n = ["select2"];
                    null == this.options.multiple && (this.options.multiple = t.prop("multiple")), null == this.options.disabled && (this.options.disabled = t.prop("disabled")), null == this.options.dir && (t.prop("dir") ? this.options.dir = t.prop("dir") : t.closest("[dir]").prop("dir") ? this.options.dir = t.closest("[dir]").prop("dir") : this.options.dir = "ltr"), t.prop("disabled", this.options.disabled), t.prop("multiple", this.options.multiple), i.GetData(t[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(t[0], "data", i.GetData(t[0], "select2Tags")), i.StoreData(t[0], "tags", !0)), i.GetData(t[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."), t.attr("ajax--url", i.GetData(t[0], "ajaxUrl")), i.StoreData(t[0], "ajax-Url", i.GetData(t[0], "ajaxUrl")));
                    var r = {};

                    function o(t, e) {
                        return e.toUpperCase()
                    }
                    for (var a = 0; a < t[0].attributes.length; a++) {
                        var s = t[0].attributes[a].name,
                            l = "data-";
                        if (s.substr(0, l.length) == l) {
                            var c = s.substring(l.length),
                                u = i.GetData(t[0], c);
                            r[c.replace(/-([a-z])/g, o)] = u
                        }
                    }
                    e.fn.jquery && "1." == e.fn.jquery.substr(0, 2) && t[0].dataset && (r = e.extend(!0, {}, t[0].dataset, r));
                    var d = e.extend(!0, {}, i.GetData(t[0]), r);
                    for (var h in d = i._convertData(d)) - 1 < e.inArray(h, n) || (e.isPlainObject(this.options[h]) ? e.extend(this.options[h], d[h]) : this.options[h] = d[h]);
                    return this
                }, r.prototype.get = function(t) {
                    return this.options[t]
                }, r.prototype.set = function(t, e) {
                    this.options[t] = e
                }, r
            })), e.define("select2/core", ["jquery", "./options", "./utils", "./keys"], (function(t, e, n, i) {
                var r = function(t, i) {
                    null != n.GetData(t[0], "select2") && n.GetData(t[0], "select2").destroy(), this.$element = t, this.id = this._generateId(t), i = i || {}, this.options = new e(i, t), r.__super__.constructor.call(this);
                    var o = t.attr("tabindex") || 0;
                    n.StoreData(t[0], "old-tabindex", o), t.attr("tabindex", "-1");
                    var a = this.options.get("dataAdapter");
                    this.dataAdapter = new a(t, this.options);
                    var s = this.render();
                    this._placeContainer(s);
                    var l = this.options.get("selectionAdapter");
                    this.selection = new l(t, this.options), this.$selection = this.selection.render(), this.selection.position(this.$selection, s);
                    var c = this.options.get("dropdownAdapter");
                    this.dropdown = new c(t, this.options), this.$dropdown = this.dropdown.render(), this.dropdown.position(this.$dropdown, s);
                    var u = this.options.get("resultsAdapter");
                    this.results = new u(t, 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(t) {
                        d.trigger("selection:update", {
                            data: t
                        })
                    })), t.addClass("select2-hidden-accessible"), t.attr("aria-hidden", "true"), this._syncAttributes(), n.StoreData(t[0], "select2", this), t.data("select2", this)
                };
                return n.Extend(r, n.Observable), r.prototype._generateId = function(t) {
                    return "select2-" + (null != t.attr("id") ? t.attr("id") : null != t.attr("name") ? t.attr("name") + "-" + n.generateChars(2) : n.generateChars(4)).replace(/(:|\.|\[|\]|,)/g, "")
                }, r.prototype._placeContainer = function(t) {
                    t.insertAfter(this.$element);
                    var e = this._resolveWidth(this.$element, this.options.get("width"));
                    null != e && t.css("width", e)
                }, r.prototype._resolveWidth = function(t, e) {
                    var n = /^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;
                    if ("resolve" == e) {
                        var i = this._resolveWidth(t, "style");
                        return null != i ? i : this._resolveWidth(t, "element")
                    }
                    if ("element" == e) {
                        var r = t.outerWidth(!1);
                        return r <= 0 ? "auto" : r + "px"
                    }
                    if ("style" != e) return "computedstyle" != e ? e : window.getComputedStyle(t[0]).width;
                    var o = t.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 t = this;
                    this.$element.on("change.select2", (function() {
                        t.dataAdapter.current((function(e) {
                            t.trigger("selection:update", {
                                data: e
                            })
                        }))
                    })), this.$element.on("focus.select2", (function(e) {
                        t.trigger("focus", e)
                    })), 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 e = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
                    null != e ? (this._observer = new e((function(e) {
                        t._syncA(), t._syncS(null, e)
                    })), this._observer.observe(this.$element[0], {
                        attributes: !0,
                        childList: !0,
                        subtree: !1
                    })) : this.$element[0].addEventListener && (this.$element[0].addEventListener("DOMAttrModified", t._syncA, !1), this.$element[0].addEventListener("DOMNodeInserted", t._syncS, !1), this.$element[0].addEventListener("DOMNodeRemoved", t._syncS, !1))
                }, r.prototype._registerDataEvents = function() {
                    var t = this;
                    this.dataAdapter.on("*", (function(e, n) {
                        t.trigger(e, n)
                    }))
                }, r.prototype._registerSelectionEvents = function() {
                    var e = this,
                        n = ["toggle", "focus"];
                    this.selection.on("toggle", (function() {
                        e.toggleDropdown()
                    })), this.selection.on("focus", (function(t) {
                        e.focus(t)
                    })), this.selection.on("*", (function(i, r) {
                        -1 === t.inArray(i, n) && e.trigger(i, r)
                    }))
                }, r.prototype._registerDropdownEvents = function() {
                    var t = this;
                    this.dropdown.on("*", (function(e, n) {
                        t.trigger(e, n)
                    }))
                }, r.prototype._registerResultsEvents = function() {
                    var t = this;
                    this.results.on("*", (function(e, n) {
                        t.trigger(e, n)
                    }))
                }, r.prototype._registerEvents = function() {
                    var t = this;
                    this.on("open", (function() {
                        t.$container.addClass("select2-container--open")
                    })), this.on("close", (function() {
                        t.$container.removeClass("select2-container--open")
                    })), this.on("enable", (function() {
                        t.$container.removeClass("select2-container--disabled")
                    })), this.on("disable", (function() {
                        t.$container.addClass("select2-container--disabled")
                    })), this.on("blur", (function() {
                        t.$container.removeClass("select2-container--focus")
                    })), this.on("query", (function(e) {
                        t.isOpen() || t.trigger("open", {}), this.dataAdapter.query(e, (function(n) {
                            t.trigger("results:all", {
                                data: n,
                                query: e
                            })
                        }))
                    })), this.on("query:append", (function(e) {
                        this.dataAdapter.query(e, (function(n) {
                            t.trigger("results:append", {
                                data: n,
                                query: e
                            })
                        }))
                    })), this.on("keypress", (function(e) {
                        var n = e.which;
                        t.isOpen() ? n === i.ESC || n === i.TAB || n === i.UP && e.altKey ? (t.close(e), e.preventDefault()) : n === i.ENTER ? (t.trigger("results:select", {}), e.preventDefault()) : n === i.SPACE && e.ctrlKey ? (t.trigger("results:toggle", {}), e.preventDefault()) : n === i.UP ? (t.trigger("results:previous", {}), e.preventDefault()) : n === i.DOWN && (t.trigger("results:next", {}), e.preventDefault()) : (n === i.ENTER || n === i.SPACE || n === i.DOWN && e.altKey) && (t.open(), e.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(e, n) {
                    var i = !1,
                        r = this;
                    if (!e || !e.target || "OPTION" === e.target.nodeName || "OPTGROUP" === e.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 : t.isArray(n) && t.each(n, (function(t, e) {
                                if (r._isChangeMutation(t, e)) return !(i = !0)
                            }));
                        else i = !0;
                        return i
                    }
                }, r.prototype._syncSubtree = function(t, e) {
                    var n = this._isChangeMutation(t, e),
                        i = this;
                    n && this.dataAdapter.current((function(t) {
                        i.trigger("selection:update", {
                            data: t
                        })
                    }))
                }, r.prototype.trigger = function(t, e) {
                    var n = r.__super__.trigger,
                        i = {
                            open: "opening",
                            close: "closing",
                            select: "selecting",
                            unselect: "unselecting",
                            clear: "clearing"
                        };
                    if (void 0 === e && (e = {}), t in i) {
                        var o = i[t],
                            a = {
                                prevented: !1,
                                name: t,
                                args: e
                            };
                        if (n.call(this, o, a), a.prevented) return void(e.prevented = !0)
                    }
                    n.call(this, t, e)
                }, 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(t) {
                    this.isOpen() && this.trigger("close", {
                        originalEvent: t
                    })
                }, 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(t) {
                    this.hasFocus() || (this.$container.addClass("select2-container--focus"), this.trigger("focus", {}))
                }, r.prototype.enable = function(t) {
                    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 != t && 0 !== t.length || (t = [!0]);
                    var e = !t[0];
                    this.$element.prop("disabled", e)
                }, 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 t = [];
                    return this.dataAdapter.current((function(e) {
                        t = e
                    })), t
                }, r.prototype.val = function(e) {
                    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 == e || 0 === e.length) return this.$element.val();
                    var n = e[0];
                    t.isArray(n) && (n = t.map(n, (function(t) {
                        return t.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 e = t('<span class="select2 select2-container"><span class="selection"></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>');
                    return e.attr("dir", this.options.get("dir")), this.$container = e, this.$container.addClass("select2-container--" + this.options.get("theme")), n.StoreData(e[0], "element", this.$element), e
                }, r
            })), e.define("select2/compat/utils", ["jquery"], (function(t) {
                return {
                    syncCssClasses: function(e, n, i) {
                        var r, o, a = [];
                        (r = t.trim(e.attr("class"))) && t((r = "" + r).split(/\s+/)).each((function() {
                            0 === this.indexOf("select2-") && a.push(this)
                        })), (r = t.trim(n.attr("class"))) && t((r = "" + r).split(/\s+/)).each((function() {
                            0 !== this.indexOf("select2-") && null != (o = i(this)) && a.push(o)
                        })), e.attr("class", a.join(" "))
                    }
                }
            })), e.define("select2/compat/containerCss", ["jquery", "./utils"], (function(t, e) {
                function n(t) {
                    return null
                }

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

                function i() {}
                return i.prototype.render = function(i) {
                    var r = i.call(this),
                        o = this.options.get("dropdownCssClass") || "";
                    t.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(t) {
                            var e = s(t);
                            return null != e ? e + " " + t : t
                        }
                    }
                    var l = this.options.get("dropdownCss") || {};
                    return t.isFunction(l) && (l = l(this.$element)), e.syncCssClasses(r, this.$element, a), r.css(l), r.addClass(o), r
                }, i
            })), e.define("select2/compat/initSelection", ["jquery"], (function(t) {
                function e(t, e, 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, t.call(this, e, n)
                }
                return e.prototype.current = function(e, n) {
                    var i = this;
                    this._isInitialized ? e.call(this, n) : this.initSelection.call(null, this.$element, (function(e) {
                        i._isInitialized = !0, t.isArray(e) || (e = [e]), n(e)
                    }))
                }, e
            })), e.define("select2/compat/inputData", ["jquery", "../utils"], (function(t, e) {
                function n(t, e, n) {
                    this._currentData = [], this._valueSeparator = n.get("valueSeparator") || ",", "hidden" === e.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."), t.call(this, e, n)
                }
                return n.prototype.current = function(e, n) {
                    function i(e, n) {
                        var r = [];
                        return e.selected || -1 !== t.inArray(e.id, n) ? (e.selected = !0, r.push(e)) : e.selected = !1, e.children && r.push.apply(r, i(e.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(e, 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(e) {
                        t.map(e, (function(t) {
                            t.selected = !1
                        }))
                    })), this.$element.val(n.id), this.$element.trigger("input").trigger("change")
                }, n.prototype.unselect = function(t, e) {
                    var n = this;
                    e.selected = !1, this.current((function(t) {
                        for (var i = [], r = 0; r < t.length; r++) {
                            var o = t[r];
                            e.id != o.id && i.push(o.id)
                        }
                        n.$element.val(i.join(n._valueSeparator)), n.$element.trigger("input").trigger("change")
                    }))
                }, n.prototype.query = function(t, e, n) {
                    for (var i = [], r = 0; r < this._currentData.length; r++) {
                        var o = this._currentData[r],
                            a = this.matches(e, o);
                        null !== a && i.push(a)
                    }
                    n({
                        results: i
                    })
                }, n.prototype.addOptions = function(n, i) {
                    var r = t.map(i, (function(t) {
                        return e.GetData(t[0], "data")
                    }));
                    this._currentData.push.apply(this._currentData, r)
                }, n
            })), e.define("select2/compat/matcher", ["jquery"], (function(t) {
                return function(e) {
                    return function(n, i) {
                        var r = t.extend(!0, {}, i);
                        if (null == n.term || "" === t.trim(n.term)) return r;
                        if (i.children) {
                            for (var o = i.children.length - 1; 0 <= o; o--) {
                                var a = i.children[o];
                                e(n.term, a.text, a) || r.children.splice(o, 1)
                            }
                            if (0 < r.children.length) return r
                        }
                        return e(n.term, i.text, i) ? r : null
                    }
                }
            })), e.define("select2/compat/query", [], (function() {
                function t(t, e, 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."), t.call(this, e, n)
                }
                return t.prototype.query = function(t, e, n) {
                    e.callback = n, this.options.get("query").call(null, e)
                }, t
            })), e.define("select2/dropdown/attachContainer", [], (function() {
                function t(t, e, n) {
                    t.call(this, e, n)
                }
                return t.prototype.position = function(t, e, n) {
                    n.find(".dropdown-wrapper").append(e), e.addClass("select2-dropdown--below"), n.addClass("select2-container--below")
                }, t
            })), e.define("select2/dropdown/stopPropagation", [], (function() {
                function t() {}
                return t.prototype.bind = function(t, e, n) {
                    t.call(this, e, 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(t) {
                        t.stopPropagation()
                    }))
                }, t
            })), e.define("select2/selection/stopPropagation", [], (function() {
                function t() {}
                return t.prototype.bind = function(t, e, n) {
                    t.call(this, e, 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(t) {
                        t.stopPropagation()
                    }))
                }, t
            })), v = function(t) {
                var e, n, i = ["wheel", "mousewheel", "DOMMouseScroll", "MozMousePixelScroll"],
                    r = "onwheel" in document || 9 <= document.documentMode ? ["wheel"] : ["mousewheel", "DomMouseScroll", "MozMousePixelScroll"],
                    o = Array.prototype.slice;
                if (t.event.fixHooks)
                    for (var a = i.length; a;) t.event.fixHooks[i[--a]] = t.event.mouseHooks;
                var s = t.event.special.mousewheel = {
                    version: "3.1.12",
                    setup: function() {
                        if (this.addEventListener)
                            for (var e = r.length; e;) this.addEventListener(r[--e], l, !1);
                        else this.onmousewheel = l;
                        t.data(this, "mousewheel-line-height", s.getLineHeight(this)), t.data(this, "mousewheel-page-height", s.getPageHeight(this))
                    },
                    teardown: function() {
                        if (this.removeEventListener)
                            for (var e = r.length; e;) this.removeEventListener(r[--e], l, !1);
                        else this.onmousewheel = null;
                        t.removeData(this, "mousewheel-line-height"), t.removeData(this, "mousewheel-page-height")
                    },
                    getLineHeight: function(e) {
                        var n = t(e),
                            i = n["offsetParent" in t.fn ? "offsetParent" : "parent"]();
                        return i.length || (i = t("body")), parseInt(i.css("fontSize"), 10) || parseInt(n.css("fontSize"), 10) || 16
                    },
                    getPageHeight: function(e) {
                        return t(e).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 = t.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 = t.data(this, "mousewheel-line-height");
                            d *= m, f *= m, h *= m
                        } else if (2 === a.deltaMode) {
                            var v = t.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), e && clearTimeout(e), e = setTimeout(c, 200), (t.event.dispatch || t.event.handle).apply(this, l)
                    }
                }

                function c() {
                    n = null
                }

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

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

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

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

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

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

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

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

    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 (t) {
            return !1
        }
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function E() {
        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 N() {
        var t = h(Q().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')).sort((function(t, e) {
                return t = parseInt(t.getAttribute("tabindex")), (e = parseInt(e.getAttribute("tabindex"))) < t ? 1 : t < e ? -1 : 0
            })),
            e = 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(t) {
                return "-1" !== t.getAttribute("tabindex")
            }));
        return function(t) {
            for (var e = [], n = 0; n < t.length; n++) - 1 === e.indexOf(t[n]) && e.push(t[n]);
            return e
        }(t.concat(e)).filter((function(t) {
            return mt(t)
        }))
    }

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

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

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

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

    function z(e, n, i) {
        var r, o;
        if (o = n, h((r = e).classList).forEach((function(t) {
                -1 === d(Y).indexOf(t) && -1 === d(G).indexOf(t) && -1 === d(o.showClass).indexOf(t) && r.classList.remove(t)
            })), 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(t(n.customClass[i]), '"'));
            ft(e, n.customClass[i])
        }
    }
    var H = "SweetAlert2:",
        B = function(t) {
            console.warn("".concat(H, " ").concat(t))
        },
        q = function(t) {
            console.error("".concat(H, " ").concat(t))
        },
        W = [],
        U = function(t) {
            return "function" == typeof t ? t() : t
        },
        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"]),
        G = y(["success", "warning", "info", "question", "error"]),
        X = 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(t, e) {
        if (!e) return null;
        switch (e) {
            case "select":
            case "textarea":
            case "file":
                return gt(t, Y[e]);
            case "checkbox":
                return t.querySelector(".".concat(Y.checkbox, " input"));
            case "radio":
                return t.querySelector(".".concat(Y.radio, " input:checked")) || t.querySelector(".".concat(Y.radio, " input:first-child"));
            case "range":
                return t.querySelector(".".concat(Y.range, " input"));
            default:
                return gt(t, Y.input)
        }
    }

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

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

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

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

    function rt(t) {
        t.style.opacity = "", t.style.display = "none"
    }

    function ot(t, e, n) {
        e ? it(t, n) : rt(t)
    }

    function at(t) {
        return !!(t.scrollHeight > t.clientHeight)
    }

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

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

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

    function ut(t) {
        je.isVisible() && ht !== t.target.value && je.resetValidationMessage(), ht = t.target.value
    }

    function dt(e, n) {
        e instanceof HTMLElement ? n.appendChild(e) : "object" === t(e) ? yt(e, n) : e && j(n, e)
    }
    var ht, ft = function(t, e) {
            et(t, e, !0)
        },
        pt = function(t, e) {
            et(t, e, !1)
        },
        gt = function(t, e) {
            for (var n = 0; n < t.childNodes.length; n++)
                if ($(t.childNodes[n], e)) return t.childNodes[n]
        },
        mt = function(t) {
            return !(!t || !(t.offsetWidth || t.offsetHeight || t.getClientRects().length))
        },
        vt = '\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(G.error, '"></div>\n     <div class="').concat(Y.icon, " ").concat(G.question, '"></div>\n     <div class="').concat(Y.icon, " ").concat(G.warning, '"></div>\n     <div class="').concat(Y.icon, " ").concat(G.info, '"></div>\n     <div class="').concat(Y.icon, " ").concat(G.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, ""),
        yt = function(t, e) {
            t.jquery ? bt(e, t) : j(e, t.toString())
        },
        bt = function(t, e) {
            if (t.textContent = "", 0 in e)
                for (var n = 0; n in e; n++) t.appendChild(e[n].cloneNode(!0));
            else t.appendChild(e.cloneNode(!0))
        },
        wt = function() {
            if (ct()) return !1;
            var t = document.createElement("div"),
                e = {
                    WebkitAnimation: "webkitAnimationEnd",
                    OAnimation: "oAnimationEnd oanimationend",
                    animation: "animationend"
                };
            for (var n in e)
                if (Object.prototype.hasOwnProperty.call(e, n) && void 0 !== t.style[n]) return e[n];
            return !1
        }();

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

    function _t(t, e) {
        t.placeholder && !e.inputPlaceholder || (t.placeholder = e.inputPlaceholder)
    }
    var St = {
            promise: new WeakMap,
            innerParams: new WeakMap,
            domCache: new WeakMap
        },
        Ct = ["input", "file", "range", "select", "radio", "checkbox", "textarea"],
        kt = function(t) {
            var e = Y[t] ? Y[t] : Y.input;
            return gt(C(), e)
        },
        Tt = {};

    function At(t, e) {
        var n, i, r, o, a, s = C().querySelector("#".concat(Y.content));
        e.html ? (dt(e.html, s), it(s, "block")) : e.text ? (s.textContent = e.text, it(s, "block")) : rt(s), n = t, i = e, r = C(), o = St.innerParams.get(n), a = !o || i.input !== o.input, Ct.forEach((function(t) {
            var e = Y[t],
                n = gt(r, e);
            (function(t, e) {
                var n = Z(C(), t);
                if (n)
                    for (var i in function(t) {
                            for (var e = 0; e < t.attributes.length; e++) {
                                var n = t.attributes[e].name; - 1 === ["type", "value", "style"].indexOf(n) && t.removeAttribute(n)
                            }
                        }(n), e) "range" === t && "placeholder" === i || n.setAttribute(i, e[i])
            })(t, i.inputAttributes), n.className = e, a && rt(n)
        })), i.input && (a && function(t) {
            if (!Tt[t.input]) return q('Unexpected type of input! Expected "text", "email", "password", "number", "tel", "select", "radio", "checkbox", "textarea", "file" or "url", got "'.concat(t.input, '"'));
            var e = kt(t.input),
                n = Tt[t.input](e, t);
            it(n), setTimeout((function() {
                tt(n)
            }))
        }(i), function(t) {
            var e = kt(t.input);
            t.customClass && ft(e, t.customClass.input)
        }(i)), z(C(), e, "content")
    }

    function Dt() {
        return X() && X().getAttribute("data-queue-step")
    }

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

    function Mt(t, e) {
        var n, i, r, o;
        n = e, nt(i = Q(), "width", n.width), nt(i, "padding", n.padding), n.background && (i.style.background = n.background), Rt(i, n),
            function(t, e) {
                var n, i, r, o, a, s, l, c, u = X();
                u && (n = u, "string" == typeof(i = e.backdrop) ? n.style.background = i : i || ft([document.documentElement, document.body], Y["no-backdrop"]), !e.backdrop && e.allowOutsideClick && B('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`'), r = u, (o = e.position) in Y ? ft(r, Y[o]) : (B('The "position" parameter is not valid, defaulting to "center"'), ft(r, Y.center)), a = u, !(s = e.grow) || "string" != typeof s || (l = "grow-".concat(s)) in Y && ft(a, Y[l]), z(u, e, "container"), (c = document.body.getAttribute("data-swal2-queue-step")) && (u.setAttribute("data-queue-step", c), document.body.removeAttribute("data-swal2-queue-step")))
            }(0, e), Et(t, e), At(t, e),
            function(t, e) {
                var n = M(),
                    i = D(),
                    r = E();
                e.showConfirmButton || e.showCancelButton || rt(n), z(n, e, "actions"), xt(i, "confirm", e), xt(r, "cancel", e), e.buttonsStyling ? function(t, e, n) {
                    var i;
                    ft([t, e], Y.styled), n.confirmButtonColor && (t.style.backgroundColor = n.confirmButtonColor), n.cancelButtonColor && (e.style.backgroundColor = n.cancelButtonColor), R() || (i = window.getComputedStyle(t).getPropertyValue("background-color"), t.style.borderLeftColor = i, t.style.borderRightColor = i)
                }(i, r, e) : (pt([i, r], Y.styled), i.style.backgroundColor = i.style.borderLeftColor = i.style.borderRightColor = "", r.style.backgroundColor = r.style.borderLeftColor = r.style.borderRightColor = ""), e.reverseButtons && i.parentNode.insertBefore(r, i)
            }(0, e), r = e, ot(o = I(), r.footer), r.footer && dt(r.footer, o), z(o, r, "footer"), "function" == typeof e.onRender && e.onRender(Q())
    }

    function Ot() {
        return D() && D().click()
    }
    Tt.text = Tt.email = Tt.password = Tt.number = Tt.tel = Tt.url = function(e, n) {
        return "string" == typeof n.inputValue || "number" == typeof n.inputValue ? e.value = n.inputValue : m(n.inputValue) || B('Unexpected type of inputValue! Expected "string", "number" or "Promise", got "'.concat(t(n.inputValue), '"')), _t(e, n), e.type = n.input, e
    }, Tt.file = function(t, e) {
        return _t(t, e), t
    }, Tt.range = function(t, e) {
        var n = t.querySelector("input"),
            i = t.querySelector("output");
        return n.value = e.inputValue, n.type = e.input, i.value = e.inputValue, t
    }, Tt.select = function(t, e) {
        var n;
        return t.textContent = "", e.inputPlaceholder && (j(n = document.createElement("option"), e.inputPlaceholder), n.value = "", n.disabled = !0, n.selected = !0, t.appendChild(n)), t
    }, Tt.radio = function(t) {
        return t.textContent = "", t
    }, Tt.checkbox = function(t, e) {
        var n = Z(C(), "checkbox");
        return n.value = 1, n.id = Y.checkbox, n.checked = Boolean(e.inputValue), j(t.querySelector("span"), e.inputPlaceholder), t
    }, Tt.textarea = function(t, e) {
        var n, i;
        return t.value = e.inputValue, _t(t, e), "MutationObserver" in window && (n = parseInt(window.getComputedStyle(Q()).width), i = parseInt(window.getComputedStyle(Q()).paddingLeft) + parseInt(window.getComputedStyle(Q()).paddingRight), new MutationObserver((function() {
            var e = t.offsetWidth + i;
            Q().style.width = n < e ? "".concat(e, "px") : null
        })).observe(t, {
            attributes: !0,
            attributeFilter: ["style"]
        })), t
    };
    var It = function() {
            for (var t = x(), e = 0; e < t.length; e++) rt(t[e])
        },
        Pt = function() {
            for (var t = Q(), e = window.getComputedStyle(t).getPropertyValue("background-color"), n = t.querySelectorAll("[class^=swal2-success-circular-line], .swal2-success-fix"), i = 0; i < n.length; i++) n[i].style.backgroundColor = e
        },
        Lt = function(t, e) {
            t.textContent = "", e.iconHtml ? j(t, Nt(e.iconHtml)) : "success" === e.icon ? j(t, '\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" === e.icon ? j(t, '\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(t, Nt({
                question: "?",
                warning: "!",
                info: "i"
            }[e.icon]))
        },
        Nt = function(t) {
            return '<div class="'.concat(Y["icon-content"], '">').concat(t, "</div>")
        },
        Ft = [],
        Rt = function(t, e) {
            t.className = "".concat(Y.popup, " ").concat(mt(t) ? e.showClass.popup : ""), e.toast ? (ft([document.documentElement, document.body], Y["toast-shown"]), ft(t, Y.toast)) : ft(t, Y.modal), z(t, e, "popup"), "string" == typeof e.customClass && ft(t, e.customClass), e.icon && ft(t, Y["icon-".concat(e.icon)])
        };

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

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

    function zt() {
        if (qt.timeout) {
            var t = qt.timeout.start();
            return lt(t), t
        }
    }

    function Ht(t) {
        return Object.prototype.hasOwnProperty.call(Wt, t)
    }

    function Bt(t) {
        return Vt[t]
    }
    var qt = {},
        Wt = {
            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
        },
        Ut = ["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"],
        Vt = {
            animation: 'showClass" and "hideClass'
        },
        Yt = ["allowOutsideClick", "allowEnterKey", "backdrop", "focusConfirm", "focusCancel", "heightAuto", "keydownListenerCapture"],
        Gt = Object.freeze({
            isValidParameter: Ht,
            isUpdatableParameter: function(t) {
                return -1 !== Ut.indexOf(t)
            },
            isDeprecatedParameter: Bt,
            argsToParams: function(e) {
                var n = {};
                return "object" !== t(e[0]) || v(e[0]) ? ["title", "html", "icon"].forEach((function(i, r) {
                    var o = e[r];
                    "string" == typeof o || v(o) ? n[i] = o : void 0 !== o && q("Unexpected type of ".concat(i, '! Expected "string" or "Element", got ').concat(t(o)))
                })) : r(n, e[0]), n
            },
            isVisible: function() {
                return mt(Q())
            },
            clickConfirm: Ot,
            clickCancel: function() {
                return E() && E().click()
            },
            getContainer: X,
            getPopup: Q,
            getTitle: S,
            getContent: C,
            getHtmlContainer: function() {
                return w(Y["html-container"])
            },
            getImage: k,
            getIcon: _,
            getIcons: x,
            getCloseButton: L,
            getActions: M,
            getConfirmButton: D,
            getCancelButton: E,
            getHeader: O,
            getFooter: I,
            getTimerProgressBar: P,
            getFocusableElements: N,
            getValidationMessage: A,
            isLoading: R,
            fire: function() {
                for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++) e[n] = arguments[n];
                return l(this, e)
            },
            mixin: function(t) {
                return function(n) {
                    ! function(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && a(t, e)
                    }(f, n);
                    var l, d, h = (l = f, d = s(), function() {
                        var t, e = o(l);
                        return c(this, d ? (t = o(this).constructor, Reflect.construct(e, arguments, t)) : e.apply(this, arguments))
                    });

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

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

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

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

    function Kt() {
        var t = X(),
            e = Q();
        t.style.removeProperty("align-items"), e.offsetTop < 0 && (t.style.alignItems = "flex-start")
    }
    var Jt = function(t) {
            var e = X();
            return t === e || !(at(e) || "INPUT" === t.tagName || at(C()) && C().contains(t))
        },
        Zt = {
            swalPromiseResolve: new WeakMap
        };

    function te(t, e, n, i) {
        var r;
        n ? ie(t, i) : (new Promise((function(t) {
            var e = window.scrollX,
                n = window.scrollY;
            qt.restoreFocusTimeout = setTimeout((function() {
                qt.previousActiveElement && qt.previousActiveElement.focus ? (qt.previousActiveElement.focus(), qt.previousActiveElement = null) : document.body && document.body.focus(), t()
            }), 100), void 0 !== e && void 0 !== n && window.scrollTo(e, n)
        })).then((function() {
            return ie(t, i)
        })), qt.keydownTarget.removeEventListener("keydown", qt.keydownHandler, {
            capture: qt.keydownListenerCapture
        }), qt.keydownHandlerAdded = !1), e.parentNode && !document.body.getAttribute("data-swal2-queue-step") && e.parentNode.removeChild(e), F() && (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), pt(document.body, Y.iosfix), document.body.style.top = "", document.body.scrollTop = -1 * r), "undefined" != typeof window && Qt() && window.removeEventListener("resize", Kt), h(document.body.children).forEach((function(t) {
            t.hasAttribute("data-previous-aria-hidden") ? (t.setAttribute("aria-hidden", t.getAttribute("data-previous-aria-hidden")), t.removeAttribute("data-previous-aria-hidden")) : t.removeAttribute("aria-hidden")
        }))), pt([document.documentElement, document.body], [Y.shown, Y["height-auto"], Y["no-backdrop"], Y["toast-shown"], Y["toast-column"]])
    }

    function ee(t) {
        var e, n, i, r = Q();
        r && (e = St.innerParams.get(this)) && !$(r, e.hideClass.popup) && (n = Zt.swalPromiseResolve.get(this), pt(r, e.showClass.popup), ft(r, e.hideClass.popup), i = X(), pt(i, e.showClass.backdrop), ft(i, e.hideClass.backdrop), function(t, e, n) {
            var i = X(),
                r = wt && st(e),
                o = n.onClose,
                a = n.onAfterClose;
            null !== o && "function" == typeof o && o(e), r ? ne(t, e, i, a) : te(t, i, K(), a)
        }(this, r, e), void 0 !== t ? (t.isDismissed = void 0 !== t.dismiss, t.isConfirmed = void 0 === t.dismiss) : t = {
            isDismissed: !0,
            isConfirmed: !1
        }, n(t || {}))
    }
    var ne = function(t, e, n, i) {
            qt.swalCloseEventFinishedCallback = te.bind(null, t, n, K(), i), e.addEventListener(wt, (function(t) {
                t.target === e && (qt.swalCloseEventFinishedCallback(), delete qt.swalCloseEventFinishedCallback)
            }))
        },
        ie = function(t, e) {
            setTimeout((function() {
                "function" == typeof e && e(), t._destroy()
            }))
        };

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

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

    function le(t) {
        var e, n;
        (e = t).inputValidator || Object.keys(se).forEach((function(t) {
                e.input === t && (e.inputValidator = se[t])
            })), t.showLoaderOnConfirm && !t.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"), t.animation = U(t.animation), (n = t).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 t.title && (t.title = t.title.split("\n").join("<br />")),
            function(t) {
                var e, n, i, r, o, a, s, l, c, u, d, h, f, p, g, m = !!(e = X()) && (e.parentNode.removeChild(e), pt([document.documentElement, document.body], [Y["no-backdrop"], Y["toast-shown"], Y["has-column"]]), !0);
                ct() ? q("SweetAlert2 requires document to initialize") : ((n = document.createElement("div")).className = Y.container, m && ft(n, Y["no-transition"]), j(n, vt), (i = "string" == typeof(r = t.target) ? document.querySelector(r) : r).appendChild(n), o = t, (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 && ft(X(), Y.rtl), l = C(), c = gt(l, Y.input), u = gt(l, Y.file), d = l.querySelector(".".concat(Y.range, " input")), h = l.querySelector(".".concat(Y.range, " output")), f = gt(l, Y.select), p = l.querySelector(".".concat(Y.checkbox, " input")), g = gt(l, Y.textarea), c.oninput = ut, u.onchange = ut, f.onchange = ut, p.onchange = ut, g.oninput = ut, d.oninput = function(t) {
                    ut(t), h.value = d.value
                }, d.onchange = function(t) {
                    ut(t), d.nextSibling.value = d.value
                })
            }(t)
    }

    function ce(t) {
        var e, n = Q();
        t.target === n && (e = X(), n.removeEventListener(wt, ce), e.style.overflowY = "auto")
    }

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

    function de(t, e, n) {
        var i = N();
        if (0 < i.length) return (e += n) === i.length ? e = 0 : -1 === e && (e = i.length - 1), i[e].focus();
        Q().focus()
    }
    var he, fe = function(t, e) {
            wt && st(e) ? (t.style.overflowY = "hidden", e.addEventListener(wt, ce)) : t.style.overflowY = "auto"
        },
        pe = function(t, e, 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"), ft(document.body, Y.iosfix), function() {
                var t, e = X();
                e.ontouchstart = function(e) {
                    t = Jt(e.target)
                }, e.ontouchmove = function(e) {
                    t && (e.preventDefault(), e.stopPropagation())
                }
            }(), navigator.userAgent.match(/(CriOS|FxiOS|EdgiOS|YaBrowser|UCBrowser)/i) || Q().scrollHeight > window.innerHeight - 44 && (X().style.paddingBottom = "".concat(44, "px"))), "undefined" != typeof window && Qt() && (Kt(), window.addEventListener("resize", Kt)), e && "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 t = document.createElement("div");
                t.className = Y["scrollbar-measure"], document.body.appendChild(t);
                var e = t.getBoundingClientRect().width - t.clientWidth;
                return document.body.removeChild(t), e
            }(), "px")), setTimeout((function() {
                t.scrollTop = 0
            }))
        },
        ge = function(t, e, n) {
            ft(t, n.showClass.backdrop), it(e), ft(e, n.showClass.popup), ft([document.documentElement, document.body], Y.shown), n.heightAuto && n.backdrop && !n.toast && ft([document.documentElement, document.body], Y["height-auto"])
        },
        me = function(e, n) {
            function i(t) {
                return ye[n.input](r, be(t), n)
            }
            var r = C();
            p(n.inputOptions) || m(n.inputOptions) ? (jt(), g(n.inputOptions).then((function(t) {
                e.hideLoading(), i(t)
            }))) : "object" === t(n.inputOptions) ? i(n.inputOptions) : q("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(t(n.inputOptions)))
        },
        ve = function(t, e) {
            var n = t.getInput();
            rt(n), g(e.inputValue).then((function(i) {
                n.value = "number" === e.input ? parseFloat(i) || 0 : "".concat(i), it(n), n.focus(), t.hideLoading()
            })).catch((function(e) {
                q("Error in inputValue promise: ".concat(e)), n.value = "", it(n), n.focus(), t.hideLoading()
            }))
        },
        ye = {
            select: function(t, e, n) {
                function i(t, e, i) {
                    var r = document.createElement("option");
                    r.value = i, j(r, e), n.inputValue.toString() === i.toString() && (r.selected = !0), t.appendChild(r)
                }
                var r = gt(t, Y.select);
                e.forEach((function(t) {
                    var e, n = t[0],
                        o = t[1];
                    Array.isArray(o) ? ((e = document.createElement("optgroup")).label = n, e.disabled = !1, r.appendChild(e), o.forEach((function(t) {
                        return i(e, t[1], t[0])
                    }))) : i(r, o, n)
                })), r.focus()
            },
            radio: function(t, e, n) {
                var i = gt(t, Y.radio);
                e.forEach((function(t) {
                    var e = t[0],
                        r = t[1],
                        o = document.createElement("input"),
                        a = document.createElement("label");
                    o.type = "radio", o.name = Y.radio, o.value = e, n.inputValue.toString() === e.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()
            }
        },
        be = function e(n) {
            var i = [];
            return "undefined" != typeof Map && n instanceof Map ? n.forEach((function(n, r) {
                var o = n;
                "object" === t(o) && (o = e(o)), i.push([r, o])
            })) : Object.keys(n).forEach((function(r) {
                var o = n[r];
                "object" === t(o) && (o = e(o)), i.push([r, o])
            })), i
        },
        we = function(t, e) {
            var n = function(t, e) {
                var n = t.getInput();
                if (!n) return null;
                switch (e.input) {
                    case "checkbox":
                        return function(t) {
                            return t.checked ? 1 : 0
                        }(n);
                    case "radio":
                        return function(t) {
                            return t.checked ? t.value : null
                        }(n);
                    case "file":
                        return function(t) {
                            return t.files.length ? null !== t.getAttribute("multiple") ? t.files : t.files[0] : null
                        }(n);
                    default:
                        return e.inputAutoTrim ? n.value.trim() : n.value
                }
            }(t, e);
            e.inputValidator ? (t.disableInput(), Promise.resolve().then((function() {
                return g(e.inputValidator(n, e.validationMessage))
            })).then((function(i) {
                t.enableButtons(), t.enableInput(), i ? t.showValidationMessage(i) : xe(t, e, n)
            }))) : t.getInput().checkValidity() ? xe(t, e, n) : (t.enableButtons(), t.showValidationMessage(e.validationMessage))
        },
        xe = function(t, e, n) {
            e.showLoaderOnConfirm && jt(), e.preConfirm ? (t.resetValidationMessage(), Promise.resolve().then((function() {
                return g(e.preConfirm(n, e.validationMessage))
            })).then((function(e) {
                mt(A()) || !1 === e ? t.hideLoading() : ue(t, void 0 === e ? n : e)
            }))) : ue(t, n)
        },
        _e = ["ArrowLeft", "ArrowRight", "ArrowUp", "ArrowDown", "Left", "Right", "Up", "Down"],
        Se = ["Escape", "Esc"],
        Ce = function(t, e, n) {
            var i = St.innerParams.get(t);
            i.stopKeydownPropagation && e.stopPropagation(), "Enter" === e.key ? ke(t, e, i) : "Tab" === e.key ? Te(e, i) : -1 !== _e.indexOf(e.key) ? Ae() : -1 !== Se.indexOf(e.key) && De(e, i, n)
        },
        ke = function(t, e, n) {
            if (!e.isComposing && e.target && t.getInput() && e.target.outerHTML === t.getInput().outerHTML) {
                if (-1 !== ["textarea", "file"].indexOf(n.input)) return;
                Ot(), e.preventDefault()
            }
        },
        Te = function(t) {
            for (var e = t.target, n = N(), i = -1, r = 0; r < n.length; r++)
                if (e === n[r]) {
                    i = r;
                    break
                }
            t.shiftKey ? de(0, i, -1) : de(0, i, 1), t.stopPropagation(), t.preventDefault()
        },
        Ae = function() {
            var t = D(),
                e = E();
            document.activeElement === t && mt(e) ? e.focus() : document.activeElement === e && mt(t) && t.focus()
        },
        De = function(t, e, n) {
            U(e.allowEscapeKey) && (t.preventDefault(), n(V.esc))
        },
        Ee = function(t, e, n) {
            e.popup.onclick = function() {
                var e = St.innerParams.get(t);
                e.showConfirmButton || e.showCancelButton || e.showCloseButton || e.input || n(V.close)
            }
        },
        Me = !1,
        Oe = function(t) {
            t.popup.onmousedown = function() {
                t.container.onmouseup = function(e) {
                    t.container.onmouseup = void 0, e.target === t.container && (Me = !0)
                }
            }
        },
        Ie = function(t) {
            t.container.onmousedown = function() {
                t.popup.onmouseup = function(e) {
                    t.popup.onmouseup = void 0, e.target !== t.popup && !t.popup.contains(e.target) || (Me = !0)
                }
            }
        },
        Pe = function(t, e, n) {
            e.container.onclick = function(i) {
                var r = St.innerParams.get(t);
                Me ? Me = !1 : i.target === e.container && U(r.allowOutsideClick) && n(V.backdrop)
            }
        },
        Le = function() {
            document.activeElement && "function" == typeof document.activeElement.blur && document.activeElement.blur()
        },
        Ne = function(t) {
            for (var e in t) t[e] = new WeakMap
        },
        Fe = Object.freeze({
            hideLoading: Xt,
            disableLoading: Xt,
            getInput: function(t) {
                var e = St.innerParams.get(t || this),
                    n = St.domCache.get(t || this);
                return n ? Z(n.content, e.input) : null
            },
            close: ee,
            closePopup: ee,
            closeModal: ee,
            closeToast: ee,
            enableButtons: function() {
                re(this, ["confirmButton", "cancelButton"], !1)
            },
            disableButtons: function() {
                re(this, ["confirmButton", "cancelButton"], !0)
            },
            enableInput: function() {
                return oe(this.getInput(), !1)
            },
            disableInput: function() {
                return oe(this.getInput(), !0)
            },
            showValidationMessage: function(t) {
                var e = St.domCache.get(this);
                j(e.validationMessage, t);
                var n = window.getComputedStyle(e.popup);
                e.validationMessage.style.marginLeft = "-".concat(n.getPropertyValue("padding-left")), e.validationMessage.style.marginRight = "-".concat(n.getPropertyValue("padding-right")), it(e.validationMessage);
                var i = this.getInput();
                i && (i.setAttribute("aria-invalid", !0), i.setAttribute("aria-describedBy", Y["validation-message"]), tt(i), ft(i, Y.inputerror))
            },
            resetValidationMessage: function() {
                var t = St.domCache.get(this);
                t.validationMessage && rt(t.validationMessage);
                var e = this.getInput();
                e && (e.removeAttribute("aria-invalid"), e.removeAttribute("aria-describedBy"), pt(e, Y.inputerror))
            },
            getProgressSteps: function() {
                return St.domCache.get(this).progressSteps
            },
            _main: function(t) {
                (function(t) {
                    for (var e in t) Ht(r = e) || B('Unknown parameter "'.concat(r, '"')), t.toast && (i = e, -1 !== Yt.indexOf(i) && B('The parameter "'.concat(i, '" is incompatible with toasts'))), Bt(n = e) && f(n, Bt(n));
                    var n, i, r
                })(t), qt.currentInstance && qt.currentInstance._destroy(), qt.currentInstance = this;
                var e = function(t) {
                    var e = r({}, Wt.showClass, t.showClass),
                        n = r({}, Wt.hideClass, t.hideClass),
                        i = r({}, Wt, t);
                    return i.showClass = e, i.hideClass = n, !1 === t.animation && (i.showClass = {
                        popup: "swal2-noanimation",
                        backdrop: "swal2-noanimation"
                    }, i.hideClass = {}), i
                }(t);
                le(e), Object.freeze(e), qt.timeout && (qt.timeout.stop(), delete qt.timeout), clearTimeout(qt.restoreFocusTimeout);
                var n = function(t) {
                    var e = {
                        popup: Q(),
                        container: X(),
                        content: C(),
                        actions: M(),
                        confirmButton: D(),
                        cancelButton: E(),
                        closeButton: L(),
                        validationMessage: A(),
                        progressSteps: T()
                    };
                    return St.domCache.set(t, e), e
                }(this);
                return Mt(this, e), St.innerParams.set(this, e),
                    function(t, e, n) {
                        return new Promise((function(i) {
                            var r = function(e) {
                                t.closePopup({
                                    dismiss: e
                                })
                            };
                            Zt.swalPromiseResolve.set(t, i), e.confirmButton.onclick = function() {
                                    return function(t, e) {
                                        t.disableButtons(), e.input ? we(t, e) : xe(t, e, !0)
                                    }(t, n)
                                }, e.cancelButton.onclick = function() {
                                    return function(t, e) {
                                        t.disableButtons(), e(V.cancel)
                                    }(t, r)
                                }, e.closeButton.onclick = function() {
                                    return r(V.close)
                                },
                                function(t, e, n) {
                                    St.innerParams.get(t).toast ? Ee(t, e, n) : (Oe(e), Ie(e), Pe(t, e, n))
                                }(t, e, r),
                                function(t, e, n, i) {
                                    e.keydownTarget && e.keydownHandlerAdded && (e.keydownTarget.removeEventListener("keydown", e.keydownHandler, {
                                        capture: e.keydownListenerCapture
                                    }), e.keydownHandlerAdded = !1), n.toast || (e.keydownHandler = function(e) {
                                        return Ce(t, e, i)
                                    }, e.keydownTarget = n.keydownListenerCapture ? window : Q(), e.keydownListenerCapture = n.keydownListenerCapture, e.keydownTarget.addEventListener("keydown", e.keydownHandler, {
                                        capture: e.keydownListenerCapture
                                    }), e.keydownHandlerAdded = !0)
                                }(t, qt, n, r), n.toast && (n.input || n.footer || n.showCloseButton) ? ft(document.body, Y["toast-column"]) : pt(document.body, Y["toast-column"]),
                                function(t, e) {
                                    "select" === e.input || "radio" === e.input ? me(t, e) : -1 !== ["text", "email", "number", "tel", "textarea"].indexOf(e.input) && (p(e.inputValue) || m(e.inputValue)) && ve(t, e)
                                }(t, n),
                                function(t) {
                                    var e = X(),
                                        n = Q();
                                    "function" == typeof t.onBeforeOpen && t.onBeforeOpen(n);
                                    var i = window.getComputedStyle(document.body).overflowY;
                                    ge(e, n, t), fe(e, n), F() && (pe(e, t.scrollbarPadding, i), h(document.body.children).forEach((function(t) {
                                        t === X() || function(t, e) {
                                            if ("function" == typeof t.contains) return t.contains(e)
                                        }(t, X()) || (t.hasAttribute("aria-hidden") && t.setAttribute("data-previous-aria-hidden", t.getAttribute("aria-hidden")), t.setAttribute("aria-hidden", "true"))
                                    }))), K() || qt.previousActiveElement || (qt.previousActiveElement = document.activeElement), "function" == typeof t.onOpen && setTimeout((function() {
                                        return t.onOpen(n)
                                    })), pt(e, Y["no-transition"])
                                }(n),
                                function(t, e, n) {
                                    var i = P();
                                    rt(i), e.timer && (t.timeout = new ae((function() {
                                        n("timer"), delete t.timeout
                                    }), e.timer), e.timerProgressBar && (it(i), setTimeout((function() {
                                        t.timeout.running && lt(e.timer)
                                    }))))
                                }(qt, n, r),
                                function(t, e) {
                                    if (!e.toast) U(e.allowEnterKey) ? e.focusCancel && mt(t.cancelButton) ? t.cancelButton.focus() : e.focusConfirm && mt(t.confirmButton) ? t.confirmButton.focus() : de(0, -1, 1) : Le()
                                }(e, n), setTimeout((function() {
                                    e.container.scrollTop = 0
                                }))
                        }))
                    }(this, n, e)
            },
            update: function(t) {
                var e = Q(),
                    n = St.innerParams.get(this);
                if (!e || $(e, 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(t).forEach((function(e) {
                    je.isUpdatableParameter(e) ? i[e] = t[e] : B('Invalid parameter to update: "'.concat(e, '". Updatable params are listed here: https://github.com/sweetalert2/sweetalert2/blob/master/src/utils/params.js'))
                }));
                var o = r({}, n, i);
                Mt(this, o), St.innerParams.set(this, o), Object.defineProperties(this, {
                    params: {
                        value: r({}, this.params, t),
                        writable: !1,
                        enumerable: !0
                    }
                })
            },
            _destroy: function() {
                var t = St.domCache.get(this),
                    e = St.innerParams.get(this);
                e && (t.popup && qt.swalCloseEventFinishedCallback && (qt.swalCloseEventFinishedCallback(), delete qt.swalCloseEventFinishedCallback), qt.deferDisposalTimer && (clearTimeout(qt.deferDisposalTimer), delete qt.deferDisposalTimer), "function" == typeof e.onDestroy && e.onDestroy(), delete this.params, delete qt.keydownHandler, delete qt.keydownTarget, Ne(St), Ne(Zt))
            }
        }),
        Re = function() {
            function t() {
                if (e(this, t), "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)"), he = 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);
                    St.promise.set(this, a)
                }
            }
            return i(t, [{
                key: "then",
                value: function(t) {
                    return St.promise.get(this).then(t)
                }
            }, {
                key: "finally",
                value: function(t) {
                    return St.promise.get(this).finally(t)
                }
            }]), t
        }();
    r(Re.prototype, Fe), r(Re, Gt), Object.keys(Fe).forEach((function(t) {
        Re[t] = function() {
            if (he) return he[t].apply(he, arguments)
        }
    })), Re.DismissReason = V, Re.version = "9.17.2";
    var je = Re;
    return je.default = je
})), void 0 !== this && this.Sweetalert2 && (this.swal = this.sweetAlert = this.Swal = this.SweetAlert = this.Sweetalert2),
    function(t) {
        t(["jquery"], (function(t) {
            return function() {
                function e(e, n) {
                    return e || (e = a()), (l = t("#" + e.containerId)).length || n && (l = function(e) {
                        return (l = t("<div/>").attr("id", e.containerId).addClass(e.positionClass)).appendTo(t(e.target)), l
                    }(e)), l
                }

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

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

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

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

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

                    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 t = (_.hideEta - (new Date).getTime()) / _.maxHideTime * 100;
                        w.width(t + "%")
                    }
                    var p = a(),
                        g = n.iconClass || p.iconClass;
                    if (void 0 !== n.optionsOverride && (p = t.extend(p, n.optionsOverride), g = n.optionsOverride.iconClass || g), ! function(t, e) {
                            if (t.preventDuplicates) {
                                if (e.message === u) return !0;
                                u = e.message
                            }
                            return !1
                        }(p, n)) {
                        d++, l = e(p, !0);
                        var m = null,
                            v = t("<div/>"),
                            y = t("<div/>"),
                            b = t("<div/>"),
                            w = t("<div/>"),
                            x = t(p.closeHtml),
                            _ = {
                                intervalId: null,
                                hideEta: null,
                                maxHideTime: null
                            },
                            S = {
                                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 t = n.title;
                                    p.escapeHtml && (t = i(n.title)), y.append(t).addClass(p.titleClass), v.append(y)
                                }
                            }(),
                            function() {
                                if (n.message) {
                                    var t = n.message;
                                    p.escapeHtml && (t = i(n.message)), b.append(t).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 t = "";
                                switch (n.iconClass) {
                                    case "toast-success":
                                    case "toast-info":
                                        t = "polite";
                                        break;
                                    default:
                                        t = "assertive"
                                }
                                v.attr("aria-live", t)
                            }(), 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(t) {
                                t.stopPropagation ? t.stopPropagation() : void 0 !== t.cancelBubble && !0 !== t.cancelBubble && (t.cancelBubble = !0), p.onCloseClick && p.onCloseClick(t), o(!0)
                            })), p.onclick && v.click((function(t) {
                                p.onclick(t), o()
                            })), r(S), p.debug && console && console.log(S), v
                    }
                }

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

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

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

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

            function s(t) {
                ! function(t, e) {
                    if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                }(this, s), this.resolveOptions(t), this.initSelection()
            }
            var l = (function(t, e, n) {
                    e && a(t.prototype, e)
                }(s, [{
                    key: "resolveOptions",
                    value: function(t) {
                        var e = 0 < arguments.length && void 0 !== t ? t : {};
                        this.action = e.action, this.container = e.container, this.emitter = e.emitter, this.target = e.target, this.text = e.text, this.trigger = e.trigger, this.selectedText = ""
                    }
                }, {
                    key: "initSelection",
                    value: function() {
                        this.text ? this.selectFake() : this.target && this.selectTarget()
                    }
                }, {
                    key: "selectFake",
                    value: function() {
                        var t = this,
                            e = "rtl" == document.documentElement.getAttribute("dir");
                        this.removeFake(), this.fakeHandlerCallback = function() {
                            return t.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[e ? "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 t = void 0;
                        try {
                            t = document.execCommand(this.action)
                        } catch (e) {
                            t = !1
                        }
                        this.handleResult(t)
                    }
                }, {
                    key: "handleResult",
                    value: function(t) {
                        this.emitter.emit(t ? "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(t) {
                        var e = 0 < arguments.length && void 0 !== t ? t : "copy";
                        if (this._action = e, "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(t) {
                        if (void 0 !== t) {
                            if (!t || "object" !== (void 0 === t ? "undefined" : o(t)) || 1 !== t.nodeType) throw new Error('Invalid "target" value, use a valid Element');
                            if ("copy" === this.action && t.hasAttribute("disabled")) throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');
                            if ("cut" === this.action && (t.hasAttribute("readonly") || t.hasAttribute("disabled"))) throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');
                            this._target = t
                        }
                    },
                    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(t) {
                    return typeof t
                } : function(t) {
                    return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t
                };

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

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

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

        function t(i) {
            if (n[i]) return n[i].exports;
            var r = n[i] = {
                i: i,
                l: !1,
                exports: {}
            };
            return e[i].call(r.exports, r, r.exports, t), r.l = !0, r.exports
        }
        var e, n
    })),
    function(t, e) {
        "object" == typeof exports && "undefined" != typeof module ? module.exports = e(function() {
            try {
                return require("moment")
            } catch (t) {}
        }()) : "function" == typeof define && define.amd ? define(["require"], (function(t) {
            return e(function() {
                try {
                    return t("moment")
                } catch (t) {}
            }())
        })) : (t = t || self).Chart = e(t.moment)
    }(this, (function(t) {
        "use strict";
        t = t && t.hasOwnProperty("default") ? t.default : t;
        var e = {
                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(t, e) {
                return t(e = {
                    exports: {}
                }), e.exports
            }((function(t) {
                var n = {};
                for (var i in e) e.hasOwnProperty(i) && (n[e[i]] = i);
                var r = t.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(t) {
                    var e, n, i = t[0] / 255,
                        r = t[1] / 255,
                        o = t[2] / 255,
                        a = Math.min(i, r, o),
                        s = Math.max(i, r, o),
                        l = s - a;
                    return s === a ? e = 0 : i === s ? e = (r - o) / l : r === s ? e = 2 + (o - i) / l : o === s && (e = 4 + (i - r) / l), (e = Math.min(60 * e, 360)) < 0 && (e += 360), n = (a + s) / 2, [e, 100 * (s === a ? 0 : n <= .5 ? l / (s + a) : l / (2 - s - a)), 100 * n]
                }, r.rgb.hsv = function(t) {
                    var e, n, i, r, o, a = t[0] / 255,
                        s = t[1] / 255,
                        l = t[2] / 255,
                        c = Math.max(a, s, l),
                        u = c - Math.min(a, s, l),
                        d = function(t) {
                            return (c - t) / 6 / u + .5
                        };
                    return 0 === u ? r = o = 0 : (o = u / c, e = d(a), n = d(s), i = d(l), a === c ? r = i - n : s === c ? r = 1 / 3 + e - i : l === c && (r = 2 / 3 + n - e), r < 0 ? r += 1 : r > 1 && (r -= 1)), [360 * r, 100 * o, 100 * c]
                }, r.rgb.hwb = function(t) {
                    var e = t[0],
                        n = t[1],
                        i = t[2];
                    return [r.rgb.hsl(t)[0], 1 / 255 * Math.min(e, Math.min(n, i)) * 100, 100 * (i = 1 - 1 / 255 * Math.max(e, Math.max(n, i)))]
                }, r.rgb.cmyk = function(t) {
                    var e, n = t[0] / 255,
                        i = t[1] / 255,
                        r = t[2] / 255;
                    return [100 * ((1 - n - (e = Math.min(1 - n, 1 - i, 1 - r))) / (1 - e) || 0), 100 * ((1 - i - e) / (1 - e) || 0), 100 * ((1 - r - e) / (1 - e) || 0), 100 * e]
                }, r.rgb.keyword = function(t) {
                    var i = n[t];
                    if (i) return i;
                    var r, o, a, s = 1 / 0;
                    for (var l in e)
                        if (e.hasOwnProperty(l)) {
                            var c = (o = t, a = e[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(t) {
                    return e[t]
                }, r.rgb.xyz = function(t) {
                    var e = t[0] / 255,
                        n = t[1] / 255,
                        i = t[2] / 255;
                    return [100 * (.4124 * (e = e > .04045 ? Math.pow((e + .055) / 1.055, 2.4) : e / 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 * e + .7152 * n + .0722 * i), 100 * (.0193 * e + .1192 * n + .9505 * i)]
                }, r.rgb.lab = function(t) {
                    var e = r.rgb.xyz(t),
                        n = e[0],
                        i = e[1],
                        o = e[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(t) {
                    var e, n, i, r, o, a = t[0] / 360,
                        s = t[1] / 100,
                        l = t[2] / 100;
                    if (0 === s) return [o = 255 * l, o, o];
                    e = 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 ? e + 6 * (n - e) * i : 2 * i < 1 ? n : 3 * i < 2 ? e + (n - e) * (2 / 3 - i) * 6 : e, r[c] = 255 * o;
                    return r
                }, r.hsl.hsv = function(t) {
                    var e = t[0],
                        n = t[1] / 100,
                        i = t[2] / 100,
                        r = n,
                        o = Math.max(i, .01);
                    return n *= (i *= 2) <= 1 ? i : 2 - i, r *= o <= 1 ? o : 2 - o, [e, 100 * (0 === i ? 2 * r / (o + r) : 2 * n / (i + n)), (i + n) / 2 * 100]
                }, r.hsv.rgb = function(t) {
                    var e = t[0] / 60,
                        n = t[1] / 100,
                        i = t[2] / 100,
                        r = Math.floor(e) % 6,
                        o = e - Math.floor(e),
                        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(t) {
                    var e, n, i, r = t[0],
                        o = t[1] / 100,
                        a = t[2] / 100,
                        s = Math.max(a, .01);
                    return i = (2 - o) * a, n = o * s, [r, 100 * (n = (n /= (e = (2 - o) * s) <= 1 ? e : 2 - e) || 0), 100 * (i /= 2)]
                }, r.hwb.rgb = function(t) {
                    var e, n, i, r, o, a, s, l = t[0] / 360,
                        c = t[1] / 100,
                        u = t[2] / 100,
                        d = c + u;
                    switch (d > 1 && (c /= d, u /= d), i = 6 * l - (e = Math.floor(6 * l)), 0 != (1 & e) && (i = 1 - i), r = c + i * ((n = 1 - u) - c), e) {
                        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(t) {
                    var e = t[0] / 100,
                        n = t[1] / 100,
                        i = t[2] / 100,
                        r = t[3] / 100;
                    return [255 * (1 - Math.min(1, e * (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(t) {
                    var e, n, i, r = t[0] / 100,
                        o = t[1] / 100,
                        a = t[2] / 100;
                    return n = -.9689 * r + 1.8758 * o + .0415 * a, i = .0557 * r + -.204 * o + 1.057 * a, e = (e = 3.2406 * r + -1.5372 * o + -.4986 * a) > .0031308 ? 1.055 * Math.pow(e, 1 / 2.4) - .055 : 12.92 * e, 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 * (e = Math.min(Math.max(0, e), 1)), 255 * (n = Math.min(Math.max(0, n), 1)), 255 * (i = Math.min(Math.max(0, i), 1))]
                }, r.xyz.lab = function(t) {
                    var e = t[0],
                        n = t[1],
                        i = t[2];
                    return n /= 100, i /= 108.883, e = (e /= 95.047) > .008856 ? Math.pow(e, 1 / 3) : 7.787 * e + 16 / 116, [116 * (n = n > .008856 ? Math.pow(n, 1 / 3) : 7.787 * n + 16 / 116) - 16, 500 * (e - n), 200 * (n - (i = i > .008856 ? Math.pow(i, 1 / 3) : 7.787 * i + 16 / 116))]
                }, r.lab.xyz = function(t) {
                    var e, n, i, r = t[0];
                    e = t[1] / 500 + (n = (r + 16) / 116), i = n - t[2] / 200;
                    var o = Math.pow(n, 3),
                        a = Math.pow(e, 3),
                        s = Math.pow(i, 3);
                    return n = o > .008856 ? o : (n - 16 / 116) / 7.787, e = a > .008856 ? a : (e - 16 / 116) / 7.787, i = s > .008856 ? s : (i - 16 / 116) / 7.787, [e *= 95.047, n *= 100, i *= 108.883]
                }, r.lab.lch = function(t) {
                    var e, n = t[0],
                        i = t[1],
                        r = t[2];
                    return (e = 360 * Math.atan2(r, i) / 2 / Math.PI) < 0 && (e += 360), [n, Math.sqrt(i * i + r * r), e]
                }, r.lch.lab = function(t) {
                    var e, n = t[0],
                        i = t[1];
                    return e = t[2] / 360 * 2 * Math.PI, [n, i * Math.cos(e), i * Math.sin(e)]
                }, r.rgb.ansi16 = function(t) {
                    var e = t[0],
                        n = t[1],
                        i = t[2],
                        o = 1 in arguments ? arguments[1] : r.rgb.hsv(t)[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(e / 255));
                    return 2 === o && (a += 60), a
                }, r.hsv.ansi16 = function(t) {
                    return r.rgb.ansi16(r.hsv.rgb(t), t[2])
                }, r.rgb.ansi256 = function(t) {
                    var e = t[0],
                        n = t[1],
                        i = t[2];
                    return e === n && n === i ? e < 8 ? 16 : e > 248 ? 231 : Math.round((e - 8) / 247 * 24) + 232 : 16 + 36 * Math.round(e / 255 * 5) + 6 * Math.round(n / 255 * 5) + Math.round(i / 255 * 5)
                }, r.ansi16.rgb = function(t) {
                    var e = t % 10;
                    if (0 === e || 7 === e) return t > 50 && (e += 3.5), [e = e / 10.5 * 255, e, e];
                    var n = .5 * (1 + ~~(t > 50));
                    return [(1 & e) * n * 255, (e >> 1 & 1) * n * 255, (e >> 2 & 1) * n * 255]
                }, r.ansi256.rgb = function(t) {
                    if (t >= 232) {
                        var e = 10 * (t - 232) + 8;
                        return [e, e, e]
                    }
                    var n;
                    return t -= 16, [Math.floor(t / 36) / 5 * 255, Math.floor((n = t % 36) / 6) / 5 * 255, n % 6 / 5 * 255]
                }, r.rgb.hex = function(t) {
                    var e = (((255 & Math.round(t[0])) << 16) + ((255 & Math.round(t[1])) << 8) + (255 & Math.round(t[2]))).toString(16).toUpperCase();
                    return "000000".substring(e.length) + e
                }, r.hex.rgb = function(t) {
                    var e = t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);
                    if (!e) return [0, 0, 0];
                    var n = e[0];
                    3 === e[0].length && (n = n.split("").map((function(t) {
                        return t + t
                    })).join(""));
                    var i = parseInt(n, 16);
                    return [i >> 16 & 255, i >> 8 & 255, 255 & i]
                }, r.rgb.hcg = function(t) {
                    var e, n = t[0] / 255,
                        i = t[1] / 255,
                        r = t[2] / 255,
                        o = Math.max(Math.max(n, i), r),
                        a = Math.min(Math.min(n, i), r),
                        s = o - a;
                    return e = s <= 0 ? 0 : o === n ? (i - r) / s % 6 : o === i ? 2 + (r - n) / s : 4 + (n - i) / s + 4, e /= 6, [360 * (e %= 1), 100 * s, 100 * (s < 1 ? a / (1 - s) : 0)]
                }, r.hsl.hcg = function(t) {
                    var e, n = t[1] / 100,
                        i = t[2] / 100,
                        r = 0;
                    return (e = i < .5 ? 2 * n * i : 2 * n * (1 - i)) < 1 && (r = (i - .5 * e) / (1 - e)), [t[0], 100 * e, 100 * r]
                }, r.hsv.hcg = function(t) {
                    var e = t[1] / 100,
                        n = t[2] / 100,
                        i = e * n,
                        r = 0;
                    return i < 1 && (r = (n - i) / (1 - i)), [t[0], 100 * i, 100 * r]
                }, r.hcg.rgb = function(t) {
                    var e = t[0] / 360,
                        n = t[1] / 100,
                        i = t[2] / 100;
                    if (0 === n) return [255 * i, 255 * i, 255 * i];
                    var r, o = [0, 0, 0],
                        a = e % 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(t) {
                    var e = t[1] / 100,
                        n = e + t[2] / 100 * (1 - e),
                        i = 0;
                    return n > 0 && (i = e / n), [t[0], 100 * i, 100 * n]
                }, r.hcg.hsl = function(t) {
                    var e = t[1] / 100,
                        n = t[2] / 100 * (1 - e) + .5 * e,
                        i = 0;
                    return n > 0 && n < .5 ? i = e / (2 * n) : n >= .5 && n < 1 && (i = e / (2 * (1 - n))), [t[0], 100 * i, 100 * n]
                }, r.hcg.hwb = function(t) {
                    var e = t[1] / 100,
                        n = e + t[2] / 100 * (1 - e);
                    return [t[0], 100 * (n - e), 100 * (1 - n)]
                }, r.hwb.hcg = function(t) {
                    var e = t[1] / 100,
                        n = 1 - t[2] / 100,
                        i = n - e,
                        r = 0;
                    return i < 1 && (r = (n - i) / (1 - i)), [t[0], 100 * i, 100 * r]
                }, r.apple.rgb = function(t) {
                    return [t[0] / 65535 * 255, t[1] / 65535 * 255, t[2] / 65535 * 255]
                }, r.rgb.apple = function(t) {
                    return [t[0] / 255 * 65535, t[1] / 255 * 65535, t[2] / 255 * 65535]
                }, r.gray.rgb = function(t) {
                    return [t[0] / 100 * 255, t[0] / 100 * 255, t[0] / 100 * 255]
                }, r.gray.hsl = r.gray.hsv = function(t) {
                    return [0, 0, t[0]]
                }, r.gray.hwb = function(t) {
                    return [0, 100, t[0]]
                }, r.gray.cmyk = function(t) {
                    return [0, 0, 0, t[0]]
                }, r.gray.lab = function(t) {
                    return [t[0], 0, 0]
                }, r.gray.hex = function(t) {
                    var e = 255 & Math.round(t[0] / 100 * 255),
                        n = ((e << 16) + (e << 8) + e).toString(16).toUpperCase();
                    return "000000".substring(n.length) + n
                }, r.rgb.gray = function(t) {
                    return [(t[0] + t[1] + t[2]) / 3 / 255 * 100]
                }
            }));

        function i(t) {
            var e = function() {
                    for (var t = {}, e = Object.keys(n), i = e.length, r = 0; r < i; r++) t[e[r]] = {
                        distance: -1,
                        parent: null
                    };
                    return t
                }(),
                i = [t];
            for (e[t].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 = e[l]; - 1 === c.distance && (c.distance = e[r].distance + 1, c.parent = r, i.unshift(l))
                }
            return e
        }

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

        function o(t, e) {
            for (var i = [e[t].parent, t], o = n[e[t].parent][t], a = e[t].parent; e[a].parent;) i.unshift(e[a].parent), o = r(n[e[a].parent][a], o), a = e[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(t) {
            a[t] = {}, Object.defineProperty(a[t], "channels", {
                value: n[t].channels
            }), Object.defineProperty(a[t], "labels", {
                value: n[t].labels
            });
            var e = function(t) {
                for (var e = i(t), n = {}, r = Object.keys(e), a = r.length, s = 0; s < a; s++) {
                    var l = r[s];
                    null !== e[l].parent && (n[l] = o(l, e))
                }
                return n
            }(t);
            Object.keys(e).forEach((function(n) {
                var i = e[n];
                a[t][n] = function(t) {
                    var e = function(e) {
                        if (null == e) return e;
                        arguments.length > 1 && (e = Array.prototype.slice.call(arguments));
                        var n = t(e);
                        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 t && (e.conversion = t.conversion), e
                }(i), a[t][n].raw = function(t) {
                    var e = function(e) {
                        return null == e ? e : (arguments.length > 1 && (e = Array.prototype.slice.call(arguments)), t(e))
                    };
                    return "conversion" in t && (e.conversion = t.conversion), e
                }(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(t) {
                    var e = u(t);
                    return e && e.slice(0, 3)
                },
                getHsl: function(t) {
                    var e = d(t);
                    return e && e.slice(0, 3)
                },
                getHwb: h,
                getAlpha: function(t) {
                    var e = u(t);
                    return e || (e = d(t)) || (e = h(t)) ? e[3] : void 0
                },
                hexString: function(t, e) {
                    return e = void 0 !== e && 3 === t.length ? e : t[3], "#" + v(t[0]) + v(t[1]) + v(t[2]) + (e >= 0 && e < 1 ? v(Math.round(255 * e)) : "")
                },
                rgbString: function(t, e) {
                    return e < 1 || t[3] && t[3] < 1 ? f(t, e) : "rgb(" + t[0] + ", " + t[1] + ", " + t[2] + ")"
                },
                rgbaString: f,
                percentString: function(t, e) {
                    return e < 1 || t[3] && t[3] < 1 ? p(t, e) : "rgb(" + Math.round(t[0] / 255 * 100) + "%, " + Math.round(t[1] / 255 * 100) + "%, " + Math.round(t[2] / 255 * 100) + "%)"
                },
                percentaString: p,
                hslString: function(t, e) {
                    return e < 1 || t[3] && t[3] < 1 ? g(t, e) : "hsl(" + t[0] + ", " + t[1] + "%, " + t[2] + "%)"
                },
                hslaString: g,
                hwbString: function(t, e) {
                    return void 0 === e && (e = void 0 !== t[3] ? t[3] : 1), "hwb(" + t[0] + ", " + t[1] + "%, " + t[2] + "%" + (void 0 !== e && 1 !== e ? ", " + e : "") + ")"
                },
                keyword: function(t) {
                    return y[t.slice(0, 3)]
                }
            };

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

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

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

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

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

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

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

        function v(t) {
            var e = t.toString(16).toUpperCase();
            return e.length < 2 ? "0" + e : e
        }
        var y = {};
        for (var b in l) y[l[b]] = b;
        var w = function(t) {
            return t instanceof w ? t : 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 t ? (e = c.getRgba(t)) ? this.setValues("rgb", e) : (e = c.getHsla(t)) ? this.setValues("hsl", e) : (e = c.getHwb(t)) && this.setValues("hwb", e) : "object" == typeof t && (void 0 !== (e = t).r || void 0 !== e.red ? this.setValues("rgb", e) : void 0 !== e.l || void 0 !== e.lightness ? this.setValues("hsl", e) : void 0 !== e.v || void 0 !== e.value ? this.setValues("hsv", e) : void 0 !== e.w || void 0 !== e.whiteness ? this.setValues("hwb", e) : void 0 === e.c && void 0 === e.cyan || this.setValues("cmyk", e)))) : new w(t);
            var e
        };
        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 t = this.values;
                return 1 !== t.alpha ? t.hwb.concat([t.alpha]) : t.hwb
            },
            cmykArray: function() {
                return this.values.cmyk
            },
            rgbaArray: function() {
                var t = this.values;
                return t.rgb.concat([t.alpha])
            },
            hslaArray: function() {
                var t = this.values;
                return t.hsl.concat([t.alpha])
            },
            alpha: function(t) {
                return void 0 === t ? this.values.alpha : (this.setValues("alpha", t), this)
            },
            red: function(t) {
                return this.setChannel("rgb", 0, t)
            },
            green: function(t) {
                return this.setChannel("rgb", 1, t)
            },
            blue: function(t) {
                return this.setChannel("rgb", 2, t)
            },
            hue: function(t) {
                return t && (t = (t %= 360) < 0 ? 360 + t : t), this.setChannel("hsl", 0, t)
            },
            saturation: function(t) {
                return this.setChannel("hsl", 1, t)
            },
            lightness: function(t) {
                return this.setChannel("hsl", 2, t)
            },
            saturationv: function(t) {
                return this.setChannel("hsv", 1, t)
            },
            whiteness: function(t) {
                return this.setChannel("hwb", 1, t)
            },
            blackness: function(t) {
                return this.setChannel("hwb", 2, t)
            },
            value: function(t) {
                return this.setChannel("hsv", 2, t)
            },
            cyan: function(t) {
                return this.setChannel("cmyk", 0, t)
            },
            magenta: function(t) {
                return this.setChannel("cmyk", 1, t)
            },
            yellow: function(t) {
                return this.setChannel("cmyk", 2, t)
            },
            black: function(t) {
                return this.setChannel("cmyk", 3, t)
            },
            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 t = this.values.rgb;
                return t[0] << 16 | t[1] << 8 | t[2]
            },
            luminosity: function() {
                for (var t = this.values.rgb, e = [], n = 0; n < t.length; n++) {
                    var i = t[n] / 255;
                    e[n] = i <= .03928 ? i / 12.92 : Math.pow((i + .055) / 1.055, 2.4)
                }
                return .2126 * e[0] + .7152 * e[1] + .0722 * e[2]
            },
            contrast: function(t) {
                var e = this.luminosity(),
                    n = t.luminosity();
                return e > n ? (e + .05) / (n + .05) : (n + .05) / (e + .05)
            },
            level: function(t) {
                var e = this.contrast(t);
                return e >= 7.1 ? "AAA" : e >= 4.5 ? "AA" : ""
            },
            dark: function() {
                var t = this.values.rgb;
                return (299 * t[0] + 587 * t[1] + 114 * t[2]) / 1e3 < 128
            },
            light: function() {
                return !this.dark()
            },
            negate: function() {
                for (var t = [], e = 0; e < 3; e++) t[e] = 255 - this.values.rgb[e];
                return this.setValues("rgb", t), this
            },
            lighten: function(t) {
                var e = this.values.hsl;
                return e[2] += e[2] * t, this.setValues("hsl", e), this
            },
            darken: function(t) {
                var e = this.values.hsl;
                return e[2] -= e[2] * t, this.setValues("hsl", e), this
            },
            saturate: function(t) {
                var e = this.values.hsl;
                return e[1] += e[1] * t, this.setValues("hsl", e), this
            },
            desaturate: function(t) {
                var e = this.values.hsl;
                return e[1] -= e[1] * t, this.setValues("hsl", e), this
            },
            whiten: function(t) {
                var e = this.values.hwb;
                return e[1] += e[1] * t, this.setValues("hwb", e), this
            },
            blacken: function(t) {
                var e = this.values.hwb;
                return e[2] += e[2] * t, this.setValues("hwb", e), this
            },
            greyscale: function() {
                var t = this.values.rgb,
                    e = .3 * t[0] + .59 * t[1] + .11 * t[2];
                return this.setValues("rgb", [e, e, e]), this
            },
            clearer: function(t) {
                var e = this.values.alpha;
                return this.setValues("alpha", e - e * t), this
            },
            opaquer: function(t) {
                var e = this.values.alpha;
                return this.setValues("alpha", e + e * t), this
            },
            rotate: function(t) {
                var e = this.values.hsl,
                    n = (e[0] + t) % 360;
                return e[0] = n < 0 ? 360 + n : n, this.setValues("hsl", e), this
            },
            mix: function(t, e) {
                var n = t,
                    i = void 0 === e ? .5 : e,
                    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 t, e, n = new w,
                    i = this.values,
                    r = n.values;
                for (var o in i) i.hasOwnProperty(o) && (t = i[o], "[object Array]" === (e = {}.toString.call(t)) ? r[o] = t.slice(0) : "[object Number]" === e ? r[o] = t : console.error("unexpected color value:", t));
                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(t) {
            for (var e = this.values, n = {}, i = 0; i < t.length; i++) n[t.charAt(i)] = e[t][i];
            return 1 !== e.alpha && (n.a = e.alpha), n
        }, w.prototype.setValues = function(t, e) {
            var n, i, r = this.values,
                o = this.spaces,
                a = this.maxes,
                l = 1;
            if (this.valid = !0, "alpha" === t) l = e;
            else if (e.length) r[t] = e.slice(0, t.length), l = e[t.length];
            else if (void 0 !== e[t.charAt(0)]) {
                for (n = 0; n < t.length; n++) r[t][n] = e[t.charAt(n)];
                l = e.a
            } else if (void 0 !== e[o[t][0]]) {
                var c = o[t];
                for (n = 0; n < t.length; n++) r[t][n] = e[c[n]];
                l = e.alpha
            }
            if (r.alpha = Math.max(0, Math.min(1, void 0 === l ? r.alpha : l)), "alpha" === t) return !1;
            for (n = 0; n < t.length; n++) i = Math.max(0, Math.min(a[t][n], r[t][n])), r[t][n] = Math.round(i);
            for (var u in o) u !== t && (r[u] = s[t][u](r[t]));
            return !0
        }, w.prototype.setSpace = function(t, e) {
            var n = e[0];
            return void 0 === n ? this.getValues(t) : ("number" == typeof n && (n = Array.prototype.slice.call(e)), this.setValues(t, n), this)
        }, w.prototype.setChannel = function(t, e, n) {
            var i = this.values[t];
            return void 0 === n ? i[e] : (n === i[e] || (i[e] = n, this.setValues(t, i)), this)
        }, "undefined" != typeof window && (window.Color = w);
        var x = w;

        function _(t) {
            return -1 === ["__proto__", "prototype", "constructor"].indexOf(t)
        }
        var S, C = {
                noop: function() {},
                uid: (S = 0, function() {
                    return S++
                }),
                isNullOrUndef: function(t) {
                    return null == t
                },
                isArray: function(t) {
                    if (Array.isArray && Array.isArray(t)) return !0;
                    var e = Object.prototype.toString.call(t);
                    return "[object" === e.substr(0, 7) && "Array]" === e.substr(-6)
                },
                isObject: function(t) {
                    return null !== t && "[object Object]" === Object.prototype.toString.call(t)
                },
                isFinite: function(t) {
                    return ("number" == typeof t || t instanceof Number) && isFinite(t)
                },
                valueOrDefault: function(t, e) {
                    return void 0 === t ? e : t
                },
                valueAtIndexOrDefault: function(t, e, n) {
                    return C.valueOrDefault(C.isArray(t) ? t[e] : t, n)
                },
                callback: function(t, e, n) {
                    if (t && "function" == typeof t.call) return t.apply(n, e)
                },
                each: function(t, e, n, i) {
                    var r, o, a;
                    if (C.isArray(t))
                        if (o = t.length, i)
                            for (r = o - 1; r >= 0; r--) e.call(n, t[r], r);
                        else
                            for (r = 0; r < o; r++) e.call(n, t[r], r);
                    else if (C.isObject(t))
                        for (o = (a = Object.keys(t)).length, r = 0; r < o; r++) e.call(n, t[a[r]], a[r])
                },
                arrayEquals: function(t, e) {
                    var n, i, r, o;
                    if (!t || !e || t.length !== e.length) return !1;
                    for (n = 0, i = t.length; n < i; ++n)
                        if (r = t[n], o = e[n], r instanceof Array && o instanceof Array) {
                            if (!C.arrayEquals(r, o)) return !1
                        } else if (r !== o) return !1;
                    return !0
                },
                clone: function(t) {
                    if (C.isArray(t)) return t.map(C.clone);
                    if (C.isObject(t)) {
                        for (var e = Object.create(t), n = Object.keys(t), i = n.length, r = 0; r < i; ++r) e[n[r]] = C.clone(t[n[r]]);
                        return e
                    }
                    return t
                },
                _merger: function(t, e, n, i) {
                    if (_(t)) {
                        var r = e[t],
                            o = n[t];
                        C.isObject(r) && C.isObject(o) ? C.merge(r, o, i) : e[t] = C.clone(o)
                    }
                },
                _mergerIf: function(t, e, n) {
                    if (_(t)) {
                        var i = e[t],
                            r = n[t];
                        C.isObject(i) && C.isObject(r) ? C.mergeIf(i, r) : e.hasOwnProperty(t) || (e[t] = C.clone(r))
                    }
                },
                merge: function(t, e, n) {
                    var i, r, o, a, s, l = C.isArray(e) ? e : [e],
                        c = l.length;
                    if (!C.isObject(t)) return t;
                    for (i = (n = n || {}).merger || C._merger, r = 0; r < c; ++r)
                        if (e = l[r], C.isObject(e))
                            for (s = 0, a = (o = Object.keys(e)).length; s < a; ++s) i(o[s], t, e, n);
                    return t
                },
                mergeIf: function(t, e) {
                    return C.merge(t, e, {
                        merger: C._mergerIf
                    })
                },
                extend: Object.assign || function(t) {
                    return C.merge(t, [].slice.call(arguments, 1), {
                        merger: function(t, e, n) {
                            e[t] = n[t]
                        }
                    })
                },
                inherits: function(t) {
                    var e = this,
                        n = t && t.hasOwnProperty("constructor") ? t.constructor : function() {
                            return e.apply(this, arguments)
                        },
                        i = function() {
                            this.constructor = n
                        };
                    return i.prototype = e.prototype, n.prototype = new i, n.extend = C.inherits, t && C.extend(n.prototype, t), n.__super__ = e.prototype, n
                },
                _deprecated: function(t, e, n, i) {
                    void 0 !== e && console.warn(t + ': "' + n + '" is deprecated. Please use "' + i + '" instead')
                }
            },
            k = C;
        C.callCallback = C.callback, C.indexOf = function(t, e, n) {
            return Array.prototype.indexOf.call(t, e, n)
        }, C.getValueOrDefault = C.valueOrDefault, C.getValueAtIndexOrDefault = C.valueAtIndexOrDefault;
        var T = {
                linear: function(t) {
                    return t
                },
                easeInQuad: function(t) {
                    return t * t
                },
                easeOutQuad: function(t) {
                    return -t * (t - 2)
                },
                easeInOutQuad: function(t) {
                    return (t /= .5) < 1 ? .5 * t * t : -.5 * (--t * (t - 2) - 1)
                },
                easeInCubic: function(t) {
                    return t * t * t
                },
                easeOutCubic: function(t) {
                    return (t -= 1) * t * t + 1
                },
                easeInOutCubic: function(t) {
                    return (t /= .5) < 1 ? .5 * t * t * t : .5 * ((t -= 2) * t * t + 2)
                },
                easeInQuart: function(t) {
                    return t * t * t * t
                },
                easeOutQuart: function(t) {
                    return -((t -= 1) * t * t * t - 1)
                },
                easeInOutQuart: function(t) {
                    return (t /= .5) < 1 ? .5 * t * t * t * t : -.5 * ((t -= 2) * t * t * t - 2)
                },
                easeInQuint: function(t) {
                    return t * t * t * t * t
                },
                easeOutQuint: function(t) {
                    return (t -= 1) * t * t * t * t + 1
                },
                easeInOutQuint: function(t) {
                    return (t /= .5) < 1 ? .5 * t * t * t * t * t : .5 * ((t -= 2) * t * t * t * t + 2)
                },
                easeInSine: function(t) {
                    return 1 - Math.cos(t * (Math.PI / 2))
                },
                easeOutSine: function(t) {
                    return Math.sin(t * (Math.PI / 2))
                },
                easeInOutSine: function(t) {
                    return -.5 * (Math.cos(Math.PI * t) - 1)
                },
                easeInExpo: function(t) {
                    return 0 === t ? 0 : Math.pow(2, 10 * (t - 1))
                },
                easeOutExpo: function(t) {
                    return 1 === t ? 1 : 1 - Math.pow(2, -10 * t)
                },
                easeInOutExpo: function(t) {
                    return 0 === t ? 0 : 1 === t ? 1 : (t /= .5) < 1 ? .5 * Math.pow(2, 10 * (t - 1)) : .5 * (2 - Math.pow(2, -10 * --t))
                },
                easeInCirc: function(t) {
                    return t >= 1 ? t : -(Math.sqrt(1 - t * t) - 1)
                },
                easeOutCirc: function(t) {
                    return Math.sqrt(1 - (t -= 1) * t)
                },
                easeInOutCirc: function(t) {
                    return (t /= .5) < 1 ? -.5 * (Math.sqrt(1 - t * t) - 1) : .5 * (Math.sqrt(1 - (t -= 2) * t) + 1)
                },
                easeInElastic: function(t) {
                    var e = 1.70158,
                        n = 0,
                        i = 1;
                    return 0 === t ? 0 : 1 === t ? 1 : (n || (n = .3), i < 1 ? (i = 1, e = n / 4) : e = n / (2 * Math.PI) * Math.asin(1 / i), -i * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - e) * (2 * Math.PI) / n))
                },
                easeOutElastic: function(t) {
                    var e = 1.70158,
                        n = 0,
                        i = 1;
                    return 0 === t ? 0 : 1 === t ? 1 : (n || (n = .3), i < 1 ? (i = 1, e = n / 4) : e = n / (2 * Math.PI) * Math.asin(1 / i), i * Math.pow(2, -10 * t) * Math.sin((t - e) * (2 * Math.PI) / n) + 1)
                },
                easeInOutElastic: function(t) {
                    var e = 1.70158,
                        n = 0,
                        i = 1;
                    return 0 === t ? 0 : 2 == (t /= .5) ? 1 : (n || (n = .45), i < 1 ? (i = 1, e = n / 4) : e = n / (2 * Math.PI) * Math.asin(1 / i), t < 1 ? i * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - e) * (2 * Math.PI) / n) * -.5 : i * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - e) * (2 * Math.PI) / n) * .5 + 1)
                },
                easeInBack: function(t) {
                    var e = 1.70158;
                    return t * t * ((e + 1) * t - e)
                },
                easeOutBack: function(t) {
                    var e = 1.70158;
                    return (t -= 1) * t * ((e + 1) * t + e) + 1
                },
                easeInOutBack: function(t) {
                    var e = 1.70158;
                    return (t /= .5) < 1 ? t * t * ((1 + (e *= 1.525)) * t - e) * .5 : .5 * ((t -= 2) * t * ((1 + (e *= 1.525)) * t + e) + 2)
                },
                easeInBounce: function(t) {
                    return 1 - T.easeOutBounce(1 - t)
                },
                easeOutBounce: function(t) {
                    return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375
                },
                easeInOutBounce: function(t) {
                    return t < .5 ? .5 * T.easeInBounce(2 * t) : .5 * T.easeOutBounce(2 * t - 1) + .5
                }
            },
            A = {
                effects: T
            };
        k.easingEffects = T;
        var D = Math.PI,
            E = D / 180,
            M = 2 * D,
            O = D / 2,
            I = D / 4,
            P = 2 * D / 3,
            L = {
                clear: function(t) {
                    t.ctx.clearRect(0, 0, t.width, t.height)
                },
                roundedRect: function(t, e, n, i, r, o) {
                    if (o) {
                        var a = Math.min(o, r / 2, i / 2),
                            s = e + a,
                            l = n + a,
                            c = e + i - a,
                            u = n + r - a;
                        t.moveTo(e, l), s < c && l < u ? (t.arc(s, l, a, -D, -O), t.arc(c, l, a, -O, 0), t.arc(c, u, a, 0, O), t.arc(s, u, a, O, D)) : s < c ? (t.moveTo(s, n), t.arc(c, l, a, -O, O), t.arc(s, l, a, O, D + O)) : l < u ? (t.arc(s, l, a, -D, 0), t.arc(s, u, a, 0, D)) : t.arc(s, l, a, -D, D), t.closePath(), t.moveTo(e, n)
                    } else t.rect(e, n, i, r)
                },
                drawPoint: function(t, e, n, i, r, o) {
                    var a, s, l, c, u, d = (o || 0) * E;
                    if (e && "object" == typeof e && ("[object HTMLImageElement]" === (a = e.toString()) || "[object HTMLCanvasElement]" === a)) return t.save(), t.translate(i, r), t.rotate(d), t.drawImage(e, -e.width / 2, -e.height / 2, e.width, e.height), void t.restore();
                    if (!(isNaN(n) || n <= 0)) {
                        switch (t.beginPath(), e) {
                            default: t.arc(i, r, n, 0, M),
                            t.closePath();
                            break;
                            case "triangle":
                                    t.moveTo(i + Math.sin(d) * n, r - Math.cos(d) * n),
                                d += P,
                                t.lineTo(i + Math.sin(d) * n, r - Math.cos(d) * n),
                                d += P,
                                t.lineTo(i + Math.sin(d) * n, r - Math.cos(d) * n),
                                t.closePath();
                                break;
                            case "rectRounded":
                                    c = n - (u = .516 * n),
                                s = Math.cos(d + I) * c,
                                l = Math.sin(d + I) * c,
                                t.arc(i - s, r - l, u, d - D, d - O),
                                t.arc(i + l, r - s, u, d - O, d),
                                t.arc(i + s, r + l, u, d, d + O),
                                t.arc(i - l, r + s, u, d + O, d + D),
                                t.closePath();
                                break;
                            case "rect":
                                    if (!o) {
                                    c = Math.SQRT1_2 * n, t.rect(i - c, r - c, 2 * c, 2 * c);
                                    break
                                }d += I;
                            case "rectRot":
                                    s = Math.cos(d) * n,
                                l = Math.sin(d) * n,
                                t.moveTo(i - s, r - l),
                                t.lineTo(i + l, r - s),
                                t.lineTo(i + s, r + l),
                                t.lineTo(i - l, r + s),
                                t.closePath();
                                break;
                            case "crossRot":
                                    d += I;
                            case "cross":
                                    s = Math.cos(d) * n,
                                l = Math.sin(d) * n,
                                t.moveTo(i - s, r - l),
                                t.lineTo(i + s, r + l),
                                t.moveTo(i + l, r - s),
                                t.lineTo(i - l, r + s);
                                break;
                            case "star":
                                    s = Math.cos(d) * n,
                                l = Math.sin(d) * n,
                                t.moveTo(i - s, r - l),
                                t.lineTo(i + s, r + l),
                                t.moveTo(i + l, r - s),
                                t.lineTo(i - l, r + s),
                                d += I,
                                s = Math.cos(d) * n,
                                l = Math.sin(d) * n,
                                t.moveTo(i - s, r - l),
                                t.lineTo(i + s, r + l),
                                t.moveTo(i + l, r - s),
                                t.lineTo(i - l, r + s);
                                break;
                            case "line":
                                    s = Math.cos(d) * n,
                                l = Math.sin(d) * n,
                                t.moveTo(i - s, r - l),
                                t.lineTo(i + s, r + l);
                                break;
                            case "dash":
                                    t.moveTo(i, r),
                                t.lineTo(i + Math.cos(d) * n, r + Math.sin(d) * n)
                        }
                        t.fill(), t.stroke()
                    }
                },
                _isPointInArea: function(t, e) {
                    return t.x > e.left - 1e-6 && t.x < e.right + 1e-6 && t.y > e.top - 1e-6 && t.y < e.bottom + 1e-6
                },
                clipArea: function(t, e) {
                    t.save(), t.beginPath(), t.rect(e.left, e.top, e.right - e.left, e.bottom - e.top), t.clip()
                },
                unclipArea: function(t) {
                    t.restore()
                },
                lineTo: function(t, e, n, i) {
                    var r = n.steppedLine;
                    if (r) {
                        if ("middle" === r) {
                            var o = (e.x + n.x) / 2;
                            t.lineTo(o, i ? n.y : e.y), t.lineTo(o, i ? e.y : n.y)
                        } else "after" === r && !i || "after" !== r && i ? t.lineTo(e.x, n.y) : t.lineTo(n.x, e.y);
                        t.lineTo(n.x, n.y)
                    } else n.tension ? t.bezierCurveTo(i ? e.controlPointPreviousX : e.controlPointNextX, i ? e.controlPointPreviousY : e.controlPointNextY, i ? n.controlPointNextX : n.controlPointPreviousX, i ? n.controlPointNextY : n.controlPointPreviousY, n.x, n.y) : t.lineTo(n.x, n.y)
                }
            },
            N = L;
        k.clear = L.clear, k.drawRoundedRectangle = function(t) {
            t.beginPath(), L.roundedRect.apply(L, arguments)
        };
        var F = {
            _set: function(t, e) {
                return k.merge(this[t] || (this[t] = {}), e)
            }
        };
        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 R = F,
            j = k.valueOrDefault,
            $ = {
                toLineHeight: function(t, e) {
                    var n = ("" + t).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/);
                    if (!n || "normal" === n[1]) return 1.2 * e;
                    switch (t = +n[2], n[3]) {
                        case "px":
                            return t;
                        case "%":
                            t /= 100
                    }
                    return e * t
                },
                toPadding: function(t) {
                    var e, n, i, r;
                    return k.isObject(t) ? (e = +t.top || 0, n = +t.right || 0, i = +t.bottom || 0, r = +t.left || 0) : e = n = i = r = +t || 0, {
                        top: e,
                        right: n,
                        bottom: i,
                        left: r,
                        height: e + i,
                        width: r + n
                    }
                },
                _parseFont: function(t) {
                    var e = R.global,
                        n = j(t.fontSize, e.defaultFontSize),
                        i = {
                            family: j(t.fontFamily, e.defaultFontFamily),
                            lineHeight: k.options.toLineHeight(j(t.lineHeight, e.defaultLineHeight), n),
                            size: n,
                            style: j(t.fontStyle, e.defaultFontStyle),
                            weight: null,
                            string: ""
                        };
                    return i.string = function(t) {
                        return !t || k.isNullOrUndef(t.size) || k.isNullOrUndef(t.family) ? null : (t.style ? t.style + " " : "") + (t.weight ? t.weight + " " : "") + t.size + "px " + t.family
                    }(i), i
                },
                resolve: function(t, e, n, i) {
                    var r, o, a, s = !0;
                    for (r = 0, o = t.length; r < o; ++r)
                        if (void 0 !== (a = t[r]) && (void 0 !== e && "function" == typeof a && (a = a(e), s = !1), void 0 !== n && k.isArray(a) && (a = a[n], s = !1), void 0 !== a)) return i && !s && (i.cacheable = !1), a
                }
            },
            z = {
                _factorize: function(t) {
                    var e, n = [],
                        i = Math.sqrt(t);
                    for (e = 1; e < i; e++) t % e == 0 && (n.push(e), n.push(t / e));
                    return i === (0 | i) && n.push(i), n.sort((function(t, e) {
                        return t - e
                    })).pop(), n
                },
                log10: Math.log10 || function(t) {
                    var e = Math.log(t) * Math.LOG10E,
                        n = Math.round(e);
                    return t === Math.pow(10, n) ? n : e
                }
            },
            H = z;
        k.log10 = z.log10;
        var B = k,
            q = A,
            W = N,
            U = $,
            V = H;
        B.easing = q, B.canvas = W, B.options = U, B.math = V, B.rtl = {
            getRtlAdapter: function(t, e, n) {
                return t ? function(t, e) {
                    return {
                        x: function(n) {
                            return t + t + e - n
                        },
                        setWidth: function(t) {
                            e = t
                        },
                        textAlign: function(t) {
                            return "center" === t ? t : "right" === t ? "left" : "right"
                        },
                        xPlus: function(t, e) {
                            return t - e
                        },
                        leftForLtr: function(t, e) {
                            return t - e
                        }
                    }
                }(e, n) : {
                    x: function(t) {
                        return t
                    },
                    setWidth: function(t) {},
                    textAlign: function(t) {
                        return t
                    },
                    xPlus: function(t, e) {
                        return t + e
                    },
                    leftForLtr: function(t, e) {
                        return t
                    }
                }
            },
            overrideTextDirection: function(t, e) {
                var n, i;
                "ltr" !== e && "rtl" !== e || (i = [(n = t.canvas.style).getPropertyValue("direction"), n.getPropertyPriority("direction")], n.setProperty("direction", e, "important"), t.prevTextDirection = i)
            },
            restoreTextDirection: function(t) {
                var e = t.prevTextDirection;
                void 0 !== e && (delete t.prevTextDirection, t.canvas.style.setProperty("direction", e[0], e[1]))
            }
        };
        var Y = function(t) {
            B.extend(this, t), this.initialize.apply(this, arguments)
        };
        B.extend(Y.prototype, {
            _type: void 0,
            initialize: function() {
                this.hidden = !1
            },
            pivot: function() {
                var t = this;
                return t._view || (t._view = B.extend({}, t._model)), t._start = {}, t
            },
            transition: function(t) {
                var e = this,
                    n = e._model,
                    i = e._start,
                    r = e._view;
                return n && 1 !== t ? (r || (r = e._view = {}), i || (i = e._start = {}), function(t, e, 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]], e.hasOwnProperty(a) || (e[a] = c), (s = e[a]) !== c && "_" !== a[0]) {
                            if (t.hasOwnProperty(a) || (t[a] = s), (u = typeof c) == typeof(l = t[a]))
                                if ("string" === u) {
                                    if ((d = x(l)).valid && (h = x(c)).valid) {
                                        e[a] = h.mix(d, i).rgbString();
                                        continue
                                    }
                                } else if (B.isFinite(l) && B.isFinite(c)) {
                                e[a] = l + (c - l) * i;
                                continue
                            }
                            e[a] = c
                        }
                }(i, r, n, t), e) : (e._view = B.extend({}, n), e._start = null, e)
            },
            tooltipPosition: function() {
                return {
                    x: this._model.x,
                    y: this._model.y
                }
            },
            hasValue: function() {
                return B.isNumber(this._model.x) && B.isNumber(this._model.y)
            }
        }), Y.extend = B.inherits;
        var G = Y,
            X = G.extend({
                chart: null,
                currentStep: 0,
                numSteps: 60,
                easing: "",
                render: null,
                onAnimationProgress: null,
                onAnimationComplete: null
            }),
            Q = X;
        Object.defineProperty(X.prototype, "animationObject", {
            get: function() {
                return this
            }
        }), Object.defineProperty(X.prototype, "chartInstance", {
            get: function() {
                return this.chart
            },
            set: function(t) {
                this.chart = t
            }
        }), R._set("global", {
            animation: {
                duration: 1e3,
                easing: "easeOutQuart",
                onProgress: B.noop,
                onComplete: B.noop
            }
        });
        var K = {
                animations: [],
                request: null,
                addAnimation: function(t, e, n, i) {
                    var r, o, a = this.animations;
                    for (e.chart = t, e.startTime = Date.now(), e.duration = n, i || (t.animating = !0), r = 0, o = a.length; r < o; ++r)
                        if (a[r].chart === t) return void(a[r] = e);
                    a.push(e), 1 === a.length && this.requestAnimationFrame()
                },
                cancelAnimation: function(t) {
                    var e = B.findIndex(this.animations, (function(e) {
                        return e.chart === t
                    })); - 1 !== e && (this.animations.splice(e, 1), t.animating = !1)
                },
                requestAnimationFrame: function() {
                    var t = this;
                    null === t.request && (t.request = B.requestAnimFrame.call(window, (function() {
                        t.request = null, t.startDigest()
                    })))
                },
                startDigest: function() {
                    this.advance(), this.animations.length > 0 && this.requestAnimationFrame()
                },
                advance: function() {
                    for (var t, e, n, i, r = this.animations, o = 0; o < r.length;) e = (t = r[o]).chart, n = t.numSteps, i = Math.floor((Date.now() - t.startTime) / t.duration * n) + 1, t.currentStep = Math.min(i, n), B.callback(t.render, [e, t], e), B.callback(t.onAnimationProgress, [t], e), t.currentStep >= n ? (B.callback(t.onAnimationComplete, [t], e), e.animating = !1, r.splice(o, 1)) : ++o
                }
            },
            J = B.options.resolve,
            Z = ["push", "pop", "shift", "splice", "unshift"];

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

        function rt(t, e) {
            var n = e.startAngle,
                i = e.endAngle,
                r = e.pixelMargin,
                o = r / e.outerRadius,
                a = e.x,
                s = e.y;
            t.beginPath(), t.arc(a, s, e.outerRadius, n - o, i + o), e.innerRadius > r ? (o = r / e.innerRadius, t.arc(a, s, e.innerRadius - r, i + o, n - o, !0)) : t.arc(a, s, r, i + Math.PI / 2, n - Math.PI / 2), t.closePath(), t.clip()
        }
        R._set("global", {
            elements: {
                arc: {
                    backgroundColor: R.global.defaultColor,
                    borderColor: "#fff",
                    borderWidth: 2,
                    borderAlign: "center"
                }
            }
        });
        var ot = G.extend({
                _type: "arc",
                inLabelRange: function(t) {
                    var e = this._view;
                    return !!e && Math.pow(t - e.x, 2) < Math.pow(e.radius + e.hoverRadius, 2)
                },
                inRange: function(t, e) {
                    var n = this._view;
                    if (n) {
                        for (var i = B.getAngleFromPoint(n, {
                                x: t,
                                y: e
                            }), r = i.angle, o = i.distance, a = n.startAngle, s = n.endAngle; s < a;) s += it;
                        for (; r > s;) r -= it;
                        for (; r < a;) r += it;
                        var l = r >= a && r <= s,
                            c = o >= n.innerRadius && o <= n.outerRadius;
                        return l && c
                    }
                    return !1
                },
                getCenterPoint: function() {
                    var t = this._view,
                        e = (t.startAngle + t.endAngle) / 2,
                        n = (t.innerRadius + t.outerRadius) / 2;
                    return {
                        x: t.x + Math.cos(e) * n,
                        y: t.y + Math.sin(e) * n
                    }
                },
                getArea: function() {
                    var t = this._view;
                    return Math.PI * ((t.endAngle - t.startAngle) / (2 * Math.PI)) * (Math.pow(t.outerRadius, 2) - Math.pow(t.innerRadius, 2))
                },
                tooltipPosition: function() {
                    var t = this._view,
                        e = t.startAngle + (t.endAngle - t.startAngle) / 2,
                        n = (t.outerRadius - t.innerRadius) / 2 + t.innerRadius;
                    return {
                        x: t.x + Math.cos(e) * n,
                        y: t.y + Math.sin(e) * n
                    }
                },
                draw: function() {
                    var t, e = 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 / it)
                        };
                    if (e.save(), e.fillStyle = n.backgroundColor, e.strokeStyle = n.borderColor, r.fullCircles) {
                        for (r.endAngle = r.startAngle + it, e.beginPath(), e.arc(r.x, r.y, r.outerRadius, r.startAngle, r.endAngle), e.arc(r.x, r.y, r.innerRadius, r.endAngle, r.startAngle, !0), e.closePath(), t = 0; t < r.fullCircles; ++t) e.fill();
                        r.endAngle = r.startAngle + n.circumference % it
                    }
                    e.beginPath(), e.arc(r.x, r.y, r.outerRadius, r.startAngle, r.endAngle), e.arc(r.x, r.y, r.innerRadius, r.endAngle, r.startAngle, !0), e.closePath(), e.fill(), n.borderWidth && function(t, e, n) {
                        var i = "inner" === e.borderAlign;
                        i ? (t.lineWidth = 2 * e.borderWidth, t.lineJoin = "round") : (t.lineWidth = e.borderWidth, t.lineJoin = "bevel"), n.fullCircles && function(t, e, n, i) {
                            var r, o = n.endAngle;
                            for (i && (n.endAngle = n.startAngle + it, rt(t, n), n.endAngle = o, n.endAngle === n.startAngle && n.fullCircles && (n.endAngle += it, n.fullCircles--)), t.beginPath(), t.arc(n.x, n.y, n.innerRadius, n.startAngle + it, n.startAngle, !0), r = 0; r < n.fullCircles; ++r) t.stroke();
                            for (t.beginPath(), t.arc(n.x, n.y, e.outerRadius, n.startAngle, n.startAngle + it), r = 0; r < n.fullCircles; ++r) t.stroke()
                        }(t, e, n, i), i && rt(t, n), t.beginPath(), t.arc(n.x, n.y, e.outerRadius, n.startAngle, n.endAngle), t.arc(n.x, n.y, n.innerRadius, n.endAngle, n.startAngle, !0), t.closePath(), t.stroke()
                    }(e, n, r), e.restore()
                }
            }),
            at = B.valueOrDefault,
            st = R.global.defaultColor;
        R._set("global", {
            elements: {
                line: {
                    tension: .4,
                    backgroundColor: st,
                    borderWidth: 3,
                    borderColor: st,
                    borderCapStyle: "butt",
                    borderDash: [],
                    borderDashOffset: 0,
                    borderJoinStyle: "miter",
                    capBezierPoints: !0,
                    fill: !0
                }
            }
        });
        var lt = G.extend({
                _type: "line",
                draw: function() {
                    var t, e, n, i = this,
                        r = i._view,
                        o = i._chart.ctx,
                        a = r.spanGaps,
                        s = i._children.slice(),
                        l = R.global,
                        c = l.elements.line,
                        u = -1,
                        d = i._loop;
                    if (s.length) {
                        if (i._loop) {
                            for (t = 0; t < s.length; ++t)
                                if (e = B.previousItem(s, t), !s[t]._view.skip && e._view.skip) {
                                    s = s.slice(t).concat(s.slice(0, t)), 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 = at(r.borderDashOffset, c.borderDashOffset), o.lineJoin = r.borderJoinStyle || c.borderJoinStyle, o.lineWidth = at(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), t = 1; t < s.length; ++t) n = s[t]._view, e = -1 === u ? B.previousItem(s, t) : s[u], n.skip || (u !== t - 1 && !a || -1 === u ? o.moveTo(n.x, n.y) : B.canvas.lineTo(o, e._view, n), u = t);
                        d && o.closePath(), o.stroke(), o.restore()
                    }
                }
            }),
            ct = B.valueOrDefault,
            ut = R.global.defaultColor;

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

        function pt(t) {
            return t && void 0 !== t.width
        }

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

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

        function vt(t, e, n) {
            var i = null === e,
                r = null === n,
                o = !(!t || i && r) && gt(t);
            return o && (i || e >= o.left && e <= o.right) && (r || n >= o.top && n <= o.bottom)
        }
        R._set("global", {
            elements: {
                rectangle: {
                    backgroundColor: ft,
                    borderColor: ft,
                    borderSkipped: "bottom",
                    borderWidth: 0
                }
            }
        });
        var yt = G.extend({
                _type: "rectangle",
                draw: function() {
                    var t = this._chart.ctx,
                        e = this._view,
                        n = function(t) {
                            var e = gt(t),
                                n = e.right - e.left,
                                i = e.bottom - e.top,
                                r = function(t, e, n) {
                                    var i, r, o, a, s = t.borderWidth,
                                        l = function(t) {
                                            var e = t.borderSkipped,
                                                n = {};
                                            return e ? (t.horizontal ? t.base > t.x && (e = mt(e, "left", "right")) : t.base < t.y && (e = mt(e, "bottom", "top")), n[e] = !0, n) : n
                                        }(t);
                                    return B.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 > e ? e : r,
                                        b: l.bottom || o < 0 ? 0 : o > n ? n : o,
                                        l: l.left || a < 0 ? 0 : a > e ? e : a
                                    }
                                }(t, n / 2, i / 2);
                            return {
                                outer: {
                                    x: e.left,
                                    y: e.top,
                                    w: n,
                                    h: i
                                },
                                inner: {
                                    x: e.left + r.l,
                                    y: e.top + r.t,
                                    w: n - r.l - r.r,
                                    h: i - r.t - r.b
                                }
                            }
                        }(e),
                        i = n.outer,
                        r = n.inner;
                    t.fillStyle = e.backgroundColor, t.fillRect(i.x, i.y, i.w, i.h), i.w === r.w && i.h === r.h || (t.save(), t.beginPath(), t.rect(i.x, i.y, i.w, i.h), t.clip(), t.fillStyle = e.borderColor, t.rect(r.x, r.y, r.w, r.h), t.fill("evenodd"), t.restore())
                },
                height: function() {
                    var t = this._view;
                    return t.base - t.y
                },
                inRange: function(t, e) {
                    return vt(this._view, t, e)
                },
                inLabelRange: function(t, e) {
                    var n = this._view;
                    return pt(n) ? vt(n, t, null) : vt(n, null, e)
                },
                inXRange: function(t) {
                    return vt(this._view, t, null)
                },
                inYRange: function(t) {
                    return vt(this._view, null, t)
                },
                getCenterPoint: function() {
                    var t, e, n = this._view;
                    return pt(n) ? (t = n.x, e = (n.y + n.base) / 2) : (t = (n.x + n.base) / 2, e = n.y), {
                        x: t,
                        y: e
                    }
                },
                getArea: function() {
                    var t = this._view;
                    return pt(t) ? t.width * Math.abs(t.y - t.base) : t.height * Math.abs(t.x - t.base)
                },
                tooltipPosition: function() {
                    var t = this._view;
                    return {
                        x: t.x,
                        y: t.y
                    }
                }
            }),
            bt = {},
            wt = ot,
            xt = lt,
            _t = ht,
            St = yt;
        bt.Arc = wt, bt.Line = xt, bt.Point = _t, bt.Rectangle = St;
        var Ct = B._deprecated,
            kt = B.valueOrDefault;
        R._set("bar", {
            hover: {
                mode: "label"
            },
            scales: {
                xAxes: [{
                    type: "category",
                    offset: !0,
                    gridLines: {
                        offsetGridLines: !0
                    }
                }],
                yAxes: [{
                    type: "linear"
                }]
            }
        }), R._set("global", {
            datasets: {
                bar: {
                    categoryPercentage: .8,
                    barPercentage: .9
                }
            }
        });
        var Tt = nt.extend({
                dataElementType: bt.Rectangle,
                _dataElementOptions: ["backgroundColor", "borderColor", "borderSkipped", "borderWidth", "barPercentage", "barThickness", "categoryPercentage", "maxBarThickness", "minBarLength"],
                initialize: function() {
                    var t, e, n = this;
                    nt.prototype.initialize.apply(n, arguments), (t = n.getMeta()).stack = n.getDataset().stack, t.bar = !0, e = n._getIndexScale().options, Ct("bar chart", e.barPercentage, "scales.[x/y]Axes.barPercentage", "dataset.barPercentage"), Ct("bar chart", e.barThickness, "scales.[x/y]Axes.barThickness", "dataset.barThickness"), Ct("bar chart", e.categoryPercentage, "scales.[x/y]Axes.categoryPercentage", "dataset.categoryPercentage"), Ct("bar chart", n._getValueScale().options.minBarLength, "scales.[x/y]Axes.minBarLength", "dataset.minBarLength"), Ct("bar chart", e.maxBarThickness, "scales.[x/y]Axes.maxBarThickness", "dataset.maxBarThickness")
                },
                update: function(t) {
                    var e, n, i = this.getMeta().data;
                    for (this._ruler = this.getRuler(), e = 0, n = i.length; e < n; ++e) this.updateElement(i[e], e, t)
                },
                updateElement: function(t, e, n) {
                    var i = this,
                        r = i.getMeta(),
                        o = i.getDataset(),
                        a = i._resolveDataElementOptions(t, e);
                    t._xScale = i.getScaleForId(r.xAxisID), t._yScale = i.getScaleForId(r.yAxisID), t._datasetIndex = i.index, t._index = e, t._model = {
                        backgroundColor: a.backgroundColor,
                        borderColor: a.borderColor,
                        borderSkipped: a.borderSkipped,
                        borderWidth: a.borderWidth,
                        datasetLabel: o.label,
                        label: i.chart.data.labels[e]
                    }, B.isArray(o.data[e]) && (t._model.borderSkipped = null), i._updateElementGeometry(t, e, n, a), t.pivot()
                },
                _updateElementGeometry: function(t, e, n, i) {
                    var r = this,
                        o = t._model,
                        a = r._getValueScale(),
                        s = a.getBasePixel(),
                        l = a.isHorizontal(),
                        c = r._ruler || r.getRuler(),
                        u = r.calculateBarValuePixels(r.index, e, i),
                        d = r.calculateBarIndexPixels(r.index, e, 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(t) {
                    var e, n, i = this._getIndexScale(),
                        r = i._getMatchingVisibleMetas(this._type),
                        o = i.options.stacked,
                        a = r.length,
                        s = [];
                    for (e = 0; e < a && (n = r[e], (!1 === o || -1 === s.indexOf(n.stack) || void 0 === o && void 0 === n.stack) && s.push(n.stack), n.index !== t); ++e);
                    return s
                },
                getStackCount: function() {
                    return this._getStacks().length
                },
                getStackIndex: function(t, e) {
                    var n = this._getStacks(t),
                        i = void 0 !== e ? n.indexOf(e) : -1;
                    return -1 === i ? n.length - 1 : i
                },
                getRuler: function() {
                    var t, e, n = this._getIndexScale(),
                        i = [];
                    for (t = 0, e = this.getMeta().data.length; t < e; ++t) i.push(n.getPixelForValue(null, t, this.index));
                    return {
                        pixels: i,
                        start: n._startPixel,
                        end: n._endPixel,
                        stackCount: this.getStackCount(),
                        scale: n
                    }
                },
                calculateBarValuePixels: function(t, e, 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[t].data[e]),
                        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 !== t; ++i) r.stack === y && (o = void 0 === (c = d._parseValue(f[r.index].data[e])).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(t, e, n, i) {
                    var r = "flex" === i.barThickness ? function(t, e, n) {
                            var i, r = e.pixels,
                                o = r[t],
                                a = t > 0 ? r[t - 1] : null,
                                s = t < r.length - 1 ? r[t + 1] : null,
                                l = n.categoryPercentage;
                            return null === a && (a = o - (null === s ? e.end - e.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 / e.stackCount,
                                ratio: n.barPercentage,
                                start: i
                            }
                        }(e, n, i) : function(t, e, n) {
                            var i, r, o = n.barThickness,
                                a = e.stackCount,
                                s = e.pixels[t],
                                l = B.isNullOrUndef(o) ? function(t, e) {
                                    var n, i, r, o, a = t._length;
                                    for (r = 1, o = e.length; r < o; ++r) a = Math.min(a, Math.abs(e[r] - e[r - 1]));
                                    for (r = 0, o = t.getTicks().length; r < o; ++r) i = t.getPixelForTick(r), a = r > 0 ? Math.min(a, Math.abs(i - n)) : a, n = i;
                                    return a
                                }(e.scale, e.pixels) : -1;
                            return B.isNullOrUndef(o) ? (i = l * n.categoryPercentage, r = n.barPercentage) : (i = o * a, r = 1), {
                                chunk: i / a,
                                ratio: r,
                                start: s - i / 2
                            }
                        }(e, n, i),
                        o = this.getStackIndex(t, this.getMeta().stack),
                        a = r.start + r.chunk * o + r.chunk / 2,
                        s = Math.min(kt(i.maxBarThickness, 1 / 0), r.chunk * r.ratio);
                    return {
                        base: a - s / 2,
                        head: a + s / 2,
                        center: a,
                        size: s
                    }
                },
                draw: function() {
                    var t = this.chart,
                        e = this._getValueScale(),
                        n = this.getMeta().data,
                        i = this.getDataset(),
                        r = n.length,
                        o = 0;
                    for (B.canvas.clipArea(t.ctx, t.chartArea); o < r; ++o) {
                        var a = e._parseValue(i.data[o]);
                        isNaN(a.min) || isNaN(a.max) || n[o].draw()
                    }
                    B.canvas.unclipArea(t.ctx)
                },
                _resolveDataElementOptions: function() {
                    var t = this,
                        e = B.extend({}, nt.prototype._resolveDataElementOptions.apply(t, arguments)),
                        n = t._getIndexScale().options,
                        i = t._getValueScale().options;
                    return e.barPercentage = kt(n.barPercentage, e.barPercentage), e.barThickness = kt(n.barThickness, e.barThickness), e.categoryPercentage = kt(n.categoryPercentage, e.categoryPercentage), e.maxBarThickness = kt(n.maxBarThickness, e.maxBarThickness), e.minBarLength = kt(i.minBarLength, e.minBarLength), e
                }
            }),
            At = B.valueOrDefault,
            Dt = B.options.resolve;
        R._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(t, e) {
                        var n = e.datasets[t.datasetIndex].label || "",
                            i = e.datasets[t.datasetIndex].data[t.index];
                        return n + ": (" + t.xLabel + ", " + t.yLabel + ", " + i.r + ")"
                    }
                }
            }
        });
        var Et = nt.extend({
                dataElementType: bt.Point,
                _dataElementOptions: ["backgroundColor", "borderColor", "borderWidth", "hoverBackgroundColor", "hoverBorderColor", "hoverBorderWidth", "hoverRadius", "hitRadius", "pointStyle", "rotation"],
                update: function(t) {
                    var e = this,
                        n = e.getMeta().data;
                    B.each(n, (function(n, i) {
                        e.updateElement(n, i, t)
                    }))
                },
                updateElement: function(t, e, n) {
                    var i = this,
                        r = i.getMeta(),
                        o = t.custom || {},
                        a = i.getScaleForId(r.xAxisID),
                        s = i.getScaleForId(r.yAxisID),
                        l = i._resolveDataElementOptions(t, e),
                        c = i.getDataset().data[e],
                        u = i.index,
                        d = n ? a.getPixelForDecimal(.5) : a.getPixelForValue("object" == typeof c ? c : NaN, e, u),
                        h = n ? s.getBasePixel() : s.getPixelForValue(c, e, u);
                    t._xScale = a, t._yScale = s, t._options = l, t._datasetIndex = u, t._index = e, t._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
                    }, t.pivot()
                },
                setHoverStyle: function(t) {
                    var e = t._model,
                        n = t._options,
                        i = B.getHoverColor;
                    t.$previousStyle = {
                        backgroundColor: e.backgroundColor,
                        borderColor: e.borderColor,
                        borderWidth: e.borderWidth,
                        radius: e.radius
                    }, e.backgroundColor = At(n.hoverBackgroundColor, i(n.backgroundColor)), e.borderColor = At(n.hoverBorderColor, i(n.borderColor)), e.borderWidth = At(n.hoverBorderWidth, n.borderWidth), e.radius = n.radius + n.hoverRadius
                },
                _resolveDataElementOptions: function(t, e) {
                    var n = this,
                        i = n.chart,
                        r = n.getDataset(),
                        o = t.custom || {},
                        a = r.data[e] || {},
                        s = nt.prototype._resolveDataElementOptions.apply(n, arguments),
                        l = {
                            chart: i,
                            dataIndex: e,
                            dataset: r,
                            datasetIndex: n.index
                        };
                    return n._cachedDataOpts === s && (s = B.extend({}, s)), s.radius = Dt([o.radius, a.r, n._config.radius, i.options.elements.point.radius], l, e), s
                }
            }),
            Mt = B.valueOrDefault,
            Ot = Math.PI,
            It = 2 * Ot,
            Pt = Ot / 2;
        R._set("doughnut", {
            animation: {
                animateRotate: !0,
                animateScale: !1
            },
            hover: {
                mode: "single"
            },
            legendCallback: function(t) {
                var e, n, i, r = document.createElement("ul"),
                    o = t.data,
                    a = o.datasets,
                    s = o.labels;
                if (r.setAttribute("class", t.id + "-legend"), a.length)
                    for (e = 0, n = a[0].data.length; e < n; ++e)(i = r.appendChild(document.createElement("li"))).appendChild(document.createElement("span")).style.backgroundColor = a[0].backgroundColor[e], s[e] && i.appendChild(document.createTextNode(s[e]));
                return r.outerHTML
            },
            legend: {
                labels: {
                    generateLabels: function(t) {
                        var e = t.data;
                        return e.labels.length && e.datasets.length ? e.labels.map((function(n, i) {
                            var r = t.getDatasetMeta(0),
                                o = r.controller.getStyle(i);
                            return {
                                text: n,
                                fillStyle: o.backgroundColor,
                                strokeStyle: o.borderColor,
                                lineWidth: o.borderWidth,
                                hidden: isNaN(e.datasets[0].data[i]) || r.data[i].hidden,
                                index: i
                            }
                        })) : []
                    }
                },
                onClick: function(t, e) {
                    var n, i, r, o = e.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: -Pt,
            circumference: It,
            tooltips: {
                callbacks: {
                    title: function() {
                        return ""
                    },
                    label: function(t, e) {
                        var n = e.labels[t.index],
                            i = ": " + e.datasets[t.datasetIndex].data[t.index];
                        return B.isArray(n) ? (n = n.slice())[0] += i : n += i, n
                    }
                }
            }
        });
        var Lt = nt.extend({
            dataElementType: bt.Arc,
            linkScales: B.noop,
            _dataElementOptions: ["backgroundColor", "borderColor", "borderWidth", "borderAlign", "hoverBackgroundColor", "hoverBorderColor", "hoverBorderWidth"],
            getRingIndex: function(t) {
                for (var e = 0, n = 0; n < t; ++n) this.chart.isDatasetVisible(n) && ++e;
                return e
            },
            update: function(t) {
                var e, 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 < It) {
                    var y = l.rotation % It,
                        b = (y += y >= Ot ? -It : y < -Ot ? It : 0) + m,
                        w = Math.cos(y),
                        x = Math.sin(y),
                        _ = Math.cos(b),
                        S = Math.sin(b),
                        C = y <= 0 && b >= 0 || b >= It,
                        k = y <= Pt && b >= Pt || b >= It + Pt,
                        T = y <= -Pt && b >= -Pt || b >= Ot + Pt,
                        A = y === -Ot || b >= Ot ? -1 : Math.min(w, w * g, _, _ * g),
                        D = T ? -1 : Math.min(x, x * g, S, S * g),
                        E = C ? 1 : Math.max(w, w * g, _, _ * g),
                        M = k ? 1 : Math.max(x, x * g, S, S * g);
                    c = (E - A) / 2, u = (M - D) / 2, d = -(E + A) / 2, h = -(M + D) / 2
                }
                for (i = 0, r = p.length; i < r; ++i) p[i]._options = o._resolveDataElementOptions(p[i], i);
                for (a.borderWidth = o.getMaxBorderWidth(), e = (s.right - s.left - a.borderWidth) / c, n = (s.bottom - s.top - a.borderWidth) / u, a.outerRadius = Math.max(Math.min(e, 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, t)
            },
            updateElement: function(t, e, 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 || t.hidden ? 0 : i.calculateCircumference(h.data[e]) * (a.circumference / It),
                    p = n && s.animateScale ? 0 : i.innerRadius,
                    g = n && s.animateScale ? 0 : i.outerRadius,
                    m = t._options || {};
                B.extend(t, {
                    _datasetIndex: i.index,
                    _index: e,
                    _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: B.valueAtIndexOrDefault(h.label, e, r.data.labels[e])
                    }
                });
                var v = t._model;
                n && s.animateRotate || (v.startAngle = 0 === e ? a.rotation : i.getMeta().data[e - 1]._model.endAngle, v.endAngle = v.startAngle + v.circumference), t.pivot()
            },
            calculateTotal: function() {
                var t, e = this.getDataset(),
                    n = this.getMeta(),
                    i = 0;
                return B.each(n.data, (function(n, r) {
                    t = e.data[r], isNaN(t) || n.hidden || (i += Math.abs(t))
                })), i
            },
            calculateCircumference: function(t) {
                var e = this.getMeta().total;
                return e > 0 && !isNaN(t) ? It * (Math.abs(t) / e) : 0
            },
            getMaxBorderWidth: function(t) {
                var e, n, i, r, o, a, s, l, c = 0,
                    u = this.chart;
                if (!t)
                    for (e = 0, n = u.data.datasets.length; e < n; ++e)
                        if (u.isDatasetVisible(e)) {
                            t = (i = u.getDatasetMeta(e)).data, e !== this.index && (o = i.controller);
                            break
                        }
                if (!t) return 0;
                for (e = 0, n = t.length; e < n; ++e) r = t[e], o ? (o._configure(), a = o._resolveDataElementOptions(r, e)) : a = r._options, "inner" !== a.borderAlign && (s = a.borderWidth, c = (l = a.hoverBorderWidth) > (c = s > c ? s : c) ? l : c);
                return c
            },
            setHoverStyle: function(t) {
                var e = t._model,
                    n = t._options,
                    i = B.getHoverColor;
                t.$previousStyle = {
                    backgroundColor: e.backgroundColor,
                    borderColor: e.borderColor,
                    borderWidth: e.borderWidth
                }, e.backgroundColor = Mt(n.hoverBackgroundColor, i(n.backgroundColor)), e.borderColor = Mt(n.hoverBorderColor, i(n.borderColor)), e.borderWidth = Mt(n.hoverBorderWidth, n.borderWidth)
            },
            _getRingWeightOffset: function(t) {
                for (var e = 0, n = 0; n < t; ++n) this.chart.isDatasetVisible(n) && (e += this._getRingWeight(n));
                return e
            },
            _getRingWeight: function(t) {
                return Math.max(Mt(this.chart.data.datasets[t].weight, 1), 0)
            },
            _getVisibleDatasetWeightTotal: function() {
                return this._getRingWeightOffset(this.chart.data.datasets.length)
            }
        });
        R._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"
            }
        }), R._set("global", {
            datasets: {
                horizontalBar: {
                    categoryPercentage: .8,
                    barPercentage: .9
                }
            }
        });
        var Nt = Tt.extend({
                _getValueScaleId: function() {
                    return this.getMeta().xAxisID
                },
                _getIndexScaleId: function() {
                    return this.getMeta().yAxisID
                }
            }),
            Ft = B.valueOrDefault,
            Rt = B.options.resolve,
            jt = B.canvas._isPointInArea;

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

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

        function Ht(t) {
            var e, n, i, r;
            return B.isObject(t) ? (e = t.top, n = t.right, i = t.bottom, r = t.left) : e = n = i = r = t, {
                top: e,
                right: n,
                bottom: i,
                left: r
            }
        }
        R._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 Bt = nt.extend({
                datasetElementType: bt.Line,
                dataElementType: bt.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(t) {
                    var e, n, i = this,
                        r = i.getMeta(),
                        o = r.dataset,
                        a = r.data || [],
                        s = i.chart.options,
                        l = i._config,
                        c = i._showLine = Ft(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()), e = 0, n = a.length; e < n; ++e) i.updateElement(a[e], e, t);
                    for (c && 0 !== o._model.tension && i.updateBezierControlPoints(), e = 0, n = a.length; e < n; ++e) a[e].pivot()
                },
                updateElement: function(t, e, n) {
                    var i, r, o = this,
                        a = o.getMeta(),
                        s = t.custom || {},
                        l = o.getDataset(),
                        c = o.index,
                        u = l.data[e],
                        d = o._xScale,
                        h = o._yScale,
                        f = a.dataset._model,
                        p = o._resolveDataElementOptions(t, e);
                    i = d.getPixelForValue("object" == typeof u ? u : NaN, e, c), r = n ? h.getBasePixel() : o.calculatePointY(u, e, c), t._xScale = d, t._yScale = h, t._options = p, t._datasetIndex = c, t._index = e, t._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: Ft(s.tension, f ? f.tension : 0),
                        steppedLine: !!f && f.steppedLine,
                        hitRadius: p.hitRadius
                    }
                },
                _resolveDatasetElementOptions: function(t) {
                    var e = this,
                        n = e._config,
                        i = t.custom || {},
                        r = e.chart.options,
                        o = r.elements.line,
                        a = nt.prototype._resolveDatasetElementOptions.apply(e, arguments);
                    return a.spanGaps = Ft(n.spanGaps, r.spanGaps), a.tension = Ft(n.lineTension, o.tension), a.steppedLine = Rt([i.steppedLine, n.steppedLine, o.stepped]), a.clip = Ht(Ft(n.clip, zt(e._xScale, e._yScale, a.borderWidth))), a
                },
                calculatePointY: function(t, e, 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(t), 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[e])) < 0 ? f += a || 0 : h += a || 0);
                        return s < 0 ? d.getPixelForValue(f + s) : d.getPixelForValue(h + s)
                    }
                    return d.getPixelForValue(t)
                },
                updateBezierControlPoints: function() {
                    var t, e, n, i, r = this.chart,
                        o = this.getMeta(),
                        a = o.dataset._model,
                        s = r.chartArea,
                        l = o.data || [];

                    function c(t, e, n) {
                        return Math.max(Math.min(t, n), e)
                    }
                    if (a.spanGaps && (l = l.filter((function(t) {
                            return !t._model.skip
                        }))), "monotone" === a.cubicInterpolationMode) B.splineCurveMonotone(l);
                    else
                        for (t = 0, e = l.length; t < e; ++t) n = l[t]._model, i = B.splineCurve(B.previousItem(l, t)._model, n, B.nextItem(l, t)._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 (t = 0, e = l.length; t < e; ++t) n = l[t]._model, jt(n, s) && (t > 0 && jt(l[t - 1]._model, s) && (n.controlPointPreviousX = c(n.controlPointPreviousX, s.left, s.right), n.controlPointPreviousY = c(n.controlPointPreviousY, s.top, s.bottom)), t < l.length - 1 && jt(l[t + 1]._model, s) && (n.controlPointNextX = c(n.controlPointNextX, s.left, s.right), n.controlPointNextY = c(n.controlPointNextY, s.top, s.bottom)))
                },
                draw: function() {
                    var t, e = this.chart,
                        n = this.getMeta(),
                        i = n.data || [],
                        r = e.chartArea,
                        o = e.canvas,
                        a = 0,
                        s = i.length;
                    for (this._showLine && (t = n.dataset._model.clip, B.canvas.clipArea(e.ctx, {
                            left: !1 === t.left ? 0 : r.left - t.left,
                            right: !1 === t.right ? o.width : r.right + t.right,
                            top: !1 === t.top ? 0 : r.top - t.top,
                            bottom: !1 === t.bottom ? o.height : r.bottom + t.bottom
                        }), n.dataset.draw(), B.canvas.unclipArea(e.ctx)); a < s; ++a) i[a].draw(r)
                },
                setHoverStyle: function(t) {
                    var e = t._model,
                        n = t._options,
                        i = B.getHoverColor;
                    t.$previousStyle = {
                        backgroundColor: e.backgroundColor,
                        borderColor: e.borderColor,
                        borderWidth: e.borderWidth,
                        radius: e.radius
                    }, e.backgroundColor = Ft(n.hoverBackgroundColor, i(n.backgroundColor)), e.borderColor = Ft(n.hoverBorderColor, i(n.borderColor)), e.borderWidth = Ft(n.hoverBorderWidth, n.borderWidth), e.radius = Ft(n.hoverRadius, n.radius)
                }
            }),
            qt = B.options.resolve;
        R._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(t) {
                var e, n, i, r = document.createElement("ul"),
                    o = t.data,
                    a = o.datasets,
                    s = o.labels;
                if (r.setAttribute("class", t.id + "-legend"), a.length)
                    for (e = 0, n = a[0].data.length; e < n; ++e)(i = r.appendChild(document.createElement("li"))).appendChild(document.createElement("span")).style.backgroundColor = a[0].backgroundColor[e], s[e] && i.appendChild(document.createTextNode(s[e]));
                return r.outerHTML
            },
            legend: {
                labels: {
                    generateLabels: function(t) {
                        var e = t.data;
                        return e.labels.length && e.datasets.length ? e.labels.map((function(n, i) {
                            var r = t.getDatasetMeta(0),
                                o = r.controller.getStyle(i);
                            return {
                                text: n,
                                fillStyle: o.backgroundColor,
                                strokeStyle: o.borderColor,
                                lineWidth: o.borderWidth,
                                hidden: isNaN(e.datasets[0].data[i]) || r.data[i].hidden,
                                index: i
                            }
                        })) : []
                    }
                },
                onClick: function(t, e) {
                    var n, i, r, o = e.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(t, e) {
                        return e.labels[t.index] + ": " + t.yLabel
                    }
                }
            }
        });
        var Wt = nt.extend({
            dataElementType: bt.Arc,
            linkScales: B.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(t) {
                var e, 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(), e = 0, n = o.data.length; e < n; e++) l[e] = s, i = r._computeAngle(e), c[e] = i, s += i;
                for (e = 0, n = u.length; e < n; ++e) u[e]._options = r._resolveDataElementOptions(u[e], e), r.updateElement(u[e], e, t)
            },
            _updateRadius: function() {
                var t = this,
                    e = t.chart,
                    n = e.chartArea,
                    i = e.options,
                    r = Math.min(n.right - n.left, n.bottom - n.top);
                e.outerRadius = Math.max(r / 2, 0), e.innerRadius = Math.max(i.cutoutPercentage ? e.outerRadius / 100 * i.cutoutPercentage : 1, 0), e.radiusLength = (e.outerRadius - e.innerRadius) / e.getVisibleDatasetCount(), t.outerRadius = e.outerRadius - e.radiusLength * t.index, t.innerRadius = t.outerRadius - e.radiusLength
            },
            updateElement: function(t, e, 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 = t.hidden ? 0 : l.getDistanceFromCenterForValue(o.data[e]),
                    p = i._starts[e],
                    g = p + (t.hidden ? 0 : i._angles[e]),
                    m = s.animateScale ? 0 : l.getDistanceFromCenterForValue(o.data[e]),
                    v = t._options || {};
                B.extend(t, {
                    _datasetIndex: i.index,
                    _index: e,
                    _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: B.valueAtIndexOrDefault(c, e, c[e])
                    }
                }), t.pivot()
            },
            countVisibleElements: function() {
                var t = this.getDataset(),
                    e = this.getMeta(),
                    n = 0;
                return B.each(e.data, (function(e, i) {
                    isNaN(t.data[i]) || e.hidden || n++
                })), n
            },
            setHoverStyle: function(t) {
                var e = t._model,
                    n = t._options,
                    i = B.getHoverColor,
                    r = B.valueOrDefault;
                t.$previousStyle = {
                    backgroundColor: e.backgroundColor,
                    borderColor: e.borderColor,
                    borderWidth: e.borderWidth
                }, e.backgroundColor = r(n.hoverBackgroundColor, i(n.backgroundColor)), e.borderColor = r(n.hoverBorderColor, i(n.borderColor)), e.borderWidth = r(n.hoverBorderWidth, n.borderWidth)
            },
            _computeAngle: function(t) {
                var e = this,
                    n = this.getMeta().count,
                    i = e.getDataset(),
                    r = e.getMeta();
                if (isNaN(i.data[t]) || r.data[t].hidden) return 0;
                var o = {
                    chart: e.chart,
                    dataIndex: t,
                    dataset: i,
                    datasetIndex: e.index
                };
                return qt([e.chart.options.elements.arc.angle, 2 * Math.PI / n], o, t)
            }
        });
        R._set("pie", B.clone(R.doughnut)), R._set("pie", {
            cutoutPercentage: 0
        });
        var Ut = Lt,
            Vt = B.valueOrDefault;
        R._set("radar", {
            spanGaps: !1,
            scale: {
                type: "radialLinear"
            },
            elements: {
                line: {
                    fill: "start",
                    tension: 0
                }
            }
        });
        var Yt = nt.extend({
            datasetElementType: bt.Line,
            dataElementType: bt.Point,
            linkScales: B.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(t) {
                var e, 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(), e = 0, n = a.length; e < n; ++e) i.updateElement(a[e], e, t);
                for (i.updateBezierControlPoints(), e = 0, n = a.length; e < n; ++e) a[e].pivot()
            },
            updateElement: function(t, e, n) {
                var i = this,
                    r = t.custom || {},
                    o = i.getDataset(),
                    a = i.chart.scale,
                    s = a.getPointPositionForValue(e, o.data[e]),
                    l = i._resolveDataElementOptions(t, e),
                    c = i.getMeta().dataset._model,
                    u = n ? a.xCenter : s.x,
                    d = n ? a.yCenter : s.y;
                t._scale = a, t._options = l, t._datasetIndex = i.index, t._index = e, t._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: Vt(r.tension, c ? c.tension : 0),
                    hitRadius: l.hitRadius
                }
            },
            _resolveDatasetElementOptions: function() {
                var t = this,
                    e = t._config,
                    n = t.chart.options,
                    i = nt.prototype._resolveDatasetElementOptions.apply(t, arguments);
                return i.spanGaps = Vt(e.spanGaps, n.spanGaps), i.tension = Vt(e.lineTension, n.elements.line.tension), i
            },
            updateBezierControlPoints: function() {
                var t, e, n, i, r = this.getMeta(),
                    o = this.chart.chartArea,
                    a = r.data || [];

                function s(t, e, n) {
                    return Math.max(Math.min(t, n), e)
                }
                for (r.dataset._model.spanGaps && (a = a.filter((function(t) {
                        return !t._model.skip
                    }))), t = 0, e = a.length; t < e; ++t) n = a[t]._model, i = B.splineCurve(B.previousItem(a, t, !0)._model, n, B.nextItem(a, t, !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(t) {
                var e = t._model,
                    n = t._options,
                    i = B.getHoverColor;
                t.$previousStyle = {
                    backgroundColor: e.backgroundColor,
                    borderColor: e.borderColor,
                    borderWidth: e.borderWidth,
                    radius: e.radius
                }, e.backgroundColor = Vt(n.hoverBackgroundColor, i(n.backgroundColor)), e.borderColor = Vt(n.hoverBorderColor, i(n.borderColor)), e.borderWidth = Vt(n.hoverBorderWidth, n.borderWidth), e.radius = Vt(n.hoverRadius, n.radius)
            }
        });
        R._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(t) {
                        return "(" + t.xLabel + ", " + t.yLabel + ")"
                    }
                }
            }
        }), R._set("global", {
            datasets: {
                scatter: {
                    showLine: !1
                }
            }
        });
        var Gt = {
            bar: Tt,
            bubble: Et,
            doughnut: Lt,
            horizontalBar: Nt,
            line: Bt,
            polarArea: Wt,
            pie: Ut,
            radar: Yt,
            scatter: Bt
        };

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

        function Qt(t, e) {
            var n, i, r, o, a, s, l = t._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 || e(s)
        }

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

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

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

        function te(t, e, n) {
            var i = Xt(e, t);
            n.axis = n.axis || "x";
            var r = Zt(n.axis),
                o = n.intersect ? Kt(t, i) : Jt(t, i, !1, r),
                a = [];
            return o.length ? (t._getSortedVisibleDatasetMetas().forEach((function(t) {
                var e = t.data[o[0]._index];
                e && !e._view.skip && a.push(e)
            })), a) : []
        }
        var ee = {
                modes: {
                    single: function(t, e) {
                        var n = Xt(e, t),
                            i = [];
                        return Qt(t, (function(t) {
                            if (t.inRange(n.x, n.y)) return i.push(t), i
                        })), i.slice(0, 1)
                    },
                    label: te,
                    index: te,
                    dataset: function(t, e, n) {
                        var i = Xt(e, t);
                        n.axis = n.axis || "xy";
                        var r = Zt(n.axis),
                            o = n.intersect ? Kt(t, i) : Jt(t, i, !1, r);
                        return o.length > 0 && (o = t.getDatasetMeta(o[0]._datasetIndex).data), o
                    },
                    "x-axis": function(t, e) {
                        return te(t, e, {
                            intersect: !1
                        })
                    },
                    point: function(t, e) {
                        return Kt(t, Xt(e, t))
                    },
                    nearest: function(t, e, n) {
                        var i = Xt(e, t);
                        n.axis = n.axis || "xy";
                        var r = Zt(n.axis);
                        return Jt(t, i, n.intersect, r)
                    },
                    x: function(t, e, n) {
                        var i = Xt(e, t),
                            r = [],
                            o = !1;
                        return Qt(t, (function(t) {
                            t.inXRange(i.x) && r.push(t), t.inRange(i.x, i.y) && (o = !0)
                        })), n.intersect && !o && (r = []), r
                    },
                    y: function(t, e, n) {
                        var i = Xt(e, t),
                            r = [],
                            o = !1;
                        return Qt(t, (function(t) {
                            t.inYRange(i.y) && r.push(t), t.inRange(i.x, i.y) && (o = !0)
                        })), n.intersect && !o && (r = []), r
                    }
                }
            },
            ne = B.extend;

        function ie(t, e) {
            return B.where(t, (function(t) {
                return t.pos === e
            }))
        }

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

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

        function ae(t, e, n) {
            var i, r, o = n.box,
                a = t.maxPadding;
            if (n.size && (t[n.pos] -= n.size), n.size = n.horizontal ? o.height : o.width, t[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 = e.outerWidth - oe(a, t, "left", "right"), r = e.outerHeight - oe(a, t, "top", "bottom"), i !== t.w || r !== t.h) {
                t.w = i, t.h = r;
                var l = n.horizontal ? [i, t.w] : [r, t.h];
                return !(l[0] === l[1] || isNaN(l[0]) && isNaN(l[1]))
            }
        }

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

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

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

                                function n(n) {
                                    var i = Math.max(e[n] - t[n], 0);
                                    return t[n] += i, i
                                }
                                t.y += n("top"), t.x += n("left"), n("right"), n("bottom")
                            }(d), ce(s.leftAndTop, d, u), d.x += d.w, d.y += d.h, ce(s.rightAndBottom, d, u), t.chartArea = {
                                left: d.left,
                                top: d.top,
                                right: d.left + d.w,
                                bottom: d.top + d.h
                            }, B.each(s.chartArea, (function(e) {
                                var n = e.box;
                                ne(n, t.chartArea), n.update(d.w, d.h)
                            }))
                    }
                }
            },
            he = (ue = 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}"
            })) && ue.default || ue,
            fe = "$chartjs",
            pe = "chartjs-size-monitor",
            ge = "chartjs-render-monitor",
            me = ["animationstart", "webkitAnimationStart"],
            ve = {
                touchstart: "mousedown",
                touchmove: "mousemove",
                touchend: "mouseup",
                pointerenter: "mouseenter",
                pointerdown: "mousedown",
                pointermove: "mousemove",
                pointerup: "mouseup",
                pointerleave: "mouseout",
                pointerout: "mouseout"
            };

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

        function we(t, e, n) {
            t.addEventListener(e, n, be)
        }

        function xe(t, e, n) {
            t.removeEventListener(e, n, be)
        }

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

        function Se(t) {
            var e = document.createElement("div");
            return e.className = t || "", e
        }
        var Ce = {
            disableCSSInjection: !1,
            _enabled: "undefined" != typeof window && "undefined" != typeof document,
            _ensureLoaded: function(t) {
                if (!this.disableCSSInjection) {
                    var e = t.getRootNode ? t.getRootNode() : document;
                    ! function(t, e) {
                        var n = t[fe] || (t[fe] = {});
                        if (!n.containsStyles) {
                            n.containsStyles = !0, e = "/* Chart.js */\n" + e;
                            var i = document.createElement("style");
                            i.setAttribute("type", "text/css"), i.appendChild(document.createTextNode(e)), t.appendChild(i)
                        }
                    }(e.host ? e : document.head, he)
                }
            },
            acquireContext: function(t, e) {
                "string" == typeof t ? t = document.getElementById(t) : t.length && (t = t[0]), t && t.canvas && (t = t.canvas);
                var n = t && t.getContext && t.getContext("2d");
                return n && n.canvas === t ? (this._ensureLoaded(t), function(t, e) {
                    var n = t.style,
                        i = t.getAttribute("height"),
                        r = t.getAttribute("width");
                    if (t[fe] = {
                            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 = ye(t, "width");
                        void 0 !== o && (t.width = o)
                    }
                    if (null === i || "" === i)
                        if ("" === t.style.height) t.height = t.width / (e.options.aspectRatio || 2);
                        else {
                            var a = ye(t, "height");
                            void 0 !== o && (t.height = a)
                        }
                }(t, e), n) : null
            },
            releaseContext: function(t) {
                var e = t.canvas;
                if (e[fe]) {
                    var n = e[fe].initial;
                    ["height", "width"].forEach((function(t) {
                        var i = n[t];
                        B.isNullOrUndef(i) ? e.removeAttribute(t) : e.setAttribute(t, i)
                    })), B.each(n.style || {}, (function(t, n) {
                        e.style[n] = t
                    })), e.width = e.width, delete e[fe]
                }
            },
            addEventListener: function(t, e, n) {
                var i = t.canvas;
                if ("resize" !== e) {
                    var r = n[fe] || (n[fe] = {});
                    we(i, e, (r.proxies || (r.proxies = {}))[t.id + "_" + e] = function(e) {
                        n(function(t, e) {
                            var n = ve[t.type] || t.type,
                                i = B.getRelativePosition(t, e);
                            return _e(n, e, i.x, i.y, t)
                        }(e, t))
                    })
                } else ! function(t, e, n) {
                    var i, r, o, a, s = t[fe] || (t[fe] = {}),
                        l = s.resizer = function(t) {
                            var e = Se(pe),
                                n = Se(pe + "-expand"),
                                i = Se(pe + "-shrink");
                            n.appendChild(Se()), i.appendChild(Se()), e.appendChild(n), e.appendChild(i), e._reset = function() {
                                n.scrollLeft = 1e6, n.scrollTop = 1e6, i.scrollLeft = 1e6, i.scrollTop = 1e6
                            };
                            var r = function() {
                                e._reset(), t()
                            };
                            return we(n, "scroll", r.bind(n, "expand")), we(i, "scroll", r.bind(i, "shrink")), e
                        }((i = function() {
                            if (s.resizer) {
                                var i = n.options.maintainAspectRatio && t.parentNode,
                                    r = i ? i.clientWidth : 0;
                                e(_e("resize", n)), i && i.clientWidth < r && n.canvas && e(_e("resize", n))
                            }
                        }, o = !1, a = [], function() {
                            a = Array.prototype.slice.call(arguments), r = r || this, o || (o = !0, B.requestAnimFrame.call(window, (function() {
                                o = !1, i.apply(r, a)
                            })))
                        }));
                    ! function(t, e) {
                        var n = t[fe] || (t[fe] = {}),
                            i = n.renderProxy = function(t) {
                                "chartjs-render-animation" === t.animationName && e()
                            };
                        B.each(me, (function(e) {
                            we(t, e, i)
                        })), n.reflow = !!t.offsetParent, t.classList.add(ge)
                    }(t, (function() {
                        if (s.resizer) {
                            var e = t.parentNode;
                            e && e !== l.parentNode && e.insertBefore(l, e.firstChild), l._reset()
                        }
                    }))
                }(i, n, t)
            },
            removeEventListener: function(t, e, n) {
                var i = t.canvas;
                if ("resize" !== e) {
                    var r = ((n[fe] || {}).proxies || {})[t.id + "_" + e];
                    r && xe(i, e, r)
                } else ! function(t) {
                    var e = t[fe] || {},
                        n = e.resizer;
                    delete e.resizer,
                        function(t) {
                            var e = t[fe] || {},
                                n = e.renderProxy;
                            n && (B.each(me, (function(e) {
                                xe(t, e, n)
                            })), delete e.renderProxy), t.classList.remove(ge)
                        }(t), n && n.parentNode && n.parentNode.removeChild(n)
                }(i)
            }
        };
        B.addEvent = we, B.removeEvent = xe;
        var ke = Ce._enabled ? Ce : {
                acquireContext: function(t) {
                    return t && t.canvas && (t = t.canvas), t && t.getContext("2d") || null
                }
            },
            Te = B.extend({
                initialize: function() {},
                acquireContext: function() {},
                releaseContext: function() {},
                addEventListener: function() {},
                removeEventListener: function() {}
            }, ke);
        R._set("global", {
            plugins: {}
        });
        var Ae = {
                _plugins: [],
                _cacheId: 0,
                register: function(t) {
                    var e = this._plugins;
                    [].concat(t).forEach((function(t) {
                        -1 === e.indexOf(t) && e.push(t)
                    })), this._cacheId++
                },
                unregister: function(t) {
                    var e = this._plugins;
                    [].concat(t).forEach((function(t) {
                        var n = e.indexOf(t); - 1 !== n && e.splice(n, 1)
                    })), this._cacheId++
                },
                clear: function() {
                    this._plugins = [], this._cacheId++
                },
                count: function() {
                    return this._plugins.length
                },
                getAll: function() {
                    return this._plugins
                },
                notify: function(t, e, n) {
                    var i, r, o, a, s, l = this.descriptors(t),
                        c = l.length;
                    for (i = 0; i < c; ++i)
                        if ("function" == typeof(s = (o = (r = l[i]).plugin)[e]) && ((a = [t].concat(n || [])).push(r.options), !1 === s.apply(o, a))) return !1;
                    return !0
                },
                descriptors: function(t) {
                    var e = t.$plugins || (t.$plugins = {});
                    if (e.id === this._cacheId) return e.descriptors;
                    var n = [],
                        i = [],
                        r = t && t.config || {},
                        o = r.options && r.options.plugins || {};
                    return this._plugins.concat(r.plugins || []).forEach((function(t) {
                        if (-1 === n.indexOf(t)) {
                            var e = t.id,
                                r = o[e];
                            !1 !== r && (!0 === r && (r = B.clone(R.global.plugins[e])), n.push(t), i.push({
                                plugin: t,
                                options: r || {}
                            }))
                        }
                    })), e.descriptors = i, e.id = this._cacheId, i
                },
                _invalidate: function(t) {
                    delete t.$plugins
                }
            },
            De = {
                constructors: {},
                defaults: {},
                registerScaleType: function(t, e, n) {
                    this.constructors[t] = e, this.defaults[t] = B.clone(n)
                },
                getScaleConstructor: function(t) {
                    return this.constructors.hasOwnProperty(t) ? this.constructors[t] : void 0
                },
                getScaleDefaults: function(t) {
                    return this.defaults.hasOwnProperty(t) ? B.merge(Object.create(null), [R.scale, this.defaults[t]]) : {}
                },
                updateScaleDefaults: function(t, e) {
                    this.defaults.hasOwnProperty(t) && (this.defaults[t] = B.extend(this.defaults[t], e))
                },
                addScalesToLayout: function(t) {
                    B.each(t.scales, (function(e) {
                        e.fullWidth = e.options.fullWidth, e.position = e.options.position, e.weight = e.options.weight, de.addBox(t, e)
                    }))
                }
            },
            Ee = B.valueOrDefault,
            Me = B.rtl.getRtlAdapter;
        R._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: B.noop,
                    title: function(t, e) {
                        var n = "",
                            i = e.labels,
                            r = i ? i.length : 0;
                        if (t.length > 0) {
                            var o = t[0];
                            o.label ? n = o.label : o.xLabel ? n = o.xLabel : r > 0 && o.index < r && (n = i[o.index])
                        }
                        return n
                    },
                    afterTitle: B.noop,
                    beforeBody: B.noop,
                    beforeLabel: B.noop,
                    label: function(t, e) {
                        var n = e.datasets[t.datasetIndex].label || "";
                        return n && (n += ": "), B.isNullOrUndef(t.value) ? n += t.yLabel : n += t.value, n
                    },
                    labelColor: function(t, e) {
                        var n = e.getDatasetMeta(t.datasetIndex).data[t.index]._view;
                        return {
                            borderColor: n.borderColor,
                            backgroundColor: n.backgroundColor
                        }
                    },
                    labelTextColor: function() {
                        return this._options.bodyFontColor
                    },
                    afterLabel: B.noop,
                    afterBody: B.noop,
                    beforeFooter: B.noop,
                    footer: B.noop,
                    afterFooter: B.noop
                }
            }
        });
        var Oe = {
            average: function(t) {
                if (!t.length) return !1;
                var e, n, i = 0,
                    r = 0,
                    o = 0;
                for (e = 0, n = t.length; e < n; ++e) {
                    var a = t[e];
                    if (a && a.hasValue()) {
                        var s = a.tooltipPosition();
                        i += s.x, r += s.y, ++o
                    }
                }
                return {
                    x: i / o,
                    y: r / o
                }
            },
            nearest: function(t, e) {
                var n, i, r, o = e.x,
                    a = e.y,
                    s = Number.POSITIVE_INFINITY;
                for (n = 0, i = t.length; n < i; ++n) {
                    var l = t[n];
                    if (l && l.hasValue()) {
                        var c = l.getCenterPoint(),
                            u = B.distanceBetweenPoints(e, 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 Ie(t, e) {
            return e && (B.isArray(e) ? Array.prototype.push.apply(t, e) : t.push(e)), t
        }

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

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

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

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

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

        function Be() {
            return B.merge(Object.create(null), [].slice.call(arguments), {
                merger: function(t, e, n, i) {
                    var r = e[t] || Object.create(null),
                        o = n[t];
                    "scales" === t ? e[t] = He(r, o) : "scale" === t ? e[t] = B.merge(r, [De.getScaleDefaults(o.type), o]) : B._merger(t, e, n, i)
                }
            })
        }

        function qe(t) {
            var e = t.options;
            B.each(t.scales, (function(e) {
                de.removeBox(t, e)
            })), e = Be(R.global, R[t.config.type], e), t.options = t.config.options = e, t.ensureScalesHaveIDs(), t.buildOrUpdateScales(), t.tooltip._options = e.tooltips, t.tooltip.initialize()
        }

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

        function Ue(t) {
            return "top" === t || "bottom" === t
        }

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

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

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

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

        function on(t) {
            return t.drawTicks ? t.tickMarkLength : 0
        }

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

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

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

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

        function un(t, e, n, i) {
            var r, o, a, s, l = en(n, 0),
                c = Math.min(en(i, t.length), t.length),
                u = 0;
            for (e = Math.ceil(e), i && (e = (r = i - n) / Math.floor(r / e)), s = l; s < 0;) u++, s = Math.round(l + u * e);
            for (o = Math.max(l, 0); o < c; o++) a = t[o], o === s ? (a._index = o, u++, s = Math.round(l + u * e)) : delete a.label
        }
        R._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: Je.formatters.values,
                minor: {},
                major: {}
            }
        });
        var dn = G.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 t = this.chart.data;
                return this.options.labels || (this.isHorizontal() ? t.xLabels : t.yLabels) || t.labels || []
            },
            mergeTicksOptions: function() {},
            beforeUpdate: function() {
                B.callback(this.options.beforeUpdate, [this])
            },
            update: function(t, e, n) {
                var i, r, o, a, s, l = this,
                    c = l.options.ticks,
                    u = c.sampleSize;
                if (l.beforeUpdate(), l.maxWidth = t, l.maxHeight = e, l.margins = B.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(t, e) {
                    for (var n = [], i = t.length / e, r = 0, o = t.length; r < o; r += i) n.push(t[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 t, e, n = this,
                    i = n.options.ticks.reverse;
                n.isHorizontal() ? (t = n.left, e = n.right) : (t = n.top, e = n.bottom, i = !i), n._startPixel = t, n._endPixel = e, n._reversePixels = i, n._length = e - t
            },
            afterUpdate: function() {
                B.callback(this.options.afterUpdate, [this])
            },
            beforeSetDimensions: function() {
                B.callback(this.options.beforeSetDimensions, [this])
            },
            setDimensions: function() {
                var t = this;
                t.isHorizontal() ? (t.width = t.maxWidth, t.left = 0, t.right = t.width) : (t.height = t.maxHeight, t.top = 0, t.bottom = t.height), t.paddingLeft = 0, t.paddingTop = 0, t.paddingRight = 0, t.paddingBottom = 0
            },
            afterSetDimensions: function() {
                B.callback(this.options.afterSetDimensions, [this])
            },
            beforeDataLimits: function() {
                B.callback(this.options.beforeDataLimits, [this])
            },
            determineDataLimits: B.noop,
            afterDataLimits: function() {
                B.callback(this.options.afterDataLimits, [this])
            },
            beforeBuildTicks: function() {
                B.callback(this.options.beforeBuildTicks, [this])
            },
            buildTicks: B.noop,
            afterBuildTicks: function(t) {
                var e = this;
                return Ze(t) && t.length ? B.callback(e.options.afterBuildTicks, [e, t]) : (e.ticks = B.callback(e.options.afterBuildTicks, [e, e.ticks]) || e.ticks, t)
            },
            beforeTickToLabelConversion: function() {
                B.callback(this.options.beforeTickToLabelConversion, [this])
            },
            convertTicksToLabels: function() {
                var t = this.options.ticks;
                this.ticks = this.ticks.map(t.userCallback || t.callback, this)
            },
            afterTickToLabelConversion: function() {
                B.callback(this.options.afterTickToLabelConversion, [this])
            },
            beforeCalculateTickRotation: function() {
                B.callback(this.options.beforeCalculateTickRotation, [this])
            },
            calculateTickRotation: function() {
                var t, e, 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 : (e = (t = s._getLabelSizes()).widest.width, n = t.highest.height - t.highest.offset, i = Math.min(s.maxWidth, s.chart.width - e), e + 6 > (r = l.offset ? s.maxWidth / u : i / (u - 1)) && (r = i / (u - (l.offset ? .5 : 1)), o = s.maxHeight - on(l.gridLines) - c.padding - an(l.scaleLabel), a = Math.sqrt(e * e + n * n), f = B.toDegrees(Math.min(Math.asin(Math.min((t.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() {
                B.callback(this.options.afterCalculateTickRotation, [this])
            },
            beforeFit: function() {
                B.callback(this.options.beforeFit, [this])
            },
            fit: function() {
                var t = this,
                    e = t.minSize = {
                        width: 0,
                        height: 0
                    },
                    n = t.chart,
                    i = t.options,
                    r = i.ticks,
                    o = i.scaleLabel,
                    a = i.gridLines,
                    s = t._isVisible(),
                    l = "bottom" === i.position,
                    c = t.isHorizontal();
                if (c ? e.width = t.maxWidth : s && (e.width = on(a) + an(o)), c ? s && (e.height = on(a) + an(o)) : e.height = t.maxHeight, r.display && s) {
                    var u = ln(r),
                        d = t._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 !== t.labelRotation,
                            b = B.toRadians(t.labelRotation),
                            w = Math.cos(b),
                            x = Math.sin(b),
                            _ = x * p.width + w * (g.height - (y ? g.offset : 0)) + (y ? 0 : m);
                        e.height = Math.min(t.maxHeight, e.height + _ + v);
                        var S, C, k = t.getPixelForTick(0) - t.left,
                            T = t.right - t.getPixelForTick(t.getTicks().length - 1);
                        y ? (S = l ? w * h.width + x * h.offset : x * (h.height - h.offset), C = l ? x * (f.height - f.offset) : w * f.width + x * f.offset) : (S = h.width / 2, C = f.width / 2), t.paddingLeft = Math.max((S - k) * t.width / (t.width - k), 0) + 3, t.paddingRight = Math.max((C - T) * t.width / (t.width - T), 0) + 3
                    } else {
                        var A = r.mirror ? 0 : p.width + v + m;
                        e.width = Math.min(t.maxWidth, e.width + A), t.paddingTop = h.height / 2, t.paddingBottom = f.height / 2
                    }
                }
                t.handleMargins(), c ? (t.width = t._length = n.width - t.margins.left - t.margins.right, t.height = e.height) : (t.width = e.width, t.height = t._length = n.height - t.margins.top - t.margins.bottom)
            },
            handleMargins: function() {
                var t = this;
                t.margins && (t.margins.left = Math.max(t.paddingLeft, t.margins.left), t.margins.top = Math.max(t.paddingTop, t.margins.top), t.margins.right = Math.max(t.paddingRight, t.margins.right), t.margins.bottom = Math.max(t.paddingBottom, t.margins.bottom))
            },
            afterFit: function() {
                B.callback(this.options.afterFit, [this])
            },
            isHorizontal: function() {
                var t = this.options.position;
                return "top" === t || "bottom" === t
            },
            isFullWidth: function() {
                return this.options.fullWidth
            },
            getRightValue: function(t) {
                if (tn(t)) return NaN;
                if (("number" == typeof t || t instanceof Number) && !isFinite(t)) return NaN;
                if (t)
                    if (this.isHorizontal()) {
                        if (void 0 !== t.x) return this.getRightValue(t.x)
                    } else if (void 0 !== t.y) return this.getRightValue(t.y);
                return t
            },
            _convertTicksToLabels: function(t) {
                var e, n, i, r = this;
                for (r.ticks = t.map((function(t) {
                        return t.value
                    })), r.beforeTickToLabelConversion(), e = r.convertTicksToLabels(t) || r.ticks, r.afterTickToLabelConversion(), n = 0, i = t.length; n < i; ++n) t[n].label = e[n];
                return e
            },
            _getLabelSizes: function() {
                var t = this,
                    e = t._labelSizes;
                return e || (t._labelSizes = e = function(t, e, n, i) {
                    var r, o, a, s, l, c, u, d, h, f, p, g, m, v = n.length,
                        y = [],
                        b = [],
                        w = [],
                        x = 0,
                        _ = 0;
                    for (r = 0; r < v; ++r) {
                        if (s = n[r].label, l = n[r].major ? e.major : e.minor, t.font = c = l.string, u = i[c] = i[c] || {
                                data: {},
                                gc: []
                            }, d = l.lineHeight, h = f = 0, tn(s) || Ze(s)) {
                            if (Ze(s))
                                for (o = 0, a = s.length; o < a; ++o) p = s[o], tn(p) || Ze(p) || (h = B.measureText(t, u.data, u.gc, h, p), f += d)
                        } else h = B.measureText(t, u.data, u.gc, h, s), f = d;
                        y.push(h), b.push(f), w.push(d / 2), x = Math.max(h, x), _ = Math.max(f, _)
                    }

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

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

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

                    function d(t) {
                        return u ? t.xAxisID === a.id : t.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 (t = 0; t < c.length; t++)
                            if (e = l.getDatasetMeta(t), l.isDatasetVisible(t) && d(e) && void 0 !== e.stack) {
                                h = !0;
                                break
                            }
                    if (s.stacked || h) {
                        var f = {};
                        for (t = 0; t < c.length; t++) {
                            var p = [(e = l.getDatasetMeta(t)).type, void 0 === s.stacked && void 0 === e.stack ? t : "", e.stack].join(".");
                            if (l.isDatasetVisible(t) && d(e))
                                for (void 0 === f[p] && (f[p] = []), r = 0, o = (i = c[t].data).length; r < o; r++) {
                                    var g = f[p];
                                    n = a._parseValue(i[r]), isNaN(n.min) || isNaN(n.max) || e.data[r].hidden || n.min < 0 || n.max < 0 || (g[r] = g[r] || 0, g[r] += n.max)
                                }
                        }
                        B.each(f, (function(t) {
                            if (t.length > 0) {
                                var e = B.min(t),
                                    n = B.max(t);
                                a.min = Math.min(a.min, e), a.max = Math.max(a.max, n)
                            }
                        }))
                    } else
                        for (t = 0; t < c.length; t++)
                            if (e = l.getDatasetMeta(t), l.isDatasetVisible(t) && d(e))
                                for (r = 0, o = (i = c[t].data).length; r < o; r++) n = a._parseValue(i[r]), isNaN(n.min) || isNaN(n.max) || e.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 = B.isFinite(a.min) ? a.min : null, a.max = B.isFinite(a.max) ? a.max : null, a.minNotZero = B.isFinite(a.minNotZero) ? a.minNotZero : null, this.handleTickRangeOptions()
                },
                handleTickRangeOptions: function() {
                    var t = this,
                        e = t.options.ticks;
                    t.min = Tn(e.min, t.min), t.max = Tn(e.max, t.max), t.min === t.max && (0 !== t.min && null !== t.min ? (t.min = Math.pow(10, Math.floor(Cn(t.min)) - 1), t.max = Math.pow(10, Math.floor(Cn(t.max)) + 1)) : (t.min = 1, t.max = 10)), null === t.min && (t.min = Math.pow(10, Math.floor(Cn(t.max)) - 1)), null === t.max && (t.max = 0 !== t.min ? Math.pow(10, Math.floor(Cn(t.min)) + 1) : 10), null === t.minNotZero && (t.min > 0 ? t.minNotZero = t.min : t.max < 1 ? t.minNotZero = Math.pow(10, Math.floor(Cn(t.max))) : t.minNotZero = 1)
                },
                buildTicks: function() {
                    var t = this,
                        e = t.options.ticks,
                        n = !t.isHorizontal(),
                        i = {
                            min: Tn(e.min),
                            max: Tn(e.max)
                        },
                        r = t.ticks = function(t, e) {
                            var n, i, r = [],
                                o = Sn(t.min, Math.pow(10, Math.floor(Cn(e.min)))),
                                a = Math.floor(Cn(e.max)),
                                s = Math.ceil(e.max / Math.pow(10, a));
                            0 === o ? (n = Math.floor(Cn(e.minNotZero)), i = Math.floor(e.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 = Sn(t.max, o);
                            return r.push(c), r
                        }(i, t);
                    t.max = B.max(r), t.min = B.min(r), e.reverse ? (n = !n, t.start = t.max, t.end = t.min) : (t.start = t.min, t.end = t.max), n && r.reverse()
                },
                convertTicksToLabels: function() {
                    this.tickValues = this.ticks.slice(), hn.prototype.convertTicksToLabels.call(this)
                },
                getLabelForIndex: function(t, e) {
                    return this._getScaleLabel(this.chart.data.datasets[e].data[t])
                },
                getPixelForTick: function(t) {
                    var e = this.tickValues;
                    return t < 0 || t > e.length - 1 ? null : this.getPixelForValue(e[t])
                },
                _getFirstTickValue: function(t) {
                    var e = Math.floor(Cn(t));
                    return Math.floor(t / Math.pow(10, e)) * Math.pow(10, e)
                },
                _configure: function() {
                    var t = this,
                        e = t.min,
                        n = 0;
                    hn.prototype._configure.call(t), 0 === e && (e = t._getFirstTickValue(t.minNotZero), n = Sn(t.options.ticks.fontSize, R.global.defaultFontSize) / t._length), t._startValue = Cn(e), t._valueOffset = n, t._valueRange = (Cn(t.max) - Cn(e)) / (1 - n)
                },
                getPixelForValue: function(t) {
                    var e = this,
                        n = 0;
                    return (t = +e.getRightValue(t)) > e.min && t > 0 && (n = (Cn(t) - e._startValue) / e._valueRange + e._valueOffset), e.getPixelForDecimal(n)
                },
                getValueForPixel: function(t) {
                    var e = this,
                        n = e.getDecimalForPixel(t);
                    return 0 === n && 0 === e.min ? 0 : Math.pow(10, e._startValue + (n - e._valueOffset) * e._valueRange)
                }
            }),
            Dn = kn;
        An._defaults = Dn;
        var En = B.valueOrDefault,
            Mn = B.valueAtIndexOrDefault,
            On = B.options.resolve,
            In = {
                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: Je.formatters.linear
                },
                pointLabels: {
                    display: !0,
                    fontSize: 10,
                    callback: function(t) {
                        return t
                    }
                }
            };

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

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

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

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

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

        function jn(t) {
            return B.isNumber(t) ? t : 0
        }
        var $n = vn.extend({
                setDimensions: function() {
                    var t = this;
                    t.width = t.maxWidth, t.height = t.maxHeight, t.paddingTop = Pn(t.options) / 2, t.xCenter = Math.floor(t.width / 2), t.yCenter = Math.floor((t.height - t.paddingTop) / 2), t.drawingArea = Math.min(t.height - t.paddingTop, t.width) / 2
                },
                determineDataLimits: function() {
                    var t = this,
                        e = t.chart,
                        n = Number.POSITIVE_INFINITY,
                        i = Number.NEGATIVE_INFINITY;
                    B.each(e.data.datasets, (function(r, o) {
                        if (e.isDatasetVisible(o)) {
                            var a = e.getDatasetMeta(o);
                            B.each(r.data, (function(e, r) {
                                var o = +t.getRightValue(e);
                                isNaN(o) || a.data[r].hidden || (n = Math.min(o, n), i = Math.max(o, i))
                            }))
                        }
                    })), t.min = n === Number.POSITIVE_INFINITY ? 0 : n, t.max = i === Number.NEGATIVE_INFINITY ? 0 : i, t.handleTickRangeOptions()
                },
                _computeTickLimit: function() {
                    return Math.ceil(this.drawingArea / Pn(this.options))
                },
                convertTicksToLabels: function() {
                    var t = this;
                    vn.prototype.convertTicksToLabels.call(t), t.pointLabels = t.chart.data.labels.map((function() {
                        var e = B.callback(t.options.pointLabels.callback, arguments, t);
                        return e || 0 === e ? e : ""
                    }))
                },
                getLabelForIndex: function(t, e) {
                    return +this.getRightValue(this.chart.data.datasets[e].data[t])
                },
                fit: function() {
                    var t = this.options;
                    t.display && t.pointLabels.display ? function(t) {
                        var e, n, i, r = B.options._parseFont(t.options.pointLabels),
                            o = {
                                l: 0,
                                r: t.width,
                                t: 0,
                                b: t.height - t.paddingTop
                            },
                            a = {};
                        t.ctx.font = r.string, t._pointLabelSizes = [];
                        var s, l, c, u = t.chart.data.labels.length;
                        for (e = 0; e < u; e++) {
                            i = t.getPointPosition(e, t.drawingArea + 5), s = t.ctx, l = r.lineHeight, c = t.pointLabels[e], n = B.isArray(c) ? {
                                w: B.longestText(s, s.font, c),
                                h: c.length * l
                            } : {
                                w: s.measureText(c).width,
                                h: l
                            }, t._pointLabelSizes[e] = n;
                            var d = t.getIndexAngle(e),
                                h = B.toDegrees(d) % 360,
                                f = Ln(h, i.x, n.w, 0, 180),
                                p = Ln(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)
                        }
                        t.setReductions(t.drawingArea, o, a)
                    }(this) : this.setCenterPoint(0, 0, 0, 0)
                },
                setReductions: function(t, e, n) {
                    var i = this,
                        r = e.l / Math.sin(n.l),
                        o = Math.max(e.r - i.width, 0) / Math.sin(n.r),
                        a = -e.t / Math.cos(n.t),
                        s = -Math.max(e.b - (i.height - i.paddingTop), 0) / Math.cos(n.b);
                    r = jn(r), o = jn(o), a = jn(a), s = jn(s), i.drawingArea = Math.min(Math.floor(t - (r + o) / 2), Math.floor(t - (a + s) / 2)), i.setCenterPoint(r, o, a, s)
                },
                setCenterPoint: function(t, e, n, i) {
                    var r = this,
                        o = r.width - e - r.drawingArea,
                        a = t + 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(t) {
                    var e = this.chart,
                        n = (t * (360 / e.data.labels.length) + ((e.options || {}).startAngle || 0)) % 360;
                    return (n < 0 ? n + 360 : n) * Math.PI * 2 / 360
                },
                getDistanceFromCenterForValue: function(t) {
                    var e = this;
                    if (B.isNullOrUndef(t)) return NaN;
                    var n = e.drawingArea / (e.max - e.min);
                    return e.options.ticks.reverse ? (e.max - t) * n : (t - e.min) * n
                },
                getPointPosition: function(t, e) {
                    var n = this.getIndexAngle(t) - Math.PI / 2;
                    return {
                        x: Math.cos(n) * e + this.xCenter,
                        y: Math.sin(n) * e + this.yCenter
                    }
                },
                getPointPositionForValue: function(t, e) {
                    return this.getPointPosition(t, this.getDistanceFromCenterForValue(e))
                },
                getBasePosition: function(t) {
                    var e = this.min,
                        n = this.max;
                    return this.getPointPositionForValue(t || 0, this.beginAtZero ? 0 : e < 0 && n < 0 ? n : e > 0 && n > 0 ? e : 0)
                },
                _drawGrid: function() {
                    var t, e, 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(t) {
                            var e = t.ctx,
                                n = t.options,
                                i = n.pointLabels,
                                r = Pn(n),
                                o = t.getDistanceFromCenterForValue(n.ticks.reverse ? t.min : t.max),
                                a = B.options._parseFont(i);
                            e.save(), e.font = a.string, e.textBaseline = "middle";
                            for (var s = t.chart.data.labels.length - 1; s >= 0; s--) {
                                var l = 0 === s ? r / 2 : 0,
                                    c = t.getPointPosition(s, o + l + 5),
                                    u = Mn(i.fontColor, s, R.global.defaultFontColor);
                                e.fillStyle = u;
                                var d = t.getIndexAngle(s),
                                    h = B.toDegrees(d);
                                e.textAlign = Nn(h), Rn(h, t._pointLabelSizes[s], c), Fn(e, t.pointLabels[s], c, a.lineHeight)
                            }
                            e.restore()
                        }(i), a.display && B.each(i.ticks, (function(t, n) {
                            0 !== n && (e = i.getDistanceFromCenterForValue(i.ticksAsNumbers[n]), function(t, e, n, i) {
                                var r, o = t.ctx,
                                    a = e.circular,
                                    s = t.chart.data.labels.length,
                                    l = Mn(e.color, i - 1),
                                    c = Mn(e.lineWidth, i - 1);
                                if ((a || s) && l && c) {
                                    if (o.save(), o.strokeStyle = l, o.lineWidth = c, o.setLineDash && (o.setLineDash(e.borderDash || []), o.lineDashOffset = e.borderDashOffset || 0), o.beginPath(), a) o.arc(t.xCenter, t.yCenter, n, 0, 2 * Math.PI);
                                    else {
                                        r = t.getPointPosition(0, n), o.moveTo(r.x, r.y);
                                        for (var u = 1; u < s; u++) r = t.getPointPosition(u, n), o.lineTo(r.x, r.y)
                                    }
                                    o.closePath(), o.stroke(), o.restore()
                                }
                            }(i, a, e, n))
                        })), s.display && l && c) {
                        for (r.save(), r.lineWidth = l, r.strokeStyle = c, r.setLineDash && (r.setLineDash(On([s.borderDash, a.borderDash, []])), r.lineDashOffset = On([s.borderDashOffset, a.borderDashOffset, 0])), t = i.chart.data.labels.length - 1; t >= 0; t--) e = i.getDistanceFromCenterForValue(o.ticks.reverse ? i.min : i.max), n = i.getPointPosition(t, e), r.beginPath(), r.moveTo(i.xCenter, i.yCenter), r.lineTo(n.x, n.y), r.stroke();
                        r.restore()
                    }
                },
                _drawLabels: function() {
                    var t = this,
                        e = t.ctx,
                        n = t.options.ticks;
                    if (n.display) {
                        var i, r, o = t.getIndexAngle(0),
                            a = B.options._parseFont(n),
                            s = En(n.fontColor, R.global.defaultFontColor);
                        e.save(), e.font = a.string, e.translate(t.xCenter, t.yCenter), e.rotate(o), e.textAlign = "center", e.textBaseline = "middle", B.each(t.ticks, (function(o, l) {
                            (0 !== l || n.reverse) && (i = t.getDistanceFromCenterForValue(t.ticksAsNumbers[l]), n.showLabelBackdrop && (r = e.measureText(o).width, e.fillStyle = n.backdropColor, e.fillRect(-r / 2 - n.backdropPaddingX, -i - a.size / 2 - n.backdropPaddingY, r + 2 * n.backdropPaddingX, a.size + 2 * n.backdropPaddingY)), e.fillStyle = s, e.fillText(o, 0, -i))
                        })), e.restore()
                    }
                },
                _drawTitle: B.noop
            }),
            zn = In;
        $n._defaults = zn;
        var Hn = B._deprecated,
            Bn = B.options.resolve,
            qn = B.valueOrDefault,
            Wn = Number.MIN_SAFE_INTEGER || -9007199254740991,
            Un = Number.MAX_SAFE_INTEGER || 9007199254740991,
            Vn = {
                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
                }
            },
            Yn = Object.keys(Vn);

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

        function Xn(t) {
            return B.valueOrDefault(t.time.min, t.ticks.min)
        }

        function Qn(t) {
            return B.valueOrDefault(t.time.max, t.ticks.max)
        }

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

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

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

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

        function ei(t, e, n) {
            var i, r, o = [],
                a = {},
                s = e.length;
            for (i = 0; i < s; ++i) a[r = e[i]] = i, o.push({
                value: r,
                major: !1
            });
            return 0 !== s && n ? function(t, e, n, i) {
                var r, o, a = t._adapter,
                    s = +a.startOf(e[0].value, i),
                    l = e[e.length - 1].value;
                for (r = s; r <= l; r = +a.add(r, 1, i))(o = n[r]) >= 0 && (e[o].major = !0);
                return e
            }(t, o, a, n) : o
        }
        var ni = hn.extend({
            initialize: function() {
                this.mergeTicksOptions(), hn.prototype.initialize.call(this)
            },
            update: function() {
                var t = this,
                    e = t.options,
                    n = e.time || (e.time = {}),
                    i = t._adapter = new Ke._date(e.adapters.date);
                return Hn("time scale", n.format, "time.format", "time.parser"), Hn("time scale", n.min, "time.min", "ticks.min"), Hn("time scale", n.max, "time.max", "ticks.max"), B.mergeIf(n.displayFormats, i.formats()), hn.prototype.update.apply(t, arguments)
            },
            getRightValue: function(t) {
                return t && void 0 !== t.t && (t = t.t), hn.prototype.getRightValue.call(this, t)
            },
            determineDataLimits: function() {
                var t, e, n, i, r, o, a, s = this,
                    l = s.chart,
                    c = s._adapter,
                    u = s.options,
                    d = u.time.unit || "day",
                    h = Un,
                    f = Wn,
                    p = [],
                    g = [],
                    m = [],
                    v = s._getLabels();
                for (t = 0, n = v.length; t < n; ++t) m.push(Zn(s, v[t]));
                for (t = 0, n = (l.data.datasets || []).length; t < n; ++t)
                    if (l.isDatasetVisible(t))
                        if (r = l.data.datasets[t].data, B.isObject(r[0]))
                            for (g[t] = [], e = 0, i = r.length; e < i; ++e) o = Zn(s, r[e]), p.push(o), g[t][e] = o;
                        else g[t] = m.slice(0), a || (p = p.concat(m), a = !0);
                else g[t] = [];
                m.length && (h = Math.min(h, m[0]), f = Math.max(f, m[m.length - 1])), p.length && (p = n > 1 ? function(t) {
                    var e, n, i, r = {},
                        o = [];
                    for (e = 0, n = t.length; e < n; ++e) r[i = t[e]] || (r[i] = !0, o.push(i));
                    return o
                }(p).sort(Gn) : p.sort(Gn), h = Math.min(h, p[0]), f = Math.max(f, p[p.length - 1])), h = Zn(s, Xn(u)) || h, f = Zn(s, Qn(u)) || f, h = h === Un ? +c.startOf(Date.now(), d) : h, f = f === Wn ? +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 t, e, 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(t, e, n, i) {
                        var r, o = t._adapter,
                            a = t.options,
                            s = a.time,
                            l = s.unit || ti(s.minUnit, e, n, i),
                            c = Bn([s.stepSize, s.unitStepSize, 1]),
                            u = "week" === l && s.isoWeekday,
                            d = e,
                            h = [];
                        if (u && (d = +o.startOf(d, "isoWeek", u)), d = +o.startOf(d, u ? "day" : l), o.diff(n, e, l) > 1e5 * c) throw e + " 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 = Zn(i, Xn(a)) || r, o = Zn(i, Qn(a)) || o, t = 0, e = c.length; t < e; ++t)(n = c[t]) >= r && n <= o && u.push(n);
                return i.min = r, i.max = o, i._unit = l.unit || (s.autoSkip ? ti(l.minUnit, i.min, i.max, d) : function(t, e, n, i, r) {
                    var o, a;
                    for (o = Yn.length - 1; o >= Yn.indexOf(n); o--)
                        if (a = Yn[o], Vn[a].common && t._adapter.diff(r, i, a) >= e - 1) return a;
                    return Yn[n ? Yn.indexOf(n) : 0]
                }(i, u.length, l.minUnit, i.min, i.max)), i._majorUnit = s.major.enabled && "year" !== i._unit ? function(t) {
                    for (var e = Yn.indexOf(t) + 1, n = Yn.length; e < n; ++e)
                        if (Vn[Yn[e]].common) return Yn[e]
                }(i._unit) : void 0, i._table = function(t, e, n, i) {
                    if ("linear" === i || !t.length) return [{
                        time: e,
                        pos: 0
                    }, {
                        time: n,
                        pos: 1
                    }];
                    var r, o, a, s, l, c = [],
                        u = [e];
                    for (r = 0, o = t.length; r < o; ++r)(s = t[r]) > e && 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(t, e, n, i, r) {
                    var o, a, s = 0,
                        l = 0;
                    return r.offset && e.length && (o = Kn(t, "time", e[0], "pos"), s = 1 === e.length ? 1 - o : (Kn(t, "time", e[1], "pos") - o) / 2, a = Kn(t, "time", e[e.length - 1], "pos"), l = 1 === e.length ? a : (a - Kn(t, "time", e[e.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(t, e) {
                var n = this,
                    i = n._adapter,
                    r = n.chart.data,
                    o = n.options.time,
                    a = r.labels && t < r.labels.length ? r.labels[t] : "",
                    s = r.datasets[e].data[t];
                return B.isObject(s) && (a = n.getRightValue(s)), o.tooltipFormat ? i.format(Jn(n, a), o.tooltipFormat) : "string" == typeof a ? a : i.format(Jn(n, a), o.displayFormats.datetime)
            },
            tickFormatFunction: function(t, e, 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[e],
                    d = o.ticks,
                    h = l && c && u && u.major,
                    f = r.format(t, i || (h ? c : s)),
                    p = h ? d.major : d.minor,
                    g = Bn([p.callback, p.userCallback, d.callback, d.userCallback]);
                return g ? g(f, e, n) : f
            },
            convertTicksToLabels: function(t) {
                var e, n, i = [];
                for (e = 0, n = t.length; e < n; ++e) i.push(this.tickFormatFunction(t[e].value, e, t));
                return i
            },
            getPixelForOffset: function(t) {
                var e = this._offsets,
                    n = Kn(this._table, "time", t, "pos");
                return this.getPixelForDecimal((e.start + n) * e.factor)
            },
            getPixelForValue: function(t, e, n) {
                var i = null;
                if (void 0 !== e && void 0 !== n && (i = this._timestamps.datasets[n][e]), null === i && (i = Zn(this, t)), null !== i) return this.getPixelForOffset(i)
            },
            getPixelForTick: function(t) {
                var e = this.getTicks();
                return t >= 0 && t < e.length ? this.getPixelForOffset(e[t].value) : null
            },
            getValueForPixel: function(t) {
                var e = this._offsets,
                    n = this.getDecimalForPixel(t) / e.factor - e.end,
                    i = Kn(this._table, "pos", n, "time");
                return this._adapter._create(i)
            },
            _getLabelSize: function(t) {
                var e = this.options.ticks,
                    n = this.ctx.measureText(t).width,
                    i = B.toRadians(this.isHorizontal() ? e.maxRotation : e.minRotation),
                    r = Math.cos(i),
                    o = Math.sin(i),
                    a = qn(e.fontSize, R.global.defaultFontSize);
                return {
                    w: n * r + a * o,
                    h: n * o + a * r
                }
            },
            getLabelWidth: function(t) {
                return this._getLabelSize(t).w
            },
            getLabelCapacity: function(t) {
                var e = this,
                    n = e.options.time,
                    i = n.displayFormats,
                    r = i[n.unit] || i.millisecond,
                    o = e.tickFormatFunction(t, 0, ei(e, [t], e._majorUnit), r),
                    a = e._getLabelSize(o),
                    s = Math.floor(e.isHorizontal() ? e.width / a.w : e.height / a.h);
                return e.options.offset && s--, s > 0 ? s : 1
            }
        });
        ni._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 ii = {
                category: pn,
                linear: xn,
                logarithmic: An,
                radialLinear: $n,
                time: ni
            },
            ri = {
                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"
            };
        Ke._date.override("function" == typeof t ? {
            _id: "moment",
            formats: function() {
                return ri
            },
            parse: function(e, n) {
                return "string" == typeof e && "string" == typeof n ? e = t(e, n) : e instanceof t || (e = t(e)), e.isValid() ? e.valueOf() : null
            },
            format: function(e, n) {
                return t(e).format(n)
            },
            add: function(e, n, i) {
                return t(e).add(n, i).valueOf()
            },
            diff: function(e, n, i) {
                return t(e).diff(t(n), i)
            },
            startOf: function(e, n, i) {
                return e = t(e), "isoWeek" === n ? e.isoWeekday(i).valueOf() : e.startOf(n).valueOf()
            },
            endOf: function(e, n) {
                return t(e).endOf(n).valueOf()
            },
            _create: function(e) {
                return t(e)
            }
        } : {}), R._set("global", {
            plugins: {
                filler: {
                    propagate: !0
                }
            }
        });
        var oi = {
            dataset: function(t) {
                var e = t.fill,
                    n = t.chart,
                    i = n.getDatasetMeta(e),
                    r = i && n.isDatasetVisible(e) && i.dataset._children || [],
                    o = r.length || 0;
                return o ? function(t, e) {
                    return e < o && r[e]._view || null
                } : null
            },
            boundary: function(t) {
                var e = t.boundary,
                    n = e ? e.x : null,
                    i = e ? e.y : null;
                return B.isArray(e) ? function(t, n) {
                    return e[n]
                } : function(t) {
                    return {
                        x: null === n ? t.x : n,
                        y: null === i ? t.y : i
                    }
                }
            }
        };

        function ai(t, e, n) {
            var i, r = t._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 = e + i), !(i === e || 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 si(t) {
            return (t.el._scale || {}).getPointPositionForValue ? function(t) {
                var e, n, i, r, o, a = t.el._scale,
                    s = a.options,
                    l = a.chart.data.labels.length,
                    c = t.fill,
                    u = [];
                if (!l) return null;
                for (e = s.ticks.reverse ? a.max : a.min, n = s.ticks.reverse ? a.min : a.max, i = a.getPointPositionForValue(0, e), r = 0; r < l; ++r) o = "start" === c || "end" === c ? a.getPointPositionForValue(r, "start" === c ? e : 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
            }(t) : function(t) {
                var e, n = t.el._model || {},
                    i = t.el._scale || {},
                    r = t.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 (B.isFinite(o)) return {
                        x: (e = i.isHorizontal()) ? o : null,
                        y: e ? null : o
                    }
                }
                return null
            }(t)
        }

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

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

        function ui(t) {
            return t && !t.skip
        }

        function di(t, e, n, i, r) {
            var o, a, s, l;
            if (i && r) {
                for (t.moveTo(e[0].x, e[0].y), o = 1; o < i; ++o) B.canvas.lineTo(t, e[o - 1], e[o]);
                if (void 0 === n[0].angle)
                    for (t.lineTo(n[r - 1].x, n[r - 1].y), o = r - 1; o > 0; --o) B.canvas.lineTo(t, 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) t.arc(a, s, l, n[o].angle, n[o - 1].angle, !0)
            }
        }

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

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

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

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

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

                    function n(n, i, r) {
                        var o = document.defaultView,
                            a = B._getParentNode(n),
                            s = o.getComputedStyle(n)[i],
                            l = o.getComputedStyle(a)[i],
                            c = e(s),
                            u = e(l),
                            d = Number.POSITIVE_INFINITY;
                        return c || u ? Math.min(c ? t(s, n, r) : d, u ? t(l, a, r) : d) : "none"
                    }
                    B.where = function(t, e) {
                        if (B.isArray(t) && Array.prototype.filter) return t.filter(e);
                        var n = [];
                        return B.each(t, (function(t) {
                            e(t) && n.push(t)
                        })), n
                    }, B.findIndex = Array.prototype.findIndex ? function(t, e, n) {
                        return t.findIndex(e, n)
                    } : function(t, e, n) {
                        n = void 0 === n ? t : n;
                        for (var i = 0, r = t.length; i < r; ++i)
                            if (e.call(n, t[i], i, t)) return i;
                        return -1
                    }, B.findNextWhere = function(t, e, n) {
                        B.isNullOrUndef(n) && (n = -1);
                        for (var i = n + 1; i < t.length; i++) {
                            var r = t[i];
                            if (e(r)) return r
                        }
                    }, B.findPreviousWhere = function(t, e, n) {
                        B.isNullOrUndef(n) && (n = t.length);
                        for (var i = n - 1; i >= 0; i--) {
                            var r = t[i];
                            if (e(r)) return r
                        }
                    }, B.isNumber = function(t) {
                        return !isNaN(parseFloat(t)) && isFinite(t)
                    }, B.almostEquals = function(t, e, n) {
                        return Math.abs(t - e) < n
                    }, B.almostWhole = function(t, e) {
                        var n = Math.round(t);
                        return n - e <= t && n + e >= t
                    }, B.max = function(t) {
                        return t.reduce((function(t, e) {
                            return isNaN(e) ? t : Math.max(t, e)
                        }), Number.NEGATIVE_INFINITY)
                    }, B.min = function(t) {
                        return t.reduce((function(t, e) {
                            return isNaN(e) ? t : Math.min(t, e)
                        }), Number.POSITIVE_INFINITY)
                    }, B.sign = Math.sign ? function(t) {
                        return Math.sign(t)
                    } : function(t) {
                        return 0 == (t = +t) || isNaN(t) ? t : t > 0 ? 1 : -1
                    }, B.toRadians = function(t) {
                        return t * (Math.PI / 180)
                    }, B.toDegrees = function(t) {
                        return t * (180 / Math.PI)
                    }, B._decimalPlaces = function(t) {
                        if (B.isFinite(t)) {
                            for (var e = 1, n = 0; Math.round(t * e) / e !== t;) e *= 10, n++;
                            return n
                        }
                    }, B.getAngleFromPoint = function(t, e) {
                        var n = e.x - t.x,
                            i = e.y - t.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
                        }
                    }, B.distanceBetweenPoints = function(t, e) {
                        return Math.sqrt(Math.pow(e.x - t.x, 2) + Math.pow(e.y - t.y, 2))
                    }, B.aliasPixel = function(t) {
                        return t % 2 == 0 ? 0 : .5
                    }, B._alignPixel = function(t, e, n) {
                        var i = t.currentDevicePixelRatio,
                            r = n / 2;
                        return Math.round((e - r) * i) / i + r
                    }, B.splineCurve = function(t, e, n, i) {
                        var r = t.skip ? e : t,
                            o = e,
                            a = n.skip ? e : 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)
                            }
                        }
                    }, B.EPSILON = Number.EPSILON || 1e-14, B.splineCurveMonotone = function(t) {
                        var e, n, i, r, o, a, s, l, c, u = (t || []).map((function(t) {
                                return {
                                    model: t._model,
                                    deltaK: 0,
                                    mK: 0
                                }
                            })),
                            d = u.length;
                        for (e = 0; e < d; ++e)
                            if (!(i = u[e]).model.skip) {
                                if (n = e > 0 ? u[e - 1] : null, (r = e < d - 1 ? u[e + 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 (e = 0; e < d - 1; ++e) i = u[e], r = u[e + 1], i.model.skip || r.model.skip || (B.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 (e = 0; e < d; ++e)(i = u[e]).model.skip || (n = e > 0 ? u[e - 1] : null, r = e < d - 1 ? u[e + 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))
                    }, B.nextItem = function(t, e, n) {
                        return n ? e >= t.length - 1 ? t[0] : t[e + 1] : e >= t.length - 1 ? t[t.length - 1] : t[e + 1]
                    }, B.previousItem = function(t, e, n) {
                        return n ? e <= 0 ? t[t.length - 1] : t[e - 1] : e <= 0 ? t[0] : t[e - 1]
                    }, B.niceNum = function(t, e) {
                        var n = Math.floor(B.log10(t)),
                            i = t / Math.pow(10, n);
                        return (e ? 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)
                    }, B.requestAnimFrame = "undefined" == typeof window ? function(t) {
                        t()
                    } : window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function(t) {
                        return window.setTimeout(t, 1e3 / 60)
                    }, B.getRelativePosition = function(t, e) {
                        var n, i, r = t.originalEvent || t,
                            o = t.target || t.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(B.getStyle(o, "padding-left")),
                            c = parseFloat(B.getStyle(o, "padding-top")),
                            u = parseFloat(B.getStyle(o, "padding-right")),
                            d = parseFloat(B.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 / e.currentDevicePixelRatio),
                            y: i = Math.round((i - a.top - c) / f * o.height / e.currentDevicePixelRatio)
                        }
                    }, B.getConstraintWidth = function(t) {
                        return n(t, "max-width", "clientWidth")
                    }, B.getConstraintHeight = function(t) {
                        return n(t, "max-height", "clientHeight")
                    }, B._calculatePadding = function(t, e, n) {
                        return (e = B.getStyle(t, e)).indexOf("%") > -1 ? n * parseInt(e, 10) / 100 : parseInt(e, 10)
                    }, B._getParentNode = function(t) {
                        var e = t.parentNode;
                        return e && "[object ShadowRoot]" === e.toString() && (e = e.host), e
                    }, B.getMaximumWidth = function(t) {
                        var e = B._getParentNode(t);
                        if (!e) return t.clientWidth;
                        var n = e.clientWidth,
                            i = n - B._calculatePadding(e, "padding-left", n) - B._calculatePadding(e, "padding-right", n),
                            r = B.getConstraintWidth(t);
                        return isNaN(r) ? i : Math.min(i, r)
                    }, B.getMaximumHeight = function(t) {
                        var e = B._getParentNode(t);
                        if (!e) return t.clientHeight;
                        var n = e.clientHeight,
                            i = n - B._calculatePadding(e, "padding-top", n) - B._calculatePadding(e, "padding-bottom", n),
                            r = B.getConstraintHeight(t);
                        return isNaN(r) ? i : Math.min(i, r)
                    }, B.getStyle = function(t, e) {
                        return t.currentStyle ? t.currentStyle[e] : document.defaultView.getComputedStyle(t, null).getPropertyValue(e)
                    }, B.retinaScale = function(t, e) {
                        var n = t.currentDevicePixelRatio = e || "undefined" != typeof window && window.devicePixelRatio || 1;
                        if (1 !== n) {
                            var i = t.canvas,
                                r = t.height,
                                o = t.width;
                            i.height = r * n, i.width = o * n, t.ctx.scale(n, n), i.style.height || i.style.width || (i.style.height = r + "px", i.style.width = o + "px")
                        }
                    }, B.fontString = function(t, e, n) {
                        return e + " " + t + "px " + n
                    }, B.longestText = function(t, e, n, i) {
                        var r = (i = i || {}).data = i.data || {},
                            o = i.garbageCollect = i.garbageCollect || [];
                        i.font !== e && (r = i.data = {}, o = i.garbageCollect = [], i.font = e), t.font = e;
                        var a, s, l, c, u, d = 0,
                            h = n.length;
                        for (a = 0; a < h; a++)
                            if (null != (c = n[a]) && !0 !== B.isArray(c)) d = B.measureText(t, r, o, d, c);
                            else if (B.isArray(c))
                            for (s = 0, l = c.length; s < l; s++) null == (u = c[s]) || B.isArray(u) || (d = B.measureText(t, 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
                    }, B.measureText = function(t, e, n, i, r) {
                        var o = e[r];
                        return o || (o = e[r] = t.measureText(r).width, n.push(r)), o > i && (i = o), i
                    }, B.numberOfLabelLines = function(t) {
                        var e = 1;
                        return B.each(t, (function(t) {
                            B.isArray(t) && t.length > e && (e = t.length)
                        })), e
                    }, B.color = x ? function(t) {
                        return t instanceof CanvasGradient && (t = R.global.defaultColor), x(t)
                    } : function(t) {
                        return console.error("Color.js not found!"), t
                    }, B.getHoverColor = function(t) {
                        return t instanceof CanvasPattern || t instanceof CanvasGradient ? t : B.color(t).saturate(.5).darken(.1).rgbString()
                    }
                }(), Ge._adapters = Ke, Ge.Animation = Q, Ge.animationService = K, Ge.controllers = Gt, Ge.DatasetController = nt, Ge.defaults = R, Ge.Element = G, Ge.elements = bt, Ge.Interaction = ee, Ge.layouts = de, Ge.platform = Te, Ge.plugins = Ae, Ge.Scale = hn, Ge.scaleService = De, Ge.Ticks = Je, Ge.Tooltip = $e, Ge.helpers.each(ii, (function(t, e) {
                    Ge.scaleService.registerScaleType(e, t, t._defaults)
                })), Ci) Ci.hasOwnProperty(Di) && Ge.plugins.register(Ci[Di]);
        Ge.platform.initialize();
        var Ei = Ge;
        return "undefined" != typeof window && (window.Chart = Ge), Ge.Chart = Ge, Ge.Legend = Ci.legend._element, Ge.Title = Ci.title._element, Ge.pluginService = Ge.plugins, Ge.PluginBase = Ge.Element.extend({}), Ge.canvasHelpers = Ge.helpers.canvas, Ge.layoutService = Ge.layouts, Ge.LinearScaleBase = vn, Ge.helpers.each(["Bar", "Bubble", "Doughnut", "Line", "PolarArea", "Radar", "Scatter"], (function(t) {
            Ge[t] = function(e, n) {
                return new Ge(e, Ge.helpers.merge(n || {}, {
                    type: t.charAt(0).toLowerCase() + t.slice(1)
                }))
            }
        })), Ei
    })),
    function(t) {
        "function" == typeof define && define.amd ? define([], t) : "object" == typeof exports ? module.exports = t() : window.noUiSlider = t()
    }((function() {
        "use strict";
        var t = "14.6.3";

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        function v(t, e, n) {
            var i;
            this.xPct = [], this.xVal = [], this.xSteps = [n || !1], this.xNumSteps = [!1], this.xHighestCompleteStep = [], this.snap = e;
            var r = [];
            for (i in t) t.hasOwnProperty(i) && r.push([t[i], i]);
            for (r.length && "object" == typeof r[0][0] ? r.sort((function(t, e) {
                    return t[0][0] - e[0][0]
                })) : r.sort((function(t, e) {
                    return t[0] - e[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(t) {
            var e, n = [];
            for (e = 0; e < this.xNumSteps.length - 1; e++) {
                var i = this.xNumSteps[e];
                if (i && t / i % 1 != 0) throw new Error("noUiSlider (14.6.3): 'limit', 'margin' and 'padding' of " + this.xPct[e] + "% range must be divisible by step.");
                n[e] = f(this.xVal, t, e)
            }
            return n
        }, v.prototype.getAbsoluteDistance = function(t, e, n) {
            var i, r = 0;
            if (t < this.xPct[this.xPct.length - 1])
                for (; t > this.xPct[r + 1];) r++;
            else t === this.xPct[this.xPct.length - 1] && (r = this.xPct.length - 2);
            n || t !== this.xPct[r + 1] || r++;
            var o = 1,
                a = e[r],
                s = 0,
                l = 0,
                c = 0,
                u = 0;
            for (i = n ? (t - this.xPct[r]) / (this.xPct[r + 1] - this.xPct[r]) : (this.xPct[r + 1] - t) / (this.xPct[r + 1] - this.xPct[r]); 0 < a;) s = this.xPct[r + 1 + u] - this.xPct[r + u], 100 < e[r + u] * o + 100 - 100 * i ? (l = s * i, o = (a - 100 * i) / e[r + u], i = 1) : (l = e[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 = e[r + u] * o;
            return t + c
        }, v.prototype.toStepping = function(t) {
            return function(t, e, n) {
                if (n >= t.slice(-1)[0]) return 100;
                var i, r, o = p(n, t),
                    a = t[o - 1],
                    s = t[o],
                    l = e[o - 1],
                    c = e[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, t)
        }, v.prototype.fromStepping = function(t) {
            return function(t, e, n) {
                if (100 <= n) return t.slice(-1)[0];
                var i, r = p(n, e),
                    o = t[r - 1],
                    a = t[r],
                    s = e[r - 1];
                return i = [o, a], (n - s) * h(s, e[r]) * (i[1] - i[0]) / 100 + i[0]
            }(this.xVal, this.xPct, t)
        }, v.prototype.getStep = function(t) {
            return function(t, e, n, i) {
                if (100 === i) return i;
                var r, o, a = p(i, t),
                    s = t[a - 1],
                    l = t[a];
                return n ? (l - s) / 2 < i - s ? l : s : e[a - 1] ? t[a - 1] + (r = i - t[a - 1], o = e[a - 1], Math.round(r / o) * o) : i
            }(this.xPct, this.xSteps, this.snap, t)
        }, v.prototype.getDefaultStep = function(t, e, n) {
            var i = p(t, this.xPct);
            return (100 === t || e && t === this.xPct[i - 1]) && (i = Math.max(i - 1, 1)), (this.xVal[i] - this.xVal[i - 1]) / n
        }, v.prototype.getNearbySteps = function(t) {
            var e = p(t, this.xPct);
            return {
                stepBefore: {
                    startValue: this.xVal[e - 2],
                    step: this.xNumSteps[e - 2],
                    highestStep: this.xHighestCompleteStep[e - 2]
                },
                thisStep: {
                    startValue: this.xVal[e - 1],
                    step: this.xNumSteps[e - 1],
                    highestStep: this.xHighestCompleteStep[e - 1]
                },
                stepAfter: {
                    startValue: this.xVal[e],
                    step: this.xNumSteps[e],
                    highestStep: this.xHighestCompleteStep[e]
                }
            }
        }, v.prototype.countStepDecimals = function() {
            var t = this.xNumSteps.map(l);
            return Math.max.apply(null, t)
        }, v.prototype.convert = function(t) {
            return this.getStep(this.toStepping(t))
        };
        var y = {
                to: function(t) {
                    return void 0 !== t && t.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"
            },
            w = ".__tooltips",
            x = ".__aria";

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        function $(t, e) {
            _(t.ariaFormat = e)
        }

        function z(t, e) {
            _(t.format = e)
        }

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

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

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

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

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

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

                    function N(t, e) {
                        var i = L(t, n.cssClasses.origin),
                            r = L(i, n.cssClasses.handle);
                        return L(r, n.cssClasses.touchArea), r.setAttribute("data-handle", e), n.keyboardSupport && (r.setAttribute("tabindex", "0"), r.addEventListener("keydown", (function(t) {
                            return function(t, e) {
                                if (j() || $(e)) 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 = t.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 (t.preventDefault(), h || d) {
                                    var p = n.keyboardPageMultiplier,
                                        g = d ? 0 : 1,
                                        m = ht(e)[g];
                                    if (null === m) return !1;
                                    !1 === m && (m = C.getDefaultStep(T[e], d, n.keyboardDefaultStep)), (u || c) && (m *= p), m = Math.max(m, 1e-7), m *= d ? -1 : 1, s = k[e] + m
                                } else s = f ? n.spectrum.xVal[n.spectrum.xVal.length - 1] : n.spectrum.xVal[0];
                                return st(e, C.toStepping(s), !0, !0), et("slide", e), et("update", e), et("change", e), et("set", e), !1
                            }(t, e)
                        }))), r.setAttribute("role", "slider"), r.setAttribute("aria-orientation", n.ort ? "vertical" : "horizontal"), 0 === e ? c(r, n.cssClasses.handleLower) : e === n.handles - 1 && c(r, n.cssClasses.handleUpper), i
                    }

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

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

                    function j() {
                        return S.hasAttribute("disabled")
                    }

                    function $(t) {
                        return h[t].hasAttribute("disabled")
                    }

                    function z() {
                        g && (tt("update" + w), g.forEach((function(t) {
                            t && e(t)
                        })), g = null)
                    }

                    function H() {
                        z(), g = h.map(R), Z("update" + w, (function(t, e, i) {
                            if (g[e]) {
                                var r = t[e];
                                !0 !== n.tooltips[e] && (r = n.tooltips[e].to(i[e])), g[e].innerHTML = r
                            }
                        }))
                    }

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

                    function q() {
                        p && (e(p), p = null)
                    }

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

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

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

                    function G(t) {
                        var e, i, r, o, s, c, u = 100 * (t - (e = l, i = n.ort, r = e.getBoundingClientRect(), s = (o = e.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)) / V();
                        return u = a(u), n.dir ? 100 - u : u
                    }

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

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

                    function K(t, e) {
                        e.handle && (u(e.handle, n.cssClasses.active), D -= 1), e.listeners.forEach((function(t) {
                            O.removeEventListener(t[0], t[1])
                        })), 0 === D && (u(S, n.cssClasses.drag), at(), t.cursor && (I.style.cursor = "", I.removeEventListener("selectstart", i))), e.handleNumbers.forEach((function(t) {
                            et("change", t), et("set", t), et("end", t)
                        }))
                    }

                    function J(t, e) {
                        if (e.handleNumbers.some($)) return !1;
                        var r;
                        1 === e.handleNumbers.length && (r = h[e.handleNumbers[0]].children[0], D += 1, c(r, n.cssClasses.active)), t.stopPropagation();
                        var o = [],
                            a = Y(b.move, O, Q, {
                                target: t.target,
                                handle: r,
                                listeners: o,
                                startCalcPoint: t.calcPoint,
                                baseSize: V(),
                                pageOffset: t.pageOffset,
                                handleNumbers: e.handleNumbers,
                                buttonsProperty: t.buttons,
                                locations: T.slice()
                            }),
                            s = Y(b.end, O, K, {
                                target: t.target,
                                handle: r,
                                listeners: o,
                                doNotReject: !0,
                                handleNumbers: e.handleNumbers
                            }),
                            l = Y("mouseout", O, X, {
                                target: t.target,
                                handle: r,
                                listeners: o,
                                doNotReject: !0,
                                handleNumbers: e.handleNumbers
                            });
                        o.push.apply(o, a.concat(s, l)), t.cursor && (I.style.cursor = getComputedStyle(t.target).cursor, 1 < h.length && c(S, n.cssClasses.drag), I.addEventListener("selectstart", i, !1)), e.handleNumbers.forEach((function(t) {
                            et("start", t)
                        }))
                    }

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

                    function tt(t) {
                        var e = t && t.split(".")[0],
                            n = e ? t.substring(e.length) : t;
                        Object.keys(E).forEach((function(t) {
                            var i, r = t.split(".")[0],
                                o = t.substring(r.length);
                            e && e !== r || n && n !== o || ((i = o) !== x && i !== w || n === o) && delete E[t]
                        }))
                    }

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

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

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

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

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

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

                    function st(t, e, i, r, o) {
                        return o || (e = nt(T, t, e, i, r, !1)), !1 !== e && (function(t, e) {
                            T[t] = e, k[t] = C.fromStepping(e);
                            var i = "translate(" + it(10 * (ot(e, 0) - P) + "%", "0") + ")";
                            h[t].style[n.transformRule] = i, lt(t), lt(t + 1)
                        }(t, e), !0)
                    }

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

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

                    function ut(t, e, i) {
                        var r = s(t),
                            a = void 0 === T[0];
                        e = void 0 === e || !!e, n.animate && !a && o(S, n.cssClasses.tap, n.animationDuration), A.forEach((function(t) {
                            st(t, ct(r[t], t), !0, !1, i)
                        }));
                        for (var l = 1 === A.length ? 0 : 1; l < A.length; ++l) A.forEach((function(t) {
                            st(t, T[t], !0, !0, i)
                        }));
                        at(), A.forEach((function(t) {
                            et("update", t), null !== r[t] && e && et("set", t)
                        }))
                    }

                    function dt() {
                        var t = k.map(n.format.to);
                        return 1 === t.length ? t[0] : t
                    }

                    function ht(t) {
                        var e = T[t],
                            i = C.getNearbySteps(e),
                            r = k[t],
                            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 === e ? o = null : 0 === e && (a = null);
                        var s = C.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 = S, 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 = L(v, n.cssClasses.base),
                        function(t, e) {
                            var i = L(e, n.cssClasses.connects);
                            h = [], (f = []).push(F(i, t[0]));
                            for (var r = 0; r < n.handles; r++) h.push(N(e, r)), A[r] = r, f.push(F(i, t[r + 1]))
                        }(n.connect, l), (y = n.events).fixed || h.forEach((function(t, e) {
                            Y(b.start, t.children[0], J, {
                                handleNumbers: [e]
                            })
                        })), y.tap && Y(b.start, l, (function(t) {
                            t.stopPropagation();
                            var e, i, r, a = G(t.calcPoint),
                                s = (e = a, r = !(i = 100), h.forEach((function(t, n) {
                                    if (!$(n)) {
                                        var o = T[n],
                                            a = Math.abs(o - e);
                                        (a < i || a <= i && o < e || 100 === a && 100 === i) && (r = n, i = a)
                                    }
                                })), r);
                            if (!1 === s) return !1;
                            n.events.snap || o(S, n.cssClasses.tap, n.animationDuration), st(s, a, !0, !0), at(), et("slide", s, !0), et("update", s, !0), et("change", s, !0), et("set", s, !0), n.events.snap && J(t, {
                                handleNumbers: [s]
                            })
                        }), {}), y.hover && Y(b.move, l, (function(t) {
                            var e = G(t.calcPoint),
                                n = C.getStep(e),
                                i = C.fromStepping(n);
                            Object.keys(E).forEach((function(t) {
                                "hover" === t.split(".")[0] && E[t].forEach((function(t) {
                                    t.call(m, i)
                                }))
                            }))
                        }), {
                            hover: !0
                        }), y.drag && f.forEach((function(t, e) {
                            if (!1 !== t && 0 !== e && e !== f.length - 1) {
                                var i = h[e - 1],
                                    r = h[e],
                                    o = [t];
                                c(t, n.cssClasses.draggable), y.fixed && (o.push(i.children[0]), o.push(r.children[0])), o.forEach((function(t) {
                                    Y(b.start, t, J, {
                                        handles: [i, r],
                                        handleNumbers: [e - 1, e]
                                    })
                                }))
                            }
                        })), ut(n.start), n.pips && W(n.pips), n.tooltips && H(), tt("update" + x), Z("update" + x, (function(t, e, i, r, o) {
                            A.forEach((function(t) {
                                var e = h[t],
                                    r = nt(T, t, 0, !0, !0, !0),
                                    a = nt(T, t, 100, !0, !0, !0),
                                    s = o[t],
                                    l = n.ariaFormat.to(i[t]);
                                r = C.fromStepping(r).toFixed(1), a = C.fromStepping(a).toFixed(1), s = C.fromStepping(s).toFixed(1), e.children[0].setAttribute("aria-valuemin", r), e.children[0].setAttribute("aria-valuemax", a), e.children[0].setAttribute("aria-valuenow", s), e.children[0].setAttribute("aria-valuetext", l)
                            }))
                        })), m = {
                            destroy: function() {
                                for (var t in tt(x), tt(w), n.cssClasses) n.cssClasses.hasOwnProperty(t) && u(S, n.cssClasses[t]);
                                for (; S.firstChild;) S.removeChild(S.firstChild);
                                delete S.noUiSlider
                            },
                            steps: function() {
                                return A.map(ht)
                            },
                            on: Z,
                            off: tt,
                            get: dt,
                            set: ut,
                            setHandle: function(t, e, n, i) {
                                if (!(0 <= (t = Number(t)) && t < A.length)) throw new Error("noUiSlider (14.6.3): invalid handle number, got: " + t);
                                st(t, ct(e, t), !0, !0, i), et("update", t), n && et("set", t)
                            },
                            reset: function(t) {
                                ut(n.start, t)
                            },
                            __moveHandles: function(t, e, n) {
                                rt(t, e, T, n)
                            },
                            options: r,
                            updateOptions: function(t, e) {
                                var i = dt(),
                                    o = ["margin", "limit", "padding", "range", "animate", "snap", "step", "format", "pips", "tooltips"];
                                o.forEach((function(e) {
                                    void 0 !== t[e] && (r[e] = t[e])
                                }));
                                var a = U(r);
                                o.forEach((function(e) {
                                    void 0 !== t[e] && (n[e] = a[e])
                                })), C = a.spectrum, n.margin = a.margin, n.limit = a.limit, n.padding = a.padding, n.pips ? W(n.pips) : q(), n.tooltips ? H() : z(), T = [], ut(t.start || i, e)
                            },
                            target: S,
                            removePips: q,
                            removeTooltips: z,
                            getTooltips: function() {
                                return g
                            },
                            getOrigins: function() {
                                return h
                            },
                            pips: W
                        }
                }(t, U(n), n);
                return t.noUiSlider = r
            }
        }
    })),
    function(t) {
        "function" == typeof define && define.amd ? define(["jquery"], (function(e) {
            return t(e, window, document)
        })) : "object" == typeof exports ? module.exports = function(e, n) {
            return e || (e = window), n || (n = "undefined" != typeof window ? require("jquery") : require("jquery")(e)), t(n, e, e.document)
        } : t(jQuery, window, document)
    }((function(t, e, n, i) {
        function r(e) {
            var n, i, o = {};
            t.each(e, (function(t) {
                (n = t.match(/^([^A-Z]+?)([A-Z])/)) && -1 !== "a aa ai ao as b fn i m o s ".indexOf(n[1] + " ") && (i = t.replace(n[0], n[2].toLowerCase()), o[i] = t, "o" === n[1] && r(e[t]))
            })), e._hungarianMap = o
        }

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

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

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

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

        function c(n) {
            if (!Vt.__browser) {
                var i = {};
                Vt.__browser = i;
                var r = t("<div/>").css({
                        position: "fixed",
                        top: 0,
                        left: -1 * t(e).scrollLeft(),
                        height: 1,
                        width: 1,
                        overflow: "hidden"
                    }).append(t("<div/>").css({
                        position: "absolute",
                        top: 1,
                        left: 1,
                        width: 100,
                        overflow: "scroll"
                    }).append(t("<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()
            }
            t.extend(n.oBrowser, Vt.__browser), n.oScroll.iBarWidth = Vt.__browser.barWidth
        }

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

        function d(e, i) {
            var r = Vt.defaults.column,
                o = e.aoColumns.length;
            r = t.extend({}, Vt.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
            });
            e.aoColumns.push(r), (r = e.aoPreSearchCols)[o] = t.extend({}, Vt.models.oSearch, r[o]), h(e, o, t(i).data())
        }

        function h(e, n, r) {
            n = e.aoColumns[n];
            var a = e.oClasses,
                s = t(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(Vt.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), t.extend(n, r), Ot(n, r, "sWidth", "sWidthOrig"), r.iDataSort !== i && (n.aDataSort = [r.iDataSort]), Ot(n, r, "aDataSort"));
            var u = n.mData,
                d = k(u),
                h = n.mRender ? k(n.mRender) : null;
            r = function(t) {
                return "string" == typeof t && -1 !== t.indexOf("@")
            };
            n._bAttrSrc = t.isPlainObject(u) && (r(u.sort) || r(u.type) || r(u.filter)), n._setter = null, n.fnGetData = function(t, e, n) {
                var r = d(t, e, i, n);
                return h && e ? h(r, e, t, n) : r
            }, n.fnSetData = function(t, e, n) {
                return T(u)(t, e, n)
            }, "number" != typeof u && (e._rowReadObject = !0), e.oFeatures.bSort || (n.bSortable = !1, s.addClass(a.sSortableNone)), e = -1 !== t.inArray("asc", n.asSorting), r = -1 !== t.inArray("desc", n.asSorting), n.bSortable && (e || r) ? e && !r ? (n.sSortingClass = a.sSortableAsc, n.sSortingClassJUI = a.sSortJUIAscAllowed) : !e && 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(t) {
            if (!1 !== t.oFeatures.bAutoWidth) {
                var e = t.aoColumns;
                gt(t);
                for (var n = 0, i = e.length; n < i; n++) e[n].nTh.style.width = e[n].sWidth
            }("" !== (e = t.oScroll).sY || "" !== e.sX) && ft(t), Nt(t, null, "column-sizing", [t])
        }

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

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

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

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

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

        function b(e, n, r, o) {
            var a, s, l, c, u, h, f = e.aoColumns;
            if (n)
                for (a = n.length - 1; 0 <= a; a--) {
                    var p = (h = n[a]).targets !== i ? h.targets : h.aTargets;
                    for (Array.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(e);
                            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] || t(f[c].nTh).hasClass(p[s])) && o(c, h)
                }
            if (r)
                for (a = 0, e = r.length; a < e; a++) o(a, r[a])
        }

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

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

        function _(t, e, n, r) {
            var o = t.iDraw,
                a = t.aoColumns[n],
                s = t.aoData[e]._aData,
                l = a.sDefaultContent,
                c = a.fnGetData(s, r, {
                    settings: t,
                    row: e,
                    col: n
                });
            if (c === i) return t.iDrawError != o && null === l && (Mt(t, 0, "Requested unknown parameter " + ("function" == typeof a.mData ? "{function}" : "'" + a.mData + "'") + " for row " + e + ", column " + n, 4), t.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 S(t, e, n, i) {
            t.aoColumns[n].fnSetData(t.aoData[e]._aData, i, {
                settings: t,
                row: e,
                col: n
            })
        }

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

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

        function T(e) {
            if (t.isPlainObject(e)) return T(e._);
            if (null === e) return function() {};
            if ("function" == typeof e) return function(t, n, i) {
                e(t, "set", n, i)
            };
            if ("string" == typeof e && (-1 !== e.indexOf(".") || -1 !== e.indexOf("[") || -1 !== e.indexOf("("))) {
                var n = function(t, e, r) {
                    var o;
                    o = (r = C(r))[r.length - 1];
                    for (var a, s, l = 0, c = r.length - 1; l < c; l++) {
                        if ("__proto__" === r[l] || "constructor" === r[l]) throw Error("Cannot set prototype values");
                        if (a = r[l].match(de), s = r[l].match(he), a) {
                            if (r[l] = r[l].replace(de, ""), t[r[l]] = [], (o = r.slice()).splice(0, l + 1), a = o.join("."), Array.isArray(e))
                                for (s = 0, c = e.length; s < c; s++) n(o = {}, e[s], a), t[r[l]].push(o);
                            else t[r[l]] = e;
                            return
                        }
                        s && (r[l] = r[l].replace(he, ""), t = t[r[l]](e)), null !== t[r[l]] && t[r[l]] !== i || (t[r[l]] = {}), t = t[r[l]]
                    }
                    o.match(he) ? t[o.replace(he, "")](e) : t[o.replace(de, "")] = e
                };
                return function(t, i) {
                    return n(t, i, e)
                }
            }
            return function(t, n) {
                t[e] = n
            }
        }

        function A(t) {
            return re(t.aoData, "_aData")
        }

        function D(t) {
            t.aoData.length = 0, t.aiDisplayMaster.length = 0, t.aiDisplay.length = 0, t.aIds = {}
        }

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

        function M(t, e, n, r) {
            var o, a = t.aoData[e],
                s = function(n, i) {
                    for (; n.childNodes.length;) n.removeChild(n.firstChild);
                    n.innerHTML = _(t, e, 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(t, a, r, r === i ? i : a._aData).data;
            if (a._aSortData = null, a._aFilterData = null, s = t.aoColumns, r !== i) s[r].sType = null;
            else {
                for (n = 0, o = s.length; n < o; n++) s[n].sType = null;
                P(t, a)
            }
        }

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

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

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

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

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

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

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

        function j(e) {
            var n = e.oClasses,
                i = t(e.nTable),
                r = (i = t("<div/>").insertBefore(i), e.oFeatures),
                o = t("<div/>", {
                    id: e.sTableId + "_wrapper",
                    class: n.sWrapper + (e.nTFoot ? "" : " " + n.sNoFooter)
                });
            e.nHolding = i[0], e.nTableWrapper = o[0], e.nTableReinsertBefore = e.nTable.nextSibling;
            for (var a, s, l, c, u, d, h = e.sDom.split(""), f = 0; f < h.length; f++) {
                if (a = null, "<" == (s = h[f])) {
                    if (l = t("<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 = t(l)
                } else if (">" == s) o = o.parent();
                else if ("l" == s && r.bPaginate && r.bLengthChange) a = st(e);
                else if ("f" == s && r.bFilter) a = V(e);
                else if ("r" == s && r.bProcessing) a = ut(e);
                else if ("t" == s) a = ht(e);
                else if ("i" == s && r.bInfo) a = et(e);
                else if ("p" == s && r.bPaginate) a = lt(e);
                else if (0 !== Vt.ext.feature.length)
                    for (d = 0, c = (l = Vt.ext.feature).length; d < c; d++)
                        if (s == l[d].cFeature) {
                            a = l[d].fnInit(e);
                            break
                        }
                a && ((l = e.aanFeatures)[s] || (l[s] = []), l[s].push(a), o.append(a))
            }
            i.replaceWith(o), e.nHolding = null
        }

        function $(e, n) {
            var i, r, o, a, s, l, c, u, d, h, f = t(n).children("tr");
            for (e.splice(0, e.length), o = 0, l = f.length; o < l; o++) e.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 = e[o]; s[a];) a++;
                        for (c = a, h = 1 === u, s = 0; s < u; s++)
                            for (a = 0; a < d; a++) e[o + a][c + s] = {
                                cell: r,
                                unique: h
                            }, e[o + a].nTr = i
                    }
                    r = r.nextSibling
                }
        }

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

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

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

        function q(e) {
            var n, i, r, o, a = e.aoColumns,
                s = a.length,
                l = e.oFeatures,
                c = e.oPreviousSearch,
                u = e.aoPreSearchCols,
                d = [],
                h = wt(e);
            n = e._iDisplayStart, i = !1 !== l.bPaginate ? e._iDisplayLength : -1;
            var f = function(t, e) {
                d.push({
                    name: t,
                    value: e
                })
            };
            f("sEcho", e.iDraw), f("iColumns", s), f("sColumns", re(a, "sName").join(",")), f("iDisplayStart", n), f("iDisplayLength", i);
            var p = {
                draw: e.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 && (t.each(h, (function(t, e) {
                p.order.push({
                    column: e.col,
                    dir: e.dir
                }), f("iSortCol_" + t, e.col), f("sSortDir_" + t, e.dir)
            })), f("iSortingCols", h.length)), null === (a = Vt.ext.legacy.ajax) ? e.sAjaxSource ? d : p : a ? d : p
        }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        function rt(t) {
            var e, n, i, r = t.iInitDisplayStart,
                o = t.aoColumns;
            n = t.oFeatures;
            var a = t.bDeferLoading;
            if (t.bInitialised) {
                for (j(t), L(t), N(t, t.aoHeader), N(t, t.aoFooter), dt(t, !0), n.bAutoWidth && gt(t), e = 0, n = o.length; e < n; e++)(i = o[e]).sWidth && (i.nTh.style.width = bt(i.sWidth));
                Nt(t, null, "preInit", [t]), R(t), ("ssp" != (o = jt(t)) || a) && ("ajax" == o ? H(t, [], (function(n) {
                    var i = U(t, n);
                    for (e = 0; e < i.length; e++) w(t, i[e]);
                    t.iInitDisplayStart = r, R(t), dt(t, !1), ot(t, n)
                })) : (dt(t, !1), ot(t)))
            } else setTimeout((function() {
                rt(t)
            }), 200)
        }

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

        function at(t, e) {
            var n = parseInt(e, 10);
            t._iDisplayLength = n, Ft(t), Nt(t, null, "length", [t, n])
        }

        function st(e) {
            for (var n = e.oClasses, i = e.sTableId, r = e.aLengthMenu, o = (a = Array.isArray(r[0])) ? r[0] : r, a = (r = a ? r[1] : r, t("<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] ? e.fnFormatNumber(r[s]) : r[s], o[s]);
            var c = t("<div><label/></div>").addClass(n.sLength);
            return e.aanFeatures.l || (c[0].id = i + "_length"), c.children().append(e.oLanguage.sLengthMenu.replace("_MENU_", a[0].outerHTML)), t("select", c).val(e._iDisplayLength).on("change.DT", (function() {
                at(e, t(this).val()), F(e)
            })), t(e.nTable).on("length.dt.DT", (function(n, i, r) {
                e === i && t("select", c).val(r)
            })), c[0]
        }

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

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

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

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

        function ht(e) {
            (d = t(e.nTable)).attr("role", "grid");
            var n = e.oScroll;
            if ("" === n.sX && "" === n.sY) return e.nTable;
            var i = n.sX,
                r = n.sY,
                o = e.oClasses,
                a = d.children("caption"),
                s = a.length ? a[0]._captionSide : null,
                l = t(d[0].cloneNode(!1)),
                c = t(d[0].cloneNode(!1)),
                u = d.children("tfoot");
            u.length || (u = null), l = t("<div/>", {
                class: o.sScrollWrapper
            }).append(t("<div/>", {
                class: o.sScrollHead
            }).css({
                overflow: "hidden",
                position: "relative",
                border: 0,
                width: i ? i ? bt(i) : null : "100%"
            }).append(t("<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(t("<div/>", {
                class: o.sScrollBody
            }).css({
                position: "relative",
                overflow: "auto",
                width: i ? bt(i) : null
            }).append(d)), u && l.append(t("<div/>", {
                class: o.sScrollFoot
            }).css({
                overflow: "hidden",
                border: 0,
                width: i ? i ? bt(i) : null : "100%"
            }).append(t("<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 && t(o).on("scroll.DT", (function() {
                var t = this.scrollLeft;
                h.scrollLeft = t, u && (f.scrollLeft = t)
            })), t(o).css("max-height", r), n.bCollapse || t(o).css("height", r), e.nScrollHead = h, e.nScrollBody = o, e.nScrollFoot = f, e.aoDrawCallback.push({
                fn: ft,
                sName: "scrolling"
            }), l[0]
        }

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

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

        function gt(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 = t("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 = mt(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 = bt(h.eq(i).width()));
            else {
                (u = t(o).clone().css("visibility", "hidden").removeAttr("id")).find("tbody tr").remove();
                var _ = t("<tr/>").appendTo(u.find("tbody"));
                for (u.find("thead, tfoot").remove(), u.append(t(n.nTHead).clone()).append(t(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 ? bt(r.sWidthOrig) : "", r.sWidthOrig && l && t(h[i]).append(t("<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]], t(vt(n, b)).clone(!1).append(r.sContentPadding).appendTo(_);
                for (t("[name]", u).removeAttr("name"), r = t("<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 = t(h[i])).outerWidth() - y.width(), s += y = w.bBounding ? Math.ceil(h[i].getBoundingClientRect().width) : y.outerWidth(), a[d[i]].sWidth = bt(y - c);
                o.style.width = bt(s), r.remove()
            }
            g && (o.style.width = bt(g)), !g && !l || n._reszEvt || (o = function() {
                t(e).on("resize.DT-" + n.sInstance, ve((function() {
                    f(n)
                })))
            }, x ? setTimeout(o, 1e3) : o(), n._reszEvt = !0)
        }

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

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

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

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

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

        function xt(t) {
            var e, n, i, r, o = [],
                a = Vt.ext.type.order,
                s = t.aoData,
                l = 0,
                c = t.aiDisplayMaster;
            for (y(t), e = 0, n = (r = wt(t)).length; e < n; e++)(i = r[e]).formatter && l++, Tt(t, i.col);
            if ("ssp" != jt(t) && 0 !== r.length) {
                for (e = 0, n = c.length; e < n; e++) o[c[e]] = e;
                l === r.length ? c.sort((function(t, e) {
                    var n, i, a, l, c = r.length,
                        u = s[t]._aSortData,
                        d = s[e]._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[t]) < (i = o[e]) ? -1 : n > i ? 1 : 0
                })) : c.sort((function(t, e) {
                    var n, i, l, c, u = r.length,
                        d = s[t]._aSortData,
                        h = s[e]._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[t]) < (i = o[e]) ? -1 : n > i ? 1 : 0
                }))
            }
            t.bSorted = !0
        }

        function _t(t) {
            for (var e, n, i = t.aoColumns, r = wt(t), o = (t = t.oLanguage.oAria, 0), a = i.length; o < a; o++) {
                var s = (n = i[o]).asSorting;
                e = 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], e += "asc" === n ? t.sSortAscending : t.sSortDescending), l.setAttribute("aria-label", e)
            }
        }

        function St(e, n, r, o) {
            var a = e.aaSorting,
                s = e.aoColumns[n].asSorting,
                l = function(e, n) {
                    var r = e._idx;
                    return r === i && (r = t.inArray(e[1], s)), r + 1 < s.length ? r + 1 : n ? null : 0
                };
            "number" == typeof a[0] && (a = e.aaSorting = [a]), r && e.oFeatures.bSortMulti ? -1 !== (r = t.inArray(n, re(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(e), "function" == typeof o && o(e)
        }

        function Ct(t, e, n, i) {
            var r = t.aoColumns[n];
            Pt(e, {}, (function(e) {
                !1 !== r.bSortable && (t.oFeatures.bProcessing ? (dt(t, !0), setTimeout((function() {
                    St(t, n, e.shiftKey, i), "ssp" !== jt(t) && dt(t, !1)
                }), 0)) : St(t, n, e.shiftKey, i))
            }))
        }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        function zt(e) {
            t.each({
                num: function(t) {
                    return Oe(t, e)
                },
                "num-fmt": function(t) {
                    return Oe(t, e, Jt)
                },
                "html-num": function(t) {
                    return Oe(t, e, Xt)
                },
                "html-num-fmt": function(t) {
                    return Oe(t, e, Xt, Jt)
                }
            }, (function(t, n) {
                Bt.type.order[t + e + "-pre"] = n, t.match(/^html\-/) && (Bt.type.search[t + e] = Bt.type.search.html)
            }))
        }

        function Ht(t) {
            return function() {
                var e = [Et(this[Vt.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));
                return Vt.ext.internal[t].apply(this, e)
            }
        }
        var Bt, qt, Wt, Ut, Vt = function(e) {
                this.$ = function(t, e) {
                    return this.api(!0).$(t, e)
                }, this._ = function(t, e) {
                    return this.api(!0).rows(t, e).data()
                }, this.api = function(t) {
                    return new qt(t ? Et(this[Bt.iApiIndex]) : this)
                }, this.fnAddData = function(e, n) {
                    var r = this.api(!0),
                        o = Array.isArray(e) && (Array.isArray(e[0]) || t.isPlainObject(e[0])) ? r.rows.add(e) : r.row.add(e);
                    return (n === i || n) && r.draw(), o.flatten().toArray()
                }, this.fnAdjustColumnSizing = function(t) {
                    var e = this.api(!0).columns.adjust(),
                        n = e.settings()[0],
                        r = n.oScroll;
                    t === i || t ? e.draw(!1) : ("" !== r.sX || "" !== r.sY) && ft(n)
                }, this.fnClearTable = function(t) {
                    var e = this.api(!0).clear();
                    (t === i || t) && e.draw()
                }, this.fnClose = function(t) {
                    this.api(!0).row(t).child.hide()
                }, this.fnDeleteRow = function(t, e, n) {
                    var r = this.api(!0),
                        o = (t = r.rows(t)).settings()[0],
                        a = o.aoData[t[0][0]];
                    return t.remove(), e && e.call(this, o, a), (n === i || n) && r.draw(), a
                }, this.fnDestroy = function(t) {
                    this.api(!0).destroy(t)
                }, this.fnDraw = function(t) {
                    this.api(!0).draw(t)
                }, this.fnFilter = function(t, e, n, r, o, a) {
                    o = this.api(!0), null === e || e === i ? o.search(t, n, r, a) : o.column(e).search(t, n, r, a), o.draw()
                }, this.fnGetData = function(t, e) {
                    var n = this.api(!0);
                    if (t !== i) {
                        var r = t.nodeName ? t.nodeName.toLowerCase() : "";
                        return e !== i || "td" == r || "th" == r ? n.cell(t, e).data() : n.row(t).data() || null
                    }
                    return n.data().toArray()
                }, this.fnGetNodes = function(t) {
                    var e = this.api(!0);
                    return t !== i ? e.row(t).node() : e.rows().nodes().flatten().toArray()
                }, this.fnGetPosition = function(t) {
                    var e = this.api(!0),
                        n = t.nodeName.toUpperCase();
                    return "TR" == n ? e.row(t).index() : "TD" == n || "TH" == n ? [(t = e.cell(t).index()).row, t.columnVisible, t.column] : null
                }, this.fnIsOpen = function(t) {
                    return this.api(!0).row(t).child.isShown()
                }, this.fnOpen = function(t, e, n) {
                    return this.api(!0).row(t).child(e, n).show().child()[0]
                }, this.fnPageChange = function(t, e) {
                    var n = this.api(!0).page(t);
                    (e === i || e) && n.draw(!1)
                }, this.fnSetColumnVis = function(t, e, n) {
                    t = this.api(!0).column(t).visible(e), (n === i || n) && t.columns.adjust().draw()
                }, this.fnSettings = function() {
                    return Et(this[Bt.iApiIndex])
                }, this.fnSort = function(t) {
                    this.api(!0).order(t).draw()
                }, this.fnSortListener = function(t, e, n) {
                    this.api(!0).order.listener(t, e, n)
                }, this.fnUpdate = function(t, e, n, r, o) {
                    var a = this.api(!0);
                    return n === i || null === n ? a.row(e).data(t) : a.cell(e, n).data(t), (o === i || o) && a.columns.adjust(), (r === i || r) && a.draw(), 0
                }, this.fnVersionCheck = Bt.fnVersionCheck;
                var n = this,
                    r = e === i,
                    u = this.length;
                for (var f in r && (e = {}), this.oApi = this.internal = Bt.internal, Vt.ext.internal) f && (this[f] = Ht(f));
                return this.each((function() {
                    var f, p = {},
                        g = 1 < u ? It(p, e, !0) : e,
                        m = 0,
                        v = (p = this.getAttribute("id"), !1),
                        y = Vt.defaults,
                        _ = t(this);
                    if ("table" != this.nodeName.toLowerCase()) Mt(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, t.extend(g, _.data()), !0);
                        var S = Vt.settings;
                        m = 0;
                        for (f = S.length; m < f; m++) {
                            var C = S[m];
                            if (C.nTable == this || C.nTHead && C.nTHead.parentNode == this || C.nTFoot && C.nTFoot.parentNode == this) {
                                var T = g.bRetrieve !== i ? g.bRetrieve : y.bRetrieve;
                                if (r || T) return C.oInstance;
                                if (g.bDestroy !== i ? g.bDestroy : y.bDestroy) {
                                    C.oInstance.fnDestroy();
                                    break
                                }
                                return void Mt(C, 0, "Cannot reinitialise DataTable", 3)
                            }
                            if (C.sTableId == this.id) {
                                S.splice(m, 1);
                                break
                            }
                        }
                        null !== p && "" !== p || (this.id = p = "DataTables_Table_" + Vt.ext._unique++);
                        var A = t.extend(!0, {}, Vt.models.oSettings, {
                            sDestroyWidth: _[0].style.width,
                            sInstance: p,
                            sTableId: p
                        });
                        A.nTable = this, A.oApi = n.internal, A.oInit = g, S.push(A), A.oInstance = 1 === n.length ? n : _.dataTable(), s(g), a(g.oLanguage), g.aLengthMenu && !g.iDisplayLength && (g.iDisplayLength = Array.isArray(g.aLengthMenu[0]) ? g.aLengthMenu[0][0] : g.aLengthMenu[0]), g = It(t.extend(!0, {}, y), g), Ot(A.oFeatures, g, "bPaginate bLengthChange bFilter bSort bSortMulti bInfo bProcessing bAutoWidth bSortClasses bServerSide bDeferRender".split(" ")), Ot(A, 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"]
                        ]), Ot(A.oScroll, g, [
                            ["sScrollX", "sX"],
                            ["sScrollXInner", "sXInner"],
                            ["sScrollY", "sY"],
                            ["bScrollCollapse", "bCollapse"]
                        ]), Ot(A.oLanguage, g, "fnInfoCallback"), Lt(A, "aoDrawCallback", g.fnDrawCallback, "user"), Lt(A, "aoServerParams", g.fnServerParams, "user"), Lt(A, "aoStateSaveParams", g.fnStateSaveParams, "user"), Lt(A, "aoStateLoadParams", g.fnStateLoadParams, "user"), Lt(A, "aoStateLoaded", g.fnStateLoaded, "user"), Lt(A, "aoRowCallback", g.fnRowCallback, "user"), Lt(A, "aoRowCreatedCallback", g.fnCreatedRow, "user"), Lt(A, "aoHeaderCallback", g.fnHeaderCallback, "user"), Lt(A, "aoFooterCallback", g.fnFooterCallback, "user"), Lt(A, "aoInitComplete", g.fnInitComplete, "user"), Lt(A, "aoPreDrawCallback", g.fnPreDrawCallback, "user"), A.rowIdFn = k(g.rowId), c(A);
                        var D = A.oClasses;
                        t.extend(D, Vt.ext.classes, g.oClasses), _.addClass(D.sTable), A.iInitDisplayStart === i && (A.iInitDisplayStart = g.iDisplayStart, A._iDisplayStart = g.iDisplayStart), null !== g.iDeferLoading && (A.bDeferLoading = !0, p = Array.isArray(g.iDeferLoading), A._iRecordsDisplay = p ? g.iDeferLoading[0] : g.iDeferLoading, A._iRecordsTotal = p ? g.iDeferLoading[1] : g.iDeferLoading);
                        var E = A.oLanguage;
                        t.extend(!0, E, g.oLanguage), E.sUrl && (t.ajax({
                            dataType: "json",
                            url: E.sUrl,
                            success: function(e) {
                                a(e), o(y.oLanguage, e), t.extend(!0, E, e), rt(A)
                            },
                            error: function() {
                                rt(A)
                            }
                        }), v = !0), null === g.asStripeClasses && (A.asStripeClasses = [D.sStripeOdd, D.sStripeEven]);
                        p = A.asStripeClasses;
                        var M = _.children("tbody").find("tr").eq(0);
                        if (-1 !== t.inArray(!0, t.map(p, (function(t) {
                                return M.hasClass(t)
                            }))) && (t("tbody tr", this).removeClass(p.join(" ")), A.asDestroyStripes = p.slice()), p = [], 0 !== (S = this.getElementsByTagName("thead")).length && ($(A.aoHeader, S[0]), p = z(A)), null === g.aoColumns)
                            for (S = [], m = 0, f = p.length; m < f; m++) S.push(null);
                        else S = g.aoColumns;
                        for (m = 0, f = S.length; m < f; m++) d(A, p ? p[m] : null);
                        if (b(A, g.aoColumnDefs, S, (function(t, e) {
                                h(A, t, e)
                            })), M.length) {
                            var O = function(t, e) {
                                return null !== t.getAttribute("data-" + e) ? e : null
                            };
                            t(M[0]).children("th, td").each((function(t, e) {
                                var n = A.aoColumns[t];
                                if (n.mData === t) {
                                    var r = O(e, "sort") || O(e, "order"),
                                        o = O(e, "filter") || O(e, "search");
                                    null === r && null === o || (n.mData = {
                                        _: t + ".display",
                                        sort: null !== r ? t + ".@data-" + r : i,
                                        type: null !== r ? t + ".@data-" + r : i,
                                        filter: null !== o ? t + ".@data-" + o : i
                                    }, h(A, t))
                                }
                            }))
                        }
                        var I = A.oFeatures;
                        p = function() {
                            if (g.aaSorting === i) {
                                var e = A.aaSorting;
                                for (m = 0, f = e.length; m < f; m++) e[m][1] = A.aoColumns[m].asSorting[0]
                            }
                            kt(A), I.bSort && Lt(A, "aoDrawCallback", (function() {
                                if (A.bSorted) {
                                    var e = wt(A),
                                        n = {};
                                    t.each(e, (function(t, e) {
                                        n[e.src] = e.dir
                                    })), Nt(A, null, "order", [A, e, n]), _t(A)
                                }
                            })), Lt(A, "aoDrawCallback", (function() {
                                (A.bSorted || "ssp" === jt(A) || I.bDeferRender) && kt(A)
                            }), "sc");
                            e = _.children("caption").each((function() {
                                this._captionSide = t(this).css("caption-side")
                            }));
                            var n = _.children("thead");
                            if (0 === n.length && (n = t("<thead/>").appendTo(_)), A.nTHead = n[0], 0 === (n = _.children("tbody")).length && (n = t("<tbody/>").appendTo(_)), A.nTBody = n[0], 0 === (n = _.children("tfoot")).length && e.length > 0 && ("" !== A.oScroll.sX || "" !== A.oScroll.sY) && (n = t("<tfoot/>").appendTo(_)), 0 === n.length || 0 === n.children().length ? _.addClass(D.sNoFooter) : n.length > 0 && (A.nTFoot = n[0], $(A.aoFooter, A.nTFoot)), g.aaData)
                                for (m = 0; m < g.aaData.length; m++) w(A, g.aaData[m]);
                            else(A.bDeferLoading || "dom" == jt(A)) && x(A, t(A.nTBody).children("tr"));
                            A.aiDisplay = A.aiDisplayMaster.slice(), A.bInitialised = !0, !1 === v && rt(A)
                        };
                        g.bStateSave ? (I.bStateSave = !0, Lt(A, "aoDrawCallback", At, "state_save"), Dt(A, g, p)) : p()
                    }
                })), n = null, this
            },
            Yt = {},
            Gt = /[\r\n\u2028]/g,
            Xt = /<.*?>/g,
            Qt = /^\d{2,4}[\.\/\-]\d{1,2}[\.\/\-]\d{1,2}([T ]{1}\d{1,2}[:\.]\d{2}([\.:]\d{2})?)?$/,
            Kt = RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\$|\\^|\\-)", "g"),
            Jt = /['\u00A0,$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfkɃΞ]/gi,
            Zt = function(t) {
                return !t || !0 === t || "-" === t
            },
            te = function(t) {
                var e = parseInt(t, 10);
                return !isNaN(e) && isFinite(t) ? e : null
            },
            ee = function(t, e) {
                return Yt[e] || (Yt[e] = RegExp(fe(e), "g")), "string" == typeof t && "." !== e ? t.replace(/\./g, "").replace(Yt[e], ".") : t
            },
            ne = function(t, e, n) {
                var i = "string" == typeof t;
                return !!Zt(t) || (e && i && (t = ee(t, e)), n && i && (t = t.replace(Jt, "")), !isNaN(parseFloat(t)) && isFinite(t))
            },
            ie = function(t, e, n) {
                return !!Zt(t) || ((Zt(t) || "string" == typeof t) && !!ne(t.replace(Xt, ""), e, n) || null)
            },
            re = function(t, e, n) {
                var r = [],
                    o = 0,
                    a = t.length;
                if (n !== i)
                    for (; o < a; o++) t[o] && t[o][e] && r.push(t[o][e][n]);
                else
                    for (; o < a; o++) t[o] && r.push(t[o][e]);
                return r
            },
            oe = function(t, e, n, r) {
                var o = [],
                    a = 0,
                    s = e.length;
                if (r !== i)
                    for (; a < s; a++) t[e[a]][n] && o.push(t[e[a]][n][r]);
                else
                    for (; a < s; a++) o.push(t[e[a]][n]);
                return o
            },
            ae = function(t, e) {
                var n, r = [];
                e === i ? (e = 0, n = t) : (n = e, e = t);
                for (var o = e; o < n; o++) r.push(o);
                return r
            },
            se = function(t) {
                for (var e = [], n = 0, i = t.length; n < i; n++) t[n] && e.push(t[n]);
                return e
            },
            le = function(t) {
                var e;
                t: {
                    if (!(2 > t.length))
                        for (var n = (e = t.slice().sort())[0], i = 1, r = e.length; i < r; i++) {
                            if (e[i] === n) {
                                e = !1;
                                break t
                            }
                            n = e[i]
                        }
                    e = !0
                }
                if (e) return t.slice();
                e = [];
                r = t.length;
                var o, a = 0;
                i = 0;
                t: for (; i < r; i++) {
                    for (n = t[i], o = 0; o < a; o++)
                        if (e[o] === n) continue t;
                    e.push(n), a++
                }
                return e
            },
            ce = function(t, e) {
                if (Array.isArray(e))
                    for (var n = 0; n < e.length; n++) ce(t, e[n]);
                else t.push(e);
                return t
            };
        Array.isArray || (Array.isArray = function(t) {
            return "[object Array]" === Object.prototype.toString.call(t)
        }), String.prototype.trim || (String.prototype.trim = function() {
            return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "")
        }), Vt.util = {
            throttle: function(t, e) {
                var n, r, o = e !== i ? e : 200;
                return function() {
                    var e = this,
                        a = +new Date,
                        s = arguments;
                    n && a < n + o ? (clearTimeout(r), r = setTimeout((function() {
                        n = i, t.apply(e, s)
                    }), o)) : (n = a, t.apply(e, s))
                }
            },
            escapeRegex: function(t) {
                return t.replace(Kt, "\\$1")
            }
        };
        var ue = function(t, e, n) {
                t[e] !== i && (t[n] = t[e])
            },
            de = /\[.*?\]$/,
            he = /\(\)$/,
            fe = Vt.util.escapeRegex,
            pe = t("<div>")[0],
            ge = pe.textContent !== i,
            me = /<.*?>/g,
            ve = Vt.util.throttle,
            ye = [],
            be = Array.prototype;
        qt = function(e, n) {
            if (!(this instanceof qt)) return new qt(e, n);
            var i = [],
                r = function(e) {
                    (e = function(e) {
                        var n, i, r = Vt.settings,
                            o = t.map(r, (function(t) {
                                return t.nTable
                            }));
                        return e ? e.nTable && e.oApi ? [e] : e.nodeName && "table" === e.nodeName.toLowerCase() ? -1 !== (n = t.inArray(e, o)) ? [r[n]] : null : e && "function" == typeof e.settings ? e.settings().toArray() : ("string" == typeof e ? i = t(e) : e instanceof t && (i = e), i ? i.map((function() {
                            return -1 !== (n = t.inArray(this, o)) ? r[n] : null
                        })).toArray() : void 0) : []
                    }(e)) && i.push.apply(i, e)
                };
            if (Array.isArray(e))
                for (var o = 0, a = e.length; o < a; o++) r(e[o]);
            else r(e);
            this.context = le(i), n && t.merge(this, n), this.selector = {
                rows: null,
                cols: null,
                opts: null
            }, qt.extend(this, this, ye)
        }, Vt.Api = qt, t.extend(qt.prototype, {
            any: function() {
                return 0 !== this.count()
            },
            concat: be.concat,
            context: [],
            count: function() {
                return this.flatten().length
            },
            each: function(t) {
                for (var e = 0, n = this.length; e < n; e++) t.call(this, this[e], e, this);
                return this
            },
            eq: function(t) {
                var e = this.context;
                return e.length > t ? new qt(e[t], this[t]) : null
            },
            filter: function(t) {
                var e = [];
                if (be.filter) e = be.filter.call(this, t, this);
                else
                    for (var n = 0, i = this.length; n < i; n++) t.call(this, this[n], n, this) && e.push(this[n]);
                return new qt(this.context, e)
            },
            flatten: function() {
                var t = [];
                return new qt(this.context, t.concat.apply(t, this.toArray()))
            },
            join: be.join,
            indexOf: be.indexOf || function(t, e) {
                for (var n = e || 0, i = this.length; n < i; n++)
                    if (this[n] === t) return n;
                return -1
            },
            iterator: function(t, e, n, r) {
                var o, a, s, l, c, u, d, h = [],
                    f = this.context,
                    p = this.selector;
                for ("string" == typeof t && (r = n, n = e, e = t, t = !1), a = 0, s = f.length; a < s; a++) {
                    var g = new qt(f[a]);
                    if ("table" === e)(o = n.call(g, f[a], a)) !== i && h.push(o);
                    else if ("columns" === e || "rows" === e)(o = n.call(g, f[a], this[a], a)) !== i && h.push(o);
                    else if ("column" === e || "column-rows" === e || "row" === e || "cell" === e)
                        for (d = this[a], "column-rows" === e && (u = ke(f[a], p.opts)), l = 0, c = d.length; l < c; l++) o = d[l], (o = "cell" === e ? 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 ? ((e = (t = new qt(f, t ? h.concat.apply([], h) : h)).selector).rows = p.rows, e.cols = p.cols, e.opts = p.opts, t) : this
            },
            lastIndexOf: be.lastIndexOf || function(t, e) {
                return this.indexOf.apply(this.toArray.reverse(), arguments)
            },
            length: 0,
            map: function(t) {
                var e = [];
                if (be.map) e = be.map.call(this, t, this);
                else
                    for (var n = 0, i = this.length; n < i; n++) e.push(t.call(this, this[n], n));
                return new qt(this.context, e)
            },
            pluck: function(t) {
                return this.map((function(e) {
                    return e[t]
                }))
            },
            pop: be.pop,
            push: be.push,
            reduce: be.reduce || function(t, e) {
                return u(this, t, e, 0, this.length, 1)
            },
            reduceRight: be.reduceRight || function(t, e) {
                return u(this, t, e, this.length - 1, -1, -1)
            },
            reverse: be.reverse,
            selector: null,
            shift: be.shift,
            slice: function() {
                return new qt(this.context, this)
            },
            sort: be.sort,
            splice: be.splice,
            toArray: function() {
                return be.slice.call(this)
            },
            to$: function() {
                return t(this)
            },
            toJQuery: function() {
                return t(this)
            },
            unique: function() {
                return new qt(this.context, le(this))
            },
            unshift: be.unshift
        }), qt.extend = function(t, e, n) {
            if (n.length && e && (e instanceof qt || e.__dt_wrapper)) {
                var i, r, o, a = function(t, e, n) {
                    return function() {
                        var i = e.apply(t, arguments);
                        return qt.extend(i, i, n.methodExt), i
                    }
                };
                for (i = 0, r = n.length; i < r; i++) e[(o = n[i]).name] = "function" === o.type ? a(t, o.val, o) : "object" === o.type ? {} : o.val, e[o.name].__dt_wrapper = !0, qt.extend(t, e[o.name], o.propExt)
            }
        }, qt.register = Wt = function(e, n) {
            if (Array.isArray(e))
                for (var i = 0, r = e.length; i < r; i++) qt.register(e[i], n);
            else {
                var o, a, s = e.split("."),
                    l = ye;
                for (i = 0, r = s.length; i < r; i++) {
                    var c;
                    o = (a = -1 !== s[i].indexOf("()")) ? s[i].replace("()", "") : s[i];
                    t: {
                        c = 0;
                        for (var u = l.length; c < u; c++)
                            if (l[c].name === o) {
                                c = l[c];
                                break t
                            }
                        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" : t.isPlainObject(n) ? "object" : "other") : l = a ? c.methodExt : c.propExt
                }
            }
        }, qt.registerPlural = Ut = function(t, e, n) {
            qt.register(t, n), qt.register(e, (function() {
                var t = n.apply(this, arguments);
                return t === this ? this : t instanceof qt ? t.length ? Array.isArray(t[0]) ? new qt(t.context, t[0]) : t[0] : i : t
            }))
        };
        var we = function(e, n) {
            if (Array.isArray(e)) return t.map(e, (function(t) {
                return we(t, n)
            }));
            if ("number" == typeof e) return [n[e]];
            var i = t.map(n, (function(t) {
                return t.nTable
            }));
            return t(i).filter(e).map((function() {
                var e = t.inArray(this, i);
                return n[e]
            })).toArray()
        };
        Wt("tables()", (function(t) {
            return t !== i && null !== t ? new qt(we(t, this.context)) : this
        })), Wt("table()", (function(t) {
            var e = (t = this.tables(t)).context;
            return e.length ? new qt(e[0]) : t
        })), Ut("tables().nodes()", "table().node()", (function() {
            return this.iterator("table", (function(t) {
                return t.nTable
            }), 1)
        })), Ut("tables().body()", "table().body()", (function() {
            return this.iterator("table", (function(t) {
                return t.nTBody
            }), 1)
        })), Ut("tables().header()", "table().header()", (function() {
            return this.iterator("table", (function(t) {
                return t.nTHead
            }), 1)
        })), Ut("tables().footer()", "table().footer()", (function() {
            return this.iterator("table", (function(t) {
                return t.nTFoot
            }), 1)
        })), Ut("tables().containers()", "table().container()", (function() {
            return this.iterator("table", (function(t) {
                return t.nTableWrapper
            }), 1)
        })), Wt("draw()", (function(t) {
            return this.iterator("table", (function(e) {
                "page" === t ? F(e) : ("string" == typeof t && (t = "full-hold" !== t), R(e, !1 === t))
            }))
        })), Wt("page()", (function(t) {
            return t === i ? this.page.info().page : this.iterator("table", (function(e) {
                ct(e, t)
            }))
        })), Wt("page.info()", (function() {
            if (0 === this.context.length) return i;
            var t = this.context[0],
                e = t._iDisplayStart,
                n = t.oFeatures.bPaginate ? t._iDisplayLength : -1,
                r = t.fnRecordsDisplay(),
                o = -1 === n;
            return {
                page: o ? 0 : Math.floor(e / n),
                pages: o ? 1 : Math.ceil(r / n),
                start: e,
                end: t.fnDisplayEnd(),
                length: n,
                recordsTotal: t.fnRecordsTotal(),
                recordsDisplay: r,
                serverSide: "ssp" === jt(t)
            }
        })), Wt("page.len()", (function(t) {
            return t === i ? 0 !== this.context.length ? this.context[0]._iDisplayLength : i : this.iterator("table", (function(e) {
                at(e, t)
            }))
        }));
        var xe = function(t, e, n) {
            if (n) {
                var i = new qt(t);
                i.one("draw", (function() {
                    n(i.ajax.json())
                }))
            }
            if ("ssp" == jt(t)) R(t, e);
            else {
                dt(t, !0);
                var r = t.jqXHR;
                r && 4 !== r.readyState && r.abort(), H(t, [], (function(n) {
                    D(t);
                    for (var i = 0, r = (n = U(t, n)).length; i < r; i++) w(t, n[i]);
                    R(t, e), dt(t, !1)
                }))
            }
        };
        Wt("ajax.json()", (function() {
            var t = this.context;
            if (t.length > 0) return t[0].json
        })), Wt("ajax.params()", (function() {
            var t = this.context;
            if (t.length > 0) return t[0].oAjaxData
        })), Wt("ajax.reload()", (function(t, e) {
            return this.iterator("table", (function(n) {
                xe(n, !1 === e, t)
            }))
        })), Wt("ajax.url()", (function(e) {
            var n = this.context;
            return e === i ? 0 === n.length ? i : (n = n[0]).ajax ? t.isPlainObject(n.ajax) ? n.ajax.url : n.ajax : n.sAjaxSource : this.iterator("table", (function(n) {
                t.isPlainObject(n.ajax) ? n.ajax.url = e : n.ajax = e
            }))
        })), Wt("ajax.url().load()", (function(t, e) {
            return this.iterator("table", (function(n) {
                xe(n, !1 === e, t)
            }))
        }));
        var _e = function(t, e, n, r, o) {
                var a, s, l, c, u, d, h = [];
                for (l = typeof e, e && "string" !== l && "function" !== l && e.length !== i || (e = [e]), l = 0, c = e.length; l < c; l++)
                    for (u = 0, d = (s = e[l] && e[l].split && !e[l].match(/[\[\(:]/) ? e[l].split(",") : [e[l]]).length; u < d; u++)(a = n("string" == typeof s[u] ? s[u].trim() : s[u])) && a.length && (h = h.concat(a));
                if ((t = Bt.selector[t]).length)
                    for (l = 0, c = t.length; l < c; l++) h = t[l](r, o, h);
                return le(h)
            },
            Se = function(e) {
                return e || (e = {}), e.filter && e.search === i && (e.search = e.filter), t.extend({
                    search: "none",
                    order: "current",
                    page: "all"
                }, e)
            },
            Ce = function(t) {
                for (var e = 0, n = t.length; e < n; e++)
                    if (t[e].length > 0) return t[0] = t[e], t[0].length = 1, t.length = 1, t.context = [t.context[e]], t;
                return t.length = 0, t
            },
            ke = function(e, n) {
                var i, r, o, a = [],
                    s = e.aiDisplay;
                o = e.aiDisplayMaster;
                var l = n.search;
                if (i = n.order, r = n.page, "ssp" == jt(e)) return "removed" === l ? [] : ae(0, o.length);
                if ("current" == r)
                    for (i = e._iDisplayStart, r = e.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 = t.map(o, (function(t) {
                            return c.hasOwnProperty(t) ? null : t
                        }))
                    }
                } else if ("index" == i || "original" == i)
                    for (i = 0, r = e.aoData.length; i < r; i++)("none" == l || -1 === (o = t.inArray(i, s)) && "removed" == l || o >= 0 && "applied" == l) && a.push(i);
                return a
            };
        Wt("rows()", (function(e, n) {
            e === i ? e = "" : t.isPlainObject(e) && (n = e, e = "");
            n = Se(n);
            var r = this.iterator("table", (function(r) {
                var o, a = n;
                return _e("row", e, (function(e) {
                    var n = te(e),
                        s = r.aoData;
                    if (null !== n && !a) return [n];
                    if (o || (o = ke(r, a)), null !== n && -1 !== t.inArray(n, o)) return [n];
                    if (null === e || e === i || "" === e) return o;
                    if ("function" == typeof e) return t.map(o, (function(t) {
                        var n = s[t];
                        return e(t, n._aData, n.nTr) ? t : null
                    }));
                    if (e.nodeName) {
                        n = e._DT_RowIndex;
                        var l = e._DT_CellIndex;
                        return n !== i ? s[n] && s[n].nTr === e ? [n] : [] : l ? s[l.row] && s[l.row].nTr === e.parentNode ? [l.row] : [] : (n = t(e).closest("*[data-dt-row]")).length ? [n.data("dt-row")] : []
                    }
                    return "string" == typeof e && "#" === e.charAt(0) && (n = r.aIds[e.replace(/^#/, "")]) !== i ? [n.idx] : (n = se(oe(r.aoData, o, "nTr")), t(n).filter(e).map((function() {
                        return this._DT_RowIndex
                    })).toArray())
                }), r, a)
            }), 1);
            return r.selector.rows = e, r.selector.opts = n, r
        })), Wt("rows().nodes()", (function() {
            return this.iterator("row", (function(t, e) {
                return t.aoData[e].nTr || i
            }), 1)
        })), Wt("rows().data()", (function() {
            return this.iterator(!0, "rows", (function(t, e) {
                return oe(t.aoData, e, "_aData")
            }), 1)
        })), Ut("rows().cache()", "row().cache()", (function(t) {
            return this.iterator("row", (function(e, n) {
                var i = e.aoData[n];
                return "search" === t ? i._aFilterData : i._aSortData
            }), 1)
        })), Ut("rows().invalidate()", "row().invalidate()", (function(t) {
            return this.iterator("row", (function(e, n) {
                M(e, n, t)
            }))
        })), Ut("rows().indexes()", "row().index()", (function() {
            return this.iterator("row", (function(t, e) {
                return e
            }), 1)
        })), Ut("rows().ids()", "row().id()", (function(t) {
            for (var e = [], 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);
                    e.push((!0 === t ? "#" : "") + s)
                }
            return new qt(n, e)
        })), Ut("rows().remove()", "row().remove()", (function() {
            var t = this;
            return this.iterator("row", (function(e, n, r) {
                var o, a, s, l, c, u = e.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;
                E(e.aiDisplayMaster, n), E(e.aiDisplay, n), E(t[r], n, !1), e._iRecordsDisplay > 0 && e._iRecordsDisplay--, Ft(e), (n = e.rowIdFn(d._aData)) !== i && delete e.aIds[n]
            })), this.iterator("table", (function(t) {
                for (var e = 0, n = t.aoData.length; e < n; e++) t.aoData[e].idx = e
            })), this
        })), Wt("rows.add()", (function(e) {
            var n = this.iterator("table", (function(t) {
                    var n, i, r, o = [];
                    for (i = 0, r = e.length; i < r; i++)(n = e[i]).nodeName && "TR" === n.nodeName.toUpperCase() ? o.push(x(t, n)[0]) : o.push(w(t, n));
                    return o
                }), 1),
                i = this.rows(-1);
            return i.pop(), t.merge(i, n), i
        })), Wt("row()", (function(t, e) {
            return Ce(this.rows(t, e))
        })), Wt("row().data()", (function(t) {
            var e = this.context;
            if (t === i) return e.length && this.length ? e[0].aoData[this[0]]._aData : i;
            var n = e[0].aoData[this[0]];
            return n._aData = t, Array.isArray(t) && n.nTr && n.nTr.id && T(e[0].rowId)(t, n.nTr.id), M(e[0], this[0], "data"), this
        })), Wt("row().node()", (function() {
            var t = this.context;
            return t.length && this.length && t[0].aoData[this[0]].nTr || null
        })), Wt("row.add()", (function(e) {
            e instanceof t && e.length && (e = e[0]);
            var n = this.iterator("table", (function(t) {
                return e.nodeName && "TR" === e.nodeName.toUpperCase() ? x(t, e)[0] : w(t, e)
            }));
            return this.row(n[0])
        }));
        var Te = function(t, e) {
                var n = t.context;
                n.length && (n = n[0].aoData[e !== i ? e : t[0]]) && n._details && (n._details.remove(), n._detailsShow = i, n._details = i)
            },
            Ae = function(t, e) {
                var n = t.context;
                if (n.length && t.length) {
                    var i = n[0].aoData[t[0]];
                    if (i._details) {
                        (i._detailsShow = e) ? i._details.insertAfter(i.nTr): i._details.detach();
                        var r = n[0],
                            o = new qt(r),
                            a = r.aoData;
                        o.off("draw.dt.DT_details column-visibility.dt.DT_details destroy.dt.DT_details"), re(a, "_details").length > 0 && (o.on("draw.dt.DT_details", (function(t, e) {
                            r === e && o.rows({
                                page: "current"
                            }).eq(0).each((function(t) {
                                (t = a[t])._detailsShow && t._details.insertAfter(t.nTr)
                            }))
                        })), o.on("column-visibility.dt.DT_details", (function(t, e) {
                            if (r === e)
                                for (var n, i = m(e), 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(t, e) {
                            if (r === e)
                                for (var n = 0, i = a.length; n < i; n++) a[n]._details && Te(o, n)
                        })))
                    }
                }
            };
        Wt("row().child()", (function(e, n) {
            var r = this.context;
            if (e === i) return r.length && this.length ? r[0].aoData[this[0]]._details : i;
            if (!0 === e) this.child.show();
            else if (!1 === e) Te(this);
            else if (r.length && this.length) {
                var o = r[0],
                    a = (r = r[0].aoData[this[0]], []),
                    s = function(e, n) {
                        if (Array.isArray(e) || e instanceof t)
                            for (var i = 0, r = e.length; i < r; i++) s(e[i], n);
                        else e.nodeName && "tr" === e.nodeName.toLowerCase() ? a.push(e) : (i = t("<tr><td></td></tr>").addClass(n), t("td", i).addClass(n).html(e)[0].colSpan = m(o), a.push(i[0]))
                    };
                s(e, n), r._details && r._details.detach(), r._details = t(a), r._detailsShow && r._details.insertAfter(r.nTr)
            }
            return this
        })), Wt(["row().child.show()", "row().child().show()"], (function() {
            return Ae(this, !0), this
        })), Wt(["row().child.hide()", "row().child().hide()"], (function() {
            return Ae(this, !1), this
        })), Wt(["row().child.remove()", "row().child().remove()"], (function() {
            return Te(this), this
        })), Wt("row().child.isShown()", (function() {
            var t = this.context;
            return t.length && this.length && t[0].aoData[this[0]]._detailsShow || !1
        }));
        var De = /^([^:]+):(name|visIdx|visible)$/,
            Ee = function(t, e, n, i, r) {
                n = [], i = 0;
                for (var o = r.length; i < o; i++) n.push(_(t, r[i], e));
                return n
            };
        Wt("columns()", (function(e, n) {
            e === i ? e = "" : t.isPlainObject(e) && (n = e, e = "");
            n = Se(n);
            var r = this.iterator("table", (function(i) {
                var r = e,
                    o = n,
                    a = i.aoColumns,
                    s = re(a, "sName"),
                    l = re(a, "nTh");
                return _e("column", r, (function(e) {
                    var n = te(e);
                    if ("" === e) return ae(a.length);
                    if (null !== n) return [n >= 0 ? n : a.length + n];
                    if ("function" == typeof e) {
                        var r = ke(i, o);
                        return t.map(a, (function(t, n) {
                            return e(n, Ee(i, n, 0, 0, r), l[n]) ? n : null
                        }))
                    }
                    var c = "string" == typeof e ? e.match(De) : "";
                    if (c) switch (c[2]) {
                        case "visIdx":
                        case "visible":
                            if ((n = parseInt(c[1], 10)) < 0) {
                                var u = t.map(a, (function(t, e) {
                                    return t.bVisible ? e : null
                                }));
                                return [u[u.length + n]]
                            }
                            return [p(i, n)];
                        case "name":
                            return t.map(s, (function(t, e) {
                                return t === c[1] ? e : null
                            }));
                        default:
                            return []
                    }
                    return e.nodeName && e._DT_CellIndex ? [e._DT_CellIndex.column] : (n = t(l).filter(e).map((function() {
                        return t.inArray(this, l)
                    })).toArray()).length || !e.nodeName ? n : (n = t(e).closest("*[data-dt-column]")).length ? [n.data("dt-column")] : []
                }), i, o)
            }), 1);
            return r.selector.cols = e, r.selector.opts = n, r
        })), Ut("columns().header()", "column().header()", (function() {
            return this.iterator("column", (function(t, e) {
                return t.aoColumns[e].nTh
            }), 1)
        })), Ut("columns().footer()", "column().footer()", (function() {
            return this.iterator("column", (function(t, e) {
                return t.aoColumns[e].nTf
            }), 1)
        })), Ut("columns().data()", "column().data()", (function() {
            return this.iterator("column-rows", Ee, 1)
        })), Ut("columns().dataSrc()", "column().dataSrc()", (function() {
            return this.iterator("column", (function(t, e) {
                return t.aoColumns[e].mData
            }), 1)
        })), Ut("columns().cache()", "column().cache()", (function(t) {
            return this.iterator("column-rows", (function(e, n, i, r, o) {
                return oe(e.aoData, o, "search" === t ? "_aFilterData" : "_aSortData", n)
            }), 1)
        })), Ut("columns().nodes()", "column().nodes()", (function() {
            return this.iterator("column-rows", (function(t, e, n, i, r) {
                return oe(t.aoData, r, "anCells", e)
            }), 1)
        })), Ut("columns().visible()", "column().visible()", (function(e, n) {
            var r = this,
                o = this.iterator("column", (function(n, r) {
                    if (e === i) return n.aoColumns[r].bVisible;
                    var o, a, s, l = n.aoColumns,
                        c = l[r],
                        u = n.aoData;
                    if (e !== i && c.bVisible !== e) {
                        if (e) {
                            var d = t.inArray(!0, re(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 t(re(n.aoData, "anCells", r)).detach();
                        c.bVisible = e
                    }
                }));
            return e !== i && this.iterator("table", (function(o) {
                N(o, o.aoHeader), N(o, o.aoFooter), o.aiDisplay.length || t(o.nTBody).find("td[colspan]").attr("colspan", m(o)), At(o), r.iterator("column", (function(t, i) {
                    Nt(t, null, "column-visibility", [t, i, e, n])
                })), (n === i || n) && r.columns.adjust()
            })), o
        })), Ut("columns().indexes()", "column().index()", (function(t) {
            return this.iterator("column", (function(e, n) {
                return "visible" === t ? g(e, n) : n
            }), 1)
        })), Wt("columns.adjust()", (function() {
            return this.iterator("table", (function(t) {
                f(t)
            }), 1)
        })), Wt("column.index()", (function(t, e) {
            if (0 !== this.context.length) {
                var n = this.context[0];
                if ("fromVisible" === t || "toData" === t) return p(n, e);
                if ("fromData" === t || "toVisible" === t) return g(n, e)
            }
        })), Wt("column()", (function(t, e) {
            return Ce(this.columns(t, e))
        })), Wt("cells()", (function(e, n, r) {
            if (t.isPlainObject(e) && (e.row === i ? (r = e, e = null) : (r = n, n = null)), t.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 = e,
                    f = Se(r),
                    p = n.aoData,
                    g = ke(n, f),
                    m = se(oe(p, g, "anCells")),
                    v = t(ce([], m)),
                    y = n.aoColumns.length;
                return _e("cell", h, (function(e) {
                    var r = "function" == typeof e;
                    if (null === e || e === 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], e(u, _(n, o, c), d.anCells ? d.anCells[c] : null) && a.push(u)) : a.push(u);
                        return a
                    }
                    return t.isPlainObject(e) ? e.column !== i && e.row !== i && -1 !== t.inArray(e.row, g) ? [e] : [] : (r = v.filter(e).map((function(t, e) {
                        return {
                            row: e._DT_CellIndex.row,
                            column: e._DT_CellIndex.column
                        }
                    })).toArray()).length || !e.nodeName ? r : (d = t(e).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(e, c);
            c = this.iterator("table", (function(t, e) {
                var n = [];
                for (o = 0, a = d[e].length; o < a; o++)
                    for (s = 0, l = u[e].length; s < l; s++) n.push({
                        row: d[e][o],
                        column: u[e][s]
                    });
                return n
            }), 1), c = r && r.selected ? this.cells(c, r) : c;
            return t.extend(c.selector, {
                cols: n,
                rows: e,
                opts: r
            }), c
        })), Ut("cells().nodes()", "cell().node()", (function() {
            return this.iterator("cell", (function(t, e, n) {
                return (t = t.aoData[e]) && t.anCells ? t.anCells[n] : i
            }), 1)
        })), Wt("cells().data()", (function() {
            return this.iterator("cell", (function(t, e, n) {
                return _(t, e, n)
            }), 1)
        })), Ut("cells().cache()", "cell().cache()", (function(t) {
            return t = "search" === t ? "_aFilterData" : "_aSortData", this.iterator("cell", (function(e, n, i) {
                return e.aoData[n][t][i]
            }), 1)
        })), Ut("cells().render()", "cell().render()", (function(t) {
            return this.iterator("cell", (function(e, n, i) {
                return _(e, n, i, t)
            }), 1)
        })), Ut("cells().indexes()", "cell().index()", (function() {
            return this.iterator("cell", (function(t, e, n) {
                return {
                    row: e,
                    column: n,
                    columnVisible: g(t, n)
                }
            }), 1)
        })), Ut("cells().invalidate()", "cell().invalidate()", (function(t) {
            return this.iterator("cell", (function(e, n, i) {
                M(e, n, t, i)
            }))
        })), Wt("cell()", (function(t, e, n) {
            return Ce(this.cells(t, e, n))
        })), Wt("cell().data()", (function(t) {
            var e = this.context,
                n = this[0];
            return t === i ? e.length && n.length ? _(e[0], n[0].row, n[0].column) : i : (S(e[0], n[0].row, n[0].column, t), M(e[0], n[0].row, "data", n[0].column), this)
        })), Wt("order()", (function(t, e) {
            var n = this.context;
            return t === i ? 0 !== n.length ? n[0].aaSorting : i : ("number" == typeof t ? t = [
                [t, e]
            ] : t.length && !Array.isArray(t[0]) && (t = Array.prototype.slice.call(arguments)), this.iterator("table", (function(e) {
                e.aaSorting = t.slice()
            })))
        })), Wt("order.listener()", (function(t, e, n) {
            return this.iterator("table", (function(i) {
                Ct(i, t, e, n)
            }))
        })), Wt("order.fixed()", (function(e) {
            if (!e) {
                var n = (n = this.context).length ? n[0].aaSortingFixed : i;
                return Array.isArray(n) ? {
                    pre: n
                } : n
            }
            return this.iterator("table", (function(n) {
                n.aaSortingFixed = t.extend(!0, {}, e)
            }))
        })), Wt(["columns().order()", "column().order()"], (function(e) {
            var n = this;
            return this.iterator("table", (function(i, r) {
                var o = [];
                t.each(n[r], (function(t, n) {
                    o.push([n, e])
                })), i.aaSorting = o
            }))
        })), Wt("search()", (function(e, n, r, o) {
            var a = this.context;
            return e === i ? 0 !== a.length ? a[0].oPreviousSearch.sSearch : i : this.iterator("table", (function(i) {
                i.oFeatures.bFilter && Y(i, t.extend({}, i.oPreviousSearch, {
                    sSearch: e + "",
                    bRegex: null !== n && n,
                    bSmart: null === r || r,
                    bCaseInsensitive: null === o || o
                }), 1)
            }))
        })), Ut("columns().search()", "column().search()", (function(e, n, r, o) {
            return this.iterator("column", (function(a, s) {
                var l = a.aoPreSearchCols;
                if (e === i) return l[s].sSearch;
                a.oFeatures.bFilter && (t.extend(l[s], {
                    sSearch: e + "",
                    bRegex: null !== n && n,
                    bSmart: null === r || r,
                    bCaseInsensitive: null === o || o
                }), Y(a, a.oPreviousSearch, 1))
            }))
        })), Wt("state()", (function() {
            return this.context.length ? this.context[0].oSavedState : null
        })), Wt("state.clear()", (function() {
            return this.iterator("table", (function(t) {
                t.fnStateSaveCallback.call(t.oInstance, t, {})
            }))
        })), Wt("state.loaded()", (function() {
            return this.context.length ? this.context[0].oLoadedState : null
        })), Wt("state.save()", (function() {
            return this.iterator("table", (function(t) {
                At(t)
            }))
        })), Vt.versionCheck = Vt.fnVersionCheck = function(t) {
            for (var e, n, i = Vt.version.split("."), r = 0, o = (t = t.split(".")).length; r < o; r++)
                if ((e = parseInt(i[r], 10) || 0) !== (n = parseInt(t[r], 10) || 0)) return e > n;
            return !0
        }, Vt.isDataTable = Vt.fnIsDataTable = function(e) {
            var n = t(e).get(0),
                i = !1;
            return e instanceof Vt.Api || (t.each(Vt.settings, (function(e, r) {
                var o = r.nScrollHead ? t("table", r.nScrollHead)[0] : null,
                    a = r.nScrollFoot ? t("table", r.nScrollFoot)[0] : null;
                r.nTable !== n && o !== n && a !== n || (i = !0)
            })), i)
        }, Vt.tables = Vt.fnTables = function(e) {
            var n = !1;
            t.isPlainObject(e) && (n = e.api, e = e.visible);
            var i = t.map(Vt.settings, (function(n) {
                if (!e || e && t(n.nTable).is(":visible")) return n.nTable
            }));
            return n ? new qt(i) : i
        }, Vt.camelToHungarian = o, Wt("$()", (function(e, n) {
            var i = this.rows(n).nodes();
            i = t(i);
            return t([].concat(i.filter(e).toArray(), i.find(e).toArray()))
        })), t.each(["on", "one", "off"], (function(e, n) {
            Wt(n + "()", (function() {
                var e = Array.prototype.slice.call(arguments);
                e[0] = t.map(e[0].split(/\s/), (function(t) {
                    return t.match(/\.dt\b/) ? t : t + ".dt"
                })).join(" ");
                var i = t(this.tables().nodes());
                return i[n].apply(i, e), this
            }))
        })), Wt("clear()", (function() {
            return this.iterator("table", (function(t) {
                D(t)
            }))
        })), Wt("settings()", (function() {
            return new qt(this.context, this.context)
        })), Wt("init()", (function() {
            var t = this.context;
            return t.length ? t[0].oInit : null
        })), Wt("data()", (function() {
            return this.iterator("table", (function(t) {
                return re(t.aoData, "_aData")
            })).flatten()
        })), Wt("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 = t(s),
                    h = (l = t(l), t(i.nTableWrapper)),
                    f = t.map(i.aoData, (function(t) {
                        return t.nTr
                    }));
                i.bDestroying = !0, Nt(i, "aoDestroyCallback", "destroy", [i]), n || new qt(i).columns().visible(!0), h.off(".DT").find(":not(tbody *)").off(".DT"), t(e).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 = [], kt(i), t(f).removeClass(i.asStripeClasses.join(" ")), t("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(e) {
                    t(this).addClass(i.asDestroyStripes[e % r])
                }))), -1 !== (o = t.inArray(i, Vt.settings)) && Vt.settings.splice(o, 1)
            }))
        })), t.each(["column", "row", "cell"], (function(t, e) {
            Wt(e + "s().every()", (function(t) {
                var n = this.selector.opts,
                    r = this;
                return this.iterator(e, (function(o, a, s, l, c) {
                    t.call(r[e](a, "cell" === e ? s : n, "cell" === e ? n : i), a, s, l, c)
                }))
            }))
        })), Wt("i18n()", (function(e, n, r) {
            var o = this.context[0];
            return (e = k(e)(o.oLanguage)) === i && (e = n), r !== i && t.isPlainObject(e) && (e = e[r] !== i ? e[r] : e._), e.replace("%d", r)
        })), Vt.version = "1.10.23", Vt.settings = [], Vt.models = {}, Vt.models.oSearch = {
            bCaseInsensitive: !0,
            sSearch: "",
            bRegex: !1,
            bSmart: !0
        }, Vt.models.oRow = {
            nTr: null,
            anCells: null,
            _aData: [],
            _aSortData: null,
            _aFilterData: null,
            _sFilterRow: null,
            _sRowStripe: "",
            src: null,
            idx: -1
        }, Vt.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
        }, Vt.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(t) {
                return t.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(t) {
                try {
                    return JSON.parse((-1 === t.iStateDuration ? sessionStorage : localStorage).getItem("DataTables_" + t.sInstance + "_" + location.pathname))
                } catch (t) {
                    return {}
                }
            },
            fnStateLoadParams: null,
            fnStateLoaded: null,
            fnStateSaveCallback: function(t, e) {
                try {
                    (-1 === t.iStateDuration ? sessionStorage : localStorage).setItem("DataTables_" + t.sInstance + "_" + location.pathname, JSON.stringify(e))
                } catch (t) {}
            },
            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: t.extend({}, Vt.models.oSearch),
            sAjaxDataProp: "data",
            sAjaxSource: null,
            sDom: "lfrtip",
            searchDelay: null,
            sPaginationType: "simple_numbers",
            sScrollX: "",
            sScrollXInner: "",
            sScrollY: "",
            sServerMethod: "GET",
            renderer: null,
            rowId: "DT_RowId"
        }, r(Vt.defaults), Vt.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(Vt.defaults.column), Vt.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" == jt(this) ? 1 * this._iRecordsTotal : this.aiDisplayMaster.length
            },
            fnRecordsDisplay: function() {
                return "ssp" == jt(this) ? 1 * this._iRecordsDisplay : this.aiDisplay.length
            },
            fnDisplayEnd: function() {
                var t = this._iDisplayLength,
                    e = this._iDisplayStart,
                    n = e + t,
                    i = this.aiDisplay.length,
                    r = this.oFeatures,
                    o = r.bPaginate;
                return r.bServerSide ? !1 === o || -1 === t ? e + i : Math.min(e + t, this._iRecordsDisplay) : !o || n > i || -1 === t ? i : n
            },
            oInstance: null,
            sInstance: null,
            iTabIndex: 0,
            nScrollHead: null,
            nScrollFoot: null,
            aLastSort: [],
            oPlugins: {},
            rowIdFn: null,
            rowId: null
        }, Vt.ext = Bt = {
            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: Vt.fnVersionCheck,
            iApiIndex: 0,
            oJUIClasses: {},
            sVersion: Vt.version
        }, t.extend(Bt, {
            afnFiltering: Bt.search,
            aTypes: Bt.type.detect,
            ofnSearch: Bt.type.search,
            oSort: Bt.type.order,
            afnSortData: Bt.order,
            aoFeatures: Bt.feature,
            oApi: Bt.internal,
            oStdClasses: Bt.classes,
            oPagination: Bt.pager
        }), t.extend(Vt.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 Me = Vt.ext.pager;
        t.extend(Me, {
            simple: function() {
                return ["previous", "next"]
            },
            full: function() {
                return ["first", "previous", "next", "last"]
            },
            numbers: function(t, e) {
                return [$t(t, e)]
            },
            simple_numbers: function(t, e) {
                return ["previous", $t(t, e), "next"]
            },
            full_numbers: function(t, e) {
                return ["first", "previous", $t(t, e), "next", "last"]
            },
            first_last_numbers: function(t, e) {
                return ["first", $t(t, e), "last"]
            },
            _numbers: $t,
            numbers_length: 7
        }), t.extend(!0, Vt.ext.renderer, {
            pageButton: {
                _: function(e, r, o, a, s, l) {
                    var c, u, d, h = e.oClasses,
                        f = e.oLanguage.oPaginate,
                        p = e.oLanguage.oAria.paginate || {},
                        g = 0,
                        m = function(n, i) {
                            var r, a, d, v, y = h.sPageButtonDisabled,
                                b = function(t) {
                                    ct(e, t.data.action, !0)
                                };
                            for (r = 0, a = i.length; r < a; r++)
                                if (v = i[r], Array.isArray(v)) d = t("<" + (v.DT_el || "div") + "/>").appendTo(n), m(d, v);
                                else {
                                    switch (c = null, u = v, d = e.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, 0 !== l && s !== l - 1 || (d = -1, u = u + " " + y);
                                            break;
                                        default:
                                            c = e.fnFormatNumber(v + 1), u = s === v ? h.sPageButtonActive : ""
                                    }
                                    null !== c && (Pt(d = t("<a>", {
                                        class: h.sPageButton + " " + u,
                                        "aria-controls": e.sTableId,
                                        "aria-label": p[v],
                                        "data-dt-idx": g,
                                        tabindex: d,
                                        id: 0 === o && "string" == typeof v ? e.sTableId + "_" + v : null
                                    }).html(c).appendTo(n), {
                                        action: v
                                    }, b), g++)
                                }
                        };
                    try {
                        d = t(r).find(n.activeElement).data("dt-idx")
                    } catch (t) {}
                    m(t(r).empty(), a), d !== i && t(r).find("[data-dt-idx=" + d + "]").trigger("focus")
                }
            }
        }), t.extend(Vt.ext.type.detect, [function(t, e) {
            var n = e.oLanguage.sDecimal;
            return ne(t, n) ? "num" + n : null
        }, function(t) {
            if (t && !(t instanceof Date) && !Qt.test(t)) return null;
            var e = Date.parse(t);
            return null !== e && !isNaN(e) || Zt(t) ? "date" : null
        }, function(t, e) {
            var n = e.oLanguage.sDecimal;
            return ne(t, n, !0) ? "num-fmt" + n : null
        }, function(t, e) {
            var n = e.oLanguage.sDecimal;
            return ie(t, n) ? "html-num" + n : null
        }, function(t, e) {
            var n = e.oLanguage.sDecimal;
            return ie(t, n, !0) ? "html-num-fmt" + n : null
        }, function(t) {
            return Zt(t) || "string" == typeof t && -1 !== t.indexOf("<") ? "html" : null
        }]), t.extend(Vt.ext.type.search, {
            html: function(t) {
                return Zt(t) ? t : "string" == typeof t ? t.replace(Gt, " ").replace(Xt, "") : ""
            },
            string: function(t) {
                return Zt(t) ? t : "string" == typeof t ? t.replace(Gt, " ") : t
            }
        });
        var Oe = function(t, e, n, i) {
            return 0 === t || t && "-" !== t ? (e && (t = ee(t, e)), t.replace && (n && (t = t.replace(n, "")), i && (t = t.replace(i, ""))), 1 * t) : -1 / 0
        };
        t.extend(Bt.type.order, {
            "date-pre": function(t) {
                return t = Date.parse(t), isNaN(t) ? -1 / 0 : t
            },
            "html-pre": function(t) {
                return Zt(t) ? "" : t.replace ? t.replace(/<.*?>/g, "").toLowerCase() : t + ""
            },
            "string-pre": function(t) {
                return Zt(t) ? "" : "string" == typeof t ? t.toLowerCase() : t.toString ? t.toString() : ""
            },
            "string-asc": function(t, e) {
                return t < e ? -1 : t > e ? 1 : 0
            },
            "string-desc": function(t, e) {
                return t < e ? 1 : t > e ? -1 : 0
            }
        }), zt(""), t.extend(!0, Vt.ext.renderer, {
            header: {
                _: function(e, n, i, r) {
                    t(e.nTable).on("order.dt.DT", (function(t, o, a, s) {
                        e === o && (t = i.idx, n.removeClass(i.sSortingClass + " " + r.sSortAsc + " " + r.sSortDesc).addClass("asc" == s[t] ? r.sSortAsc : "desc" == s[t] ? r.sSortDesc : i.sSortingClass))
                    }))
                },
                jqueryui: function(e, n, i, r) {
                    t("<div/>").addClass(r.sSortJUIWrapper).append(n.contents()).append(t("<span/>").addClass(r.sSortIcon + " " + i.sSortingClassJUI)).appendTo(n), t(e.nTable).on("order.dt.DT", (function(t, o, a, s) {
                        e === o && (t = i.idx, n.removeClass(r.sSortAsc + " " + r.sSortDesc).addClass("asc" == s[t] ? r.sSortAsc : "desc" == s[t] ? r.sSortDesc : i.sSortingClass), n.find("span." + r.sSortIcon).removeClass(r.sSortJUIAsc + " " + r.sSortJUIDesc + " " + r.sSortJUI + " " + r.sSortJUIAscAllowed + " " + r.sSortJUIDescAllowed).addClass("asc" == s[t] ? r.sSortJUIAsc : "desc" == s[t] ? r.sSortJUIDesc : i.sSortingClassJUI))
                    }))
                }
            }
        });
        var Ie = function(t) {
            return "string" == typeof t ? t.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;") : t
        };
        return Vt.render = {
            number: function(t, e, n, i, r) {
                return {
                    display: function(o) {
                        if ("number" != typeof o && "string" != typeof o) return o;
                        var a = o < 0 ? "-" : "",
                            s = parseFloat(o);
                        return isNaN(s) ? Ie(o) : (s = s.toFixed(n), o = Math.abs(s), s = parseInt(o, 10), o = n ? e + (o - s).toFixed(n).substring(2) : "", a + (i || "") + s.toString().replace(/\B(?=(\d{3})+(?!\d))/g, t) + o + (r || ""))
                    }
                }
            },
            text: function() {
                return {
                    display: Ie,
                    filter: Ie
                }
            }
        }, t.extend(Vt.ext.internal, {
            _fnExternApiFunc: Ht,
            _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(t, e) {
                return e._DT_RowIndex !== i ? e._DT_RowIndex : null
            },
            _fnNodeToColumnIndex: function(e, n, i) {
                return t.inArray(i, e.aoData[n].anCells)
            },
            _fnGetCellData: _,
            _fnSetCellData: S,
            _fnSplitObjNotation: C,
            _fnGetObjectDataFn: k,
            _fnSetObjectDataFn: T,
            _fnGetDataMaster: A,
            _fnClearTable: D,
            _fnDeleteIndex: E,
            _fnInvalidate: M,
            _fnGetRowElements: O,
            _fnCreateTr: I,
            _fnBuildHead: L,
            _fnDrawHead: N,
            _fnDraw: F,
            _fnReDraw: R,
            _fnAddOptionsHtml: j,
            _fnDetectHeader: $,
            _fnGetUniqueThs: z,
            _fnFeatureHtmlFilter: V,
            _fnFilterComplete: Y,
            _fnFilterCustom: G,
            _fnFilterColumn: X,
            _fnFilter: Q,
            _fnFilterCreateSearch: K,
            _fnEscapeRegex: fe,
            _fnFilterData: J,
            _fnFeatureHtmlInfo: et,
            _fnUpdateInfo: nt,
            _fnInfoMacros: it,
            _fnInitialise: rt,
            _fnInitComplete: ot,
            _fnLengthChange: at,
            _fnFeatureHtmlLength: st,
            _fnFeatureHtmlPaginate: lt,
            _fnPageChange: ct,
            _fnFeatureHtmlProcessing: ut,
            _fnProcessingDisplay: dt,
            _fnFeatureHtmlTable: ht,
            _fnScrollDraw: ft,
            _fnApplyToChildren: pt,
            _fnCalculateColumnWidths: gt,
            _fnThrottle: ve,
            _fnConvertToWidth: mt,
            _fnGetWidestNode: vt,
            _fnGetMaxLenString: yt,
            _fnStringToCss: bt,
            _fnSortFlatten: wt,
            _fnSort: xt,
            _fnSortAria: _t,
            _fnSortListener: St,
            _fnSortAttachListener: Ct,
            _fnSortingClasses: kt,
            _fnSortData: Tt,
            _fnSaveState: At,
            _fnLoadState: Dt,
            _fnSettingsFromNode: Et,
            _fnLog: Mt,
            _fnMap: Ot,
            _fnBindAction: Pt,
            _fnCallbackReg: Lt,
            _fnCallbackFire: Nt,
            _fnLengthOverflow: Ft,
            _fnRenderer: Rt,
            _fnDataSource: jt,
            _fnRowAttributes: P,
            _fnExtend: It,
            _fnCalculateEnd: function() {}
        }), t.fn.dataTable = Vt, Vt.$ = t, t.fn.dataTableSettings = Vt.settings, t.fn.dataTableExt = Vt.ext, t.fn.DataTable = function(e) {
            return t(this).dataTable(e).api()
        }, t.each(Vt, (function(e, n) {
            t.fn.DataTable[e] = n
        })), t.fn.dataTable
    })),
    function(t) {
        "function" == typeof define && define.amd ? define(["jquery", "datatables.net"], (function(e) {
            return t(e, window, document)
        })) : "object" == typeof exports ? module.exports = function(e, n) {
            return e || (e = window), n && n.fn.dataTable || (n = require("datatables.net")(e, n).$), t(n, e, e.document)
        } : t(jQuery, window, document)
    }((function(t, e, n, i) {
        function r(t, e, n) {
            var r = e + "-" + n;
            if (s[r]) {
                t = t.cell(e, n).node(), e = [];
                for (var o = 0, a = (n = s[r][0].parentNode.childNodes).length; o < a; o++) e.push(n[o]);
                for (n = 0, o = e.length; n < o; n++) t.appendChild(e[n]);
                s[r] = i
            }
        }
        var o = t.fn.dataTable,
            a = function(e, 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(e),
                    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 = t.extend(!0, {}, a.defaults, o.defaults.responsive, n), e.responsive = this, this._constructor())
            };
        t.extend(a.prototype, {
            _constructor: function() {
                var n = this,
                    i = this.s.dt,
                    r = i.settings()[0],
                    a = t(e).innerWidth();
                i.settings()[0]._responsive = this, t(e).on("resize.dtr orientationchange.dtr", o.util.throttle((function() {
                    var i = t(e).innerWidth();
                    i !== a && (n._resize(), a = i)
                }))), r.oApi._fnCallbackReg(r, "aoRowCreatedCallback", (function(e) {
                    -1 !== t.inArray(!1, n.s.current) && t(">td, >th", e).each((function(e) {
                        e = i.column.index("toData", e), !1 === n.s.current[e] && t(this).css("display", "none")
                    }))
                })), i.on("destroy.dtr", (function() {
                    i.off(".dtr"), t(i.table().body()).off(".dtr"), t(e).off("resize.dtr orientationchange.dtr"), i.cells(".dtr-control").nodes().to$().removeClass("dtr-control"), t.each(n.s.current, (function(t, e) {
                        !1 === e && n._setColumnVis(t, !0)
                    }))
                })), this.c.breakpoints.sort((function(t, e) {
                    return t.width < e.width ? 1 : t.width > e.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(!0), n._redrawChildren()
                    }), 100)
                })), i.on("draw.dtr", (function() {
                    n._redrawChildren()
                })), t(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 t = [];
                    i.rows().every((function() {
                        this.child.isShown() && t.push(this.id(!0))
                    })), i.one("draw.dtr", (function() {
                        n._resizeAuto(), n._resize(), i.rows(t).every((function() {
                            n._detailsDisplay(this, !1)
                        }))
                    }))
                })), i.on("draw.dtr", (function() {
                    n._controlClass()
                })).on("init.dtr", (function(e) {
                    "dt" === e.namespace && (n._resizeAuto(), n._resize(), t.inArray(!1, n.s.current) && i.columns.adjust())
                })), this._resize()
            },
            _columnsVisiblity: function(e) {
                var n, i, r = this.s.dt,
                    o = this.s.columns,
                    a = o.map((function(t, e) {
                        return {
                            columnIdx: e,
                            priority: t.priority
                        }
                    })).sort((function(t, e) {
                        return t.priority !== e.priority ? t.priority - e.priority : t.columnIdx - e.columnIdx
                    })),
                    s = t.map(o, (function(n, i) {
                        return !1 === r.column(i).visible() ? "not-visible" : (!n.auto || null !== n.minWidth) && (!0 === n.auto ? "-" : -1 !== t.inArray(e, 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 === t.inArray(!0, s) && (s[0] = !0), s
            },
            _classLogic: function() {
                var e = this,
                    n = this.c.breakpoints,
                    r = this.s.dt,
                    o = r.columns().eq(0).map((function(t) {
                        var e = (n = this.column(t)).header().className,
                            n = (t = r.settings()[0].aoColumns[t].responsivePriority, n.header().getAttribute("data-priority"));
                        return t === i && (t = n === i || null === n ? 1e4 : 1 * n), {
                            className: e,
                            includeIn: [],
                            auto: !1,
                            control: !1,
                            never: !!e.match(/\bnever\b/),
                            priority: t
                        }
                    })),
                    a = function(e, n) {
                        var i = o[e].includeIn; - 1 === t.inArray(n, i) && i.push(n)
                    },
                    s = function(t, i, r, s) {
                        if (r) {
                            if ("max-" === r)
                                for (s = e._find(i).width, i = 0, r = n.length; i < r; i++) n[i].width <= s && a(t, n[i].name);
                            else if ("min-" === r)
                                for (s = e._find(i).width, i = 0, r = n.length; i < r; i++) n[i].width >= s && a(t, n[i].name);
                            else if ("not-" === r)
                                for (i = 0, r = n.length; i < r; i++) - 1 === n[i].name.indexOf(s) && a(t, n[i].name)
                        } else o[t].includeIn.push(i)
                    };
                o.each((function(e, i) {
                    for (var r = e.className.split(" "), o = !1, a = 0, l = r.length; a < l; a++) {
                        var c = r[a].trim();
                        if ("all" === c) return o = !0, void(e.includeIn = t.map(n, (function(t) {
                            return t.name
                        })));
                        if ("none" === c || e.never) return void(o = !0);
                        if ("control" === c || "dtr-control" === c) return o = !0, void(e.control = !0);
                        t.each(n, (function(t, e) {
                            var n = e.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, e.name, r[1], r[2] + r[3]) : r[2] === n[0] && !r[3] && s(i, e.name, r[1], r[2]))
                        }))
                    }
                    o || (e.auto = !0)
                })), this.s.columns = o
            },
            _controlClass: function() {
                if ("inline" === this.c.details.type) {
                    var e = this.s.dt,
                        n = t.inArray(!0, this.s.current);
                    e.cells(null, (function(t) {
                        return t !== n
                    }), {
                        page: "current"
                    }).nodes().to$().filter(".dtr-control").removeClass("dtr-control"), e.cells(null, n, {
                        page: "current"
                    }).nodes().to$().addClass("dtr-control")
                }
            },
            _detailsDisplay: function(e, n) {
                var i = this,
                    r = this.s.dt,
                    o = this.c.details;
                if (o && !1 !== o.type) {
                    var a = o.display(e, n, (function() {
                        return o.renderer(r, e[0], i._detailsObj(e[0]))
                    }));
                    (!0 === a || !1 === a) && t(r.table().node()).triggerHandler("responsive-display.dt", [r, e, a, n])
                }
            },
            _detailsInit: function() {
                var e = 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() {
                    e._tabIndexes()
                })), e._tabIndexes(), t(n.table().body()).on("keyup.dtr", "td, th", (function(e) {
                    13 === e.keyCode && t(this).data("dtr-keyboard") && t(this).click()
                }));
                var o = r.target;
                o === i && null === o || t(n.table().body()).on("click.dtr mousedown.dtr mouseup.dtr", "string" == typeof o ? o : "td, th", (function(i) {
                    if (t(n.table().node()).hasClass("collapsed") && -1 !== t.inArray(t(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(t(this).closest("tr")), "click" === i.type ? e._detailsDisplay(r, !1) : "mousedown" === i.type ? t(this).css("outline", "none") : "mouseup" === i.type && t(this).trigger("blur").css("outline", "")
                    }
                }))
            },
            _detailsObj: function(e) {
                var n = this,
                    i = this.s.dt;
                return t.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(e, o).render(n.c.orthogonal),
                            hidden: i.column(o).visible() && !n.s.current[o],
                            rowIndex: e,
                            title: null !== a.sTitle ? a.sTitle : t(i.column(o).header()).text()
                        }
                    }
                }))
            },
            _find: function(t) {
                for (var e = this.c.breakpoints, n = 0, i = e.length; n < i; n++)
                    if (e[n].name === t) return e[n]
            },
            _redrawChildren: function() {
                var t = this,
                    e = this.s.dt;
                e.rows({
                    page: "current"
                }).iterator("row", (function(n, i) {
                    e.row(i), t._detailsDisplay(e.row(i), !0)
                }))
            },
            _resize: function(n) {
                var i, r = this,
                    o = this.s.dt,
                    a = t(e).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
                    }
                t(o.table().node()).toggleClass("collapsed", s);
                var h = !1,
                    f = 0;
                o.columns().eq(0).each((function(t, e) {
                    !0 === d[e] && f++, (n || d[e] !== u[e]) && (h = !0, r._setColumnVis(t, d[e]))
                })), h && (this._redrawChildren(), t(o.table().node()).trigger("responsive-resize.dt", [o, this.s.current]), 0 === o.page.info().recordsDisplay && t("td", o.table().body()).eq(0).attr("colspan", f)), r._controlClass()
            },
            _resizeAuto: function() {
                var e = this.s.dt,
                    n = this.s.columns;
                if (this.c.auto && -1 !== t.inArray(!0, t.map(n, (function(t) {
                        return t.auto
                    })))) {
                    t.isEmptyObject(s) || t.each(s, (function(t) {
                        t = t.split("-"), r(e, 1 * t[0], 1 * t[1])
                    })), e.table().node();
                    var i = e.table().node().cloneNode(!1),
                        o = t(e.table().header().cloneNode(!1)).appendTo(i),
                        a = t(e.table().body()).clone(!1, !1).empty().appendTo(i);
                    i.style.width = "auto";
                    var l = e.columns().header().filter((function(t) {
                        return e.column(t).visible()
                    })).to$().clone(!1).css("display", "table-cell").css("width", "auto").css("min-width", 0);
                    if (t(a).append(t(e.rows({
                            page: "current"
                        }).nodes()).clone(!1)).find("th, td").css("display", ""), a = e.table().footer()) {
                        a = t(a.cloneNode(!1)).appendTo(i);
                        var c = e.columns().footer().filter((function(t) {
                            return e.column(t).visible()
                        })).to$().clone(!1).css("display", "table-cell");
                        t("<tr/>").append(c).appendTo(a)
                    }
                    t("<tr/>").append(l).appendTo(o), "inline" === this.c.details.type && t(i).addClass("dtr-inline collapsed"), t(i).find("[name]").removeAttr("name"), t(i).css("position", "relative"), (i = t("<div/>").css({
                        width: 1,
                        height: 1,
                        overflow: "hidden",
                        clear: "both"
                    }).append(i)).insertBefore(e.table().node()), l.each((function(t) {
                        t = e.column.index("fromVisible", t), n[t].minWidth = this.offsetWidth || 0
                    })), i.remove()
                }
            },
            _responsiveOnlyHidden: function() {
                var e = this.s.dt;
                return t.map(this.s.current, (function(t, n) {
                    return !1 === e.column(n).visible() || t
                }))
            },
            _setColumnVis: function(e, n) {
                var i = this.s.dt,
                    o = n ? "" : "none";
                t(i.column(e).header()).css("display", o), t(i.column(e).footer()).css("display", o), i.column(e).nodes().to$().css("display", o), t.isEmptyObject(s) || i.cells(null, e).indexes().each((function(t) {
                    r(i, t.row, t.column)
                }))
            },
            _tabIndexes: function() {
                var e = this.s.dt,
                    n = e.cells({
                        page: "current"
                    }).nodes().to$(),
                    i = e.settings()[0],
                    r = this.c.details.target;
                n.filter("[data-dtr-keyboard]").removeData("[data-dtr-keyboard]"), "number" == typeof r ? e.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"), t(r, e.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(e, n, i) {
                return n ? t(e.node()).hasClass("parent") ? (e.child(i(), "child").show(), !0) : void 0 : e.child.isShown() ? (e.child(!1), t(e.node()).removeClass("parent"), !1) : (e.child(i(), "child").show(), t(e.node()).addClass("parent"), !0)
            },
            childRowImmediate: function(e, n, i) {
                return !n && e.child.isShown() || !e.responsive.hasHidden() ? (e.child(!1), t(e.node()).removeClass("parent"), !1) : (e.child(i(), "child").show(), t(e.node()).addClass("parent"), !0)
            },
            modal: function(e) {
                return function(i, r, o) {
                    if (r) t("div.dtr-modal-content").empty().append(o());
                    else {
                        var a = function() {
                                s.remove(), t(n).off("keypress.dtr")
                            },
                            s = t('<div class="dtr-modal"/>').append(t('<div class="dtr-modal-display"/>').append(t('<div class="dtr-modal-content"/>').append(o())).append(t('<div class="dtr-modal-close">&times;</div>').click((function() {
                                a()
                            })))).append(t('<div class="dtr-modal-background"/>').click((function() {
                                a()
                            }))).appendTo("body");
                        t(n).on("keyup.dtr", (function(t) {
                            27 === t.keyCode && (t.stopPropagation(), a())
                        }))
                    }
                    e && e.header && t("div.dtr-modal-content").prepend("<h2>" + e.header(i) + "</h2>")
                }
            }
        };
        var s = {};
        a.renderer = {
            listHiddenNodes: function() {
                return function(e, n, i) {
                    var r = t('<ul data-dtr-index="' + n + '" class="dtr-details"/>'),
                        o = !1;
                    return t.each(i, (function(n, i) {
                        i.hidden && (t("<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(t('<span class="dtr-data"/>').append(function(t, e, n) {
                            var i = e + "-" + n;
                            if (s[i]) return s[i];
                            var r = [];
                            for (t = t.cell(e, n).node().childNodes, e = 0, n = t.length; e < n; e++) r.push(t[e]);
                            return s[i] = r
                        }(e, i.rowIndex, i.columnIndex))).appendTo(r), o = !0)
                    })), !!o && r
                }
            },
            listHidden: function() {
                return function(e, n, i) {
                    return !!(e = t.map(i, (function(t) {
                        var e = t.className ? 'class="' + t.className + '"' : "";
                        return t.hidden ? "<li " + e + ' data-dtr-index="' + t.columnIndex + '" data-dt-row="' + t.rowIndex + '" data-dt-column="' + t.columnIndex + '"><span class="dtr-title">' + t.title + '</span> <span class="dtr-data">' + t.data + "</span></li>" : ""
                    })).join("")) && t('<ul data-dtr-index="' + n + '" class="dtr-details"/>').append(e)
                }
            },
            tableAll: function(e) {
                return e = t.extend({
                        tableClass: ""
                    }, e),
                    function(n, i, r) {
                        return n = t.map(r, (function(t) {
                            return "<tr " + (t.className ? 'class="' + t.className + '"' : "") + ' data-dt-row="' + t.rowIndex + '" data-dt-column="' + t.columnIndex + '"><td>' + t.title + ":</td> <td>" + t.data + "</td></tr>"
                        })).join(""), t('<table class="' + e.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 = t.fn.dataTable.Api;
        return l.register("responsive()", (function() {
            return this
        })), l.register("responsive.index()", (function(e) {
            return {
                column: (e = t(e)).data("dtr-index"),
                row: e.parent().data("dtr-index")
            }
        })), l.register("responsive.rebuild()", (function() {
            return this.iterator("table", (function(t) {
                t._responsive && t._responsive._classLogic()
            }))
        })), l.register("responsive.recalc()", (function() {
            return this.iterator("table", (function(t) {
                t._responsive && (t._responsive._resizeAuto(), t._responsive._resize())
            }))
        })), l.register("responsive.hasHidden()", (function() {
            var e = this.context[0];
            return !!e._responsive && -1 !== t.inArray(!1, e._responsive._responsiveOnlyHidden())
        })), l.registerPlural("columns().responsiveHidden()", "column().responsiveHidden()", (function() {
            return this.iterator("column", (function(t, e) {
                return !!t._responsive && t._responsive._responsiveOnlyHidden()[e]
            }), 1)
        })), a.version = "2.2.7", t.fn.dataTable.Responsive = a, t.fn.DataTable.Responsive = a, t(n).on("preInit.dt.dtr", (function(e, n) {
            if ("dt" === e.namespace && (t(n.nTable).hasClass("responsive") || t(n.nTable).hasClass("dt-responsive") || n.oInit.responsive || o.defaults.responsive)) {
                var i = n.oInit.responsive;
                !1 !== i && new a(n, t.isPlainObject(i) ? i : {})
            }
        })), a
    })),
    function(t) {
        "function" == typeof define && define.amd ? define(["jquery", "datatables.net"], (function(e) {
            return t(e, window, document)
        })) : "object" == typeof exports ? module.exports = function(e, n) {
            return e || (e = window), n && n.fn.dataTable || (n = require("datatables.net")(e, n).$), t(n, e, e.document)
        } : t(jQuery, window, document)
    }((function(t, e, n, i) {
        var r = t.fn.dataTable;
        return t.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"
        }), t.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(e, o, a, s, l, c) {
            var u, d, h, f = new r.Api(e),
                p = e.oClasses,
                g = e.oLanguage.oPaginate,
                m = e.oLanguage.oAria.paginate || {},
                v = 0,
                y = function(n, i) {
                    var r, o, s, h, b = function(e) {
                        e.preventDefault(), !t(e.currentTarget).hasClass("disabled") && f.page() != e.data.action && f.page(e.data.action).draw("page")
                    };
                    for (r = 0, o = i.length; r < o; r++)
                        if (h = i[r], Array.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 = t("<li>", {
                                class: p.sPageButton + " " + d,
                                id: 0 === a && "string" == typeof h ? e.sTableId + "_" + h : null
                            }).append(t("<a>", {
                                href: "#",
                                "aria-controls": e.sTableId,
                                "aria-label": m[h],
                                "data-dt-idx": v,
                                tabindex: e.iTabIndex,
                                class: "page-link"
                            }).html(u)).appendTo(n), e.oApi._fnBindAction(s, {
                                action: h
                            }, b), v++)
                        }
                };
            try {
                h = t(o).find(n.activeElement).data("dt-idx")
            } catch (t) {}
            y(t(o).empty().html('<ul class="pagination"/>').children("ul"), s), h !== i && t(o).find("[data-dt-idx=" + h + "]").trigger("focus")
        }, r
    })),
    function(t) {
        "function" == typeof define && define.amd ? define(["jquery", "datatables.net-bs4", "datatables.net-responsive"], (function(e) {
            return t(e, window, document)
        })) : "object" == typeof exports ? module.exports = function(e, n) {
            return e || (e = window), n && n.fn.dataTable || (n = require("datatables.net-bs4")(e, n).$), n.fn.dataTable.Responsive || require("datatables.net-responsive")(e, n), t(n, e.document)
        } : t(jQuery, window, document)
    }((function(t) {
        var e = t.fn.dataTable,
            n = e.Responsive.display,
            i = n.modal,
            r = t('<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(e) {
            return function(n, o, a) {
                if (t.fn.modal) {
                    if (!o) {
                        if (e && e.header) {
                            var s = (o = r.find("div.modal-header")).find("button").detach();
                            o.empty().append('<h4 class="modal-title">' + e.header(n) + "</h4>").append(s)
                        }
                        r.find("div.modal-body").empty().append(a()), r.appendTo("body").modal()
                    }
                } else i(n, o, a)
            }
        }, e.Responsive
    })),
    function(t, e) {
        if ("object" == typeof exports && "object" == typeof module) module.exports = e();
        else if ("function" == typeof define && define.amd) define([], e);
        else {
            var n = e();
            for (var i in n)("object" == typeof exports ? exports : t)[i] = n[i]
        }
    }(window, (function() {
        return function(t) {
            var e = {};

            function n(i) {
                if (e[i]) return e[i].exports;
                var r = e[i] = {
                    i: i,
                    l: !1,
                    exports: {}
                };
                return t[i].call(r.exports, r, r.exports, n), r.l = !0, r.exports
            }
            return n.m = t, n.c = e, n.d = function(t, e, i) {
                n.o(t, e) || Object.defineProperty(t, e, {
                    enumerable: !0,
                    get: i
                })
            }, n.r = function(t) {
                "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, {
                    value: "Module"
                }), Object.defineProperty(t, "__esModule", {
                    value: !0
                })
            }, n.t = function(t, e) {
                if (1 & e && (t = n(t)), 8 & e) return t;
                if (4 & e && "object" == typeof t && t && t.__esModule) return t;
                var i = Object.create(null);
                if (n.r(i), Object.defineProperty(i, "default", {
                        enumerable: !0,
                        value: t
                    }), 2 & e && "string" != typeof t)
                    for (var r in t) n.d(i, r, function(e) {
                        return t[e]
                    }.bind(null, r));
                return i
            }, n.n = function(t) {
                var e = t && t.__esModule ? function() {
                    return t.default
                } : function() {
                    return t
                };
                return n.d(e, "a", e), e
            }, n.o = function(t, e) {
                return Object.prototype.hasOwnProperty.call(t, e)
            }, n.p = "", n(n.s = 94)
        }([function(t, e) {
            t.exports = function(t) {
                try {
                    return !!t()
                } catch (t) {
                    return !0
                }
            }
        }, function(t, e, n) {
            "use strict";
            var i, r = n(78),
                o = n(8),
                a = n(2),
                s = n(9),
                l = n(7),
                c = n(30),
                u = n(11),
                d = n(14),
                h = n(12).f,
                f = n(27),
                p = n(29),
                g = n(3),
                m = n(46),
                v = a.Int8Array,
                y = v && v.prototype,
                b = a.Uint8ClampedArray,
                w = b && b.prototype,
                x = v && f(v),
                _ = y && f(y),
                S = Object.prototype,
                C = S.isPrototypeOf,
                k = g("toStringTag"),
                T = m("TYPED_ARRAY_TAG"),
                A = r && !!p && "Opera" !== c(a.opera),
                D = !1,
                E = {
                    Int8Array: 1,
                    Uint8Array: 1,
                    Uint8ClampedArray: 1,
                    Int16Array: 2,
                    Uint16Array: 2,
                    Int32Array: 4,
                    Uint32Array: 4,
                    Float32Array: 4,
                    Float64Array: 8
                },
                M = {
                    BigInt64Array: 8,
                    BigUint64Array: 8
                },
                O = function(t) {
                    if (!s(t)) return !1;
                    var e = c(t);
                    return l(E, e) || l(M, e)
                };
            for (i in E) a[i] || (A = !1);
            if ((!A || "function" != typeof x || x === Function.prototype) && (x = function() {
                    throw TypeError("Incorrect invocation")
                }, A))
                for (i in E) a[i] && p(a[i], x);
            if ((!A || !_ || _ === S) && (_ = x.prototype, A))
                for (i in E) a[i] && p(a[i].prototype, _);
            if (A && f(w) !== _ && p(w, _), o && !l(_, k))
                for (i in D = !0, h(_, k, {
                        get: function() {
                            return s(this) ? this[T] : void 0
                        }
                    }), E) a[i] && u(a[i], T, i);
            t.exports = {
                NATIVE_ARRAY_BUFFER_VIEWS: A,
                TYPED_ARRAY_TAG: D && T,
                aTypedArray: function(t) {
                    if (O(t)) return t;
                    throw TypeError("Target is not a typed array")
                },
                aTypedArrayConstructor: function(t) {
                    if (p) {
                        if (C.call(x, t)) return t
                    } else
                        for (var e in E)
                            if (l(E, i)) {
                                var n = a[e];
                                if (n && (t === n || C.call(n, t))) return t
                            } throw TypeError("Target is not a typed array constructor")
                },
                exportTypedArrayMethod: function(t, e, n) {
                    if (o) {
                        if (n)
                            for (var i in E) {
                                var r = a[i];
                                r && l(r.prototype, t) && delete r.prototype[t]
                            }
                        _[t] && !n || d(_, t, n ? e : A && y[t] || e)
                    }
                },
                exportTypedArrayStaticMethod: function(t, e, n) {
                    var i, r;
                    if (o) {
                        if (p) {
                            if (n)
                                for (i in E)(r = a[i]) && l(r, t) && delete r[t];
                            if (x[t] && !n) return;
                            try {
                                return d(x, t, n ? e : A && v[t] || e)
                            } catch (t) {}
                        }
                        for (i in E) !(r = a[i]) || r[t] && !n || d(r, t, e)
                    }
                },
                isView: function(t) {
                    if (!s(t)) return !1;
                    var e = c(t);
                    return "DataView" === e || l(E, e) || l(M, e)
                },
                isTypedArray: O,
                TypedArray: x,
                TypedArrayPrototype: _
            }
        }, function(t, e, n) {
            (function(e) {
                var n = function(t) {
                    return t && t.Math == Math && t
                };
                t.exports = n("object" == typeof globalThis && globalThis) || n("object" == typeof window && window) || n("object" == typeof self && self) || n("object" == typeof e && e) || function() {
                    return this
                }() || Function("return this")()
            }).call(this, n(96))
        }, function(t, e, n) {
            var i = n(2),
                r = n(65),
                o = n(7),
                a = n(46),
                s = n(68),
                l = n(102),
                c = r("wks"),
                u = i.Symbol,
                d = l ? u : u && u.withoutSetter || a;
            t.exports = function(t) {
                return o(c, t) || (s && o(u, t) ? c[t] = u[t] : c[t] = d("Symbol." + t)), c[t]
            }
        }, function(t, e, n) {
            var i = n(15),
                r = Math.min;
            t.exports = function(t) {
                return t > 0 ? r(i(t), 9007199254740991) : 0
            }
        }, function(t, e, n) {
            var i = n(2),
                r = n(42).f,
                o = n(11),
                a = n(14),
                s = n(43),
                l = n(98),
                c = n(101);
            t.exports = function(t, e) {
                var n, u, d, h, f, p = t.target,
                    g = t.global,
                    m = t.stat;
                if (n = g ? i : m ? i[p] || s(p, {}) : (i[p] || {}).prototype)
                    for (u in e) {
                        if (h = e[u], d = t.noTargetGet ? (f = r(n, u)) && f.value : n[u], !c(g ? u : p + (m ? "." : "#") + u, t.forced) && void 0 !== d) {
                            if (typeof h == typeof d) continue;
                            l(h, d)
                        }(t.sham || d && d.sham) && o(h, "sham", !0), a(n, u, h, t)
                    }
            }
        }, function(t, e, n) {
            var i = n(9);
            t.exports = function(t) {
                if (!i(t)) throw TypeError(String(t) + " is not an object");
                return t
            }
        }, function(t, e) {
            var n = {}.hasOwnProperty;
            t.exports = function(t, e) {
                return n.call(t, e)
            }
        }, function(t, e, n) {
            var i = n(0);
            t.exports = !i((function() {
                return 7 != Object.defineProperty({}, 1, {
                    get: function() {
                        return 7
                    }
                })[1]
            }))
        }, function(t, e) {
            t.exports = function(t) {
                return "object" == typeof t ? null !== t : "function" == typeof t
            }
        }, function(t, e, n) {
            var i = n(16);
            t.exports = function(t) {
                return Object(i(t))
            }
        }, function(t, e, n) {
            var i = n(8),
                r = n(12),
                o = n(20);
            t.exports = i ? function(t, e, n) {
                return r.f(t, e, o(1, n))
            } : function(t, e, n) {
                return t[e] = n, t
            }
        }, function(t, e, n) {
            var i = n(8),
                r = n(62),
                o = n(6),
                a = n(32),
                s = Object.defineProperty;
            e.f = i ? s : function(t, e, n) {
                if (o(t), e = a(e, !0), o(n), r) try {
                    return s(t, e, n)
                } catch (t) {}
                if ("get" in n || "set" in n) throw TypeError("Accessors not supported");
                return "value" in n && (t[e] = n.value), t
            }
        }, function(t, e, n) {
            var i = n(36),
                r = n(31),
                o = n(10),
                a = n(4),
                s = n(51),
                l = [].push,
                c = function(t) {
                    var e = 1 == t,
                        n = 2 == t,
                        c = 3 == t,
                        u = 4 == t,
                        d = 6 == t,
                        h = 7 == t,
                        f = 5 == t || d;
                    return function(p, g, m, v) {
                        for (var y, b, w = o(p), x = r(w), _ = i(g, m, 3), S = a(x.length), C = 0, k = v || s, T = e ? k(p, S) : n || h ? k(p, 0) : void 0; S > C; C++)
                            if ((f || C in x) && (b = _(y = x[C], C, w), t))
                                if (e) T[C] = b;
                                else if (b) switch (t) {
                            case 3:
                                return !0;
                            case 5:
                                return y;
                            case 6:
                                return C;
                            case 2:
                                l.call(T, y)
                        } else switch (t) {
                            case 4:
                                return !1;
                            case 7:
                                l.call(T, y)
                        }
                        return d ? -1 : c || u ? u : T
                    }
                };
            t.exports = {
                forEach: c(0),
                map: c(1),
                filter: c(2),
                some: c(3),
                every: c(4),
                find: c(5),
                findIndex: c(6),
                filterOut: c(7)
            }
        }, function(t, e, n) {
            var i = n(2),
                r = n(11),
                o = n(7),
                a = n(43),
                s = n(64),
                l = n(17),
                c = l.get,
                u = l.enforce,
                d = String(String).split("String");
            (t.exports = function(t, e, n, s) {
                var l, c = !!s && !!s.unsafe,
                    h = !!s && !!s.enumerable,
                    f = !!s && !!s.noTargetGet;
                "function" == typeof n && ("string" != typeof e || o(n, "name") || r(n, "name", e), (l = u(n)).source || (l.source = d.join("string" == typeof e ? e : ""))), t !== i ? (c ? !f && t[e] && (h = !0) : delete t[e], h ? t[e] = n : r(t, e, n)) : h ? t[e] = n : a(e, n)
            })(Function.prototype, "toString", (function() {
                return "function" == typeof this && c(this).source || s(this)
            }))
        }, function(t, e) {
            var n = Math.ceil,
                i = Math.floor;
            t.exports = function(t) {
                return isNaN(t = +t) ? 0 : (t > 0 ? i : n)(t)
            }
        }, function(t, e) {
            t.exports = function(t) {
                if (null == t) throw TypeError("Can't call method on " + t);
                return t
            }
        }, function(t, e, n) {
            var i, r, o, a = n(97),
                s = n(2),
                l = n(9),
                c = n(11),
                u = n(7),
                d = n(44),
                h = n(45),
                f = n(47),
                p = s.WeakMap;
            if (a) {
                var g = d.state || (d.state = new p),
                    m = g.get,
                    v = g.has,
                    y = g.set;
                i = function(t, e) {
                    return e.facade = t, y.call(g, t, e), e
                }, r = function(t) {
                    return m.call(g, t) || {}
                }, o = function(t) {
                    return v.call(g, t)
                }
            } else {
                var b = h("state");
                f[b] = !0, i = function(t, e) {
                    return e.facade = t, c(t, b, e), e
                }, r = function(t) {
                    return u(t, b) ? t[b] : {}
                }, o = function(t) {
                    return u(t, b)
                }
            }
            t.exports = {
                set: i,
                get: r,
                has: o,
                enforce: function(t) {
                    return o(t) ? r(t) : i(t, {})
                },
                getterFor: function(t) {
                    return function(e) {
                        var n;
                        if (!l(e) || (n = r(e)).type !== t) throw TypeError("Incompatible receiver, " + t + " required");
                        return n
                    }
                }
            }
        }, function(t, e, n) {
            var i = n(15),
                r = Math.max,
                o = Math.min;
            t.exports = function(t, e) {
                var n = i(t);
                return n < 0 ? r(n + e, 0) : o(n, e)
            }
        }, function(t, e, n) {
            var i = n(8),
                r = n(0),
                o = n(7),
                a = Object.defineProperty,
                s = {},
                l = function(t) {
                    throw t
                };
            t.exports = function(t, e) {
                if (o(s, t)) return s[t];
                e || (e = {});
                var n = [][t],
                    c = !!o(e, "ACCESSORS") && e.ACCESSORS,
                    u = o(e, 0) ? e[0] : l,
                    d = o(e, 1) ? e[1] : void 0;
                return s[t] = !!n && !r((function() {
                    if (c && !i) return !0;
                    var t = {
                        length: -1
                    };
                    c ? a(t, 1, {
                        enumerable: !0,
                        get: l
                    }) : t[1] = 1, n.call(t, u, d)
                }))
            }
        }, function(t, e) {
            t.exports = function(t, e) {
                return {
                    enumerable: !(1 & t),
                    configurable: !(2 & t),
                    writable: !(4 & t),
                    value: e
                }
            }
        }, function(t, e, n) {
            var i = n(31),
                r = n(16);
            t.exports = function(t) {
                return i(r(t))
            }
        }, function(t, e, n) {
            var i = n(6),
                r = n(52),
                o = n(3)("species");
            t.exports = function(t, e) {
                var n, a = i(t).constructor;
                return void 0 === a || null == (n = i(a)[o]) ? e : r(n)
            }
        }, function(t, e) {
            var n = {}.toString;
            t.exports = function(t) {
                return n.call(t).slice(8, -1)
            }
        }, function(t, e, n) {
            var i = n(100),
                r = n(2),
                o = function(t) {
                    return "function" == typeof t ? t : void 0
                };
            t.exports = function(t, e) {
                return arguments.length < 2 ? o(i[t]) || o(r[t]) : i[t] && i[t][e] || r[t] && r[t][e]
            }
        }, function(t, e, n) {
            var i = n(0),
                r = n(3),
                o = n(69),
                a = r("species");
            t.exports = function(t) {
                return o >= 51 || !i((function() {
                    var e = [];
                    return (e.constructor = {})[a] = function() {
                        return {
                            foo: 1
                        }
                    }, 1 !== e[t](Boolean).foo
                }))
            }
        }, function(t, e) {
            t.exports = {}
        }, function(t, e, n) {
            var i = n(7),
                r = n(10),
                o = n(45),
                a = n(76),
                s = o("IE_PROTO"),
                l = Object.prototype;
            t.exports = a ? Object.getPrototypeOf : function(t) {
                return t = r(t), i(t, s) ? t[s] : "function" == typeof t.constructor && t instanceof t.constructor ? t.constructor.prototype : t instanceof Object ? l : null
            }
        }, function(t, e, n) {
            var i = n(12).f,
                r = n(7),
                o = n(3)("toStringTag");
            t.exports = function(t, e, n) {
                t && !r(t = n ? t : t.prototype, o) && i(t, o, {
                    configurable: !0,
                    value: e
                })
            }
        }, function(t, e, n) {
            var i = n(6),
                r = n(109);
            t.exports = Object.setPrototypeOf || ("__proto__" in {} ? function() {
                var t, e = !1,
                    n = {};
                try {
                    (t = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__").set).call(n, []), e = n instanceof Array
                } catch (t) {}
                return function(n, o) {
                    return i(n), r(o), e ? t.call(n, o) : n.__proto__ = o, n
                }
            }() : void 0)
        }, function(t, e, n) {
            var i = n(55),
                r = n(23),
                o = n(3)("toStringTag"),
                a = "Arguments" == r(function() {
                    return arguments
                }());
            t.exports = i ? r : function(t) {
                var e, n, i;
                return void 0 === t ? "Undefined" : null === t ? "Null" : "string" == typeof(n = function(t, e) {
                    try {
                        return t[e]
                    } catch (t) {}
                }(e = Object(t), o)) ? n : a ? r(e) : "Object" == (i = r(e)) && "function" == typeof e.callee ? "Arguments" : i
            }
        }, function(t, e, n) {
            var i = n(0),
                r = n(23),
                o = "".split;
            t.exports = i((function() {
                return !Object("z").propertyIsEnumerable(0)
            })) ? function(t) {
                return "String" == r(t) ? o.call(t, "") : Object(t)
            } : Object
        }, function(t, e, n) {
            var i = n(9);
            t.exports = function(t, e) {
                if (!i(t)) return t;
                var n, r;
                if (e && "function" == typeof(n = t.toString) && !i(r = n.call(t))) return r;
                if ("function" == typeof(n = t.valueOf) && !i(r = n.call(t))) return r;
                if (!e && "function" == typeof(n = t.toString) && !i(r = n.call(t))) return r;
                throw TypeError("Can't convert object to primitive value")
            }
        }, function(t, e) {
            t.exports = !1
        }, function(t, e, n) {
            var i = n(21),
                r = n(4),
                o = n(18),
                a = function(t) {
                    return function(e, n, a) {
                        var s, l = i(e),
                            c = r(l.length),
                            u = o(a, c);
                        if (t && n != n) {
                            for (; c > u;)
                                if ((s = l[u++]) != s) return !0
                        } else
                            for (; c > u; u++)
                                if ((t || u in l) && l[u] === n) return t || u || 0;
                        return !t && -1
                    }
                };
            t.exports = {
                includes: a(!0),
                indexOf: a(!1)
            }
        }, function(t, e, n) {
            "use strict";
            var i = n(32),
                r = n(12),
                o = n(20);
            t.exports = function(t, e, n) {
                var a = i(e);
                a in t ? r.f(t, a, o(0, n)) : t[a] = n
            }
        }, function(t, e, n) {
            var i = n(52);
            t.exports = function(t, e, n) {
                if (i(t), void 0 === e) return t;
                switch (n) {
                    case 0:
                        return function() {
                            return t.call(e)
                        };
                    case 1:
                        return function(n) {
                            return t.call(e, n)
                        };
                    case 2:
                        return function(n, i) {
                            return t.call(e, n, i)
                        };
                    case 3:
                        return function(n, i, r) {
                            return t.call(e, n, i, r)
                        }
                }
                return function() {
                    return t.apply(e, arguments)
                }
            }
        }, function(t, e, n) {
            "use strict";
            var i = n(21),
                r = n(107),
                o = n(26),
                a = n(17),
                s = n(73),
                l = a.set,
                c = a.getterFor("Array Iterator");
            t.exports = s(Array, "Array", (function(t, e) {
                l(this, {
                    type: "Array Iterator",
                    target: i(t),
                    index: 0,
                    kind: e
                })
            }), (function() {
                var t = c(this),
                    e = t.target,
                    n = t.kind,
                    i = t.index++;
                return !e || i >= e.length ? (t.target = void 0, {
                    value: void 0,
                    done: !0
                }) : "keys" == n ? {
                    value: i,
                    done: !1
                } : "values" == n ? {
                    value: e[i],
                    done: !1
                } : {
                    value: [i, e[i]],
                    done: !1
                }
            }), "values"), o.Arguments = o.Array, r("keys"), r("values"), r("entries")
        }, function(t, e, n) {
            var i, r = n(6),
                o = n(71),
                a = n(49),
                s = n(47),
                l = n(108),
                c = n(63),
                u = n(45)("IE_PROTO"),
                d = function() {},
                h = function(t) {
                    return "<script>" + t + "<\/script>"
                },
                f = function() {
                    try {
                        i = document.domain && new ActiveXObject("htmlfile")
                    } catch (t) {}
                    var t, e;
                    f = i ? function(t) {
                        t.write(h("")), t.close();
                        var e = t.parentWindow.Object;
                        return t = null, e
                    }(i) : ((e = c("iframe")).style.display = "none", l.appendChild(e), e.src = String("javascript:"), (t = e.contentWindow.document).open(), t.write(h("document.F=Object")), t.close(), t.F);
                    for (var n = a.length; n--;) delete f.prototype[a[n]];
                    return f()
                };
            s[u] = !0, t.exports = Object.create || function(t, e) {
                var n;
                return null !== t ? (d.prototype = r(t), n = new d, d.prototype = null, n[u] = t) : n = f(), void 0 === e ? n : o(n, e)
            }
        }, function(t, e) {
            t.exports = function(t, e, n) {
                if (!(t instanceof e)) throw TypeError("Incorrect " + (n ? n + " " : "") + "invocation");
                return t
            }
        }, function(t, e, n) {
            "use strict";
            var i, r, o = n(84),
                a = n(118),
                s = RegExp.prototype.exec,
                l = String.prototype.replace,
                c = s,
                u = (i = /a/, r = /b*/g, s.call(i, "a"), s.call(r, "a"), 0 !== i.lastIndex || 0 !== r.lastIndex),
                d = a.UNSUPPORTED_Y || a.BROKEN_CARET,
                h = void 0 !== /()??/.exec("")[1];
            (u || h || d) && (c = function(t) {
                var e, n, i, r, a = this,
                    c = d && a.sticky,
                    f = o.call(a),
                    p = a.source,
                    g = 0,
                    m = t;
                return c && (-1 === (f = f.replace("y", "")).indexOf("g") && (f += "g"), m = String(t).slice(a.lastIndex), a.lastIndex > 0 && (!a.multiline || a.multiline && "\n" !== t[a.lastIndex - 1]) && (p = "(?: " + p + ")", m = " " + m, g++), n = new RegExp("^(?:" + p + ")", f)), h && (n = new RegExp("^" + p + "$(?!\\s)", f)), u && (e = a.lastIndex), i = s.call(c ? n : a, m), c ? i ? (i.input = i.input.slice(g), i[0] = i[0].slice(g), i.index = a.lastIndex, a.lastIndex += i[0].length) : a.lastIndex = 0 : u && i && (a.lastIndex = a.global ? i.index + i[0].length : e), h && i && i.length > 1 && l.call(i[0], n, (function() {
                    for (r = 1; r < arguments.length - 2; r++) void 0 === arguments[r] && (i[r] = void 0)
                })), i
            }), t.exports = c
        }, function(t, e, n) {
            var i = n(30),
                r = n(26),
                o = n(3)("iterator");
            t.exports = function(t) {
                if (null != t) return t[o] || t["@@iterator"] || r[i(t)]
            }
        }, function(t, e, n) {
            var i = n(8),
                r = n(61),
                o = n(20),
                a = n(21),
                s = n(32),
                l = n(7),
                c = n(62),
                u = Object.getOwnPropertyDescriptor;
            e.f = i ? u : function(t, e) {
                if (t = a(t), e = s(e, !0), c) try {
                    return u(t, e)
                } catch (t) {}
                if (l(t, e)) return o(!r.f.call(t, e), t[e])
            }
        }, function(t, e, n) {
            var i = n(2),
                r = n(11);
            t.exports = function(t, e) {
                try {
                    r(i, t, e)
                } catch (n) {
                    i[t] = e
                }
                return e
            }
        }, function(t, e, n) {
            var i = n(2),
                r = n(43),
                o = i["__core-js_shared__"] || r("__core-js_shared__", {});
            t.exports = o
        }, function(t, e, n) {
            var i = n(65),
                r = n(46),
                o = i("keys");
            t.exports = function(t) {
                return o[t] || (o[t] = r(t))
            }
        }, function(t, e) {
            var n = 0,
                i = Math.random();
            t.exports = function(t) {
                return "Symbol(" + String(void 0 === t ? "" : t) + ")_" + (++n + i).toString(36)
            }
        }, function(t, e) {
            t.exports = {}
        }, function(t, e, n) {
            var i = n(66),
                r = n(49).concat("length", "prototype");
            e.f = Object.getOwnPropertyNames || function(t) {
                return i(t, r)
            }
        }, function(t, e) {
            t.exports = ["constructor", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "toString", "valueOf"]
        }, function(t, e, n) {
            var i = n(23);
            t.exports = Array.isArray || function(t) {
                return "Array" == i(t)
            }
        }, function(t, e, n) {
            var i = n(9),
                r = n(50),
                o = n(3)("species");
            t.exports = function(t, e) {
                var n;
                return r(t) && ("function" != typeof(n = t.constructor) || n !== Array && !r(n.prototype) ? i(n) && null === (n = n[o]) && (n = void 0) : n = void 0), new(void 0 === n ? Array : n)(0 === e ? 0 : e)
            }
        }, function(t, e) {
            t.exports = function(t) {
                if ("function" != typeof t) throw TypeError(String(t) + " is not a function");
                return t
            }
        }, function(t, e, n) {
            "use strict";
            var i = n(0);
            t.exports = function(t, e) {
                var n = [][t];
                return !!n && i((function() {
                    n.call(null, e || function() {
                        throw 1
                    }, 1)
                }))
            }
        }, function(t, e, n) {
            "use strict";
            var i = n(2),
                r = n(8),
                o = n(78),
                a = n(11),
                s = n(79),
                l = n(0),
                c = n(39),
                u = n(15),
                d = n(4),
                h = n(80),
                f = n(113),
                p = n(27),
                g = n(29),
                m = n(48).f,
                v = n(12).f,
                y = n(81),
                b = n(28),
                w = n(17),
                x = w.get,
                _ = w.set,
                S = i.ArrayBuffer,
                C = S,
                k = i.DataView,
                T = k && k.prototype,
                A = Object.prototype,
                D = i.RangeError,
                E = f.pack,
                M = f.unpack,
                O = function(t) {
                    return [255 & t]
                },
                I = function(t) {
                    return [255 & t, t >> 8 & 255]
                },
                P = function(t) {
                    return [255 & t, t >> 8 & 255, t >> 16 & 255, t >> 24 & 255]
                },
                L = function(t) {
                    return t[3] << 24 | t[2] << 16 | t[1] << 8 | t[0]
                },
                N = function(t) {
                    return E(t, 23, 4)
                },
                F = function(t) {
                    return E(t, 52, 8)
                },
                R = function(t, e) {
                    v(t.prototype, e, {
                        get: function() {
                            return x(this)[e]
                        }
                    })
                },
                j = function(t, e, n, i) {
                    var r = h(n),
                        o = x(t);
                    if (r + e > o.byteLength) throw D("Wrong index");
                    var a = x(o.buffer).bytes,
                        s = r + o.byteOffset,
                        l = a.slice(s, s + e);
                    return i ? l : l.reverse()
                },
                $ = function(t, e, n, i, r, o) {
                    var a = h(n),
                        s = x(t);
                    if (a + e > s.byteLength) throw D("Wrong index");
                    for (var l = x(s.buffer).bytes, c = a + s.byteOffset, u = i(+r), d = 0; d < e; d++) l[c + d] = u[o ? d : e - d - 1]
                };
            if (o) {
                if (!l((function() {
                        S(1)
                    })) || !l((function() {
                        new S(-1)
                    })) || l((function() {
                        return new S, new S(1.5), new S(NaN), "ArrayBuffer" != S.name
                    }))) {
                    for (var z, H = (C = function(t) {
                            return c(this, C), new S(h(t))
                        }).prototype = S.prototype, B = m(S), q = 0; B.length > q;)(z = B[q++]) in C || a(C, z, S[z]);
                    H.constructor = C
                }
                g && p(T) !== A && g(T, A);
                var W = new k(new C(2)),
                    U = T.setInt8;
                W.setInt8(0, 2147483648), W.setInt8(1, 2147483649), !W.getInt8(0) && W.getInt8(1) || s(T, {
                    setInt8: function(t, e) {
                        U.call(this, t, e << 24 >> 24)
                    },
                    setUint8: function(t, e) {
                        U.call(this, t, e << 24 >> 24)
                    }
                }, {
                    unsafe: !0
                })
            } else C = function(t) {
                c(this, C, "ArrayBuffer");
                var e = h(t);
                _(this, {
                    bytes: y.call(new Array(e), 0),
                    byteLength: e
                }), r || (this.byteLength = e)
            }, k = function(t, e, n) {
                c(this, k, "DataView"), c(t, C, "DataView");
                var i = x(t).byteLength,
                    o = u(e);
                if (o < 0 || o > i) throw D("Wrong offset");
                if (o + (n = void 0 === n ? i - o : d(n)) > i) throw D("Wrong length");
                _(this, {
                    buffer: t,
                    byteLength: n,
                    byteOffset: o
                }), r || (this.buffer = t, this.byteLength = n, this.byteOffset = o)
            }, r && (R(C, "byteLength"), R(k, "buffer"), R(k, "byteLength"), R(k, "byteOffset")), s(k.prototype, {
                getInt8: function(t) {
                    return j(this, 1, t)[0] << 24 >> 24
                },
                getUint8: function(t) {
                    return j(this, 1, t)[0]
                },
                getInt16: function(t) {
                    var e = j(this, 2, t, arguments.length > 1 ? arguments[1] : void 0);
                    return (e[1] << 8 | e[0]) << 16 >> 16
                },
                getUint16: function(t) {
                    var e = j(this, 2, t, arguments.length > 1 ? arguments[1] : void 0);
                    return e[1] << 8 | e[0]
                },
                getInt32: function(t) {
                    return L(j(this, 4, t, arguments.length > 1 ? arguments[1] : void 0))
                },
                getUint32: function(t) {
                    return L(j(this, 4, t, arguments.length > 1 ? arguments[1] : void 0)) >>> 0
                },
                getFloat32: function(t) {
                    return M(j(this, 4, t, arguments.length > 1 ? arguments[1] : void 0), 23)
                },
                getFloat64: function(t) {
                    return M(j(this, 8, t, arguments.length > 1 ? arguments[1] : void 0), 52)
                },
                setInt8: function(t, e) {
                    $(this, 1, t, O, e)
                },
                setUint8: function(t, e) {
                    $(this, 1, t, O, e)
                },
                setInt16: function(t, e) {
                    $(this, 2, t, I, e, arguments.length > 2 ? arguments[2] : void 0)
                },
                setUint16: function(t, e) {
                    $(this, 2, t, I, e, arguments.length > 2 ? arguments[2] : void 0)
                },
                setInt32: function(t, e) {
                    $(this, 4, t, P, e, arguments.length > 2 ? arguments[2] : void 0)
                },
                setUint32: function(t, e) {
                    $(this, 4, t, P, e, arguments.length > 2 ? arguments[2] : void 0)
                },
                setFloat32: function(t, e) {
                    $(this, 4, t, N, e, arguments.length > 2 ? arguments[2] : void 0)
                },
                setFloat64: function(t, e) {
                    $(this, 8, t, F, e, arguments.length > 2 ? arguments[2] : void 0)
                }
            });
            b(C, "ArrayBuffer"), b(k, "DataView"), t.exports = {
                ArrayBuffer: C,
                DataView: k
            }
        }, function(t, e, n) {
            var i = {};
            i[n(3)("toStringTag")] = "z", t.exports = "[object z]" === String(i)
        }, function(t, e, n) {
            "use strict";
            var i = n(5),
                r = n(40);
            i({
                target: "RegExp",
                proto: !0,
                forced: /./.exec !== r
            }, {
                exec: r
            })
        }, function(t, e, n) {
            var i = n(15),
                r = n(16),
                o = function(t) {
                    return function(e, n) {
                        var o, a, s = String(r(e)),
                            l = i(n),
                            c = s.length;
                        return l < 0 || l >= c ? t ? "" : void 0 : (o = s.charCodeAt(l)) < 55296 || o > 56319 || l + 1 === c || (a = s.charCodeAt(l + 1)) < 56320 || a > 57343 ? t ? s.charAt(l) : o : t ? s.slice(l, l + 2) : a - 56320 + (o - 55296 << 10) + 65536
                    }
                };
            t.exports = {
                codeAt: o(!1),
                charAt: o(!0)
            }
        }, function(t, e, n) {
            "use strict";
            n(56);
            var i = n(14),
                r = n(0),
                o = n(3),
                a = n(40),
                s = n(11),
                l = o("species"),
                c = !r((function() {
                    var t = /./;
                    return t.exec = function() {
                        var t = [];
                        return t.groups = {
                            a: "7"
                        }, t
                    }, "7" !== "".replace(t, "$<a>")
                })),
                u = "$0" === "a".replace(/./, "$0"),
                d = o("replace"),
                h = !!/./ [d] && "" === /./ [d]("a", "$0"),
                f = !r((function() {
                    var t = /(?:)/,
                        e = t.exec;
                    t.exec = function() {
                        return e.apply(this, arguments)
                    };
                    var n = "ab".split(t);
                    return 2 !== n.length || "a" !== n[0] || "b" !== n[1]
                }));
            t.exports = function(t, e, n, d) {
                var p = o(t),
                    g = !r((function() {
                        var e = {};
                        return e[p] = function() {
                            return 7
                        }, 7 != "" [t](e)
                    })),
                    m = g && !r((function() {
                        var e = !1,
                            n = /a/;
                        return "split" === t && ((n = {}).constructor = {}, n.constructor[l] = function() {
                            return n
                        }, n.flags = "", n[p] = /./ [p]), n.exec = function() {
                            return e = !0, null
                        }, n[p](""), !e
                    }));
                if (!g || !m || "replace" === t && (!c || !u || h) || "split" === t && !f) {
                    var v = /./ [p],
                        y = n(p, "" [t], (function(t, e, n, i, r) {
                            return e.exec === a ? g && !r ? {
                                done: !0,
                                value: v.call(e, n, i)
                            } : {
                                done: !0,
                                value: t.call(n, e, i)
                            } : {
                                done: !1
                            }
                        }), {
                            REPLACE_KEEPS_$0: u,
                            REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: h
                        }),
                        b = y[0],
                        w = y[1];
                    i(String.prototype, t, b), i(RegExp.prototype, p, 2 == e ? function(t, e) {
                        return w.call(t, this, e)
                    } : function(t) {
                        return w.call(t, this)
                    })
                }
                d && s(RegExp.prototype[p], "sham", !0)
            }
        }, function(t, e, n) {
            "use strict";
            var i = n(57).charAt;
            t.exports = function(t, e, n) {
                return e + (n ? i(t, e).length : 1)
            }
        }, function(t, e, n) {
            var i = n(23),
                r = n(40);
            t.exports = function(t, e) {
                var n = t.exec;
                if ("function" == typeof n) {
                    var o = n.call(t, e);
                    if ("object" != typeof o) throw TypeError("RegExp exec method returned something other than an Object or null");
                    return o
                }
                if ("RegExp" !== i(t)) throw TypeError("RegExp#exec called on incompatible receiver");
                return r.call(t, e)
            }
        }, function(t, e, n) {
            "use strict";
            var i = {}.propertyIsEnumerable,
                r = Object.getOwnPropertyDescriptor,
                o = r && !i.call({
                    1: 2
                }, 1);
            e.f = o ? function(t) {
                var e = r(this, t);
                return !!e && e.enumerable
            } : i
        }, function(t, e, n) {
            var i = n(8),
                r = n(0),
                o = n(63);
            t.exports = !i && !r((function() {
                return 7 != Object.defineProperty(o("div"), "a", {
                    get: function() {
                        return 7
                    }
                }).a
            }))
        }, function(t, e, n) {
            var i = n(2),
                r = n(9),
                o = i.document,
                a = r(o) && r(o.createElement);
            t.exports = function(t) {
                return a ? o.createElement(t) : {}
            }
        }, function(t, e, n) {
            var i = n(44),
                r = Function.toString;
            "function" != typeof i.inspectSource && (i.inspectSource = function(t) {
                return r.call(t)
            }), t.exports = i.inspectSource
        }, function(t, e, n) {
            var i = n(33),
                r = n(44);
            (t.exports = function(t, e) {
                return r[t] || (r[t] = void 0 !== e ? e : {})
            })("versions", []).push({
                version: "3.8.3",
                mode: i ? "pure" : "global",
                copyright: "© 2021 Denis Pushkarev (zloirock.ru)"
            })
        }, function(t, e, n) {
            var i = n(7),
                r = n(21),
                o = n(34).indexOf,
                a = n(47);
            t.exports = function(t, e) {
                var n, s = r(t),
                    l = 0,
                    c = [];
                for (n in s) !i(a, n) && i(s, n) && c.push(n);
                for (; e.length > l;) i(s, n = e[l++]) && (~o(c, n) || c.push(n));
                return c
            }
        }, function(t, e) {
            e.f = Object.getOwnPropertySymbols
        }, function(t, e, n) {
            var i = n(0);
            t.exports = !!Object.getOwnPropertySymbols && !i((function() {
                return !String(Symbol())
            }))
        }, function(t, e, n) {
            var i, r, o = n(2),
                a = n(103),
                s = o.process,
                l = s && s.versions,
                c = l && l.v8;
            c ? r = (i = c.split("."))[0] + i[1] : a && (!(i = a.match(/Edge\/(\d+)/)) || i[1] >= 74) && (i = a.match(/Chrome\/(\d+)/)) && (r = i[1]), t.exports = r && +r
        }, function(t, e, n) {
            "use strict";
            var i = n(13).forEach,
                r = n(53),
                o = n(19),
                a = r("forEach"),
                s = o("forEach");
            t.exports = a && s ? [].forEach : function(t) {
                return i(this, t, arguments.length > 1 ? arguments[1] : void 0)
            }
        }, function(t, e, n) {
            var i = n(8),
                r = n(12),
                o = n(6),
                a = n(72);
            t.exports = i ? Object.defineProperties : function(t, e) {
                o(t);
                for (var n, i = a(e), s = i.length, l = 0; s > l;) r.f(t, n = i[l++], e[n]);
                return t
            }
        }, function(t, e, n) {
            var i = n(66),
                r = n(49);
            t.exports = Object.keys || function(t) {
                return i(t, r)
            }
        }, function(t, e, n) {
            "use strict";
            var i = n(5),
                r = n(74),
                o = n(27),
                a = n(29),
                s = n(28),
                l = n(11),
                c = n(14),
                u = n(3),
                d = n(33),
                h = n(26),
                f = n(75),
                p = f.IteratorPrototype,
                g = f.BUGGY_SAFARI_ITERATORS,
                m = u("iterator"),
                v = function() {
                    return this
                };
            t.exports = function(t, e, n, u, f, y, b) {
                r(n, e, u);
                var w, x, _, S = function(t) {
                        if (t === f && D) return D;
                        if (!g && t in T) return T[t];
                        switch (t) {
                            case "keys":
                            case "values":
                            case "entries":
                                return function() {
                                    return new n(this, t)
                                }
                        }
                        return function() {
                            return new n(this)
                        }
                    },
                    C = e + " Iterator",
                    k = !1,
                    T = t.prototype,
                    A = T[m] || T["@@iterator"] || f && T[f],
                    D = !g && A || S(f),
                    E = "Array" == e && T.entries || A;
                if (E && (w = o(E.call(new t)), p !== Object.prototype && w.next && (d || o(w) === p || (a ? a(w, p) : "function" != typeof w[m] && l(w, m, v)), s(w, C, !0, !0), d && (h[C] = v))), "values" == f && A && "values" !== A.name && (k = !0, D = function() {
                        return A.call(this)
                    }), d && !b || T[m] === D || l(T, m, D), h[e] = D, f)
                    if (x = {
                            values: S("values"),
                            keys: y ? D : S("keys"),
                            entries: S("entries")
                        }, b)
                        for (_ in x)(g || k || !(_ in T)) && c(T, _, x[_]);
                    else i({
                        target: e,
                        proto: !0,
                        forced: g || k
                    }, x);
                return x
            }
        }, function(t, e, n) {
            "use strict";
            var i = n(75).IteratorPrototype,
                r = n(38),
                o = n(20),
                a = n(28),
                s = n(26),
                l = function() {
                    return this
                };
            t.exports = function(t, e, n) {
                var c = e + " Iterator";
                return t.prototype = r(i, {
                    next: o(1, n)
                }), a(t, c, !1, !0), s[c] = l, t
            }
        }, function(t, e, n) {
            "use strict";
            var i, r, o, a = n(0),
                s = n(27),
                l = n(11),
                c = n(7),
                u = n(3),
                d = n(33),
                h = u("iterator"),
                f = !1;
            [].keys && ("next" in (o = [].keys()) ? (r = s(s(o))) !== Object.prototype && (i = r) : f = !0);
            var p = null == i || a((function() {
                var t = {};
                return i[h].call(t) !== t
            }));
            p && (i = {}), d && !p || c(i, h) || l(i, h, (function() {
                return this
            })), t.exports = {
                IteratorPrototype: i,
                BUGGY_SAFARI_ITERATORS: f
            }
        }, function(t, e, n) {
            var i = n(0);
            t.exports = !i((function() {
                function t() {}
                return t.prototype.constructor = null, Object.getPrototypeOf(new t) !== t.prototype
            }))
        }, function(t, e, n) {
            "use strict";
            var i = n(5),
                r = n(18),
                o = n(15),
                a = n(4),
                s = n(10),
                l = n(51),
                c = n(35),
                u = n(25),
                d = n(19),
                h = u("splice"),
                f = d("splice", {
                    ACCESSORS: !0,
                    0: 0,
                    1: 2
                }),
                p = Math.max,
                g = Math.min;
            i({
                target: "Array",
                proto: !0,
                forced: !h || !f
            }, {
                splice: function(t, e) {
                    var n, i, u, d, h, f, m = s(this),
                        v = a(m.length),
                        y = r(t, v),
                        b = arguments.length;
                    if (0 === b ? n = i = 0 : 1 === b ? (n = 0, i = v - y) : (n = b - 2, i = g(p(o(e), 0), v - y)), v + n - i > 9007199254740991) throw TypeError("Maximum allowed length exceeded");
                    for (u = l(m, i), d = 0; d < i; d++)(h = y + d) in m && c(u, d, m[h]);
                    if (u.length = i, n < i) {
                        for (d = y; d < v - i; d++) f = d + n, (h = d + i) in m ? m[f] = m[h] : delete m[f];
                        for (d = v; d > v - i + n; d--) delete m[d - 1]
                    } else if (n > i)
                        for (d = v - i; d > y; d--) f = d + n - 1, (h = d + i - 1) in m ? m[f] = m[h] : delete m[f];
                    for (d = 0; d < n; d++) m[d + y] = arguments[d + 2];
                    return m.length = v - i + n, u
                }
            })
        }, function(t, e) {
            t.exports = "undefined" != typeof ArrayBuffer && "undefined" != typeof DataView
        }, function(t, e, n) {
            var i = n(14);
            t.exports = function(t, e, n) {
                for (var r in e) i(t, r, e[r], n);
                return t
            }
        }, function(t, e, n) {
            var i = n(15),
                r = n(4);
            t.exports = function(t) {
                if (void 0 === t) return 0;
                var e = i(t),
                    n = r(e);
                if (e !== n) throw RangeError("Wrong length or index");
                return n
            }
        }, function(t, e, n) {
            "use strict";
            var i = n(10),
                r = n(18),
                o = n(4);
            t.exports = function(t) {
                for (var e = i(this), n = o(e.length), a = arguments.length, s = r(a > 1 ? arguments[1] : void 0, n), l = a > 2 ? arguments[2] : void 0, c = void 0 === l ? n : r(l, n); c > s;) e[s++] = t;
                return e
            }
        }, function(t, e, n) {
            "use strict";
            var i = n(24),
                r = n(12),
                o = n(3),
                a = n(8),
                s = o("species");
            t.exports = function(t) {
                var e = i(t),
                    n = r.f;
                a && e && !e[s] && n(e, s, {
                    configurable: !0,
                    get: function() {
                        return this
                    }
                })
            }
        }, function(t, e, n) {
            var i = n(8),
                r = n(12).f,
                o = Function.prototype,
                a = o.toString,
                s = /^\s*function ([^ (]*)/;
            i && !("name" in o) && r(o, "name", {
                configurable: !0,
                get: function() {
                    try {
                        return a.call(this).match(s)[1]
                    } catch (t) {
                        return ""
                    }
                }
            })
        }, function(t, e, n) {
            "use strict";
            var i = n(6);
            t.exports = function() {
                var t = i(this),
                    e = "";
                return t.global && (e += "g"), t.ignoreCase && (e += "i"), t.multiline && (e += "m"), t.dotAll && (e += "s"), t.unicode && (e += "u"), t.sticky && (e += "y"), e
            }
        }, function(t, e, n) {
            "use strict";
            var i = n(57).charAt,
                r = n(17),
                o = n(73),
                a = r.set,
                s = r.getterFor("String Iterator");
            o(String, "String", (function(t) {
                a(this, {
                    type: "String Iterator",
                    string: String(t),
                    index: 0
                })
            }), (function() {
                var t, e = s(this),
                    n = e.string,
                    r = e.index;
                return r >= n.length ? {
                    value: void 0,
                    done: !0
                } : (t = i(n, r), e.index += t.length, {
                    value: t,
                    done: !1
                })
            }))
        }, function(t, e, n) {
            "use strict";
            var i = n(58),
                r = n(6),
                o = n(4),
                a = n(16),
                s = n(59),
                l = n(60);
            i("match", 1, (function(t, e, n) {
                return [function(e) {
                    var n = a(this),
                        i = null == e ? void 0 : e[t];
                    return void 0 !== i ? i.call(e, n) : new RegExp(e)[t](String(n))
                }, function(t) {
                    var i = n(e, t, this);
                    if (i.done) return i.value;
                    var a = r(t),
                        c = String(this);
                    if (!a.global) return l(a, c);
                    var u = a.unicode;
                    a.lastIndex = 0;
                    for (var d, h = [], f = 0; null !== (d = l(a, c));) {
                        var p = String(d[0]);
                        h[f] = p, "" === p && (a.lastIndex = s(c, o(a.lastIndex), u)), f++
                    }
                    return 0 === f ? null : h
                }]
            }))
        }, function(t, e, n) {
            "use strict";
            var i = n(5),
                r = n(124).trim;
            i({
                target: "String",
                proto: !0,
                forced: n(125)("trim")
            }, {
                trim: function() {
                    return r(this)
                }
            })
        }, function(t, e) {
            t.exports = "\t\n\v\f\r                　\u2028\u2029\ufeff"
        }, function(t, e, n) {
            var i = n(130);
            t.exports = function(t, e) {
                var n = i(t);
                if (n % e) throw RangeError("Wrong offset");
                return n
            }
        }, function(t, e, n) {
            var i = n(3),
                r = n(26),
                o = i("iterator"),
                a = Array.prototype;
            t.exports = function(t) {
                return void 0 !== t && (r.Array === t || a[o] === t)
            }
        }, function(t, e, n) {
            var i = n(52),
                r = n(10),
                o = n(31),
                a = n(4),
                s = function(t) {
                    return function(e, n, s, l) {
                        i(n);
                        var c = r(e),
                            u = o(c),
                            d = a(c.length),
                            h = t ? d - 1 : 0,
                            f = t ? -1 : 1;
                        if (s < 2)
                            for (;;) {
                                if (h in u) {
                                    l = u[h], h += f;
                                    break
                                }
                                if (h += f, t ? h < 0 : d <= h) throw TypeError("Reduce of empty array with no initial value")
                            }
                        for (; t ? h >= 0 : d > h; h += f) h in u && (l = n(l, u[h], h, c));
                        return l
                    }
                };
            t.exports = {
                left: s(!1),
                right: s(!0)
            }
        }, function(t, e) {
            t.exports = {
                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
            }
        }, function(t, e, n) {
            var i = n(0),
                r = n(3),
                o = n(33),
                a = r("iterator");
            t.exports = !i((function() {
                var t = new URL("b?a=1&b=2&c=3", "http://a"),
                    e = t.searchParams,
                    n = "";
                return t.pathname = "c%20d", e.forEach((function(t, i) {
                    e.delete("b"), n += i + t
                })), o && !t.toJSON || !e.sort || "http://a/c%20d?a=1&c=3" !== t.href || "3" !== e.get("c") || "a=1" !== String(new URLSearchParams("?a=1")) || !e[a] || "a" !== new URL("https://a@b").username || "b" !== new URLSearchParams(new URLSearchParams("a=b")).get("a") || "xn--e1aybc" !== new URL("http://тест").host || "#%D0%B1" !== new URL("http://a#б").hash || "a1c3" !== n || "x" !== new URL("http://x", void 0).host
            }))
        }, function(t, e, n) {
            t.exports = n(168)
        }, function(t, e, n) {
            "use strict";
            var i = n(5),
                r = n(0),
                o = n(50),
                a = n(9),
                s = n(10),
                l = n(4),
                c = n(35),
                u = n(51),
                d = n(25),
                h = n(3),
                f = n(69),
                p = h("isConcatSpreadable"),
                g = f >= 51 || !r((function() {
                    var t = [];
                    return t[p] = !1, t.concat()[0] !== t
                })),
                m = d("concat"),
                v = function(t) {
                    if (!a(t)) return !1;
                    var e = t[p];
                    return void 0 !== e ? !!e : o(t)
                };
            i({
                target: "Array",
                proto: !0,
                forced: !g || !m
            }, {
                concat: function(t) {
                    var e, n, i, r, o, a = s(this),
                        d = u(a, 0),
                        h = 0;
                    for (e = -1, i = arguments.length; e < i; e++)
                        if (v(o = -1 === e ? a : arguments[e])) {
                            if (h + (r = l(o.length)) > 9007199254740991) throw TypeError("Maximum allowed index exceeded");
                            for (n = 0; n < r; n++, h++) n in o && c(d, h, o[n])
                        } else {
                            if (h >= 9007199254740991) throw TypeError("Maximum allowed index exceeded");
                            c(d, h++, o)
                        }
                    return d.length = h, d
                }
            })
        }, function(t, e) {
            var n;
            n = function() {
                return this
            }();
            try {
                n = n || new Function("return this")()
            } catch (t) {
                "object" == typeof window && (n = window)
            }
            t.exports = n
        }, function(t, e, n) {
            var i = n(2),
                r = n(64),
                o = i.WeakMap;
            t.exports = "function" == typeof o && /native code/.test(r(o))
        }, function(t, e, n) {
            var i = n(7),
                r = n(99),
                o = n(42),
                a = n(12);
            t.exports = function(t, e) {
                for (var n = r(e), s = a.f, l = o.f, c = 0; c < n.length; c++) {
                    var u = n[c];
                    i(t, u) || s(t, u, l(e, u))
                }
            }
        }, function(t, e, n) {
            var i = n(24),
                r = n(48),
                o = n(67),
                a = n(6);
            t.exports = i("Reflect", "ownKeys") || function(t) {
                var e = r.f(a(t)),
                    n = o.f;
                return n ? e.concat(n(t)) : e
            }
        }, function(t, e, n) {
            var i = n(2);
            t.exports = i
        }, function(t, e, n) {
            var i = n(0),
                r = /#|\.prototype\./,
                o = function(t, e) {
                    var n = s[a(t)];
                    return n == c || n != l && ("function" == typeof e ? i(e) : !!e)
                },
                a = o.normalize = function(t) {
                    return String(t).replace(r, ".").toLowerCase()
                },
                s = o.data = {},
                l = o.NATIVE = "N",
                c = o.POLYFILL = "P";
            t.exports = o
        }, function(t, e, n) {
            var i = n(68);
            t.exports = i && !Symbol.sham && "symbol" == typeof Symbol.iterator
        }, function(t, e, n) {
            var i = n(24);
            t.exports = i("navigator", "userAgent") || ""
        }, function(t, e, n) {
            "use strict";
            var i = n(5),
                r = n(13).filter,
                o = n(25),
                a = n(19),
                s = o("filter"),
                l = a("filter");
            i({
                target: "Array",
                proto: !0,
                forced: !s || !l
            }, {
                filter: function(t) {
                    return r(this, t, arguments.length > 1 ? arguments[1] : void 0)
                }
            })
        }, function(t, e, n) {
            "use strict";
            var i = n(5),
                r = n(70);
            i({
                target: "Array",
                proto: !0,
                forced: [].forEach != r
            }, {
                forEach: r
            })
        }, function(t, e, n) {
            "use strict";
            var i = n(5),
                r = n(34).indexOf,
                o = n(53),
                a = n(19),
                s = [].indexOf,
                l = !!s && 1 / [1].indexOf(1, -0) < 0,
                c = o("indexOf"),
                u = a("indexOf", {
                    ACCESSORS: !0,
                    1: 0
                });
            i({
                target: "Array",
                proto: !0,
                forced: l || !c || !u
            }, {
                indexOf: function(t) {
                    return l ? s.apply(this, arguments) || 0 : r(this, t, arguments.length > 1 ? arguments[1] : void 0)
                }
            })
        }, function(t, e, n) {
            var i = n(3),
                r = n(38),
                o = n(12),
                a = i("unscopables"),
                s = Array.prototype;
            null == s[a] && o.f(s, a, {
                configurable: !0,
                value: r(null)
            }), t.exports = function(t) {
                s[a][t] = !0
            }
        }, function(t, e, n) {
            var i = n(24);
            t.exports = i("document", "documentElement")
        }, function(t, e, n) {
            var i = n(9);
            t.exports = function(t) {
                if (!i(t) && null !== t) throw TypeError("Can't set " + String(t) + " as a prototype");
                return t
            }
        }, function(t, e, n) {
            "use strict";
            var i = n(5),
                r = n(13).map,
                o = n(25),
                a = n(19),
                s = o("map"),
                l = a("map");
            i({
                target: "Array",
                proto: !0,
                forced: !s || !l
            }, {
                map: function(t) {
                    return r(this, t, arguments.length > 1 ? arguments[1] : void 0)
                }
            })
        }, function(t, e, n) {
            "use strict";
            var i = n(5),
                r = n(9),
                o = n(50),
                a = n(18),
                s = n(4),
                l = n(21),
                c = n(35),
                u = n(3),
                d = n(25),
                h = n(19),
                f = d("slice"),
                p = h("slice", {
                    ACCESSORS: !0,
                    0: 0,
                    1: 2
                }),
                g = u("species"),
                m = [].slice,
                v = Math.max;
            i({
                target: "Array",
                proto: !0,
                forced: !f || !p
            }, {
                slice: function(t, e) {
                    var n, i, u, d = l(this),
                        h = s(d.length),
                        f = a(t, h),
                        p = a(void 0 === e ? h : e, h);
                    if (o(d) && ("function" != typeof(n = d.constructor) || n !== Array && !o(n.prototype) ? r(n) && null === (n = n[g]) && (n = void 0) : n = void 0, n === Array || void 0 === n)) return m.call(d, f, p);
                    for (i = new(void 0 === n ? Array : n)(v(p - f, 0)), u = 0; f < p; f++, u++) f in d && c(i, u, d[f]);
                    return i.length = u, i
                }
            })
        }, function(t, e, n) {
            "use strict";
            var i = n(5),
                r = n(2),
                o = n(54),
                a = n(82),
                s = o.ArrayBuffer;
            i({
                global: !0,
                forced: r.ArrayBuffer !== s
            }, {
                ArrayBuffer: s
            }), a("ArrayBuffer")
        }, function(t, e) {
            var n = Math.abs,
                i = Math.pow,
                r = Math.floor,
                o = Math.log,
                a = Math.LN2;
            t.exports = {
                pack: function(t, e, s) {
                    var l, c, u, d = new Array(s),
                        h = 8 * s - e - 1,
                        f = (1 << h) - 1,
                        p = f >> 1,
                        g = 23 === e ? i(2, -24) - i(2, -77) : 0,
                        m = t < 0 || 0 === t && 1 / t < 0 ? 1 : 0,
                        v = 0;
                    for ((t = n(t)) != t || t === 1 / 0 ? (c = t != t ? 1 : 0, l = f) : (l = r(o(t) / a), t * (u = i(2, -l)) < 1 && (l--, u *= 2), (t += l + p >= 1 ? g / u : g * i(2, 1 - p)) * u >= 2 && (l++, u /= 2), l + p >= f ? (c = 0, l = f) : l + p >= 1 ? (c = (t * u - 1) * i(2, e), l += p) : (c = t * i(2, p - 1) * i(2, e), l = 0)); e >= 8; d[v++] = 255 & c, c /= 256, e -= 8);
                    for (l = l << e | c, h += e; h > 0; d[v++] = 255 & l, l /= 256, h -= 8);
                    return d[--v] |= 128 * m, d
                },
                unpack: function(t, e) {
                    var n, r = t.length,
                        o = 8 * r - e - 1,
                        a = (1 << o) - 1,
                        s = a >> 1,
                        l = o - 7,
                        c = r - 1,
                        u = t[c--],
                        d = 127 & u;
                    for (u >>= 7; l > 0; d = 256 * d + t[c], c--, l -= 8);
                    for (n = d & (1 << -l) - 1, d >>= -l, l += e; l > 0; n = 256 * n + t[c], c--, l -= 8);
                    if (0 === d) d = 1 - s;
                    else {
                        if (d === a) return n ? NaN : u ? -1 / 0 : 1 / 0;
                        n += i(2, e), d -= s
                    }
                    return (u ? -1 : 1) * n * i(2, d - e)
                }
            }
        }, function(t, e, n) {
            "use strict";
            var i = n(5),
                r = n(0),
                o = n(54),
                a = n(6),
                s = n(18),
                l = n(4),
                c = n(22),
                u = o.ArrayBuffer,
                d = o.DataView,
                h = u.prototype.slice;
            i({
                target: "ArrayBuffer",
                proto: !0,
                unsafe: !0,
                forced: r((function() {
                    return !new u(2).slice(1, void 0).byteLength
                }))
            }, {
                slice: function(t, e) {
                    if (void 0 !== h && void 0 === e) return h.call(a(this), t);
                    for (var n = a(this).byteLength, i = s(t, n), r = s(void 0 === e ? n : e, n), o = new(c(this, u))(l(r - i)), f = new d(this), p = new d(o), g = 0; i < r;) p.setUint8(g++, f.getUint8(i++));
                    return o
                }
            })
        }, function(t, e, n) {
            var i = n(5),
                r = n(0),
                o = n(10),
                a = n(27),
                s = n(76);
            i({
                target: "Object",
                stat: !0,
                forced: r((function() {
                    a(1)
                })),
                sham: !s
            }, {
                getPrototypeOf: function(t) {
                    return a(o(t))
                }
            })
        }, function(t, e, n) {
            var i = n(55),
                r = n(14),
                o = n(117);
            i || r(Object.prototype, "toString", o, {
                unsafe: !0
            })
        }, function(t, e, n) {
            "use strict";
            var i = n(55),
                r = n(30);
            t.exports = i ? {}.toString : function() {
                return "[object " + r(this) + "]"
            }
        }, function(t, e, n) {
            "use strict";
            var i = n(0);

            function r(t, e) {
                return RegExp(t, e)
            }
            e.UNSUPPORTED_Y = i((function() {
                var t = r("a", "y");
                return t.lastIndex = 2, null != t.exec("abcd")
            })), e.BROKEN_CARET = i((function() {
                var t = r("^r", "gy");
                return t.lastIndex = 2, null != t.exec("str")
            }))
        }, function(t, e, n) {
            "use strict";
            var i = n(14),
                r = n(6),
                o = n(0),
                a = n(84),
                s = RegExp.prototype,
                l = s.toString,
                c = o((function() {
                    return "/a/b" != l.call({
                        source: "a",
                        flags: "b"
                    })
                })),
                u = "toString" != l.name;
            (c || u) && i(RegExp.prototype, "toString", (function() {
                var t = r(this),
                    e = String(t.source),
                    n = t.flags;
                return "/" + e + "/" + String(void 0 === n && t instanceof RegExp && !("flags" in s) ? a.call(t) : n)
            }), {
                unsafe: !0
            })
        }, function(t, e, n) {
            "use strict";
            var i = n(58),
                r = n(6),
                o = n(4),
                a = n(15),
                s = n(16),
                l = n(59),
                c = n(121),
                u = n(60),
                d = Math.max,
                h = Math.min;
            i("replace", 2, (function(t, e, n, i) {
                var f = i.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,
                    p = i.REPLACE_KEEPS_$0,
                    g = f ? "$" : "$0";
                return [function(n, i) {
                    var r = s(this),
                        o = null == n ? void 0 : n[t];
                    return void 0 !== o ? o.call(n, r, i) : e.call(String(r), n, i)
                }, function(t, i) {
                    if (!f && p || "string" == typeof i && -1 === i.indexOf(g)) {
                        var s = n(e, t, this, i);
                        if (s.done) return s.value
                    }
                    var m = r(t),
                        v = String(this),
                        y = "function" == typeof i;
                    y || (i = String(i));
                    var b = m.global;
                    if (b) {
                        var w = m.unicode;
                        m.lastIndex = 0
                    }
                    for (var x = [];;) {
                        var _ = u(m, v);
                        if (null === _) break;
                        if (x.push(_), !b) break;
                        "" === String(_[0]) && (m.lastIndex = l(v, o(m.lastIndex), w))
                    }
                    for (var S, C = "", k = 0, T = 0; T < x.length; T++) {
                        _ = x[T];
                        for (var A = String(_[0]), D = d(h(a(_.index), v.length), 0), E = [], M = 1; M < _.length; M++) E.push(void 0 === (S = _[M]) ? S : String(S));
                        var O = _.groups;
                        if (y) {
                            var I = [A].concat(E, D, v);
                            void 0 !== O && I.push(O);
                            var P = String(i.apply(void 0, I))
                        } else P = c(A, v, D, E, O, i);
                        D >= k && (C += v.slice(k, D) + P, k = D + A.length)
                    }
                    return C + v.slice(k)
                }]
            }))
        }, function(t, e, n) {
            var i = n(10),
                r = Math.floor,
                o = "".replace,
                a = /\$([$&'`]|\d\d?|<[^>]*>)/g,
                s = /\$([$&'`]|\d\d?)/g;
            t.exports = function(t, e, n, l, c, u) {
                var d = n + t.length,
                    h = l.length,
                    f = s;
                return void 0 !== c && (c = i(c), f = a), o.call(u, f, (function(i, o) {
                    var a;
                    switch (o.charAt(0)) {
                        case "$":
                            return "$";
                        case "&":
                            return t;
                        case "`":
                            return e.slice(0, n);
                        case "'":
                            return e.slice(d);
                        case "<":
                            a = c[o.slice(1, -1)];
                            break;
                        default:
                            var s = +o;
                            if (0 === s) return i;
                            if (s > h) {
                                var u = r(s / 10);
                                return 0 === u ? i : u <= h ? void 0 === l[u - 1] ? o.charAt(1) : l[u - 1] + o.charAt(1) : i
                            }
                            a = l[s - 1]
                    }
                    return void 0 === a ? "" : a
                }))
            }
        }, function(t, e, n) {
            "use strict";
            var i = n(58),
                r = n(123),
                o = n(6),
                a = n(16),
                s = n(22),
                l = n(59),
                c = n(4),
                u = n(60),
                d = n(40),
                h = n(0),
                f = [].push,
                p = Math.min,
                g = !h((function() {
                    return !RegExp(4294967295, "y")
                }));
            i("split", 2, (function(t, e, n) {
                var i;
                return i = "c" == "abbc".split(/(b)*/)[1] || 4 != "test".split(/(?:)/, -1).length || 2 != "ab".split(/(?:ab)*/).length || 4 != ".".split(/(.?)(.?)/).length || ".".split(/()()/).length > 1 || "".split(/.?/).length ? function(t, n) {
                    var i = String(a(this)),
                        o = void 0 === n ? 4294967295 : n >>> 0;
                    if (0 === o) return [];
                    if (void 0 === t) return [i];
                    if (!r(t)) return e.call(i, t, o);
                    for (var s, l, c, u = [], h = (t.ignoreCase ? "i" : "") + (t.multiline ? "m" : "") + (t.unicode ? "u" : "") + (t.sticky ? "y" : ""), p = 0, g = new RegExp(t.source, h + "g");
                        (s = d.call(g, i)) && !((l = g.lastIndex) > p && (u.push(i.slice(p, s.index)), s.length > 1 && s.index < i.length && f.apply(u, s.slice(1)), c = s[0].length, p = l, u.length >= o));) g.lastIndex === s.index && g.lastIndex++;
                    return p === i.length ? !c && g.test("") || u.push("") : u.push(i.slice(p)), u.length > o ? u.slice(0, o) : u
                } : "0".split(void 0, 0).length ? function(t, n) {
                    return void 0 === t && 0 === n ? [] : e.call(this, t, n)
                } : e, [function(e, n) {
                    var r = a(this),
                        o = null == e ? void 0 : e[t];
                    return void 0 !== o ? o.call(e, r, n) : i.call(String(r), e, n)
                }, function(t, r) {
                    var a = n(i, t, this, r, i !== e);
                    if (a.done) return a.value;
                    var d = o(t),
                        h = String(this),
                        f = s(d, RegExp),
                        m = d.unicode,
                        v = (d.ignoreCase ? "i" : "") + (d.multiline ? "m" : "") + (d.unicode ? "u" : "") + (g ? "y" : "g"),
                        y = new f(g ? d : "^(?:" + d.source + ")", v),
                        b = void 0 === r ? 4294967295 : r >>> 0;
                    if (0 === b) return [];
                    if (0 === h.length) return null === u(y, h) ? [h] : [];
                    for (var w = 0, x = 0, _ = []; x < h.length;) {
                        y.lastIndex = g ? x : 0;
                        var S, C = u(y, g ? h : h.slice(x));
                        if (null === C || (S = p(c(y.lastIndex + (g ? 0 : x)), h.length)) === w) x = l(h, x, m);
                        else {
                            if (_.push(h.slice(w, x)), _.length === b) return _;
                            for (var k = 1; k <= C.length - 1; k++)
                                if (_.push(C[k]), _.length === b) return _;
                            x = w = S
                        }
                    }
                    return _.push(h.slice(w)), _
                }]
            }), !g)
        }, function(t, e, n) {
            var i = n(9),
                r = n(23),
                o = n(3)("match");
            t.exports = function(t) {
                var e;
                return i(t) && (void 0 !== (e = t[o]) ? !!e : "RegExp" == r(t))
            }
        }, function(t, e, n) {
            var i = n(16),
                r = "[" + n(88) + "]",
                o = RegExp("^" + r + r + "*"),
                a = RegExp(r + r + "*$"),
                s = function(t) {
                    return function(e) {
                        var n = String(i(e));
                        return 1 & t && (n = n.replace(o, "")), 2 & t && (n = n.replace(a, "")), n
                    }
                };
            t.exports = {
                start: s(1),
                end: s(2),
                trim: s(3)
            }
        }, function(t, e, n) {
            var i = n(0),
                r = n(88);
            t.exports = function(t) {
                return i((function() {
                    return !!r[t]() || "​᠎" != "​᠎" [t]() || r[t].name !== t
                }))
            }
        }, function(t, e, n) {
            n(127)("Uint8", (function(t) {
                return function(e, n, i) {
                    return t(this, e, n, i)
                }
            }))
        }, function(t, e, n) {
            "use strict";
            var i = n(5),
                r = n(2),
                o = n(8),
                a = n(128),
                s = n(1),
                l = n(54),
                c = n(39),
                u = n(20),
                d = n(11),
                h = n(4),
                f = n(80),
                p = n(89),
                g = n(32),
                m = n(7),
                v = n(30),
                y = n(9),
                b = n(38),
                w = n(29),
                x = n(48).f,
                _ = n(131),
                S = n(13).forEach,
                C = n(82),
                k = n(12),
                T = n(42),
                A = n(17),
                D = n(132),
                E = A.get,
                M = A.set,
                O = k.f,
                I = T.f,
                P = Math.round,
                L = r.RangeError,
                N = l.ArrayBuffer,
                F = l.DataView,
                R = s.NATIVE_ARRAY_BUFFER_VIEWS,
                j = s.TYPED_ARRAY_TAG,
                $ = s.TypedArray,
                z = s.TypedArrayPrototype,
                H = s.aTypedArrayConstructor,
                B = s.isTypedArray,
                q = function(t, e) {
                    for (var n = 0, i = e.length, r = new(H(t))(i); i > n;) r[n] = e[n++];
                    return r
                },
                W = function(t, e) {
                    O(t, e, {
                        get: function() {
                            return E(this)[e]
                        }
                    })
                },
                U = function(t) {
                    var e;
                    return t instanceof N || "ArrayBuffer" == (e = v(t)) || "SharedArrayBuffer" == e
                },
                V = function(t, e) {
                    return B(t) && "symbol" != typeof e && e in t && String(+e) == String(e)
                },
                Y = function(t, e) {
                    return V(t, e = g(e, !0)) ? u(2, t[e]) : I(t, e)
                },
                G = function(t, e, n) {
                    return !(V(t, e = g(e, !0)) && y(n) && m(n, "value")) || m(n, "get") || m(n, "set") || n.configurable || m(n, "writable") && !n.writable || m(n, "enumerable") && !n.enumerable ? O(t, e, n) : (t[e] = n.value, t)
                };
            o ? (R || (T.f = Y, k.f = G, W(z, "buffer"), W(z, "byteOffset"), W(z, "byteLength"), W(z, "length")), i({
                target: "Object",
                stat: !0,
                forced: !R
            }, {
                getOwnPropertyDescriptor: Y,
                defineProperty: G
            }), t.exports = function(t, e, n) {
                var o = t.match(/\d+$/)[0] / 8,
                    s = t + (n ? "Clamped" : "") + "Array",
                    l = "get" + t,
                    u = "set" + t,
                    g = r[s],
                    m = g,
                    v = m && m.prototype,
                    k = {},
                    T = function(t, e) {
                        O(t, e, {
                            get: function() {
                                return function(t, e) {
                                    var n = E(t);
                                    return n.view[l](e * o + n.byteOffset, !0)
                                }(this, e)
                            },
                            set: function(t) {
                                return function(t, e, i) {
                                    var r = E(t);
                                    n && (i = (i = P(i)) < 0 ? 0 : i > 255 ? 255 : 255 & i), r.view[u](e * o + r.byteOffset, i, !0)
                                }(this, e, t)
                            },
                            enumerable: !0
                        })
                    };
                R ? a && (m = e((function(t, e, n, i) {
                    return c(t, m, s), D(y(e) ? U(e) ? void 0 !== i ? new g(e, p(n, o), i) : void 0 !== n ? new g(e, p(n, o)) : new g(e) : B(e) ? q(m, e) : _.call(m, e) : new g(f(e)), t, m)
                })), w && w(m, $), S(x(g), (function(t) {
                    t in m || d(m, t, g[t])
                })), m.prototype = v) : (m = e((function(t, e, n, i) {
                    c(t, m, s);
                    var r, a, l, u = 0,
                        d = 0;
                    if (y(e)) {
                        if (!U(e)) return B(e) ? q(m, e) : _.call(m, e);
                        r = e, d = p(n, o);
                        var g = e.byteLength;
                        if (void 0 === i) {
                            if (g % o) throw L("Wrong length");
                            if ((a = g - d) < 0) throw L("Wrong length")
                        } else if ((a = h(i) * o) + d > g) throw L("Wrong length");
                        l = a / o
                    } else l = f(e), r = new N(a = l * o);
                    for (M(t, {
                            buffer: r,
                            byteOffset: d,
                            byteLength: a,
                            length: l,
                            view: new F(r)
                        }); u < l;) T(t, u++)
                })), w && w(m, $), v = m.prototype = b(z)), v.constructor !== m && d(v, "constructor", m), j && d(v, j, s), k[s] = m, i({
                    global: !0,
                    forced: m != g,
                    sham: !R
                }, k), "BYTES_PER_ELEMENT" in m || d(m, "BYTES_PER_ELEMENT", o), "BYTES_PER_ELEMENT" in v || d(v, "BYTES_PER_ELEMENT", o), C(s)
            }) : t.exports = function() {}
        }, function(t, e, n) {
            var i = n(2),
                r = n(0),
                o = n(129),
                a = n(1).NATIVE_ARRAY_BUFFER_VIEWS,
                s = i.ArrayBuffer,
                l = i.Int8Array;
            t.exports = !a || !r((function() {
                l(1)
            })) || !r((function() {
                new l(-1)
            })) || !o((function(t) {
                new l, new l(null), new l(1.5), new l(t)
            }), !0) || r((function() {
                return 1 !== new l(new s(2), 1, void 0).length
            }))
        }, function(t, e, n) {
            var i = n(3)("iterator"),
                r = !1;
            try {
                var o = 0,
                    a = {
                        next: function() {
                            return {
                                done: !!o++
                            }
                        },
                        return: function() {
                            r = !0
                        }
                    };
                a[i] = function() {
                    return this
                }, Array.from(a, (function() {
                    throw 2
                }))
            } catch (t) {}
            t.exports = function(t, e) {
                if (!e && !r) return !1;
                var n = !1;
                try {
                    var o = {};
                    o[i] = function() {
                        return {
                            next: function() {
                                return {
                                    done: n = !0
                                }
                            }
                        }
                    }, t(o)
                } catch (t) {}
                return n
            }
        }, function(t, e, n) {
            var i = n(15);
            t.exports = function(t) {
                var e = i(t);
                if (e < 0) throw RangeError("The argument can't be less than 0");
                return e
            }
        }, function(t, e, n) {
            var i = n(10),
                r = n(4),
                o = n(41),
                a = n(90),
                s = n(36),
                l = n(1).aTypedArrayConstructor;
            t.exports = function(t) {
                var e, n, c, u, d, h, f = i(t),
                    p = arguments.length,
                    g = p > 1 ? arguments[1] : void 0,
                    m = void 0 !== g,
                    v = o(f);
                if (null != v && !a(v))
                    for (h = (d = v.call(f)).next, f = []; !(u = h.call(d)).done;) f.push(u.value);
                for (m && p > 2 && (g = s(g, arguments[2], 2)), n = r(f.length), c = new(l(this))(n), e = 0; n > e; e++) c[e] = m ? g(f[e], e) : f[e];
                return c
            }
        }, function(t, e, n) {
            var i = n(9),
                r = n(29);
            t.exports = function(t, e, n) {
                var o, a;
                return r && "function" == typeof(o = e.constructor) && o !== n && i(a = o.prototype) && a !== n.prototype && r(t, a), t
            }
        }, function(t, e, n) {
            "use strict";
            var i = n(1),
                r = n(134),
                o = i.aTypedArray;
            (0, i.exportTypedArrayMethod)("copyWithin", (function(t, e) {
                return r.call(o(this), t, e, arguments.length > 2 ? arguments[2] : void 0)
            }))
        }, function(t, e, n) {
            "use strict";
            var i = n(10),
                r = n(18),
                o = n(4),
                a = Math.min;
            t.exports = [].copyWithin || function(t, e) {
                var n = i(this),
                    s = o(n.length),
                    l = r(t, s),
                    c = r(e, s),
                    u = arguments.length > 2 ? arguments[2] : void 0,
                    d = a((void 0 === u ? s : r(u, s)) - c, s - l),
                    h = 1;
                for (c < l && l < c + d && (h = -1, c += d - 1, l += d - 1); d-- > 0;) c in n ? n[l] = n[c] : delete n[l], l += h, c += h;
                return n
            }
        }, function(t, e, n) {
            "use strict";
            var i = n(1),
                r = n(13).every,
                o = i.aTypedArray;
            (0, i.exportTypedArrayMethod)("every", (function(t) {
                return r(o(this), t, arguments.length > 1 ? arguments[1] : void 0)
            }))
        }, function(t, e, n) {
            "use strict";
            var i = n(1),
                r = n(81),
                o = i.aTypedArray;
            (0, i.exportTypedArrayMethod)("fill", (function(t) {
                return r.apply(o(this), arguments)
            }))
        }, function(t, e, n) {
            "use strict";
            var i = n(1),
                r = n(13).filter,
                o = n(22),
                a = i.aTypedArray,
                s = i.aTypedArrayConstructor;
            (0, i.exportTypedArrayMethod)("filter", (function(t) {
                for (var e = r(a(this), t, arguments.length > 1 ? arguments[1] : void 0), n = o(this, this.constructor), i = 0, l = e.length, c = new(s(n))(l); l > i;) c[i] = e[i++];
                return c
            }))
        }, function(t, e, n) {
            "use strict";
            var i = n(1),
                r = n(13).find,
                o = i.aTypedArray;
            (0, i.exportTypedArrayMethod)("find", (function(t) {
                return r(o(this), t, arguments.length > 1 ? arguments[1] : void 0)
            }))
        }, function(t, e, n) {
            "use strict";
            var i = n(1),
                r = n(13).findIndex,
                o = i.aTypedArray;
            (0, i.exportTypedArrayMethod)("findIndex", (function(t) {
                return r(o(this), t, arguments.length > 1 ? arguments[1] : void 0)
            }))
        }, function(t, e, n) {
            "use strict";
            var i = n(1),
                r = n(13).forEach,
                o = i.aTypedArray;
            (0, i.exportTypedArrayMethod)("forEach", (function(t) {
                r(o(this), t, arguments.length > 1 ? arguments[1] : void 0)
            }))
        }, function(t, e, n) {
            "use strict";
            var i = n(1),
                r = n(34).includes,
                o = i.aTypedArray;
            (0, i.exportTypedArrayMethod)("includes", (function(t) {
                return r(o(this), t, arguments.length > 1 ? arguments[1] : void 0)
            }))
        }, function(t, e, n) {
            "use strict";
            var i = n(1),
                r = n(34).indexOf,
                o = i.aTypedArray;
            (0, i.exportTypedArrayMethod)("indexOf", (function(t) {
                return r(o(this), t, arguments.length > 1 ? arguments[1] : void 0)
            }))
        }, function(t, e, n) {
            "use strict";
            var i = n(2),
                r = n(1),
                o = n(37),
                a = n(3)("iterator"),
                s = i.Uint8Array,
                l = o.values,
                c = o.keys,
                u = o.entries,
                d = r.aTypedArray,
                h = r.exportTypedArrayMethod,
                f = s && s.prototype[a],
                p = !!f && ("values" == f.name || null == f.name),
                g = function() {
                    return l.call(d(this))
                };
            h("entries", (function() {
                return u.call(d(this))
            })), h("keys", (function() {
                return c.call(d(this))
            })), h("values", g, !p), h(a, g, !p)
        }, function(t, e, n) {
            "use strict";
            var i = n(1),
                r = i.aTypedArray,
                o = i.exportTypedArrayMethod,
                a = [].join;
            o("join", (function(t) {
                return a.apply(r(this), arguments)
            }))
        }, function(t, e, n) {
            "use strict";
            var i = n(1),
                r = n(146),
                o = i.aTypedArray;
            (0, i.exportTypedArrayMethod)("lastIndexOf", (function(t) {
                return r.apply(o(this), arguments)
            }))
        }, function(t, e, n) {
            "use strict";
            var i = n(21),
                r = n(15),
                o = n(4),
                a = n(53),
                s = n(19),
                l = Math.min,
                c = [].lastIndexOf,
                u = !!c && 1 / [1].lastIndexOf(1, -0) < 0,
                d = a("lastIndexOf"),
                h = s("indexOf", {
                    ACCESSORS: !0,
                    1: 0
                }),
                f = u || !d || !h;
            t.exports = f ? function(t) {
                if (u) return c.apply(this, arguments) || 0;
                var e = i(this),
                    n = o(e.length),
                    a = n - 1;
                for (arguments.length > 1 && (a = l(a, r(arguments[1]))), a < 0 && (a = n + a); a >= 0; a--)
                    if (a in e && e[a] === t) return a || 0;
                return -1
            } : c
        }, function(t, e, n) {
            "use strict";
            var i = n(1),
                r = n(13).map,
                o = n(22),
                a = i.aTypedArray,
                s = i.aTypedArrayConstructor;
            (0, i.exportTypedArrayMethod)("map", (function(t) {
                return r(a(this), t, arguments.length > 1 ? arguments[1] : void 0, (function(t, e) {
                    return new(s(o(t, t.constructor)))(e)
                }))
            }))
        }, function(t, e, n) {
            "use strict";
            var i = n(1),
                r = n(91).left,
                o = i.aTypedArray;
            (0, i.exportTypedArrayMethod)("reduce", (function(t) {
                return r(o(this), t, arguments.length, arguments.length > 1 ? arguments[1] : void 0)
            }))
        }, function(t, e, n) {
            "use strict";
            var i = n(1),
                r = n(91).right,
                o = i.aTypedArray;
            (0, i.exportTypedArrayMethod)("reduceRight", (function(t) {
                return r(o(this), t, arguments.length, arguments.length > 1 ? arguments[1] : void 0)
            }))
        }, function(t, e, n) {
            "use strict";
            var i = n(1),
                r = i.aTypedArray,
                o = i.exportTypedArrayMethod,
                a = Math.floor;
            o("reverse", (function() {
                for (var t, e = r(this).length, n = a(e / 2), i = 0; i < n;) t = this[i], this[i++] = this[--e], this[e] = t;
                return this
            }))
        }, function(t, e, n) {
            "use strict";
            var i = n(1),
                r = n(4),
                o = n(89),
                a = n(10),
                s = n(0),
                l = i.aTypedArray;
            (0, i.exportTypedArrayMethod)("set", (function(t) {
                l(this);
                var e = o(arguments.length > 1 ? arguments[1] : void 0, 1),
                    n = this.length,
                    i = a(t),
                    s = r(i.length),
                    c = 0;
                if (s + e > n) throw RangeError("Wrong length");
                for (; c < s;) this[e + c] = i[c++]
            }), s((function() {
                new Int8Array(1).set({})
            })))
        }, function(t, e, n) {
            "use strict";
            var i = n(1),
                r = n(22),
                o = n(0),
                a = i.aTypedArray,
                s = i.aTypedArrayConstructor,
                l = i.exportTypedArrayMethod,
                c = [].slice;
            l("slice", (function(t, e) {
                for (var n = c.call(a(this), t, e), i = r(this, this.constructor), o = 0, l = n.length, u = new(s(i))(l); l > o;) u[o] = n[o++];
                return u
            }), o((function() {
                new Int8Array(1).slice()
            })))
        }, function(t, e, n) {
            "use strict";
            var i = n(1),
                r = n(13).some,
                o = i.aTypedArray;
            (0, i.exportTypedArrayMethod)("some", (function(t) {
                return r(o(this), t, arguments.length > 1 ? arguments[1] : void 0)
            }))
        }, function(t, e, n) {
            "use strict";
            var i = n(1),
                r = i.aTypedArray,
                o = i.exportTypedArrayMethod,
                a = [].sort;
            o("sort", (function(t) {
                return a.call(r(this), t)
            }))
        }, function(t, e, n) {
            "use strict";
            var i = n(1),
                r = n(4),
                o = n(18),
                a = n(22),
                s = i.aTypedArray;
            (0, i.exportTypedArrayMethod)("subarray", (function(t, e) {
                var n = s(this),
                    i = n.length,
                    l = o(t, i);
                return new(a(n, n.constructor))(n.buffer, n.byteOffset + l * n.BYTES_PER_ELEMENT, r((void 0 === e ? i : o(e, i)) - l))
            }))
        }, function(t, e, n) {
            "use strict";
            var i = n(2),
                r = n(1),
                o = n(0),
                a = i.Int8Array,
                s = r.aTypedArray,
                l = r.exportTypedArrayMethod,
                c = [].toLocaleString,
                u = [].slice,
                d = !!a && o((function() {
                    c.call(new a(1))
                }));
            l("toLocaleString", (function() {
                return c.apply(d ? u.call(s(this)) : s(this), arguments)
            }), o((function() {
                return [1, 2].toLocaleString() != new a([1, 2]).toLocaleString()
            })) || !o((function() {
                a.prototype.toLocaleString.call([1, 2])
            })))
        }, function(t, e, n) {
            "use strict";
            var i = n(1).exportTypedArrayMethod,
                r = n(0),
                o = n(2).Uint8Array,
                a = o && o.prototype || {},
                s = [].toString,
                l = [].join;
            r((function() {
                s.call({})
            })) && (s = function() {
                return l.call(this)
            });
            var c = a.toString != s;
            i("toString", s, c)
        }, function(t, e, n) {
            var i = n(2),
                r = n(92),
                o = n(70),
                a = n(11);
            for (var s in r) {
                var l = i[s],
                    c = l && l.prototype;
                if (c && c.forEach !== o) try {
                    a(c, "forEach", o)
                } catch (t) {
                    c.forEach = o
                }
            }
        }, function(t, e, n) {
            var i = n(2),
                r = n(92),
                o = n(37),
                a = n(11),
                s = n(3),
                l = s("iterator"),
                c = s("toStringTag"),
                u = o.values;
            for (var d in r) {
                var h = i[d],
                    f = h && h.prototype;
                if (f) {
                    if (f[l] !== u) try {
                        a(f, l, u)
                    } catch (t) {
                        f[l] = u
                    }
                    if (f[c] || a(f, c, d), r[d])
                        for (var p in o)
                            if (f[p] !== o[p]) try {
                                a(f, p, o[p])
                            } catch (t) {
                                f[p] = o[p]
                            }
                }
            }
        }, function(t, e, n) {
            "use strict";
            n(85);
            var i, r = n(5),
                o = n(8),
                a = n(93),
                s = n(2),
                l = n(71),
                c = n(14),
                u = n(39),
                d = n(7),
                h = n(161),
                f = n(162),
                p = n(57).codeAt,
                g = n(165),
                m = n(28),
                v = n(166),
                y = n(17),
                b = s.URL,
                w = v.URLSearchParams,
                x = v.getState,
                _ = y.set,
                S = y.getterFor("URL"),
                C = Math.floor,
                k = Math.pow,
                T = /[A-Za-z]/,
                A = /[\d+-.A-Za-z]/,
                D = /\d/,
                E = /^(0x|0X)/,
                M = /^[0-7]+$/,
                O = /^\d+$/,
                I = /^[\dA-Fa-f]+$/,
                P = /[\u0000\u0009\u000A\u000D #%/:?@[\\]]/,
                L = /[\u0000\u0009\u000A\u000D #/:?@[\\]]/,
                N = /^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g,
                F = /[\u0009\u000A\u000D]/g,
                R = function(t, e) {
                    var n, i, r;
                    if ("[" == e.charAt(0)) {
                        if ("]" != e.charAt(e.length - 1)) return "Invalid host";
                        if (!(n = $(e.slice(1, -1)))) return "Invalid host";
                        t.host = n
                    } else if (Y(t)) {
                        if (e = g(e), P.test(e)) return "Invalid host";
                        if (null === (n = j(e))) return "Invalid host";
                        t.host = n
                    } else {
                        if (L.test(e)) return "Invalid host";
                        for (n = "", i = f(e), r = 0; r < i.length; r++) n += U(i[r], H);
                        t.host = n
                    }
                },
                j = function(t) {
                    var e, n, i, r, o, a, s, l = t.split(".");
                    if (l.length && "" == l[l.length - 1] && l.pop(), (e = l.length) > 4) return t;
                    for (n = [], i = 0; i < e; i++) {
                        if ("" == (r = l[i])) return t;
                        if (o = 10, r.length > 1 && "0" == r.charAt(0) && (o = E.test(r) ? 16 : 8, r = r.slice(8 == o ? 1 : 2)), "" === r) a = 0;
                        else {
                            if (!(10 == o ? O : 8 == o ? M : I).test(r)) return t;
                            a = parseInt(r, o)
                        }
                        n.push(a)
                    }
                    for (i = 0; i < e; i++)
                        if (a = n[i], i == e - 1) {
                            if (a >= k(256, 5 - e)) return null
                        } else if (a > 255) return null;
                    for (s = n.pop(), i = 0; i < n.length; i++) s += n[i] * k(256, 3 - i);
                    return s
                },
                $ = function(t) {
                    var e, n, i, r, o, a, s, l = [0, 0, 0, 0, 0, 0, 0, 0],
                        c = 0,
                        u = null,
                        d = 0,
                        h = function() {
                            return t.charAt(d)
                        };
                    if (":" == h()) {
                        if (":" != t.charAt(1)) return;
                        d += 2, u = ++c
                    }
                    for (; h();) {
                        if (8 == c) return;
                        if (":" != h()) {
                            for (e = n = 0; n < 4 && I.test(h());) e = 16 * e + parseInt(h(), 16), d++, n++;
                            if ("." == h()) {
                                if (0 == n) return;
                                if (d -= n, c > 6) return;
                                for (i = 0; h();) {
                                    if (r = null, i > 0) {
                                        if (!("." == h() && i < 4)) return;
                                        d++
                                    }
                                    if (!D.test(h())) return;
                                    for (; D.test(h());) {
                                        if (o = parseInt(h(), 10), null === r) r = o;
                                        else {
                                            if (0 == r) return;
                                            r = 10 * r + o
                                        }
                                        if (r > 255) return;
                                        d++
                                    }
                                    l[c] = 256 * l[c] + r, 2 != ++i && 4 != i || c++
                                }
                                if (4 != i) return;
                                break
                            }
                            if (":" == h()) {
                                if (d++, !h()) return
                            } else if (h()) return;
                            l[c++] = e
                        } else {
                            if (null !== u) return;
                            d++, u = ++c
                        }
                    }
                    if (null !== u)
                        for (a = c - u, c = 7; 0 != c && a > 0;) s = l[c], l[c--] = l[u + a - 1], l[u + --a] = s;
                    else if (8 != c) return;
                    return l
                },
                z = function(t) {
                    var e, n, i, r;
                    if ("number" == typeof t) {
                        for (e = [], n = 0; n < 4; n++) e.unshift(t % 256), t = C(t / 256);
                        return e.join(".")
                    }
                    if ("object" == typeof t) {
                        for (e = "", i = function(t) {
                                for (var e = null, n = 1, i = null, r = 0, o = 0; o < 8; o++) 0 !== t[o] ? (r > n && (e = i, n = r), i = null, r = 0) : (null === i && (i = o), ++r);
                                return r > n && (e = i, n = r), e
                            }(t), n = 0; n < 8; n++) r && 0 === t[n] || (r && (r = !1), i === n ? (e += n ? ":" : "::", r = !0) : (e += t[n].toString(16), n < 7 && (e += ":")));
                        return "[" + e + "]"
                    }
                    return t
                },
                H = {},
                B = h({}, H, {
                    " ": 1,
                    '"': 1,
                    "<": 1,
                    ">": 1,
                    "`": 1
                }),
                q = h({}, B, {
                    "#": 1,
                    "?": 1,
                    "{": 1,
                    "}": 1
                }),
                W = h({}, q, {
                    "/": 1,
                    ":": 1,
                    ";": 1,
                    "=": 1,
                    "@": 1,
                    "[": 1,
                    "\\": 1,
                    "]": 1,
                    "^": 1,
                    "|": 1
                }),
                U = function(t, e) {
                    var n = p(t, 0);
                    return n > 32 && n < 127 && !d(e, t) ? t : encodeURIComponent(t)
                },
                V = {
                    ftp: 21,
                    file: null,
                    http: 80,
                    https: 443,
                    ws: 80,
                    wss: 443
                },
                Y = function(t) {
                    return d(V, t.scheme)
                },
                G = function(t) {
                    return "" != t.username || "" != t.password
                },
                X = function(t) {
                    return !t.host || t.cannotBeABaseURL || "file" == t.scheme
                },
                Q = function(t, e) {
                    var n;
                    return 2 == t.length && T.test(t.charAt(0)) && (":" == (n = t.charAt(1)) || !e && "|" == n)
                },
                K = function(t) {
                    var e;
                    return t.length > 1 && Q(t.slice(0, 2)) && (2 == t.length || "/" === (e = t.charAt(2)) || "\\" === e || "?" === e || "#" === e)
                },
                J = function(t) {
                    var e = t.path,
                        n = e.length;
                    !n || "file" == t.scheme && 1 == n && Q(e[0], !0) || e.pop()
                },
                Z = function(t) {
                    return "." === t || "%2e" === t.toLowerCase()
                },
                tt = {},
                et = {},
                nt = {},
                it = {},
                rt = {},
                ot = {},
                at = {},
                st = {},
                lt = {},
                ct = {},
                ut = {},
                dt = {},
                ht = {},
                ft = {},
                pt = {},
                gt = {},
                mt = {},
                vt = {},
                yt = {},
                bt = {},
                wt = {},
                xt = function(t, e, n, r) {
                    var o, a, s, l, c, u = n || tt,
                        h = 0,
                        p = "",
                        g = !1,
                        m = !1,
                        v = !1;
                    for (n || (t.scheme = "", t.username = "", t.password = "", t.host = null, t.port = null, t.path = [], t.query = null, t.fragment = null, t.cannotBeABaseURL = !1, e = e.replace(N, "")), e = e.replace(F, ""), o = f(e); h <= o.length;) {
                        switch (a = o[h], u) {
                            case tt:
                                if (!a || !T.test(a)) {
                                    if (n) return "Invalid scheme";
                                    u = nt;
                                    continue
                                }
                                p += a.toLowerCase(), u = et;
                                break;
                            case et:
                                if (a && (A.test(a) || "+" == a || "-" == a || "." == a)) p += a.toLowerCase();
                                else {
                                    if (":" != a) {
                                        if (n) return "Invalid scheme";
                                        p = "", u = nt, h = 0;
                                        continue
                                    }
                                    if (n && (Y(t) != d(V, p) || "file" == p && (G(t) || null !== t.port) || "file" == t.scheme && !t.host)) return;
                                    if (t.scheme = p, n) return void(Y(t) && V[t.scheme] == t.port && (t.port = null));
                                    p = "", "file" == t.scheme ? u = ft : Y(t) && r && r.scheme == t.scheme ? u = it : Y(t) ? u = st : "/" == o[h + 1] ? (u = rt, h++) : (t.cannotBeABaseURL = !0, t.path.push(""), u = yt)
                                }
                                break;
                            case nt:
                                if (!r || r.cannotBeABaseURL && "#" != a) return "Invalid scheme";
                                if (r.cannotBeABaseURL && "#" == a) {
                                    t.scheme = r.scheme, t.path = r.path.slice(), t.query = r.query, t.fragment = "", t.cannotBeABaseURL = !0, u = wt;
                                    break
                                }
                                u = "file" == r.scheme ? ft : ot;
                                continue;
                            case it:
                                if ("/" != a || "/" != o[h + 1]) {
                                    u = ot;
                                    continue
                                }
                                u = lt, h++;
                                break;
                            case rt:
                                if ("/" == a) {
                                    u = ct;
                                    break
                                }
                                u = vt;
                                continue;
                            case ot:
                                if (t.scheme = r.scheme, a == i) t.username = r.username, t.password = r.password, t.host = r.host, t.port = r.port, t.path = r.path.slice(), t.query = r.query;
                                else if ("/" == a || "\\" == a && Y(t)) u = at;
                                else if ("?" == a) t.username = r.username, t.password = r.password, t.host = r.host, t.port = r.port, t.path = r.path.slice(), t.query = "", u = bt;
                                else {
                                    if ("#" != a) {
                                        t.username = r.username, t.password = r.password, t.host = r.host, t.port = r.port, t.path = r.path.slice(), t.path.pop(), u = vt;
                                        continue
                                    }
                                    t.username = r.username, t.password = r.password, t.host = r.host, t.port = r.port, t.path = r.path.slice(), t.query = r.query, t.fragment = "", u = wt
                                }
                                break;
                            case at:
                                if (!Y(t) || "/" != a && "\\" != a) {
                                    if ("/" != a) {
                                        t.username = r.username, t.password = r.password, t.host = r.host, t.port = r.port, u = vt;
                                        continue
                                    }
                                    u = ct
                                } else u = lt;
                                break;
                            case st:
                                if (u = lt, "/" != a || "/" != p.charAt(h + 1)) continue;
                                h++;
                                break;
                            case lt:
                                if ("/" != a && "\\" != a) {
                                    u = ct;
                                    continue
                                }
                                break;
                            case ct:
                                if ("@" == a) {
                                    g && (p = "%40" + p), g = !0, s = f(p);
                                    for (var y = 0; y < s.length; y++) {
                                        var b = s[y];
                                        if (":" != b || v) {
                                            var w = U(b, W);
                                            v ? t.password += w : t.username += w
                                        } else v = !0
                                    }
                                    p = ""
                                } else if (a == i || "/" == a || "?" == a || "#" == a || "\\" == a && Y(t)) {
                                    if (g && "" == p) return "Invalid authority";
                                    h -= f(p).length + 1, p = "", u = ut
                                } else p += a;
                                break;
                            case ut:
                            case dt:
                                if (n && "file" == t.scheme) {
                                    u = gt;
                                    continue
                                }
                                if (":" != a || m) {
                                    if (a == i || "/" == a || "?" == a || "#" == a || "\\" == a && Y(t)) {
                                        if (Y(t) && "" == p) return "Invalid host";
                                        if (n && "" == p && (G(t) || null !== t.port)) return;
                                        if (l = R(t, p)) return l;
                                        if (p = "", u = mt, n) return;
                                        continue
                                    }
                                    "[" == a ? m = !0 : "]" == a && (m = !1), p += a
                                } else {
                                    if ("" == p) return "Invalid host";
                                    if (l = R(t, p)) return l;
                                    if (p = "", u = ht, n == dt) return
                                }
                                break;
                            case ht:
                                if (!D.test(a)) {
                                    if (a == i || "/" == a || "?" == a || "#" == a || "\\" == a && Y(t) || n) {
                                        if ("" != p) {
                                            var x = parseInt(p, 10);
                                            if (x > 65535) return "Invalid port";
                                            t.port = Y(t) && x === V[t.scheme] ? null : x, p = ""
                                        }
                                        if (n) return;
                                        u = mt;
                                        continue
                                    }
                                    return "Invalid port"
                                }
                                p += a;
                                break;
                            case ft:
                                if (t.scheme = "file", "/" == a || "\\" == a) u = pt;
                                else {
                                    if (!r || "file" != r.scheme) {
                                        u = vt;
                                        continue
                                    }
                                    if (a == i) t.host = r.host, t.path = r.path.slice(), t.query = r.query;
                                    else if ("?" == a) t.host = r.host, t.path = r.path.slice(), t.query = "", u = bt;
                                    else {
                                        if ("#" != a) {
                                            K(o.slice(h).join("")) || (t.host = r.host, t.path = r.path.slice(), J(t)), u = vt;
                                            continue
                                        }
                                        t.host = r.host, t.path = r.path.slice(), t.query = r.query, t.fragment = "", u = wt
                                    }
                                }
                                break;
                            case pt:
                                if ("/" == a || "\\" == a) {
                                    u = gt;
                                    break
                                }
                                r && "file" == r.scheme && !K(o.slice(h).join("")) && (Q(r.path[0], !0) ? t.path.push(r.path[0]) : t.host = r.host), u = vt;
                                continue;
                            case gt:
                                if (a == i || "/" == a || "\\" == a || "?" == a || "#" == a) {
                                    if (!n && Q(p)) u = vt;
                                    else if ("" == p) {
                                        if (t.host = "", n) return;
                                        u = mt
                                    } else {
                                        if (l = R(t, p)) return l;
                                        if ("localhost" == t.host && (t.host = ""), n) return;
                                        p = "", u = mt
                                    }
                                    continue
                                }
                                p += a;
                                break;
                            case mt:
                                if (Y(t)) {
                                    if (u = vt, "/" != a && "\\" != a) continue
                                } else if (n || "?" != a)
                                    if (n || "#" != a) {
                                        if (a != i && (u = vt, "/" != a)) continue
                                    } else t.fragment = "", u = wt;
                                else t.query = "", u = bt;
                                break;
                            case vt:
                                if (a == i || "/" == a || "\\" == a && Y(t) || !n && ("?" == a || "#" == a)) {
                                    if (".." === (c = (c = p).toLowerCase()) || "%2e." === c || ".%2e" === c || "%2e%2e" === c ? (J(t), "/" == a || "\\" == a && Y(t) || t.path.push("")) : Z(p) ? "/" == a || "\\" == a && Y(t) || t.path.push("") : ("file" == t.scheme && !t.path.length && Q(p) && (t.host && (t.host = ""), p = p.charAt(0) + ":"), t.path.push(p)), p = "", "file" == t.scheme && (a == i || "?" == a || "#" == a))
                                        for (; t.path.length > 1 && "" === t.path[0];) t.path.shift();
                                    "?" == a ? (t.query = "", u = bt) : "#" == a && (t.fragment = "", u = wt)
                                } else p += U(a, q);
                                break;
                            case yt:
                                "?" == a ? (t.query = "", u = bt) : "#" == a ? (t.fragment = "", u = wt) : a != i && (t.path[0] += U(a, H));
                                break;
                            case bt:
                                n || "#" != a ? a != i && ("'" == a && Y(t) ? t.query += "%27" : t.query += "#" == a ? "%23" : U(a, H)) : (t.fragment = "", u = wt);
                                break;
                            case wt:
                                a != i && (t.fragment += U(a, B))
                        }
                        h++
                    }
                },
                _t = function(t) {
                    var e, n, i = u(this, _t, "URL"),
                        r = arguments.length > 1 ? arguments[1] : void 0,
                        a = String(t),
                        s = _(i, {
                            type: "URL"
                        });
                    if (void 0 !== r)
                        if (r instanceof _t) e = S(r);
                        else if (n = xt(e = {}, String(r))) throw TypeError(n);
                    if (n = xt(s, a, null, e)) throw TypeError(n);
                    var l = s.searchParams = new w,
                        c = x(l);
                    c.updateSearchParams(s.query), c.updateURL = function() {
                        s.query = String(l) || null
                    }, o || (i.href = Ct.call(i), i.origin = kt.call(i), i.protocol = Tt.call(i), i.username = At.call(i), i.password = Dt.call(i), i.host = Et.call(i), i.hostname = Mt.call(i), i.port = Ot.call(i), i.pathname = It.call(i), i.search = Pt.call(i), i.searchParams = Lt.call(i), i.hash = Nt.call(i))
                },
                St = _t.prototype,
                Ct = function() {
                    var t = S(this),
                        e = t.scheme,
                        n = t.username,
                        i = t.password,
                        r = t.host,
                        o = t.port,
                        a = t.path,
                        s = t.query,
                        l = t.fragment,
                        c = e + ":";
                    return null !== r ? (c += "//", G(t) && (c += n + (i ? ":" + i : "") + "@"), c += z(r), null !== o && (c += ":" + o)) : "file" == e && (c += "//"), c += t.cannotBeABaseURL ? a[0] : a.length ? "/" + a.join("/") : "", null !== s && (c += "?" + s), null !== l && (c += "#" + l), c
                },
                kt = function() {
                    var t = S(this),
                        e = t.scheme,
                        n = t.port;
                    if ("blob" == e) try {
                        return new URL(e.path[0]).origin
                    } catch (t) {
                        return "null"
                    }
                    return "file" != e && Y(t) ? e + "://" + z(t.host) + (null !== n ? ":" + n : "") : "null"
                },
                Tt = function() {
                    return S(this).scheme + ":"
                },
                At = function() {
                    return S(this).username
                },
                Dt = function() {
                    return S(this).password
                },
                Et = function() {
                    var t = S(this),
                        e = t.host,
                        n = t.port;
                    return null === e ? "" : null === n ? z(e) : z(e) + ":" + n
                },
                Mt = function() {
                    var t = S(this).host;
                    return null === t ? "" : z(t)
                },
                Ot = function() {
                    var t = S(this).port;
                    return null === t ? "" : String(t)
                },
                It = function() {
                    var t = S(this),
                        e = t.path;
                    return t.cannotBeABaseURL ? e[0] : e.length ? "/" + e.join("/") : ""
                },
                Pt = function() {
                    var t = S(this).query;
                    return t ? "?" + t : ""
                },
                Lt = function() {
                    return S(this).searchParams
                },
                Nt = function() {
                    var t = S(this).fragment;
                    return t ? "#" + t : ""
                },
                Ft = function(t, e) {
                    return {
                        get: t,
                        set: e,
                        configurable: !0,
                        enumerable: !0
                    }
                };
            if (o && l(St, {
                    href: Ft(Ct, (function(t) {
                        var e = S(this),
                            n = String(t),
                            i = xt(e, n);
                        if (i) throw TypeError(i);
                        x(e.searchParams).updateSearchParams(e.query)
                    })),
                    origin: Ft(kt),
                    protocol: Ft(Tt, (function(t) {
                        var e = S(this);
                        xt(e, String(t) + ":", tt)
                    })),
                    username: Ft(At, (function(t) {
                        var e = S(this),
                            n = f(String(t));
                        if (!X(e)) {
                            e.username = "";
                            for (var i = 0; i < n.length; i++) e.username += U(n[i], W)
                        }
                    })),
                    password: Ft(Dt, (function(t) {
                        var e = S(this),
                            n = f(String(t));
                        if (!X(e)) {
                            e.password = "";
                            for (var i = 0; i < n.length; i++) e.password += U(n[i], W)
                        }
                    })),
                    host: Ft(Et, (function(t) {
                        var e = S(this);
                        e.cannotBeABaseURL || xt(e, String(t), ut)
                    })),
                    hostname: Ft(Mt, (function(t) {
                        var e = S(this);
                        e.cannotBeABaseURL || xt(e, String(t), dt)
                    })),
                    port: Ft(Ot, (function(t) {
                        var e = S(this);
                        X(e) || ("" == (t = String(t)) ? e.port = null : xt(e, t, ht))
                    })),
                    pathname: Ft(It, (function(t) {
                        var e = S(this);
                        e.cannotBeABaseURL || (e.path = [], xt(e, t + "", mt))
                    })),
                    search: Ft(Pt, (function(t) {
                        var e = S(this);
                        "" == (t = String(t)) ? e.query = null: ("?" == t.charAt(0) && (t = t.slice(1)), e.query = "", xt(e, t, bt)), x(e.searchParams).updateSearchParams(e.query)
                    })),
                    searchParams: Ft(Lt),
                    hash: Ft(Nt, (function(t) {
                        var e = S(this);
                        "" != (t = String(t)) ? ("#" == t.charAt(0) && (t = t.slice(1)), e.fragment = "", xt(e, t, wt)) : e.fragment = null
                    }))
                }), c(St, "toJSON", (function() {
                    return Ct.call(this)
                }), {
                    enumerable: !0
                }), c(St, "toString", (function() {
                    return Ct.call(this)
                }), {
                    enumerable: !0
                }), b) {
                var Rt = b.createObjectURL,
                    jt = b.revokeObjectURL;
                Rt && c(_t, "createObjectURL", (function(t) {
                    return Rt.apply(b, arguments)
                })), jt && c(_t, "revokeObjectURL", (function(t) {
                    return jt.apply(b, arguments)
                }))
            }
            m(_t, "URL"), r({
                global: !0,
                forced: !a,
                sham: !o
            }, {
                URL: _t
            })
        }, function(t, e, n) {
            "use strict";
            var i = n(8),
                r = n(0),
                o = n(72),
                a = n(67),
                s = n(61),
                l = n(10),
                c = n(31),
                u = Object.assign,
                d = Object.defineProperty;
            t.exports = !u || r((function() {
                if (i && 1 !== u({
                        b: 1
                    }, u(d({}, "a", {
                        enumerable: !0,
                        get: function() {
                            d(this, "b", {
                                value: 3,
                                enumerable: !1
                            })
                        }
                    }), {
                        b: 2
                    })).b) return !0;
                var t = {},
                    e = {},
                    n = Symbol();
                return t[n] = 7, "abcdefghijklmnopqrst".split("").forEach((function(t) {
                    e[t] = t
                })), 7 != u({}, t)[n] || "abcdefghijklmnopqrst" != o(u({}, e)).join("")
            })) ? function(t, e) {
                for (var n = l(t), r = arguments.length, u = 1, d = a.f, h = s.f; r > u;)
                    for (var f, p = c(arguments[u++]), g = d ? o(p).concat(d(p)) : o(p), m = g.length, v = 0; m > v;) f = g[v++], i && !h.call(p, f) || (n[f] = p[f]);
                return n
            } : u
        }, function(t, e, n) {
            "use strict";
            var i = n(36),
                r = n(10),
                o = n(163),
                a = n(90),
                s = n(4),
                l = n(35),
                c = n(41);
            t.exports = function(t) {
                var e, n, u, d, h, f, p = r(t),
                    g = "function" == typeof this ? this : Array,
                    m = arguments.length,
                    v = m > 1 ? arguments[1] : void 0,
                    y = void 0 !== v,
                    b = c(p),
                    w = 0;
                if (y && (v = i(v, m > 2 ? arguments[2] : void 0, 2)), null == b || g == Array && a(b))
                    for (n = new g(e = s(p.length)); e > w; w++) f = y ? v(p[w], w) : p[w], l(n, w, f);
                else
                    for (h = (d = b.call(p)).next, n = new g; !(u = h.call(d)).done; w++) f = y ? o(d, v, [u.value, w], !0) : u.value, l(n, w, f);
                return n.length = w, n
            }
        }, function(t, e, n) {
            var i = n(6),
                r = n(164);
            t.exports = function(t, e, n, o) {
                try {
                    return o ? e(i(n)[0], n[1]) : e(n)
                } catch (e) {
                    throw r(t), e
                }
            }
        }, function(t, e, n) {
            var i = n(6);
            t.exports = function(t) {
                var e = t.return;
                if (void 0 !== e) return i(e.call(t)).value
            }
        }, function(t, e, n) {
            "use strict";
            var i = /[^\0-\u007E]/,
                r = /[.\u3002\uFF0E\uFF61]/g,
                o = "Overflow: input needs wider integers to process",
                a = Math.floor,
                s = String.fromCharCode,
                l = function(t) {
                    return t + 22 + 75 * (t < 26)
                },
                c = function(t, e, n) {
                    var i = 0;
                    for (t = n ? a(t / 700) : t >> 1, t += a(t / e); t > 455; i += 36) t = a(t / 35);
                    return a(i + 36 * t / (t + 38))
                },
                u = function(t) {
                    var e, n, i = [],
                        r = (t = function(t) {
                            for (var e = [], n = 0, i = t.length; n < i;) {
                                var r = t.charCodeAt(n++);
                                if (r >= 55296 && r <= 56319 && n < i) {
                                    var o = t.charCodeAt(n++);
                                    56320 == (64512 & o) ? e.push(((1023 & r) << 10) + (1023 & o) + 65536) : (e.push(r), n--)
                                } else e.push(r)
                            }
                            return e
                        }(t)).length,
                        u = 128,
                        d = 0,
                        h = 72;
                    for (e = 0; e < t.length; e++)(n = t[e]) < 128 && i.push(s(n));
                    var f = i.length,
                        p = f;
                    for (f && i.push("-"); p < r;) {
                        var g = 2147483647;
                        for (e = 0; e < t.length; e++)(n = t[e]) >= u && n < g && (g = n);
                        var m = p + 1;
                        if (g - u > a((2147483647 - d) / m)) throw RangeError(o);
                        for (d += (g - u) * m, u = g, e = 0; e < t.length; e++) {
                            if ((n = t[e]) < u && ++d > 2147483647) throw RangeError(o);
                            if (n == u) {
                                for (var v = d, y = 36;; y += 36) {
                                    var b = y <= h ? 1 : y >= h + 26 ? 26 : y - h;
                                    if (v < b) break;
                                    var w = v - b,
                                        x = 36 - b;
                                    i.push(s(l(b + w % x))), v = a(w / x)
                                }
                                i.push(s(l(v))), h = c(d, m, p == f), d = 0, ++p
                            }
                        }++d, ++u
                    }
                    return i.join("")
                };
            t.exports = function(t) {
                var e, n, o = [],
                    a = t.toLowerCase().replace(r, ".").split(".");
                for (e = 0; e < a.length; e++) n = a[e], o.push(i.test(n) ? "xn--" + u(n) : n);
                return o.join(".")
            }
        }, function(t, e, n) {
            "use strict";
            n(37);
            var i = n(5),
                r = n(24),
                o = n(93),
                a = n(14),
                s = n(79),
                l = n(28),
                c = n(74),
                u = n(17),
                d = n(39),
                h = n(7),
                f = n(36),
                p = n(30),
                g = n(6),
                m = n(9),
                v = n(38),
                y = n(20),
                b = n(167),
                w = n(41),
                x = n(3),
                _ = r("fetch"),
                S = r("Headers"),
                C = x("iterator"),
                k = u.set,
                T = u.getterFor("URLSearchParams"),
                A = u.getterFor("URLSearchParamsIterator"),
                D = /\+/g,
                E = Array(4),
                M = function(t) {
                    return E[t - 1] || (E[t - 1] = RegExp("((?:%[\\da-f]{2}){" + t + "})", "gi"))
                },
                O = function(t) {
                    try {
                        return decodeURIComponent(t)
                    } catch (e) {
                        return t
                    }
                },
                I = function(t) {
                    var e = t.replace(D, " "),
                        n = 4;
                    try {
                        return decodeURIComponent(e)
                    } catch (t) {
                        for (; n;) e = e.replace(M(n--), O);
                        return e
                    }
                },
                P = /[!'()~]|%20/g,
                L = {
                    "!": "%21",
                    "'": "%27",
                    "(": "%28",
                    ")": "%29",
                    "~": "%7E",
                    "%20": "+"
                },
                N = function(t) {
                    return L[t]
                },
                F = function(t) {
                    return encodeURIComponent(t).replace(P, N)
                },
                R = function(t, e) {
                    if (e)
                        for (var n, i, r = e.split("&"), o = 0; o < r.length;)(n = r[o++]).length && (i = n.split("="), t.push({
                            key: I(i.shift()),
                            value: I(i.join("="))
                        }))
                },
                j = function(t) {
                    this.entries.length = 0, R(this.entries, t)
                },
                $ = function(t, e) {
                    if (t < e) throw TypeError("Not enough arguments")
                },
                z = c((function(t, e) {
                    k(this, {
                        type: "URLSearchParamsIterator",
                        iterator: b(T(t).entries),
                        kind: e
                    })
                }), "Iterator", (function() {
                    var t = A(this),
                        e = t.kind,
                        n = t.iterator.next(),
                        i = n.value;
                    return n.done || (n.value = "keys" === e ? i.key : "values" === e ? i.value : [i.key, i.value]), n
                })),
                H = function() {
                    d(this, H, "URLSearchParams");
                    var t, e, n, i, r, o, a, s, l, c = arguments.length > 0 ? arguments[0] : void 0,
                        u = this,
                        f = [];
                    if (k(u, {
                            type: "URLSearchParams",
                            entries: f,
                            updateURL: function() {},
                            updateSearchParams: j
                        }), void 0 !== c)
                        if (m(c))
                            if ("function" == typeof(t = w(c)))
                                for (n = (e = t.call(c)).next; !(i = n.call(e)).done;) {
                                    if ((a = (o = (r = b(g(i.value))).next).call(r)).done || (s = o.call(r)).done || !o.call(r).done) throw TypeError("Expected sequence with length 2");
                                    f.push({
                                        key: a.value + "",
                                        value: s.value + ""
                                    })
                                } else
                                    for (l in c) h(c, l) && f.push({
                                        key: l,
                                        value: c[l] + ""
                                    });
                            else R(f, "string" == typeof c ? "?" === c.charAt(0) ? c.slice(1) : c : c + "")
                },
                B = H.prototype;
            s(B, {
                append: function(t, e) {
                    $(arguments.length, 2);
                    var n = T(this);
                    n.entries.push({
                        key: t + "",
                        value: e + ""
                    }), n.updateURL()
                },
                delete: function(t) {
                    $(arguments.length, 1);
                    for (var e = T(this), n = e.entries, i = t + "", r = 0; r < n.length;) n[r].key === i ? n.splice(r, 1) : r++;
                    e.updateURL()
                },
                get: function(t) {
                    $(arguments.length, 1);
                    for (var e = T(this).entries, n = t + "", i = 0; i < e.length; i++)
                        if (e[i].key === n) return e[i].value;
                    return null
                },
                getAll: function(t) {
                    $(arguments.length, 1);
                    for (var e = T(this).entries, n = t + "", i = [], r = 0; r < e.length; r++) e[r].key === n && i.push(e[r].value);
                    return i
                },
                has: function(t) {
                    $(arguments.length, 1);
                    for (var e = T(this).entries, n = t + "", i = 0; i < e.length;)
                        if (e[i++].key === n) return !0;
                    return !1
                },
                set: function(t, e) {
                    $(arguments.length, 1);
                    for (var n, i = T(this), r = i.entries, o = !1, a = t + "", s = e + "", l = 0; l < r.length; l++)(n = r[l]).key === a && (o ? r.splice(l--, 1) : (o = !0, n.value = s));
                    o || r.push({
                        key: a,
                        value: s
                    }), i.updateURL()
                },
                sort: function() {
                    var t, e, n, i = T(this),
                        r = i.entries,
                        o = r.slice();
                    for (r.length = 0, n = 0; n < o.length; n++) {
                        for (t = o[n], e = 0; e < n; e++)
                            if (r[e].key > t.key) {
                                r.splice(e, 0, t);
                                break
                            }
                        e === n && r.push(t)
                    }
                    i.updateURL()
                },
                forEach: function(t) {
                    for (var e, n = T(this).entries, i = f(t, arguments.length > 1 ? arguments[1] : void 0, 3), r = 0; r < n.length;) i((e = n[r++]).value, e.key, this)
                },
                keys: function() {
                    return new z(this, "keys")
                },
                values: function() {
                    return new z(this, "values")
                },
                entries: function() {
                    return new z(this, "entries")
                }
            }, {
                enumerable: !0
            }), a(B, C, B.entries), a(B, "toString", (function() {
                for (var t, e = T(this).entries, n = [], i = 0; i < e.length;) t = e[i++], n.push(F(t.key) + "=" + F(t.value));
                return n.join("&")
            }), {
                enumerable: !0
            }), l(H, "URLSearchParams"), i({
                global: !0,
                forced: !o
            }, {
                URLSearchParams: H
            }), o || "function" != typeof _ || "function" != typeof S || i({
                global: !0,
                enumerable: !0,
                forced: !0
            }, {
                fetch: function(t) {
                    var e, n, i, r = [t];
                    return arguments.length > 1 && (m(e = arguments[1]) && (n = e.body, "URLSearchParams" === p(n) && ((i = e.headers ? new S(e.headers) : new S).has("content-type") || i.set("content-type", "application/x-www-form-urlencoded;charset=UTF-8"), e = v(e, {
                        body: y(0, String(n)),
                        headers: y(0, i)
                    }))), r.push(e)), _.apply(this, r)
                }
            }), t.exports = {
                URLSearchParams: H,
                getState: T
            }
        }, function(t, e, n) {
            var i = n(6),
                r = n(41);
            t.exports = function(t) {
                var e = r(t);
                if ("function" != typeof e) throw TypeError(String(t) + " is not iterable");
                return i(e.call(t))
            }
        }, function(t, e, n) {
            "use strict";

            function i(t, e) {
                var n;
                if ("undefined" == typeof Symbol || null == t[Symbol.iterator]) {
                    if (Array.isArray(t) || (n = function(t, e) {
                            if (t) {
                                if ("string" == typeof t) return r(t, e);
                                var n = Object.prototype.toString.call(t).slice(8, -1);
                                return "Object" === n && t.constructor && (n = t.constructor.name), "Map" === n || "Set" === n ? Array.from(t) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? r(t, e) : void 0
                            }
                        }(t)) || e && t && "number" == typeof t.length) {
                        n && (t = n);
                        var i = 0,
                            o = function() {};
                        return {
                            s: o,
                            n: function() {
                                return i >= t.length ? {
                                    done: !0
                                } : {
                                    done: !1,
                                    value: t[i++]
                                }
                            },
                            e: function(t) {
                                throw t
                            },
                            f: o
                        }
                    }
                    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 a, s = !0,
                    l = !1;
                return {
                    s: function() {
                        n = t[Symbol.iterator]()
                    },
                    n: function() {
                        var t = n.next();
                        return s = t.done, t
                    },
                    e: function(t) {
                        l = !0, a = t
                    },
                    f: function() {
                        try {
                            s || null == n.return || n.return()
                        } finally {
                            if (l) throw a
                        }
                    }
                }
            }

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

            function o(t, e) {
                for (var n = 0; n < e.length; n++) {
                    var i = e[n];
                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                }
            }
            n.r(e), n.d(e, "Dropzone", (function() {
                return w
            })), n(95), n(104), n(105), n(106), n(37), n(110), n(111), n(77), n(112), n(114), n(83), n(115), n(116), n(56), n(119), n(85), n(86), n(120), n(122), n(87), n(126), n(133), n(135), n(136), n(137), n(138), n(139), n(140), n(141), n(142), n(143), n(144), n(145), n(147), n(148), n(149), n(150), n(151), n(152), n(153), n(154), n(155), n(156), n(157), n(158), n(159), n(160);
            var a = function() {
                function t() {
                    ! function(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }(this, t)
                }
                var e, n;
                return e = t, (n = [{
                    key: "on",
                    value: function(t, e) {
                        return this._callbacks = this._callbacks || {}, this._callbacks[t] || (this._callbacks[t] = []), this._callbacks[t].push(e), this
                    }
                }, {
                    key: "emit",
                    value: function(t) {
                        this._callbacks = this._callbacks || {};
                        var e = this._callbacks[t];
                        if (e) {
                            for (var n = arguments.length, r = new Array(n > 1 ? n - 1 : 0), o = 1; o < n; o++) r[o - 1] = arguments[o];
                            var a, s = i(e, !0);
                            try {
                                for (s.s(); !(a = s.n()).done;) {
                                    var l = a.value;
                                    l.apply(this, r)
                                }
                            } catch (t) {
                                s.e(t)
                            } finally {
                                s.f()
                            }
                        }
                        return this
                    }
                }, {
                    key: "off",
                    value: function(t, e) {
                        if (!this._callbacks || 0 === arguments.length) return this._callbacks = {}, this;
                        var n = this._callbacks[t];
                        if (!n) return this;
                        if (1 === arguments.length) return delete this._callbacks[t], this;
                        for (var i = 0; i < n.length; i++) {
                            var r = n[i];
                            if (r === e) {
                                n.splice(i, 1);
                                break
                            }
                        }
                        return this
                    }
                }]) && o(e.prototype, n), t
            }();

            function s(t, e) {
                var n;
                if ("undefined" == typeof Symbol || null == t[Symbol.iterator]) {
                    if (Array.isArray(t) || (n = function(t, e) {
                            if (t) {
                                if ("string" == typeof t) return l(t, e);
                                var n = Object.prototype.toString.call(t).slice(8, -1);
                                return "Object" === n && t.constructor && (n = t.constructor.name), "Map" === n || "Set" === n ? Array.from(t) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? l(t, e) : void 0
                            }
                        }(t)) || e && t && "number" == typeof t.length) {
                        n && (t = n);
                        var i = 0,
                            r = function() {};
                        return {
                            s: r,
                            n: function() {
                                return i >= t.length ? {
                                    done: !0
                                } : {
                                    done: !1,
                                    value: t[i++]
                                }
                            },
                            e: function(t) {
                                throw t
                            },
                            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 = t[Symbol.iterator]()
                    },
                    n: function() {
                        var t = n.next();
                        return a = t.done, t
                    },
                    e: function(t) {
                        s = !0, o = t
                    },
                    f: function() {
                        try {
                            a || null == n.return || n.return()
                        } finally {
                            if (s) throw o
                        }
                    }
                }
            }

            function l(t, e) {
                (null == e || e > t.length) && (e = t.length);
                for (var n = 0, i = new Array(e); n < e; n++) i[n] = t[n];
                return i
            }
            var c = {
                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,
                disablePreviews: !1,
                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(t, e, 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(t, e) {
                    return e()
                },
                chunksUploaded: function(t, e) {
                    e()
                },
                fallback: function() {
                    var t;
                    this.element.className = "".concat(this.element.className, " dz-browser-not-supported");
                    var e, n = s(this.element.getElementsByTagName("div"), !0);
                    try {
                        for (n.s(); !(e = n.n()).done;) {
                            var i = e.value;
                            if (/(^| )dz-message($| )/.test(i.className)) {
                                t = i, i.className = "dz-message";
                                break
                            }
                        }
                    } catch (t) {
                        n.e(t)
                    } finally {
                        n.f()
                    }
                    t || (t = w.createElement('<div class="dz-message"><span></span></div>'), this.element.appendChild(t));
                    var r = t.getElementsByTagName("span")[0];
                    return r && (null != r.textContent ? r.textContent = this.options.dictFallbackMessage : null != r.innerText && (r.innerText = this.options.dictFallbackMessage)), this.element.appendChild(this.getFallbackForm())
                },
                resize: function(t, e, n, i) {
                    var r = {
                            srcX: 0,
                            srcY: 0,
                            srcWidth: t.width,
                            srcHeight: t.height
                        },
                        o = t.width / t.height;
                    null == e && null == n ? (e = r.srcWidth, n = r.srcHeight) : null == e ? e = n * o : null == n && (n = e / o);
                    var a = (e = Math.min(e, r.srcWidth)) / (n = Math.min(n, r.srcHeight));
                    if (r.srcWidth > e || r.srcHeight > n)
                        if ("crop" === i) o > a ? (r.srcHeight = t.height, r.srcWidth = r.srcHeight * a) : (r.srcWidth = t.width, r.srcHeight = r.srcWidth / a);
                        else {
                            if ("contain" !== i) throw new Error("Unknown resizeMethod '".concat(i, "'"));
                            o > a ? n = e / o : e = n * o
                        }
                    return r.srcX = (t.width - r.srcWidth) / 2, r.srcY = (t.height - r.srcHeight) / 2, r.trgWidth = e, r.trgHeight = n, r
                },
                transformFile: function(t, e) {
                    return (this.options.resizeWidth || this.options.resizeHeight) && t.type.match(/image.*/) ? this.resizeImage(t, this.options.resizeWidth, this.options.resizeHeight, this.options.resizeMethod, e) : e(t)
                },
                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(t) {
                    return this.element.classList.remove("dz-drag-hover")
                },
                dragstart: function(t) {},
                dragend: function(t) {
                    return this.element.classList.remove("dz-drag-hover")
                },
                dragenter: function(t) {
                    return this.element.classList.add("dz-drag-hover")
                },
                dragover: function(t) {
                    return this.element.classList.add("dz-drag-hover")
                },
                dragleave: function(t) {
                    return this.element.classList.remove("dz-drag-hover")
                },
                paste: function(t) {},
                reset: function() {
                    return this.element.classList.remove("dz-started")
                },
                addedfile: function(t) {
                    var e = this;
                    if (this.element === this.previewsContainer && this.element.classList.add("dz-started"), this.previewsContainer && !this.options.disablePreviews) {
                        t.previewElement = w.createElement(this.options.previewTemplate.trim()), t.previewTemplate = t.previewElement, this.previewsContainer.appendChild(t.previewElement);
                        var n, i = s(t.previewElement.querySelectorAll("[data-dz-name]"), !0);
                        try {
                            for (i.s(); !(n = i.n()).done;) {
                                var r = n.value;
                                r.textContent = t.name
                            }
                        } catch (t) {
                            i.e(t)
                        } finally {
                            i.f()
                        }
                        var o, a = s(t.previewElement.querySelectorAll("[data-dz-size]"), !0);
                        try {
                            for (a.s(); !(o = a.n()).done;)(r = o.value).innerHTML = this.filesize(t.size)
                        } catch (t) {
                            a.e(t)
                        } finally {
                            a.f()
                        }
                        this.options.addRemoveLinks && (t._removeLink = w.createElement('<a class="dz-remove" href="javascript:undefined;" data-dz-remove>'.concat(this.options.dictRemoveFile, "</a>")), t.previewElement.appendChild(t._removeLink));
                        var l, c = function(n) {
                                return n.preventDefault(), n.stopPropagation(), t.status === w.UPLOADING ? w.confirm(e.options.dictCancelUploadConfirmation, (function() {
                                    return e.removeFile(t)
                                })) : e.options.dictRemoveFileConfirmation ? w.confirm(e.options.dictRemoveFileConfirmation, (function() {
                                    return e.removeFile(t)
                                })) : e.removeFile(t)
                            },
                            u = s(t.previewElement.querySelectorAll("[data-dz-remove]"), !0);
                        try {
                            for (u.s(); !(l = u.n()).done;) l.value.addEventListener("click", c)
                        } catch (t) {
                            u.e(t)
                        } finally {
                            u.f()
                        }
                    }
                },
                removedfile: function(t) {
                    return null != t.previewElement && null != t.previewElement.parentNode && t.previewElement.parentNode.removeChild(t.previewElement), this._updateMaxFilesReachedClass()
                },
                thumbnail: function(t, e) {
                    if (t.previewElement) {
                        t.previewElement.classList.remove("dz-file-preview");
                        var n, i = s(t.previewElement.querySelectorAll("[data-dz-thumbnail]"), !0);
                        try {
                            for (i.s(); !(n = i.n()).done;) {
                                var r = n.value;
                                r.alt = t.name, r.src = e
                            }
                        } catch (t) {
                            i.e(t)
                        } finally {
                            i.f()
                        }
                        return setTimeout((function() {
                            return t.previewElement.classList.add("dz-image-preview")
                        }), 1)
                    }
                },
                error: function(t, e) {
                    if (t.previewElement) {
                        t.previewElement.classList.add("dz-error"), "string" != typeof e && e.error && (e = e.error);
                        var n, i = s(t.previewElement.querySelectorAll("[data-dz-errormessage]"), !0);
                        try {
                            for (i.s(); !(n = i.n()).done;) n.value.textContent = e
                        } catch (t) {
                            i.e(t)
                        } finally {
                            i.f()
                        }
                    }
                },
                errormultiple: function() {},
                processing: function(t) {
                    if (t.previewElement && (t.previewElement.classList.add("dz-processing"), t._removeLink)) return t._removeLink.innerHTML = this.options.dictCancelUpload
                },
                processingmultiple: function() {},
                uploadprogress: function(t, e, n) {
                    if (t.previewElement) {
                        var i, r = s(t.previewElement.querySelectorAll("[data-dz-uploadprogress]"), !0);
                        try {
                            for (r.s(); !(i = r.n()).done;) {
                                var o = i.value;
                                "PROGRESS" === o.nodeName ? o.value = e : o.style.width = "".concat(e, "%")
                            }
                        } catch (t) {
                            r.e(t)
                        } finally {
                            r.f()
                        }
                    }
                },
                totaluploadprogress: function() {},
                sending: function() {},
                sendingmultiple: function() {},
                success: function(t) {
                    if (t.previewElement) return t.previewElement.classList.add("dz-success")
                },
                successmultiple: function() {},
                canceled: function(t) {
                    return this.emit("error", t, this.options.dictUploadCanceled)
                },
                canceledmultiple: function() {},
                complete: function(t) {
                    if (t._removeLink && (t._removeLink.innerHTML = this.options.dictRemoveFile), t.previewElement) return t.previewElement.classList.add("dz-complete")
                },
                completemultiple: function() {},
                maxfilesexceeded: function() {},
                maxfilesreached: function() {},
                queuecomplete: function() {},
                addedfiles: function() {}
            };

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

            function d(t, e) {
                var n;
                if ("undefined" == typeof Symbol || null == t[Symbol.iterator]) {
                    if (Array.isArray(t) || (n = function(t, e) {
                            if (t) {
                                if ("string" == typeof t) return h(t, e);
                                var n = Object.prototype.toString.call(t).slice(8, -1);
                                return "Object" === n && t.constructor && (n = t.constructor.name), "Map" === n || "Set" === n ? Array.from(t) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? h(t, e) : void 0
                            }
                        }(t)) || e && t && "number" == typeof t.length) {
                        n && (t = n);
                        var i = 0,
                            r = function() {};
                        return {
                            s: r,
                            n: function() {
                                return i >= t.length ? {
                                    done: !0
                                } : {
                                    done: !1,
                                    value: t[i++]
                                }
                            },
                            e: function(t) {
                                throw t
                            },
                            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 = t[Symbol.iterator]()
                    },
                    n: function() {
                        var t = n.next();
                        return a = t.done, t
                    },
                    e: function(t) {
                        s = !0, o = t
                    },
                    f: function() {
                        try {
                            a || null == n.return || n.return()
                        } finally {
                            if (s) throw o
                        }
                    }
                }
            }

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

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

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

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

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

            function v(t, e) {
                return !e || "object" !== u(e) && "function" != typeof e ? y(t) : e
            }

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

            function b(t) {
                return (b = Object.setPrototypeOf ? Object.getPrototypeOf : function(t) {
                    return t.__proto__ || Object.getPrototypeOf(t)
                })(t)
            }
            var w = function(t) {
                ! function(t, e) {
                    if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
                    t.prototype = Object.create(e && e.prototype, {
                        constructor: {
                            value: t,
                            writable: !0,
                            configurable: !0
                        }
                    }), e && m(t, e)
                }(n, t);
                var e = function(t) {
                    var e = function() {
                        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 (t) {
                            return !1
                        }
                    }();
                    return function() {
                        var n, i = b(t);
                        if (e) {
                            var r = b(this).constructor;
                            n = Reflect.construct(i, arguments, r)
                        } else n = i.apply(this, arguments);
                        return v(this, n)
                    }
                }(n);

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

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

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

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

        function a(e, n) {
            function i(t, e) {
                return e.toLowerCase()
            }
            var r = t(e).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(e) {
            var n = {};
            if (g[e] || (e = e.split("-")[0], g[e])) {
                var i = g[e];
                return t.each(p, (function(t, e) {
                    e in i && (n[e] = i[e])
                })), n
            }
        }
        var l = function() {
                var e = {
                    get: function(t) {
                        return this.slice(t)[0]
                    },
                    contains: function(t) {
                        for (var e = t && t.valueOf(), n = 0, i = this.length; n < i; n++)
                            if (0 <= this[n].valueOf() - e && this[n].valueOf() - e < 864e5) return n;
                        return -1
                    },
                    remove: function(t) {
                        this.splice(t, 1)
                    },
                    replace: function(e) {
                        e && (t.isArray(e) || (e = [e]), this.clear(), this.push.apply(this, e))
                    },
                    clear: function() {
                        this.length = 0
                    },
                    copy: function() {
                        var t = new l;
                        return t.replace(this), t
                    }
                };
                return function() {
                    var n = [];
                    return n.push.apply(n, arguments), t.extend(n, e), n
                }
            }(),
            c = function(e, n) {
                t.data(e, "datepicker", this), this._events = [], this._secondaryEvents = [], this._process_options(n), this.dates = new l, this.viewDate = this.o.defaultViewDate, this.focusDate = null, this.element = t(e), 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 = t(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(t, e) {
                    return Number(e) + 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(e) {
                return t.each(m.viewModes, (function(n, i) {
                    if (e === n || -1 !== t.inArray(e, i.names)) return e = n, !1
                })), e
            },
            _resolveDaysOfWeek: function(e) {
                return t.isArray(e) || (e = e.split(/[,\s]*/)), t.map(e, Number)
            },
            _check_template: function(n) {
                try {
                    return n !== e && "" !== n && ((n.match(/[<>]/g) || []).length <= 0 || t(n).length > 0)
                } catch (t) {
                    return !1
                }
            },
            _process_options: function(e) {
                this._o = t.extend({}, this._o, e);
                var r = this.o = t.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 || [], t.isArray(r.datesDisabled) || (r.datesDisabled = r.datesDisabled.split(",")), r.datesDisabled = t.map(r.datesDisabled, (function(t) {
                    return m.parseDate(t, a, r.language, r.assumeNearbyYear)
                }));
                var s = String(r.orientation).toLowerCase().split(/\s+/g),
                    l = r.orientation.toLowerCase();
                if (s = t.grep(s, (function(t) {
                        return /^auto|left|right|top|bottom$/.test(t)
                    })), 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 = t.grep(s, (function(t) {
                        return /^left|right$/.test(t)
                    })), r.orientation.x = l[0] || "auto", l = t.grep(s, (function(t) {
                        return /^top|bottom$/.test(t)
                    })), 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(t) {
                for (var n, i, r, o = 0; o < t.length; o++) n = t[o][0], 2 === t[o].length ? (i = e, r = t[o][1]) : 3 === t[o].length && (i = t[o][1], r = t[o][2]), n.on(r, i)
            },
            _unapplyEvents: function(t) {
                for (var n, i, r, o = 0; o < t.length; o++) n = t[o][0], 2 === t[o].length ? (r = e, i = t[o][1]) : 3 === t[o].length && (r = t[o][1], i = t[o][2]), n.off(i, r)
            },
            _buildEvents: function() {
                var e = {
                    keyup: t.proxy((function(e) {
                        -1 === t.inArray(e.keyCode, [27, 37, 39, 38, 40, 32, 13, 9]) && this.update()
                    }), this),
                    keydown: t.proxy(this.keydown, this),
                    paste: t.proxy(this.paste, this)
                };
                !0 === this.o.showOnFocus && (e.focus = t.proxy(this.show, this)), this.isInput ? this._events = [
                    [this.element, e]
                ] : this.component && this.inputField.length ? this._events = [
                    [this.inputField, e],
                    [this.component, {
                        click: t.proxy(this.show, this)
                    }]
                ] : this._events = [
                    [this.element, {
                        click: t.proxy(this.show, this),
                        keydown: t.proxy(this.keydown, this)
                    }]
                ], this._events.push([this.element, "*", {
                    blur: t.proxy((function(t) {
                        this._focused_from = t.target
                    }), this)
                }], [this.element, {
                    blur: t.proxy((function(t) {
                        this._focused_from = t.target
                    }), this)
                }]), this.o.immediateUpdates && this._events.push([this.element, {
                    "changeYear changeMonth": t.proxy((function(t) {
                        this.update(t.date)
                    }), this)
                }]), this._secondaryEvents = [
                    [this.picker, {
                        click: t.proxy(this.click, this)
                    }],
                    [this.picker, ".prev, .next", {
                        click: t.proxy(this.navArrowsClick, this)
                    }],
                    [this.picker, ".day:not(.disabled)", {
                        click: t.proxy(this.dayCellClick, this)
                    }],
                    [t(window), {
                        resize: t.proxy(this.place, this)
                    }],
                    [t(document), {
                        "mousedown touchstart": t.proxy((function(t) {
                            this.element.is(t.target) || this.element.find(t.target).length || this.picker.is(t.target) || this.picker.find(t.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(e, n) {
                var i = n || this.dates.get(-1),
                    r = this._utc_to_local(i);
                this.element.trigger({
                    type: e,
                    date: r,
                    viewMode: this.viewMode,
                    dates: t.map(this.dates, this._utc_to_local),
                    format: t.proxy((function(t, e) {
                        0 === arguments.length ? (t = this.dates.length - 1, e = this.o.format) : "string" == typeof t && (e = t, t = this.dates.length - 1), e = e || this.o.format;
                        var n = this.dates.get(t);
                        return m.formatDate(n, e, 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 && t(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(e) {
                var n;
                if (e.originalEvent.clipboardData && e.originalEvent.clipboardData.types && -1 !== t.inArray("text/plain", e.originalEvent.clipboardData.types)) n = e.originalEvent.clipboardData.getData("text/plain");
                else {
                    if (!window.clipboardData) return;
                    n = window.clipboardData.getData("Text")
                }
                this.setDate(n), this.update(), e.preventDefault()
            },
            _utc_to_local: function(t) {
                if (!t) return t;
                var e = new Date(t.getTime() + 6e4 * t.getTimezoneOffset());
                return e.getTimezoneOffset() !== t.getTimezoneOffset() && (e = new Date(t.getTime() + 6e4 * e.getTimezoneOffset())), e
            },
            _local_to_utc: function(t) {
                return t && new Date(t.getTime() - 6e4 * t.getTimezoneOffset())
            },
            _zero_time: function(t) {
                return t && new Date(t.getFullYear(), t.getMonth(), t.getDate())
            },
            _zero_utc_time: function(t) {
                return t && n(t.getUTCFullYear(), t.getUTCMonth(), t.getUTCDate())
            },
            getDates: function() {
                return t.map(this.dates, this._utc_to_local)
            },
            getUTCDates: function() {
                return t.map(this.dates, (function(t) {
                    return new Date(t)
                }))
            },
            getDate: function() {
                return this._utc_to_local(this.getUTCDate())
            },
            getUTCDate: function() {
                var t = this.dates.get(-1);
                return t !== e ? new Date(t) : null
            },
            clearDates: function() {
                this.inputField.val(""), this.update(), this._trigger("changeDate"), this.o.autoclose && this.hide()
            },
            setDates: function() {
                var e = t.isArray(arguments[0]) ? arguments[0] : arguments;
                return this.update.apply(this, e), this._trigger("changeDate"), this.setValue(), this
            },
            setUTCDates: function() {
                var e = t.isArray(arguments[0]) ? arguments[0] : arguments;
                return this.setDates.apply(this, t.map(e, 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 t = this.getFormattedDate();
                return this.inputField.val(t), this
            },
            getFormattedDate: function(n) {
                n === e && (n = this.o.format);
                var i = this.o.language;
                return t.map(this.dates, (function(t) {
                    return m.formatDate(t, n, i)
                })).join(this.o.multidateSeparator)
            },
            getStartDate: function() {
                return this.o.startDate
            },
            setStartDate: function(t) {
                return this._process_options({
                    startDate: t
                }), this.update(), this.updateNavArrows(), this
            },
            getEndDate: function() {
                return this.o.endDate
            },
            setEndDate: function(t) {
                return this._process_options({
                    endDate: t
                }), this.update(), this.updateNavArrows(), this
            },
            setDaysOfWeekDisabled: function(t) {
                return this._process_options({
                    daysOfWeekDisabled: t
                }), this.update(), this
            },
            setDaysOfWeekHighlighted: function(t) {
                return this._process_options({
                    daysOfWeekHighlighted: t
                }), this.update(), this
            },
            setDatesDisabled: function(t) {
                return this._process_options({
                    datesDisabled: t
                }), this.update(), this
            },
            place: function() {
                if (this.isInline) return this;
                var e = this.picker.outerWidth(),
                    n = this.picker.outerHeight(),
                    i = t(this.o.container),
                    r = i.width(),
                    o = "body" === this.o.container ? t(document).scrollTop() : i.scrollTop(),
                    a = i.offset(),
                    s = [0];
                this.element.parents().each((function() {
                    var e = t(this).css("z-index");
                    "auto" !== e && 0 !== Number(e) && s.push(Number(e))
                }));
                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 -= e - d)) : c.left < 0 ? (this.picker.addClass("datepicker-orient-left"), h -= c.left - 10) : h + e > r ? (this.picker.addClass("datepicker-orient-right"), h += d - e) : 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 e = this.dates.copy(),
                    n = [],
                    i = !1;
                return arguments.length ? (t.each(arguments, t.proxy((function(t, e) {
                    e instanceof Date && (e = this._local_to_utc(e)), n.push(e)
                }), 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 = t.map(n, t.proxy((function(t) {
                    return m.parseDate(t, this.o.format, this.o.language, this.o.assumeNearbyYear)
                }), this)), n = t.grep(n, t.proxy((function(t) {
                    return !this.dateWithinRange(t) || !t
                }), 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(e) !== String(this.dates) && i && (this._trigger("changeDate"), this.element.change()), !this.dates.length && e.length && (this._trigger("clearDate"), this.element.change()), this.fill(), this
            },
            fillDow: function() {
                if (this.o.showWeekDays) {
                    var e = this.o.weekStart,
                        n = "<tr>";
                    for (this.o.calendarWeeks && (n += '<th class="cw">&#160;</th>'); e < this.o.weekStart + 7;) n += '<th class="dow', -1 !== t.inArray(e, this.o.daysOfWeekDisabled) && (n += " disabled"), n += '">' + g[this.o.language].daysMin[e++ % 7] + "</th>";
                    n += "</tr>", this.picker.find(".datepicker-days thead").append(n)
                }
            },
            fillMonths: function() {
                for (var t = this._utc_to_local(this.viewDate), e = "", n = 0; n < 12; n++) e += '<span class="month' + (t && t.getMonth() === n ? " focused" : "") + '">' + g[this.o.language].monthsShort[n] + "</span>";
                this.picker.find(".datepicker-months td").html(e)
            },
            setRange: function(e) {
                e && e.length ? this.range = t.map(e, (function(t) {
                    return t.valueOf()
                })) : delete this.range, this.fill()
            },
            getClassNames: function(e) {
                var n = [],
                    o = this.viewDate.getUTCFullYear(),
                    a = this.viewDate.getUTCMonth(),
                    s = i();
                return e.getUTCFullYear() < o || e.getUTCFullYear() === o && e.getUTCMonth() < a ? n.push("old") : (e.getUTCFullYear() > o || e.getUTCFullYear() === o && e.getUTCMonth() > a) && n.push("new"), this.focusDate && e.valueOf() === this.focusDate.valueOf() && n.push("focused"), this.o.todayHighlight && r(e, s) && n.push("today"), -1 !== this.dates.contains(e) && n.push("active"), this.dateWithinRange(e) || n.push("disabled"), this.dateIsDisabled(e) && n.push("disabled", "disabled-date"), -1 !== t.inArray(e.getUTCDay(), this.o.daysOfWeekHighlighted) && n.push("highlighted"), this.range && (e > this.range[0] && e < this.range[this.range.length - 1] && n.push("range"), -1 !== t.inArray(e.valueOf(), this.range) && n.push("selected"), e.valueOf() === this.range[0] && n.push("range-start"), e.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 = t.map(this.dates, (function(t) {
                        return Math.floor(t.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 !== t.inArray(b, y) && c.push("active"), (b < a || b > s) && c.push("disabled"), b === v && c.push("focused"), l !== t.noop && ((d = l(new Date(b, 0, 1))) === e ? 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 S, C, k = []; w.valueOf() < _;) {
                        if ((S = w.getUTCDay()) === this.o.weekStart && (k.push("<tr>"), this.o.calendarWeeks)) {
                            var T = new Date(+w + (this.o.weekStart - S - 7) % 7 * 864e5),
                                A = new Date(Number(T) + (11 - T.getUTCDay()) % 7 * 864e5),
                                D = new Date(Number(D = n(A.getUTCFullYear(), 0, 1)) + (11 - D.getUTCDay()) % 7 * 864e5),
                                E = (A - D) / 864e5 / 7 + 1;
                            k.push('<td class="cw">' + E + "</td>")
                        }(C = this.getClassNames(w)).push("day");
                        var M = w.getUTCDate();
                        this.o.beforeShowDay !== t.noop && ((o = this.o.beforeShowDay(this._utc_to_local(w))) === e ? o = {} : "boolean" == typeof o ? o = {
                            enabled: o
                        } : "string" == typeof o && (o = {
                            classes: o
                        }), !1 === o.enabled && C.push("disabled"), o.classes && (C = C.concat(o.classes.split(/\s+/))), o.tooltip && (r = o.tooltip), o.content && (M = o.content)), C = t.isFunction(t.uniqueSort) ? t.uniqueSort(C) : t.unique(C), k.push('<td class="' + C.join(" ") + '"' + (r ? ' title="' + r + '"' : "") + ' data-date="' + w.getTime().toString() + '">' + M + "</td>"), r = null, S === this.o.weekEnd && k.push("</tr>"), w.setUTCDate(w.getUTCDate() + 1)
                    }
                    this.picker.find(".datepicker-days tbody").html(k.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 (t.each(this.dates, (function(t, e) {
                            e.getUTCFullYear() === s && I.eq(e.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 !== t.noop) {
                        var P = this;
                        t.each(I, (function(n, i) {
                            var r = new Date(s, n, 1),
                                o = P.o.beforeShowMonth(r);
                            o === e ? o = {} : "boolean" == typeof o ? o = {
                                enabled: o
                            } : "string" == typeof o && (o = {
                                classes: o
                            }), !1 !== o.enabled || t(i).hasClass("disabled") || t(i).addClass("disabled"), o.classes && t(i).addClass(o.classes), o.tooltip && t(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 t, e, 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:
                            t = Math.floor(i / c) * c <= o, e = Math.floor(i / c) * c + c > s;
                            break;
                        case 0:
                            t = i <= o && r <= a, e = i >= s && r >= l
                    }
                    this.picker.find(".prev").toggleClass("disabled", t), this.picker.find(".next").toggleClass("disabled", e)
                }
            },
            click: function(e) {
                var r, o, a;
                e.preventDefault(), e.stopPropagation(), (r = t(e.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(e) {
                var n = t(e.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(e) {
                var n = t(e.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(t) {
                var e = this.dates.contains(t);
                if (t || this.dates.clear(), -1 !== e ? (!0 === this.o.multidate || this.o.multidate > 1 || this.o.toggleActive) && this.dates.remove(e) : !1 === this.o.multidate ? (this.dates.clear(), this.dates.push(t)) : this.dates.push(t), "number" == typeof this.o.multidate)
                    for (; this.dates.length > this.o.multidate;) this.dates.remove(0)
            },
            _setDate: function(t, e) {
                e && "date" !== e || this._toggle_multidate(t && new Date(t)), (!e && this.o.updateViewDate || "view" === e) && (this.viewDate = t && new Date(t)), this.fill(), this.setValue(), e && "view" === e || this._trigger("changeDate"), this.inputField.trigger("change"), !this.o.autoclose || e && "date" !== e || this.hide()
            },
            moveDay: function(t, e) {
                var n = new Date(t);
                return n.setUTCDate(t.getUTCDate() + e), n
            },
            moveWeek: function(t, e) {
                return this.moveDay(t, 7 * e)
            },
            moveMonth: function(t, e) {
                if (! function(t) {
                        return t && !isNaN(t.getTime())
                    }(t)) return this.o.defaultViewDate;
                if (!e) return t;
                var n, i, r = new Date(t.valueOf()),
                    o = r.getUTCDate(),
                    a = r.getUTCMonth(),
                    s = Math.abs(e);
                if (e = e > 0 ? 1 : -1, 1 === s) i = -1 === e ? function() {
                    return r.getUTCMonth() === a
                } : function() {
                    return r.getUTCMonth() !== n
                }, n = a + e, r.setUTCMonth(n), n = (n + 12) % 12;
                else {
                    for (var l = 0; l < s; l++) r = this.moveMonth(r, e);
                    n = r.getUTCMonth(), r.setUTCDate(o), i = function() {
                        return n !== r.getUTCMonth()
                    }
                }
                for (; i();) r.setUTCDate(--o), r.setUTCMonth(n);
                return r
            },
            moveYear: function(t, e) {
                return this.moveMonth(t, 12 * e)
            },
            moveAvailableDate: function(t, e, n) {
                do {
                    if (t = this[n](t, e), !this.dateWithinRange(t)) return !1;
                    n = "moveDay"
                } while (this.dateIsDisabled(t));
                return t
            },
            weekOfDateIsDisabled: function(e) {
                return -1 !== t.inArray(e.getUTCDay(), this.o.daysOfWeekDisabled)
            },
            dateIsDisabled: function(e) {
                return this.weekOfDateIsDisabled(e) || t.grep(this.o.datesDisabled, (function(t) {
                    return r(e, t)
                })).length > 0
            },
            dateWithinRange: function(t) {
                return t >= this.o.startDate && t <= this.o.endDate
            },
            keydown: function(t) {
                if (this.picker.is(":visible")) {
                    var e, n, i = !1,
                        r = this.focusDate || this.viewDate;
                    switch (t.keyCode) {
                        case 27:
                            this.focusDate ? (this.focusDate = null, this.viewDate = this.dates.get(-1) || this.viewDate, this.fill()) : this.hide(), t.preventDefault(), t.stopPropagation();
                            break;
                        case 37:
                        case 38:
                        case 39:
                        case 40:
                            if (!this.o.keyboardNavigation || 7 === this.o.daysOfWeekDisabled.length) break;
                            e = 37 === t.keyCode || 38 === t.keyCode ? -1 : 1, 0 === this.viewMode ? t.ctrlKey ? (n = this.moveAvailableDate(r, e, "moveYear")) && this._trigger("changeYear", this.viewDate) : t.shiftKey ? (n = this.moveAvailableDate(r, e, "moveMonth")) && this._trigger("changeMonth", this.viewDate) : 37 === t.keyCode || 39 === t.keyCode ? n = this.moveAvailableDate(r, e, "moveDay") : this.weekOfDateIsDisabled(r) || (n = this.moveAvailableDate(r, e, "moveWeek")) : 1 === this.viewMode ? (38 !== t.keyCode && 40 !== t.keyCode || (e *= 4), n = this.moveAvailableDate(r, e, "moveMonth")) : 2 === this.viewMode && (38 !== t.keyCode && 40 !== t.keyCode || (e *= 4), n = this.moveAvailableDate(r, e, "moveYear")), n && (this.focusDate = this.viewDate = n, this.setValue(), this.fill(), t.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") && (t.preventDefault(), t.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 !== t.keyCode && 27 !== t.keyCode || (this.show(), t.stopPropagation())
            },
            setViewMode: function(t) {
                this.viewMode = t, 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(e, n) {
            t.data(e, "datepicker", this), this.element = t(e), this.inputs = t.map(n.inputs, (function(t) {
                return t.jquery ? t[0] : t
            })), delete n.inputs, this.keepEmptyValues = n.keepEmptyValues, delete n.keepEmptyValues, h.call(t(this.inputs), n).on("changeDate", t.proxy(this.dateUpdated, this)), this.pickers = t.map(this.inputs, (function(e) {
                return t.data(e, "datepicker")
            })), this.updateDates()
        };
        u.prototype = {
            updateDates: function() {
                this.dates = t.map(this.pickers, (function(t) {
                    return t.getUTCDate()
                })), this.updateRanges()
            },
            updateRanges: function() {
                var e = t.map(this.dates, (function(t) {
                    return t.valueOf()
                }));
                t.each(this.pickers, (function(t, n) {
                    n.setRange(e)
                }))
            },
            clearDates: function() {
                t.each(this.pickers, (function(t, e) {
                    e.clearDates()
                }))
            },
            dateUpdated: function(n) {
                if (!this.updating) {
                    this.updating = !0;
                    var i = t.data(n.target, "datepicker");
                    if (i !== e) {
                        var r = i.getUTCDate(),
                            o = this.keepEmptyValues,
                            a = t.inArray(n.target, this.inputs),
                            s = a - 1,
                            l = a + 1,
                            c = this.inputs.length;
                        if (-1 !== a) {
                            if (t.each(this.pickers, (function(t, e) {
                                    e.getUTCDate() || e !== i && o || e.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() {
                t.map(this.pickers, (function(t) {
                    t.destroy()
                })), t(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 = t.fn.datepicker,
            h = function(n) {
                var i, r = Array.apply(null, arguments);
                if (r.shift(), this.each((function() {
                        var e = t(this),
                            o = e.data("datepicker"),
                            l = "object" == typeof n && n;
                        if (!o) {
                            var d = a(this, "date"),
                                h = s(t.extend({}, f, d, l).language),
                                p = t.extend({}, f, h, d, l);
                            e.hasClass("input-daterange") || p.inputs ? (t.extend(p, {
                                inputs: p.inputs || e.find("input").toArray()
                            }), o = new u(this, p)) : o = new c(this, p), e.data("datepicker", o)
                        }
                        "string" == typeof n && "function" == typeof o[n] && (i = o[n].apply(o, r))
                    })), i === e || 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
            };
        t.fn.datepicker = h;
        var f = t.fn.datepicker.defaults = {
                assumeNearbyYear: !1,
                autoclose: !1,
                beforeShowDay: t.noop,
                beforeShowMonth: t.noop,
                beforeShowYear: t.noop,
                beforeShowDecade: t.noop,
                beforeShowCentury: t.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 = t.fn.datepicker.locale_opts = ["format", "rtl", "weekStart"];
        t.fn.datepicker.Constructor = c;
        var g = t.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(t) {
                    if ("function" == typeof t.toValue && "function" == typeof t.toDisplay) return t;
                    var e = t.replace(this.validParts, "\0").split("\0"),
                        n = t.match(this.validParts);
                    if (!e || !e.length || !n || 0 === n.length) throw new Error("Invalid date format.");
                    return {
                        separators: e,
                        parts: n
                    }
                },
                parseDate: function(n, r, o, a) {
                    function s() {
                        var t = this.slice(0, l[h].length),
                            e = l[h].slice(0, t.length);
                        return t.toLowerCase() === e.toLowerCase()
                    }
                    if (!n) return e;
                    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(t, e) {
                                return t.setUTCFullYear(a ? function(t, e) {
                                    return !0 === e && (e = 10), t < 100 && (t += 2e3) > (new Date).getFullYear() + e && (t -= 100), t
                                }(e, a) : e)
                            },
                            m: function(t, e) {
                                if (isNaN(t)) return t;
                                for (e -= 1; e < 0;) e += 12;
                                for (e %= 12, t.setUTCMonth(e); t.getUTCMonth() !== e;) t.setUTCDate(t.getUTCDate() - 1);
                                return t
                            },
                            d: function(t, e) {
                                return t.setUTCDate(e)
                            }
                        };
                    _.yy = _.yyyy, _.M = _.MM = _.mm = _.m, _.dd = _.d, n = i();
                    var S = r.parts.slice();
                    if (l.length !== S.length && (S = t(S).filter((function(e, n) {
                            return -1 !== t.inArray(n, x)
                        })).toArray()), l.length === S.length) {
                        var C, k, T;
                        for (h = 0, C = S.length; h < C; h++) {
                            if (y = parseInt(l[h], 10), u = S[h], isNaN(y)) switch (u) {
                                case "MM":
                                    b = t(g[o].months).filter(s), y = t.inArray(b[0], g[o].months) + 1;
                                    break;
                                case "M":
                                    b = t(g[o].monthsShort).filter(s), y = t.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]) && (k = new Date(n), _[T](k, w[T]), isNaN(k) || (n = k))
                    }
                    return n
                },
                formatDate: function(e, n, i) {
                    if (!e) return "";
                    if ("string" == typeof n && (n = m.parseFormat(n)), n.toDisplay) return n.toDisplay(e, n, i);
                    var r = {
                        d: e.getUTCDate(),
                        D: g[i].daysShort[e.getUTCDay()],
                        DD: g[i].days[e.getUTCDay()],
                        m: e.getUTCMonth() + 1,
                        M: g[i].monthsShort[e.getUTCMonth()],
                        MM: g[i].months[e.getUTCMonth()],
                        yy: e.getUTCFullYear().toString().substring(2),
                        yyyy: e.getUTCFullYear()
                    };
                    r.dd = (r.d < 10 ? "0" : "") + r.d, r.mm = (r.m < 10 ? "0" : "") + r.m, e = [];
                    for (var o = t.extend([], n.separators), a = 0, s = n.parts.length; a <= s; a++) o.length && e.push(o.shift()), e.push(r[n.parts[a]]);
                    return e.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>", t.fn.datepicker.DPGlobal = m, t.fn.datepicker.noConflict = function() {
            return t.fn.datepicker = d, this
        }, t.fn.datepicker.version = "1.9.0", t.fn.datepicker.deprecated = function(t) {
            var e = window.console;
            e && e.warn && e.warn("DEPRECATED: " + t)
        }, t(document).on("focus.datepicker.data-api click.datepicker.data-api", '[data-provide="datepicker"]', (function(e) {
            var n = t(this);
            n.data("datepicker") || (e.preventDefault(), h.call(n, "show"))
        })), t((function() {
            h.call(t('[data-provide="datepicker-inline"]'))
        }))
    })), "undefined" != typeof jQuery && function(t, e) {
        function n(t, e, n) {
            return new Array(n + 1 - t.length).join(e) + t
        }

        function i() {
            if (1 === arguments.length) {
                var e = arguments[0];
                return "string" == typeof e && (e = t.fn.timepicker.parseTime(e)), new Date(0, 0, 0, e.getHours(), e.getMinutes(), e.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;
        t.TimePicker = function() {
            var e = this;
            e.container = t(".ui-timepicker-container"), e.ui = e.container.find(".ui-timepicker"), 0 === e.container.length && (e.container = t("<div></div>").addClass("ui-timepicker-container").addClass("ui-timepicker-hidden ui-helper-hidden").appendTo("body").hide(), e.ui = t("<div></div>").addClass("ui-timepicker").addClass("ui-widget ui-widget-content ui-menu").addClass("ui-corner-all").appendTo(e.container), e.viewport = t("<ul></ul>").addClass("ui-timepicker-viewport").appendTo(e.ui), t.fn.jquery >= "1.4.2" && e.ui.delegate("a", "mouseenter.timepicker", (function() {
                e.activate(!1, t(this).parent())
            })).delegate("a", "mouseleave.timepicker", (function() {
                e.deactivate(!1)
            })).delegate("a", "click.timepicker", (function(n) {
                n.preventDefault(), e.select(!1, t(this).parent())
            })))
        }, t.TimePicker.count = 0, t.TimePicker.instance = function() {
            return t.TimePicker._instance || (t.TimePicker._instance = new t.TimePicker), t.TimePicker._instance
        }, t.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(e, n) {
                var r, o, a = t("<ul></ul>"),
                    s = null;
                for (-1 === e.options.timeFormat.indexOf("m") && e.options.interval % 60 != 0 && (e.options.interval = 60 * Math.max(Math.round(e.options.interval / 60), 1)), r = n ? i(n) : e.options.startTime ? i(e.options.startTime) : i(e.options.startHour, e.options.startMinutes), o = new Date(r.getTime() + 864e5); r < o;) this._isValidTime(e, r) && (s = t("<li>").addClass("ui-menu-item").appendTo(a), t("<a>").addClass("ui-corner-all").text(t.fn.timepicker.formatTime(e.options.timeFormat, r)).appendTo(s), s.data("time-value", r)), r = new Date(r.getTime() + 60 * e.options.interval * 1e3);
                return a.children()
            },
            _isValidTime: function(t, e) {
                var n = null,
                    r = null;
                return e = i(e), null !== t.options.minTime ? n = i(t.options.minTime) : null === t.options.minHour && null === t.options.minMinutes || (n = i(t.options.minHour, t.options.minMinutes)), null !== t.options.maxTime ? r = i(t.options.maxTime) : null === t.options.maxHour && null === t.options.maxMinutes || (r = i(t.options.maxHour, t.options.maxMinutes)), null !== n && null !== r ? e >= n && e <= r : null !== n ? e >= n : null === r || e <= r
            },
            _hasScroll: function() {
                var t = void 0 !== this.ui.prop ? "prop" : "attr";
                return this.ui.height() < this.ui[t]("scrollHeight")
            },
            _move: function(t, e, n) {
                if (this.closed() && this.open(t), this.active) {
                    var i = this.active[e + "All"](".ui-menu-item").eq(0);
                    i.length ? this.activate(t, i) : this.activate(t, this.viewport.children(n))
                } else this.activate(t, this.viewport.children(n))
            },
            register: function(e, n) {
                var i = this,
                    r = {};
                r.element = t(e), r.element.data("TimePicker") || (r.options = t.metadata ? t.extend({}, n, r.element.metadata()) : t.extend({}, n), r.widget = i, t.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(t) {
                        return i.parse(r, t)
                    },
                    format: function(t, e) {
                        return i.format(r, t, e)
                    },
                    getTime: function() {
                        return i.getTime(r)
                    },
                    setTime: function(t, e) {
                        return i.setTime(r, t, e)
                    },
                    option: function(t, e) {
                        return i.option(r, t, e)
                    }
                }), i._setDefaultTime(r), i._addInputEventsHandlers(r), r.element.data("TimePicker", r))
            },
            _setDefaultTime: function(e) {
                "now" === e.options.defaultTime ? e.setTime(i(new Date)) : e.options.defaultTime && e.options.defaultTime.getFullYear ? e.setTime(i(e.options.defaultTime)) : e.options.defaultTime && e.setTime(t.fn.timepicker.parseTime(e.options.defaultTime))
            },
            _addInputEventsHandlers: function(e) {
                var n = this;
                e.element.bind("keydown.timepicker", (function(t) {
                    switch (t.which || t.keyCode) {
                        case n.keyCode.ENTER:
                        case n.keyCode.NUMPAD_ENTER:
                            t.preventDefault(), n.closed() ? e.element.trigger("change.timepicker") : n.select(e, n.active);
                            break;
                        case n.keyCode.UP:
                            e.previous();
                            break;
                        case n.keyCode.DOWN:
                            e.next();
                            break;
                        default:
                            n.closed() || e.close(!0)
                    }
                })).bind("focus.timepicker", (function() {
                    e.open()
                })).bind("blur.timepicker", (function() {
                    setTimeout((function() {
                        e.element.data("timepicker-user-clicked-outside") && e.close()
                    }))
                })).bind("change.timepicker", (function() {
                    e.closed() && e.setTime(t.fn.timepicker.parseTime(e.element.val()))
                }))
            },
            select: function(e, n) {
                var i = !1 === e ? this.instance : e;
                this.setTime(i, t.fn.timepicker.parseTime(n.children("a").text())), this.close(i, !0)
            },
            activate: function(t, e) {
                if ((!1 === t ? this.instance : t) === this.instance) {
                    if (this.deactivate(), this._hasScroll()) {
                        var n = e.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 + e.height())
                    }
                    this.active = e.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(t) {
                return (this.closed() || this.instance === t) && this._move(t, "next", ".ui-menu-item:first"), t.element
            },
            previous: function(t) {
                return (this.closed() || this.instance === t) && this._move(t, "prev", ".ui-menu-item:last"), t.element
            },
            first: function(t) {
                return this.instance === t && (this.active && 0 === this.active.prevAll(".ui-menu-item").length)
            },
            last: function(t) {
                return this.instance === t && (this.active && 0 === this.active.nextAll(".ui-menu-item").length)
            },
            selected: function(t) {
                return this.instance === t && this.active ? this.active : null
            },
            open: function(e) {
                var n = this,
                    i = e.getTime(),
                    r = e.options.dynamic && i;
                if (!e.options.dropdown) return e.element;
                switch (e.element.data("timepicker-event-namespace", Math.random()), t(document).bind("click.timepicker-" + e.element.data("timepicker-event-namespace"), (function(t) {
                    e.element.get(0) === t.target ? e.element.data("timepicker-user-clicked-outside", !1) : e.element.data("timepicker-user-clicked-outside", !0).blur()
                })), (e.rebuild || !e.items || r) && (e.items = n._items(e, r ? i : null)), (e.rebuild || n.instance !== e || r) && (t.fn.jquery < "1.4.2" ? (n.viewport.children().remove(), n.viewport.append(e.items), n.viewport.find("a").bind("mouseover.timepicker", (function() {
                    n.activate(e, t(this).parent())
                })).bind("mouseout.timepicker", (function() {
                    n.deactivate(e)
                })).bind("click.timepicker", (function(i) {
                    i.preventDefault(), n.select(e, t(this).parent())
                }))) : (n.viewport.children().detach(), n.viewport.append(e.items))), e.rebuild = !1, n.container.removeClass("ui-helper-hidden ui-timepicker-hidden ui-timepicker-standard ui-timepicker-corners").show(), e.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") || e.options.scrollbar || (n.container.addClass("ui-timepicker-no-scrollbar"), n.viewport.css({
                    paddingRight: 40
                }));
                var o = n.container.outerHeight() - n.container.height(),
                    a = e.options.zindex ? e.options.zindex : e.element.offsetParent().css("z-index"),
                    s = e.element.offset();
                n.container.css({
                    top: s.top + e.element.outerHeight(),
                    left: s.left
                }), n.container.show(), n.container.css({
                    left: e.element.offset().left,
                    height: n.ui.outerHeight() + o,
                    width: e.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
                }), e.items.css({
                    width: l
                }), n.instance = e, i ? e.items.each((function() {
                    var r = t(this);
                    return (t.fn.jquery < "1.4.2" ? t.fn.timepicker.parseTime(r.find("a").text()) : r.data("time-value")).getTime() !== i.getTime() || (n.activate(e, r), !1)
                })) : n.deactivate(e), e.element
            },
            close: function(e) {
                return this.instance === e && (this.container.addClass("ui-helper-hidden ui-timepicker-hidden").hide(), this.ui.scrollTop(0), this.ui.children().removeClass("ui-state-hover")), t(document).unbind("click.timepicker-" + e.element.data("timepicker-event-namespace")), e.element
            },
            closed: function() {
                return this.ui.is(":hidden")
            },
            destroy: function(t) {
                return this.close(t, !0), t.element.unbind(".timepicker").data("TimePicker", null)
            },
            parse: function(e, n) {
                return t.fn.timepicker.parseTime(n)
            },
            format: function(e, n, i) {
                return i = i || e.options.timeFormat, t.fn.timepicker.formatTime(i, n)
            },
            getTime: function(e) {
                var n = t.fn.timepicker.parseTime(e.element.val());
                return n instanceof Date && !this._isValidTime(e, n) ? null : n instanceof Date && e.selectedTime ? e.format(n) === e.format(e.selectedTime) ? e.selectedTime : n : n instanceof Date ? n : null
            },
            setTime: function(e, n, r) {
                var o = e.selectedTime;
                if ("string" == typeof n && (n = e.parse(n)), n && n.getMinutes && this._isValidTime(e, n)) {
                    if (n = i(n), e.selectedTime = n, e.element.val(e.format(n, e.options.timeFormat)), r) return e
                } else e.selectedTime = null;
                return null === o && null === e.selectedTime || (e.element.trigger("time-change", [n]), t.isFunction(e.options.change) && e.options.change.apply(e.element, [n])), e.element
            },
            option: function(e, n, i) {
                if (void 0 === i) return e.options[n];
                var r, o, a = e.getTime();
                "string" == typeof n ? (r = {})[n] = i : r = n, o = ["minHour", "minMinutes", "minTime", "maxHour", "maxMinutes", "maxTime", "startHour", "startMinutes", "startTime", "timeFormat", "interval", "dropdown"], t.each(r, (function(n) {
                    e.options[n] = r[n], e.rebuild = e.rebuild || t.inArray(n, o) > -1
                })), e.rebuild && e.setTime(a)
            }
        }, t.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() {}
        }, t.TimePicker.methods = {
            chainable: ["next", "previous", "open", "close", "destroy", "setTime"]
        }, t.fn.timepicker = function(e) {
            if ("string" == typeof e) {
                var n, i, r = Array.prototype.slice.call(arguments, 1);
                return i = this[n = "option" === e && arguments.length > 2 || -1 !== t.inArray(e, t.TimePicker.methods.chainable) ? "each" : "map"]((function() {
                    var n = t(this).data("TimePicker");
                    if ("object" == typeof n) return n[e].apply(n, r)
                })), "map" === n && 1 === this.length ? t.makeArray(i).shift() : "map" === n ? t.makeArray(i) : i
            }
            if (1 === this.length && this.data("TimePicker")) return this.data("TimePicker");
            var o = t.extend({}, t.TimePicker.defaults, e);
            return this.each((function() {
                t.TimePicker.instance().register(this, o)
            }))
        }, t.fn.timepicker.formatTime = function(t, e) {
            var i = e.getHours(),
                r = i % 12,
                o = e.getMinutes(),
                a = e.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 = t,
                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")
        }, t.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(e) {
            var n, a, s = i(new Date),
                l = !1,
                c = !1,
                u = !1;
            if (void 0 === e || !e.toLowerCase) return null;
            e = e.toLowerCase(), a = !(n = /a/.test(e)) && /p/.test(e), e = e.replace(/[^0-9:]/g, "").replace(/:+/g, ":");
            for (var d = 0; d < o; d += 1)
                if (r[d][0].test(e)) {
                    e = e.replace(r[d][0], r[d][1]);
                    break
                }
            return 1 === (e = e.replace(/:/g, "")).length || 2 === e.length ? l = e : 3 === e.length || 5 === e.length ? (l = e.substr(0, 1), c = e.substr(1, 2), u = e.substr(3, 2)) : (4 === e.length || e.length > 5) && (l = e.substr(0, 2), c = e.substr(2, 2), u = e.substr(4, 2)), e.length > 0 && e.length < 5 && (e.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 ? e.length >= 6 ? t.fn.timepicker.parseTime(e.substr(0, 5)) : t.fn.timepicker.parseTime(e + "0" + (n ? "a" : "") + (a ? "p" : "")) : (s.setHours(l, c, u), s))
        })
    }(jQuery),
    function(t) {
        "function" == typeof define && define.amd ? define(["jquery"], t) : t(jQuery)
    }((function(t) {
        "use strict";
        var e = {},
            n = Math.max,
            i = Math.min;
        e.c = {}, e.c.d = t(document), e.c.t = function(t) {
            return t.originalEvent.touches.length - 1
        }, e.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 e = function(t, e) {
                    var i;
                    for (i in e) n.o[i] = e[i];
                    n._carve().init(), n._configure()._draw()
                };
                if (!this.$.data("kontroled")) {
                    if (this.$.data("kontroled", !0), this.extend(), this.o = t.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(t) {
                                return t
                            },
                            parse: function(t) {
                                return parseFloat(t)
                            }
                        }, 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(e) {
                            var i = t(this);
                            n.i[e] = i, n.v[e] = n.o.parse(i.val()), i.bind("change blur", (function() {
                                var t = {};
                                t[e] = i.val(), n.val(n._validate(t))
                            }))
                        })), 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 = t(document.createElement("canvas")).attr({
                            width: this.o.width,
                            height: this.o.height
                        }), this.$div = t('<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", e).parent().bind("configure", e), 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 t = this.relativeWidth ? this.$div.parent().width() * parseInt(this.o.width) / 100 : this.$div.parent().width(),
                        e = this.relativeHeight ? this.$div.parent().height() * parseInt(this.o.height) / 100 : this.$div.parent().height();
                    this.w = this.h = Math.min(t, e)
                } 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 t = !0;
                n.g = n.c, n.clear(), n.dH && (t = n.dH()), !1 !== t && n.draw()
            }, this._touch = function(t) {
                var i = function(t) {
                    var e = n.xy2val(t.originalEvent.touches[n.t].pageX, t.originalEvent.touches[n.t].pageY);
                    e != n.cv && (n.cH && !1 === n.cH(e) || (n.change(n._validate(e)), n._draw()))
                };
                return this.t = e.c.t(t), i(t), e.c.d.bind("touchmove.k", i).bind("touchend.k", (function() {
                    e.c.d.unbind("touchmove.k touchend.k"), n.val(n.cv)
                })), this
            }, this._mouse = function(t) {
                var i = function(t) {
                    var e = n.xy2val(t.pageX, t.pageY);
                    e != n.cv && (n.cH && !1 === n.cH(e) || (n.change(n._validate(e)), n._draw()))
                };
                return i(t), e.c.d.bind("mousemove.k", i).bind("keyup.k", (function(t) {
                    if (27 === t.keyCode) {
                        if (e.c.d.unbind("mouseup.k mousemove.k keyup.k"), n.eH && !1 === n.eH()) return;
                        n.cancel()
                    }
                })).bind("mouseup.k", (function(t) {
                    e.c.d.unbind("mousemove.k mouseup.k keyup.k"), n.val(n.cv)
                })), this
            }, this._xy = function() {
                var t = this.$c.offset();
                return this.x = t.left, this.y = t.top, this
            }, this._listen = function() {
                return this.o.readOnly ? this.$.attr("readonly", "readonly") : (this.$c.bind("mousedown", (function(t) {
                    t.preventDefault(), n._xy()._mouse(t)
                })).bind("touchstart", (function(t) {
                    t.preventDefault(), n._xy()._touch(t)
                })), this.listen()), this.relative && t(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(t) {
                var e = ~~((t < 0 ? -.5 : .5) + t / this.o.step) * this.o.step;
                return Math.round(100 * e) / 100
            }, this.listen = function() {}, this.extend = function() {}, this.init = function() {}, this.change = function(t) {}, this.val = function(t) {}, this.xy2val = function(t, e) {}, this.draw = function() {}, this.clear = function() {
                this._clear()
            }, this.h2rgba = function(t, e) {
                var n;
                return t = t.substring(1, 7), "rgba(" + (n = [parseInt(t.substring(0, 2), 16), parseInt(t.substring(2, 4), 16), parseInt(t.substring(4, 6), 16)])[0] + "," + n[1] + "," + n[2] + "," + e + ")"
            }, this.copy = function(t, e) {
                for (var n in t) e[n] = t[n]
            }
        }, e.Dial = function() {
            e.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 = t.extend({
                    bgColor: this.$.data("bgcolor") || "#EEEEEE",
                    angleOffset: this.$.data("angleoffset") || 0,
                    angleArc: this.$.data("anglearc") || 360,
                    inline: !0
                }, this.o)
            }, this.val = function(t, e) {
                if (null == t) return this.v;
                t = this.o.parse(t), !1 !== e && t != this.v && this.rH && !1 === this.rH(t) || (this.cv = this.o.stopper ? n(i(t, this.o.max), this.o.min) : t, this.v = this.cv, this.$.val(this.o.format(this.v)), this._draw())
            }, this.xy2val = function(t, e) {
                var r, o;
                return r = Math.atan2(t - (this.x + this.w2), -(e - 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 e, r, o, a, s = this,
                    l = function(t) {
                        t.preventDefault();
                        var o = t.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(e), e = setTimeout((function() {
                            s.rH(c), e = null
                        }), 100), r || (r = setTimeout((function() {
                            e && 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(e) {
                    var r = e.keyCode;
                    if (r >= 96 && r <= 105 && (r = e.keyCode = r - 48), o = parseInt(String.fromCharCode(r)), isNaN(o) && (13 !== r && 8 !== r && 9 !== r && 189 !== r && (190 !== r || s.$.val().match(/\./)) && e.preventDefault(), t.inArray(r, [37, 38, 39, 40]) > -1)) {
                        e.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(t) {
                    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 t = 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 / t >> 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(t) {
                this.cv = t, this.$.val(this.o.format(t))
            }, this.angle = function(t) {
                return (t - this.o.min) * this.angleArc / (this.o.max - this.o.min)
            }, this.arc = function(t) {
                var e, n;
                return t = this.angle(t), n = this.o.flip ? (e = this.endAngle + 1e-5) - t - 1e-5 : (e = this.startAngle - 1e-5) + t + 1e-5, this.o.cursor && (e = n - this.cursorExt) && (n += this.cursorExt), {
                    s: e,
                    e: n,
                    d: this.o.flip && !this.o.cursor
                }
            }, this.draw = function() {
                var t, e = this.g,
                    n = this.arc(this.cv),
                    i = 1;
                e.lineWidth = this.lineWidth, e.lineCap = this.lineCap, "none" !== this.o.bgColor && (e.beginPath(), e.strokeStyle = this.o.bgColor, e.arc(this.xy, this.xy, this.radius, this.endAngle - 1e-5, this.startAngle + 1e-5, !0), e.stroke()), this.o.displayPrevious && (t = this.arc(this.v), e.beginPath(), e.strokeStyle = this.pColor, e.arc(this.xy, this.xy, this.radius, t.s, t.e, t.d), e.stroke(), i = this.cv == this.v), e.beginPath(), e.strokeStyle = i ? this.o.fgColor : this.fgColor, e.arc(this.xy, this.xy, this.radius, n.s, n.e, n.d), e.stroke()
            }, this.cancel = function() {
                this.val(this.v)
            }
        }, t.fn.dial = t.fn.knob = function(n) {
            return this.each((function() {
                var i = new e.Dial;
                i.o = n, i.$ = t(this), i.run()
            })).parent()
        }
    })),
    function(t, e) {
        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 && t.cookie) {
                var l = t.cookie(L + d(n)),
                    u = parseInt(l, 0);
                !isNaN(u) && u < r.stepCount && (s = u)
            }
            r.currentIndex = s, o.each((function(i) {
                var r = t(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") === e ? "" : o.data("url"),
                    d = l !== z.html && "1" === o.data("loaded"),
                    f = t.extend({}, q, {
                        title: r.html(),
                        content: l === z.html ? o.html() : "",
                        contentUrl: u,
                        contentMode: l,
                        contentLoaded: d
                    });
                ! function(t, e) {
                    c(t).push(e)
                }(n, f)
            }))
        }

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

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

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

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

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

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

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

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

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

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

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

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

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

        function m(e, n, i, r, o) {
            (0 > r || r > i.stepCount) && O(j),
                function(t, e, n) {
                    c(t).splice(e, 0, n)
                }(e, r, o = t.extend({}, q, o)), i.currentIndex !== i.stepCount && i.currentIndex >= r && (i.currentIndex++, D(e, n, i)), i.stepCount++;
            var s = e.find(".content"),
                l = t("<{0}>{1}</{0}>".format(n.headerTag, o.title)),
                u = t("<{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(e, r - 1).after(u).after(l), k(e, i, u, r), A(e, n, i, l, r), S(e, n, i, r), r === i.currentIndex && _(e, n, i), x(e, n, i), e
        }

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

        function y(e, n, i) {
            if (i.stepCount > 0) {
                var r = i.currentIndex,
                    o = u(e, r);
                if (!n.enableContentCache || !o.contentLoaded) switch (h(z, o.contentMode)) {
                    case z.iframe:
                        e.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(e, r)._aria("busy", "true").empty().append(T(n.loadingTemplate, {
                            text: n.labels.loading
                        }));
                        t.ajax({
                            url: o.contentUrl,
                            cache: !1
                        }).done((function(t) {
                            s.empty().html(t)._aria("busy", "false").data("loaded", "1"), e.triggerHandler("contentLoaded", [r])
                        }))
                }
            }
        }

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

        function _(e, n, i, r) {
            var a = o(e, i.currentIndex),
                s = t('<span class="current-info audible">' + n.labels.current + " </span>"),
                l = e.find(".content > .title");
            if (null != r) {
                var c = o(e, 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 S(t, e, n, i) {
            for (var r = d(t), o = i; o < n.stepCount; o++) {
                var a = r + N + o,
                    s = r + F + o,
                    l = r + R + o,
                    c = t.find(".title").eq(o)._id(l);
                t.find(".steps a").eq(o)._id(a)._aria("controls", s).attr("href", "#" + l).html(T(e.titleTemplate, {
                    index: o + 1,
                    title: c.html()
                })), t.find(".body").eq(o)._id(s)._aria("labelledby", l)
            }
        }

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

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

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

        function A(e, n, i, o, a) {
            var s = d(e),
                l = s + N + a,
                c = s + F + a,
                u = s + R + a,
                h = e.find(".steps > ul"),
                f = T(n.titleTemplate, {
                    index: a + 1,
                    title: o.html()
                }),
                p = t('<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(e), M)
        }

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

        function E(e, n, i, r, o, a) {
            var s = e.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 e = l(t(this)._showAria(!1).parent().parent());
                        e.transitionElement && (e.transitionElement[g](u, (function() {
                            t(this)._showAria()
                        })).promise().done(a), e.transitionElement = null)
                    }));
                    break;
                case B.slideLeft:
                    var m = f.outerWidth(!0),
                        v = r > o ? -m : m,
                        y = r > o ? m : -m;
                    t.when(f.animate({
                        left: v
                    }, u, (function() {
                        t(this)._showAria(!1)
                    })), d.css("left", y + "px")._showAria().animate({
                        left: 0
                    }, u)).done(a);
                    break;
                default:
                    t.when(f._showAria(!1), d._showAria()).done(a)
            }
        }

        function M(e) {
            e.preventDefault();
            var n = t(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(t, e, n, i) {
                    if ((0 > i || i >= n.stepCount) && O(j), !(e.forceMoveForward && i < n.currentIndex)) {
                        var r = n.currentIndex;
                        t.triggerHandler("stepChanging", [n.currentIndex, i]) ? (n.currentIndex = i, D(t, e, n), _(t, e, n, r), x(t, e, n), y(t, e, n), E(t, e, n, i, r, (function() {
                            t.triggerHandler("stepChanged", [i, r])
                        }))) : t.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(t) {
            throw arguments.length > 1 && (t = t.format(Array.prototype.slice.call(arguments, 1))), new Error(t)
        }

        function I(t, e) {
            null == e && O("The argument '{0}' is null or undefined.", t)
        }
        t.fn.extend({
            _aria: function(t, e) {
                return this.attr("aria-" + t, e)
            },
            _removeAria: function(t) {
                return this.removeAttr("aria-" + t)
            },
            _enableAria: function(t) {
                return null == t || t ? this.removeClass("disabled")._aria("disabled", "false") : this.addClass("disabled")._aria("disabled", "true")
            },
            _showAria: function(t) {
                return null == t || t ? this.show()._aria("hidden", "false") : this.hide()._aria("hidden", "true")
            },
            _selectAria: function(t) {
                return null == t || t ? this.addClass("current")._aria("selected", "true") : this.removeClass("current")._aria("selected", "false")
            },
            _id: function(t) {
                return t ? this.attr("id", t) : this.attr("id")
            }
        }), String.prototype.format || (String.prototype.format = function() {
            for (var e = 1 === arguments.length && t.isArray(arguments[0]) ? arguments[0] : arguments, n = this, i = 0; i < e.length; i++) {
                var r = new RegExp("\\{" + i + "\\}", "gm");
                n = n.replace(r, e[i])
            }
            return n
        });
        var P = 0,
            L = "jQu3ry_5teps_St@te_",
            N = "-t-",
            F = "-p-",
            R = "-h-",
            j = "Index out of range.",
            $ = "One or more corresponding step {0} are missing.";
        t.fn.steps = function(e) {
            return t.fn.steps[e] ? t.fn.steps[e].apply(this, Array.prototype.slice.call(arguments, 1)) : "object" != typeof e && e ? void t.error("Method " + e + " does not exist on jQuery.steps") : g.apply(this, arguments)
        }, t.fn.steps.add = function(t) {
            var e = l(this);
            return m(this, s(this), e, e.stepCount, t)
        }, t.fn.steps.destroy = function() {
            return function(e, n) {
                var i = r(e);
                e.unbind(i).removeData("uid").removeData("options").removeData("state").removeData("steps").removeData("eventNamespace").find(".actions a").unbind(i), e.removeClass(n.clearFixCssClass + " vertical");
                var o = e.find(".content > *");
                o.removeData("loaded").removeData("mode").removeData("url"), o.removeAttr("id").removeAttr("role").removeAttr("tabindex").removeAttr("class").removeAttr("style")._removeAria("labelledby")._removeAria("hidden"), e.find(".content > [data-mode='async'],.content > [data-mode='iframe']").empty();
                var a = t('<{0} class="{1}"></{0}>'.format(e.get(0).tagName, e.attr("class"))),
                    s = e._id();
                return null != s && "" !== s && a._id(s), a.html(e.find(".content").html()), e.after(a), e.remove(), a
            }(this, s(this))
        }, t.fn.steps.finish = function() {
            i(this, l(this))
        }, t.fn.steps.getCurrentIndex = function() {
            return l(this).currentIndex
        }, t.fn.steps.getCurrentStep = function() {
            return u(this, l(this).currentIndex)
        }, t.fn.steps.getStep = function(t) {
            return u(this, t)
        }, t.fn.steps.insert = function(t, e) {
            return m(this, s(this), l(this), t, e)
        }, t.fn.steps.next = function() {
            return f(this, s(this), l(this))
        }, t.fn.steps.previous = function() {
            return p(this, s(this), l(this))
        }, t.fn.steps.remove = function(t) {
            return C(this, s(this), l(this), t)
        }, t.fn.steps.setStep = function() {
            throw new Error("Not yet implemented!")
        }, t.fn.steps.skip = function() {
            throw new Error("Not yet implemented!")
        };
        var z = t.fn.steps.contentMode = {
                html: 0,
                iframe: 1,
                async: 2
            },
            H = t.fn.steps.stepsOrientation = {
                horizontal: 0,
                vertical: 1
            },
            B = t.fn.steps.transitionEffect = {
                none: 0,
                fade: 1,
                slide: 2,
                slideLeft: 3
            },
            q = t.fn.steps.stepModel = {
                title: "",
                content: "",
                contentUrl: "",
                contentMode: z.html,
                contentLoaded: !1
            },
            W = t.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 t(t, e, n, i) {
            e && (n(t = {
                a: e,
                d: t
            }), i.push.apply(i, t.e))
        }

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

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

                    function i(t) {
                        for (var i = t.substring(1, t.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 = (t = [], []), o = "^" === i[0], a = o ? 1 : 0, s = i.length; a < s; ++a) {
                            var l = i[a];
                            if (/\\[bdsw]/i.test(l)) t.push(l);
                            else {
                                var c;
                                l = e(l);
                                a + 2 < s && "-" === i[a + 1] ? (c = e(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(t, e) {
                                return t[0] - e[0] || e[1] - t[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, t), 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(t) {
                        for (var e = t.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g), n = e.length, r = [], s = 0, l = 0; s < n; ++s) {
                            var c = e[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 = e[s]) ? void 0 === r[++l] && (e[s] = "(?:") : "\\" === c.charAt(0) && (c = +c.substring(1)) && c <= l && (e[s] = "\\" + r[l]);
                        for (l = s = 0; s < n; ++s) "^" === e[s] && "^" !== e[s + 1] && (e[s] = "");
                        if (t.ignoreCase && a)
                            for (s = 0; s < n; ++s) t = (c = e[s]).charAt(0), c.length >= 2 && "[" === t ? e[s] = i(c) : "\\" !== t && (e[s] = c.replace(/[A-Za-z]/g, (function(t) {
                                return t = t.charCodeAt(0), "[" + String.fromCharCode(-33 & t, 32 | t) + "]"
                            })));
                        return e.join("")
                    }
                    for (var o = 0, a = !1, s = !1, l = 0, c = t.length; l < c; ++l) {
                        var u = t[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 = t.length; l < c; ++l) {
                        if ((u = t[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 e(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), t(l + b, m.substring(0, w), e, c), t(l + b + w, g, o(v, g), c), t(l + b + x, m.substring(x), e, c)
                    } else c.push(l + b, v)
                }
                s.e = c
            }
        }

        function n(t) {
            var n = [],
                i = [];
            t.tripleQuotedStrings ? n.push(["str", /^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/, q, "'\""]) : t.multiLineStrings ? n.push(["str", /^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, q, "'\"`"]) : n.push(["str", /^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/, q, "\"'"]), t.verbatimStrings && i.push(["str", /^@"(?:[^"]|"")*(?:"|$)/, q]);
            var r = t.hashComments;
            return r && (t.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, "#"])), t.cStyleComments && (i.push(["com", /^\/\/[^\n\r]*/, q]), i.push(["com", /^\/\*[\S\s]*?(?:\*\/|$)/, q])), t.regexLiterals && i.push(["lang-regex", /^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]), (r = t.types) && i.push(["typ", r]), (t = ("" + t.keywords).replace(/^ | $/g, "")).length && i.push(["kwd", RegExp("^(?:" + t.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]), e(n, i)
        }

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

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

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

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

        function a(t) {
            var e = t.g;
            try {
                var n = (c = function(t) {
                    var e, n = /(?:^|\s)nocode(?:\s|$)/,
                        i = [],
                        r = 0,
                        o = [],
                        a = 0;
                    t.currentStyle ? e = t.currentStyle.whiteSpace : window.getComputedStyle && (e = document.defaultView.getComputedStyle(t, q).getPropertyValue("white-space"));
                    var s = e && "pre" === e.substring(0, 3);
                    return function t(e) {
                        switch (e.nodeType) {
                            case 1:
                                if (n.test(e.className)) break;
                                for (var l = e.firstChild; l; l = l.nextSibling) t(l);
                                "BR" !== (l = e.nodeName) && "LI" !== l || (i[a] = "\n", o[a << 1] = r++, o[a++ << 1 | 1] = e);
                                break;
                            case 3:
                            case 4:
                                (l = e.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] = e)
                        }
                    }(t), {
                        a: i.join("").replace(/\n$/, ""),
                        c: o
                    }
                }(t.h)).a;
                t.a = n, t.c = c.c, t.d = 0, o(e, n)(t);
                var i, r, a = /\bMSIE\b/.test(navigator.userAgent),
                    s = (e = /\n/g, t.a),
                    l = s.length,
                    c = 0,
                    u = t.c,
                    d = u.length,
                    h = (n = 0, t.e),
                    f = h.length;
                t = 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[t + 2] || l,
                        w = (m = Math.min(y, b), u[n + 1]);
                    if (1 !== w.nodeType && (v = s.substring(c, m))) {
                        a && (v = v.replace(e, "\r")), w.nodeValue = v;
                        var x = w.ownerDocument,
                            _ = x.createElement("SPAN");
                        _.className = h[t + 1];
                        var S = w.parentNode;
                        S.replaceChild(_, w), _.appendChild(w), c < y && (u[n + 1] = w = x.createTextNode(s.substring(m, y)), S.insertBefore(w, _.nextSibling))
                    }(c = m) >= y && (n += 2), c >= b && (t += 2)
                }
            } catch (t) {
                "console" in window && console.log(t && t.stack ? t.stack : t)
            }
        }
        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(e([], [
            ["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(e([
            ["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(e([], [
            ["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(e([], [
            ["str", /^[\S\s]+/]
        ]), ["regex"]), window.prettyPrintOne = function(t, e, n) {
            var r = document.createElement("PRE");
            return r.innerHTML = t, n && i(r, n), a({
                g: e,
                i: n,
                h: r
            }), r.innerHTML
        }, window.prettyPrint = function(t) {
            for (var e = [document.getElementsByTagName("pre"), document.getElementsByTagName("code"), document.getElementsByTagName("xmp")], n = [], r = 0; r < e.length; ++r)
                for (var o = 0, s = e[r].length; o < s; ++o) n.push(e[r][o]);
            e = q;
            var l = Date;
            l.now || (l = {
                now: function() {
                    return +new Date
                }
            });
            var c = 0,
                u = /\blang(?:uage)?-([\w.]+)(?!\S)/;
            ! function e() {
                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(e, 250) : t && t()
            }()
        }, window.PR = {
            createSimpleLexer: e,
            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"
        }
    }();